From a55b575e8089ee6cab7c5c262a7e6db55d0e34d6 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 14:46:50 +0100 Subject: unslug es: move --- .../a_re-introduction_to_javascript/index.html | 960 +++++++++++++++++++++ .../es/web/javascript/about_javascript/index.html | 59 ++ .../web/javascript/acerca_de_javascript/index.html | 59 -- .../index.html" | 87 -- .../index.html | 333 +++++++ .../index.html | 333 ------- .../web/javascript/gestion_de_memoria/index.html | 204 ----- .../guide/bucles_e_iteraci\303\263n/index.html" | 334 ------- .../guide/colecciones_indexadas/index.html | 603 ------------- .../index.html | 456 ---------- .../control_flow_and_error_handling/index.html | 456 ++++++++++ files/es/web/javascript/guide/funciones/index.html | 706 --------------- files/es/web/javascript/guide/functions/index.html | 706 +++++++++++++++ .../guide/indexed_collections/index.html | 603 +++++++++++++ .../guide/introducci\303\263n/index.html" | 161 ---- .../web/javascript/guide/introduction/index.html | 161 ++++ .../guide/loops_and_iteration/index.html | 334 +++++++ files/es/web/javascript/guide/modules/index.html | 458 ++++++++++ .../javascript/guide/m\303\263dulos/index.html" | 458 ---------- .../regular_expressions/aserciones/index.html | 247 ------ .../regular_expressions/assertions/index.html | 247 ++++++ .../character_classes/index.html | 220 +++++ .../regular_expressions/cheatsheet/index.html | 451 ++++++++++ .../clases_de_caracteres/index.html | 220 ----- .../regular_expressions/cuantificadores/index.html | 182 ---- .../escapes_de_propiedades_unicode/index.html | 177 ---- .../groups_and_ranges/index.html | 176 ++++ .../regular_expressions/grupos_y_rangos/index.html | 176 ---- .../hoja_de_referencia/index.html | 451 ---------- .../regular_expressions/quantifiers/index.html | 182 ++++ .../unicode_property_escapes/index.html | 177 ++++ .../guide/trabajando_con_objectos/index.html | 493 ----------- .../web/javascript/guide/usar_promesas/index.html | 344 -------- .../web/javascript/guide/using_promises/index.html | 344 ++++++++ .../guide/working_with_objects/index.html | 493 +++++++++++ .../herencia_y_la_cadena_de_protipos/index.html | 410 --------- .../inheritance_and_the_prototype_chain/index.html | 410 +++++++++ .../index.html" | 385 --------- .../index.html | 416 --------- .../javascript_technologies_overview/index.html | 87 ++ .../es/web/javascript/memory_management/index.html | 204 +++++ files/es/web/javascript/reference/about/index.html | 158 ++++ .../reference/classes/constructor/index.html | 102 +++ .../reference/classes/extends/index.html | 167 ++++ .../es/web/javascript/reference/classes/index.html | 372 ++++++++ .../classes/private_class_fields/index.html | 201 +++++ .../classes/public_class_fields/index.html | 386 +++++++++ .../javascript/reference/classes/static/index.html | 118 +++ .../deprecated_and_obsolete_features/index.html | 292 +++++++ .../the_legacy_iterator_protocol/index.html | 72 ++ .../reference/errors/bad_regexp_flag/index.html | 113 +++ .../reference/errors/caracter_ilegal/index.html | 83 -- .../index.html | 72 -- .../reference/errors/illegal_character/index.html | 83 ++ .../errors/indicador_regexp_no-val/index.html | 113 --- .../missing_semicolon_before_statement/index.html | 72 ++ .../errors/strict_non_simple_params/index.html | 117 +++ .../index.html" | 117 --- .../functions/arguments/callee/index.html | 48 ++ .../reference/functions/arguments/index.html | 229 +++++ .../functions/arguments/length/index.html | 131 +++ .../reference/functions/arrow_functions/index.html | 530 ++++++++++++ .../functions/default_parameters/index.html | 234 +++++ .../javascript/reference/functions/get/index.html | 134 +++ .../web/javascript/reference/functions/index.html | 661 ++++++++++++++ .../functions/method_definitions/index.html | 226 +++++ .../reference/functions/rest_parameters/index.html | 266 ++++++ .../javascript/reference/functions/set/index.html | 217 +++++ .../global_objects/aggregateerror/index.html | 87 ++ .../global_objects/array/@@iterator/index.html | 89 ++ .../global_objects/array/@@species/index.html | 76 ++ .../global_objects/array/@@unscopables/index.html | 78 ++ .../global_objects/array/concat/index.html | 140 +++ .../global_objects/array/copywithin/index.html | 165 ++++ .../global_objects/array/entries/index.html | 86 ++ .../global_objects/array/every/index.html | 195 +++++ .../reference/global_objects/array/fill/index.html | 145 ++++ .../global_objects/array/filter/index.html | 231 +++++ .../reference/global_objects/array/find/index.html | 233 +++++ .../global_objects/array/findindex/index.html | 187 ++++ .../reference/global_objects/array/flat/index.html | 174 ++++ .../global_objects/array/flatmap/index.html | 128 +++ .../global_objects/array/foreach/index.html | 257 ++++++ .../reference/global_objects/array/from/index.html | 242 ++++++ .../global_objects/array/includes/index.html | 181 ++++ .../reference/global_objects/array/index.html | 449 ++++++++++ .../global_objects/array/indexof/index.html | 248 ++++++ .../global_objects/array/isarray/index.html | 128 +++ .../reference/global_objects/array/join/index.html | 110 +++ .../reference/global_objects/array/keys/index.html | 84 ++ .../global_objects/array/lastindexof/index.html | 164 ++++ .../global_objects/array/length/index.html | 143 +++ .../reference/global_objects/array/map/index.html | 360 ++++++++ .../reference/global_objects/array/of/index.html | 97 +++ .../reference/global_objects/array/pop/index.html | 94 ++ .../reference/global_objects/array/push/index.html | 140 +++ .../global_objects/array/reduce/index.html | 215 +++++ .../global_objects/array/reduceright/index.html | 166 ++++ .../global_objects/array/reverse/index.html | 88 ++ .../global_objects/array/shift/index.html | 124 +++ .../global_objects/array/slice/index.html | 287 ++++++ .../reference/global_objects/array/some/index.html | 204 +++++ .../reference/global_objects/array/sort/index.html | 301 +++++++ .../global_objects/array/splice/index.html | 148 ++++ .../global_objects/array/tolocalestring/index.html | 177 ++++ .../global_objects/array/tosource/index.html | 112 +++ .../global_objects/array/tostring/index.html | 78 ++ .../global_objects/array/unshift/index.html | 100 +++ .../global_objects/array/values/index.html | 82 ++ .../arraybuffer/@@species/index.html | 72 ++ .../arraybuffer/bytelength/index.html | 70 ++ .../global_objects/arraybuffer/index.html | 139 +++ .../global_objects/asyncfunction/index.html | 122 +++ .../global_objects/boolean/boolean/index.html | 75 ++ .../reference/global_objects/boolean/index.html | 126 +++ .../global_objects/boolean/tosource/index.html | 36 + .../global_objects/date/getdate/index.html | 119 +++ .../global_objects/date/getday/index.html | 124 +++ .../global_objects/date/getfullyear/index.html | 67 ++ .../global_objects/date/gethours/index.html | 119 +++ .../global_objects/date/getmilliseconds/index.html | 121 +++ .../global_objects/date/getminutes/index.html | 118 +++ .../global_objects/date/getmonth/index.html | 125 +++ .../global_objects/date/getseconds/index.html | 83 ++ .../global_objects/date/gettime/index.html | 140 +++ .../global_objects/date/getutcfullyear/index.html | 121 +++ .../global_objects/date/getutchours/index.html | 117 +++ .../reference/global_objects/date/index.html | 132 +++ .../reference/global_objects/date/now/index.html | 30 + .../reference/global_objects/date/parse/index.html | 35 + .../global_objects/date/setfullyear/index.html | 133 +++ .../global_objects/date/setmonth/index.html | 78 ++ .../global_objects/date/todatestring/index.html | 88 ++ .../global_objects/date/toisostring/index.html | 144 ++++ .../global_objects/date/tojson/index.html | 61 ++ .../date/tolocaledatestring/index.html | 159 ++++ .../global_objects/date/tolocalestring/index.html | 163 ++++ .../date/tolocaletimestring/index.html | 152 ++++ .../global_objects/date/toutcstring/index.html | 105 +++ .../reference/global_objects/date/utc/index.html | 78 ++ .../reference/global_objects/decodeuri/index.html | 38 + .../global_objects/decodeuricomponent/index.html | 42 + .../reference/global_objects/encodeuri/index.html | 61 ++ .../global_objects/encodeuricomponent/index.html | 161 ++++ .../global_objects/error/error/index.html | 69 ++ .../global_objects/error/filename/index.html | 48 ++ .../reference/global_objects/error/index.html | 219 +++++ .../global_objects/error/linenumber/index.html | 101 +++ .../global_objects/error/message/index.html | 114 +++ .../reference/global_objects/error/name/index.html | 58 ++ .../global_objects/error/tosource/index.html | 60 ++ .../global_objects/error/tostring/index.html | 98 +++ .../reference/global_objects/escape/index.html | 91 ++ .../reference/global_objects/eval/index.html | 309 +++++++ .../reference/global_objects/evalerror/index.html | 163 ++++ .../global_objects/function/apply/index.html | 233 +++++ .../global_objects/function/arguments/index.html | 44 + .../global_objects/function/bind/index.html | 293 +++++++ .../global_objects/function/call/index.html | 113 +++ .../global_objects/function/caller/index.html | 128 +++ .../global_objects/function/displayname/index.html | 77 ++ .../global_objects/function/function/index.html | 92 ++ .../reference/global_objects/function/index.html | 118 +++ .../global_objects/function/length/index.html | 151 ++++ .../global_objects/function/name/index.html | 223 +++++ .../global_objects/function/tosource/index.html | 97 +++ .../global_objects/function/tostring/index.html | 130 +++ .../reference/global_objects/generator/index.html | 228 +++++ .../global_objects/generator/next/index.html | 109 +++ .../global_objects/generator/return/index.html | 102 +++ .../global_objects/generator/throw/index.html | 94 ++ .../javascript/reference/global_objects/index.html | 203 +++++ .../reference/global_objects/infinity/index.html | 96 +++ .../global_objects/internalerror/index.html | 98 +++ .../internalerror/internalerror/index.html | 55 ++ .../reference/global_objects/intl/index.html | 126 +++ .../intl/numberformat/format/index.html | 92 ++ .../global_objects/intl/numberformat/index.html | 188 ++++ .../intl/relativetimeformat/index.html | 106 +++ .../reference/global_objects/isfinite/index.html | 114 +++ .../reference/global_objects/isnan/index.html | 88 ++ .../reference/global_objects/json/index.html | 231 +++++ .../reference/global_objects/json/parse/index.html | 178 ++++ .../global_objects/json/stringify/index.html | 265 ++++++ .../reference/global_objects/map/clear/index.html | 109 +++ .../reference/global_objects/map/delete/index.html | 114 +++ .../global_objects/map/entries/index.html | 109 +++ .../global_objects/map/foreach/index.html | 94 ++ .../reference/global_objects/map/get/index.html | 77 ++ .../reference/global_objects/map/has/index.html | 65 ++ .../reference/global_objects/map/index.html | 213 +++++ .../reference/global_objects/map/keys/index.html | 109 +++ .../reference/global_objects/map/set/index.html | 133 +++ .../reference/global_objects/map/size/index.html | 110 +++ .../reference/global_objects/map/values/index.html | 77 ++ .../reference/global_objects/math/abs/index.html | 149 ++++ .../reference/global_objects/math/acos/index.html | 99 +++ .../reference/global_objects/math/acosh/index.html | 94 ++ .../reference/global_objects/math/asin/index.html | 144 ++++ .../reference/global_objects/math/asinh/index.html | 90 ++ .../reference/global_objects/math/atan/index.html | 107 +++ .../reference/global_objects/math/atan2/index.html | 141 +++ .../reference/global_objects/math/atanh/index.html | 87 ++ .../reference/global_objects/math/cbrt/index.html | 96 +++ .../reference/global_objects/math/ceil/index.html | 166 ++++ .../reference/global_objects/math/cos/index.html | 74 ++ .../reference/global_objects/math/e/index.html | 83 ++ .../reference/global_objects/math/exp/index.html | 136 +++ .../reference/global_objects/math/expm1/index.html | 89 ++ .../reference/global_objects/math/floor/index.html | 124 +++ .../global_objects/math/fround/index.html | 199 +++++ .../reference/global_objects/math/hypot/index.html | 124 +++ .../reference/global_objects/math/index.html | 196 +++++ .../reference/global_objects/math/ln10/index.html | 84 ++ .../reference/global_objects/math/ln2/index.html | 83 ++ .../reference/global_objects/math/log/index.html | 112 +++ .../reference/global_objects/math/log10/index.html | 137 +++ .../global_objects/math/log10e/index.html | 130 +++ .../reference/global_objects/math/log2/index.html | 96 +++ .../reference/global_objects/math/log2e/index.html | 27 + .../reference/global_objects/math/max/index.html | 145 ++++ .../reference/global_objects/math/min/index.html | 150 ++++ .../reference/global_objects/math/pi/index.html | 126 +++ .../reference/global_objects/math/pow/index.html | 140 +++ .../global_objects/math/random/index.html | 132 +++ .../reference/global_objects/math/round/index.html | 218 +++++ .../reference/global_objects/math/sign/index.html | 151 ++++ .../reference/global_objects/math/sin/index.html | 126 +++ .../reference/global_objects/math/sqrt/index.html | 134 +++ .../global_objects/math/sqrt1_2/index.html | 123 +++ .../reference/global_objects/math/sqrt2/index.html | 124 +++ .../reference/global_objects/math/tan/index.html | 82 ++ .../reference/global_objects/math/tanh/index.html | 95 ++ .../reference/global_objects/math/trunc/index.html | 144 ++++ .../reference/global_objects/nan/index.html | 46 + .../reference/global_objects/null/index.html | 129 +++ .../reference/global_objects/number/index.html | 181 ++++ .../global_objects/number/isfinite/index.html | 88 ++ .../global_objects/number/isinteger/index.html | 94 ++ .../global_objects/number/isnan/index.html | 140 +++ .../global_objects/number/issafeinteger/index.html | 99 +++ .../number/max_safe_integer/index.html | 68 ++ .../global_objects/number/max_value/index.html | 131 +++ .../global_objects/number/min_value/index.html | 121 +++ .../reference/global_objects/number/nan/index.html | 59 ++ .../number/negative_infinity/index.html | 117 +++ .../global_objects/number/parsefloat/index.html | 76 ++ .../global_objects/number/parseint/index.html | 80 ++ .../number/positive_infinity/index.html | 115 +++ .../global_objects/number/tofixed/index.html | 147 ++++ .../number/tolocalestring/index.html | 155 ++++ .../global_objects/number/toprecision/index.html | 102 +++ .../global_objects/number/tostring/index.html | 63 ++ .../global_objects/number/valueof/index.html | 81 ++ .../object/__definegetter__/index.html | 144 ++++ .../object/__lookupgetter__/index.html | 84 ++ .../global_objects/object/assign/index.html | 274 ++++++ .../global_objects/object/constructor/index.html | 161 ++++ .../global_objects/object/create/index.html | 377 ++++++++ .../object/defineproperties/index.html | 194 +++++ .../object/defineproperty/index.html | 419 +++++++++ .../global_objects/object/entries/index.html | 161 ++++ .../global_objects/object/freeze/index.html | 174 ++++ .../global_objects/object/fromentries/index.html | 106 +++ .../object/getownpropertydescriptor/index.html | 161 ++++ .../object/getownpropertydescriptors/index.html | 117 +++ .../object/getownpropertynames/index.html | 163 ++++ .../object/getownpropertysymbols/index.html | 123 +++ .../object/getprototypeof/index.html | 137 +++ .../object/hasownproperty/index.html | 186 ++++ .../reference/global_objects/object/index.html | 187 ++++ .../reference/global_objects/object/is/index.html | 172 ++++ .../global_objects/object/isextensible/index.html | 144 ++++ .../global_objects/object/isfrozen/index.html | 190 ++++ .../global_objects/object/isprototypeof/index.html | 158 ++++ .../global_objects/object/issealed/index.html | 140 +++ .../global_objects/object/keys/index.html | 156 ++++ .../object/preventextensions/index.html | 176 ++++ .../object/propertyisenumerable/index.html | 185 ++++ .../global_objects/object/proto/index.html | 128 +++ .../global_objects/object/seal/index.html | 167 ++++ .../object/setprototypeof/index.html | 237 +++++ .../object/tolocalestring/index.html | 106 +++ .../global_objects/object/tosource/index.html | 126 +++ .../global_objects/object/tostring/index.html | 70 ++ .../global_objects/object/valueof/index.html | 157 ++++ .../global_objects/object/values/index.html | 97 +++ .../reference/global_objects/parsefloat/index.html | 58 ++ .../reference/global_objects/parseint/index.html | 89 ++ .../global_objects/promise/all/index.html | 123 +++ .../global_objects/promise/catch/index.html | 183 ++++ .../global_objects/promise/finally/index.html | 95 ++ .../reference/global_objects/promise/index.html | 222 +++++ .../global_objects/promise/race/index.html | 112 +++ .../global_objects/promise/reject/index.html | 80 ++ .../global_objects/promise/resolve/index.html | 150 ++++ .../global_objects/promise/then/index.html | 302 +++++++ .../handler/getownpropertydescriptor/index.html | 129 --- .../global_objects/proxy/handler/index.html | 84 -- .../global_objects/proxy/handler/set/index.html | 122 --- .../reference/global_objects/proxy/index.html | 439 ++++++++++ .../proxy/getownpropertydescriptor/index.html | 129 +++ .../global_objects/proxy/proxy/index.html | 84 ++ .../global_objects/proxy/proxy/set/index.html | 122 +++ .../global_objects/rangeerror/prototype/index.html | 131 --- .../global_objects/referenceerror/index.html | 99 +++ .../global_objects/regexp/compile/index.html | 93 ++ .../global_objects/regexp/exec/index.html | 238 +++++ .../global_objects/regexp/ignorecase/index.html | 142 +++ .../reference/global_objects/regexp/index.html | 264 ++++++ .../global_objects/regexp/regexp/index.html | 114 +++ .../global_objects/regexp/rightcontext/index.html | 54 ++ .../global_objects/regexp/test/index.html | 152 ++++ .../global_objects/regexp/tostring/index.html | 171 ++++ .../global_objects/set/@@iterator/index.html | 86 ++ .../reference/global_objects/set/add/index.html | 124 +++ .../reference/global_objects/set/clear/index.html | 119 +++ .../reference/global_objects/set/delete/index.html | 117 +++ .../global_objects/set/entries/index.html | 71 ++ .../reference/global_objects/set/has/index.html | 124 +++ .../reference/global_objects/set/index.html | 230 +++++ .../reference/global_objects/set/size/index.html | 106 +++ .../reference/global_objects/set/values/index.html | 72 ++ .../global_objects/string/anchor/index.html | 56 ++ .../reference/global_objects/string/big/index.html | 54 ++ .../global_objects/string/blink/index.html | 42 + .../global_objects/string/bold/index.html | 43 + .../global_objects/string/charat/index.html | 143 +++ .../global_objects/string/charcodeat/index.html | 65 ++ .../global_objects/string/codepointat/index.html | 127 +++ .../global_objects/string/concat/index.html | 90 ++ .../global_objects/string/endswith/index.html | 88 ++ .../global_objects/string/fixed/index.html | 35 + .../global_objects/string/fontcolor/index.html | 122 +++ .../global_objects/string/fontsize/index.html | 123 +++ .../global_objects/string/fromcharcode/index.html | 130 +++ .../global_objects/string/fromcodepoint/index.html | 204 +++++ .../global_objects/string/includes/index.html | 108 +++ .../reference/global_objects/string/index.html | 385 +++++++++ .../global_objects/string/indexof/index.html | 104 +++ .../global_objects/string/italics/index.html | 49 ++ .../global_objects/string/lastindexof/index.html | 79 ++ .../global_objects/string/length/index.html | 94 ++ .../global_objects/string/link/index.html | 56 ++ .../global_objects/string/localecompare/index.html | 159 ++++ .../global_objects/string/match/index.html | 78 ++ .../global_objects/string/matchall/index.html | 134 +++ .../global_objects/string/normalize/index.html | 126 +++ .../global_objects/string/padstart/index.html | 100 +++ .../reference/global_objects/string/raw/index.html | 112 +++ .../global_objects/string/repeat/index.html | 128 +++ .../global_objects/string/replace/index.html | 202 +++++ .../global_objects/string/search/index.html | 153 ++++ .../global_objects/string/slice/index.html | 161 ++++ .../global_objects/string/small/index.html | 38 + .../global_objects/string/split/index.html | 240 ++++++ .../global_objects/string/startswith/index.html | 97 +++ .../global_objects/string/strike/index.html | 42 + .../reference/global_objects/string/sub/index.html | 35 + .../global_objects/string/substr/index.html | 83 ++ .../global_objects/string/substring/index.html | 92 ++ .../reference/global_objects/string/sup/index.html | 35 + .../string/tolocalelowercase/index.html | 113 +++ .../string/tolocaleuppercase/index.html | 100 +++ .../global_objects/string/tolowercase/index.html | 40 + .../global_objects/string/tosource/index.html | 56 ++ .../global_objects/string/tostring/index.html | 28 + .../global_objects/string/touppercase/index.html | 39 + .../global_objects/string/trim/index.html | 133 +++ .../global_objects/string/trimend/index.html | 82 ++ .../global_objects/string/valueof/index.html | 28 + .../reference/global_objects/symbol/for/index.html | 153 ++++ .../global_objects/symbol/hasinstance/index.html | 105 +++ .../reference/global_objects/symbol/index.html | 364 ++++++++ .../global_objects/symbol/iterator/index.html | 98 +++ .../global_objects/syntaxerror/index.html | 176 ++++ .../global_objects/typedarray/buffer/index.html | 110 +++ .../reference/global_objects/typedarray/index.html | 317 +++++++ .../reference/global_objects/uint8array/index.html | 260 ++++++ .../reference/global_objects/undefined/index.html | 183 ++++ .../reference/global_objects/unescape/index.html | 123 +++ .../reference/global_objects/urierror/index.html | 136 +++ .../global_objects/weakmap/clear/index.html | 52 ++ .../global_objects/weakmap/delete/index.html | 124 +++ .../global_objects/weakmap/get/index.html | 80 ++ .../global_objects/weakmap/has/index.html | 83 ++ .../reference/global_objects/weakmap/index.html | 278 ++++++ .../global_objects/weakmap/set/index.html | 91 ++ .../reference/global_objects/weakset/index.html | 227 +++++ .../global_objects/webassembly/index.html | 120 +++ files/es/web/javascript/reference/index.html | 31 + .../reference/iteration_protocols/index.html | 320 +++++++ .../reference/lexical_grammar/index.html | 661 ++++++++++++++ .../reference/operators/addition/index.html | 77 ++ .../reference/operators/assignment/index.html | 62 ++ .../reference/operators/async_function/index.html | 102 +++ .../reference/operators/await/index.html | 102 +++ .../reference/operators/class/index.html | 157 ++++ .../reference/operators/comma_operator/index.html | 132 +++ .../operators/conditional_operator/index.html | 171 ++++ .../reference/operators/decrement/index.html | 83 ++ .../reference/operators/delete/index.html | 242 ++++++ .../operators/destructuring_assignment/index.html | 442 ++++++++++ .../reference/operators/division/index.html | 77 ++ .../reference/operators/equality/index.html | 129 +++ .../reference/operators/function/index.html | 73 ++ .../reference/operators/function_star_/index.html | 91 ++ .../reference/operators/grouping/index.html | 128 +++ .../javascript/reference/operators/in/index.html | 139 +++ .../web/javascript/reference/operators/index.html | 280 ++++++ .../reference/operators/instanceof/index.html | 88 ++ .../reference/operators/new.target/index.html | 139 +++ .../javascript/reference/operators/new/index.html | 179 ++++ .../operators/operator_precedence/index.html | 297 +++++++ .../operators/optional_chaining/index.html | 187 ++++ .../operators/pipeline_operator/index.html | 78 ++ .../operators/property_accessors/index.html | 85 ++ .../reference/operators/remainder/index.html | 82 ++ .../reference/operators/spread_syntax/index.html | 242 ++++++ .../reference/operators/strict_equality/index.html | 101 +++ .../reference/operators/subtraction/index.html | 65 ++ .../reference/operators/super/index.html | 178 ++++ .../javascript/reference/operators/this/index.html | 239 +++++ .../reference/operators/typeof/index.html | 76 ++ .../javascript/reference/operators/void/index.html | 36 + .../reference/operators/yield/index.html | 130 +++ .../reference/operators/yield_star_/index.html | 199 +++++ .../reference/statements/async_function/index.html | 173 ++++ .../reference/statements/block/index.html | 89 ++ .../reference/statements/break/index.html | 41 + .../reference/statements/class/index.html | 148 ++++ .../reference/statements/const/index.html | 127 +++ .../reference/statements/continue/index.html | 66 ++ .../reference/statements/debugger/index.html | 125 +++ .../reference/statements/do...while/index.html | 49 ++ .../reference/statements/empty/index.html | 141 +++ .../reference/statements/export/index.html | 175 ++++ .../reference/statements/for-await...of/index.html | 144 ++++ .../reference/statements/for...in/index.html | 150 ++++ .../reference/statements/for...of/index.html | 319 +++++++ .../javascript/reference/statements/for/index.html | 57 ++ .../reference/statements/function/index.html | 52 ++ .../reference/statements/function_star_/index.html | 224 +++++ .../reference/statements/if...else/index.html | 109 +++ .../reference/statements/import.meta/index.html | 93 ++ .../reference/statements/import/index.html | 177 ++++ .../web/javascript/reference/statements/index.html | 141 +++ .../reference/statements/label/index.html | 35 + .../javascript/reference/statements/let/index.html | 393 +++++++++ .../reference/statements/return/index.html | 73 ++ .../reference/statements/switch/index.html | 245 ++++++ .../reference/statements/throw/index.html | 153 ++++ .../reference/statements/try...catch/index.html | 254 ++++++ .../javascript/reference/statements/var/index.html | 163 ++++ .../reference/statements/while/index.html | 58 ++ .../reference/statements/with/index.html | 166 ++++ .../javascript/reference/strict_mode/index.html | 368 ++++++++ .../reference/template_literals/index.html | 314 +++++++ .../web/javascript/referencia/acerca_de/index.html | 158 ---- .../index.html" | 292 ------- .../the_legacy_iterator_protocol/index.html" | 72 -- .../referencia/classes/class_fields/index.html | 386 --------- .../referencia/classes/constructor/index.html | 102 --- .../referencia/classes/extends/index.html | 167 ---- .../web/javascript/referencia/classes/index.html | 372 -------- .../classes/private_class_fields/index.html | 201 ----- .../referencia/classes/static/index.html | 118 --- .../funciones/arguments/callee/index.html | 48 -- .../referencia/funciones/arguments/index.html | 229 ----- .../funciones/arguments/length/index.html | 131 --- .../funciones/arrow_functions/index.html | 530 ------------ .../javascript/referencia/funciones/get/index.html | 134 --- .../web/javascript/referencia/funciones/index.html | 661 -------------- .../funciones/method_definitions/index.html | 226 ----- .../funciones/parametros_por_defecto/index.html | 234 ----- .../funciones/parametros_rest/index.html | 266 ------ .../javascript/referencia/funciones/set/index.html | 217 ----- .../referencia/gramatica_lexica/index.html | 661 -------------- files/es/web/javascript/referencia/index.html | 31 - .../referencia/iteration_protocols/index.html | 320 ------- .../javascript/referencia/modo_estricto/index.html | 368 -------- .../objetos_globales/aggregateerror/index.html | 87 -- .../objetos_globales/array/@@iterator/index.html | 89 -- .../objetos_globales/array/@@species/index.html | 76 -- .../array/@@unscopables/index.html | 78 -- .../objetos_globales/array/concat/index.html | 140 --- .../objetos_globales/array/copywithin/index.html | 165 ---- .../objetos_globales/array/entries/index.html | 86 -- .../objetos_globales/array/every/index.html | 195 ----- .../objetos_globales/array/fill/index.html | 145 ---- .../objetos_globales/array/filter/index.html | 231 ----- .../objetos_globales/array/find/index.html | 233 ----- .../objetos_globales/array/findindex/index.html | 187 ---- .../objetos_globales/array/flat/index.html | 174 ---- .../objetos_globales/array/flatmap/index.html | 128 --- .../objetos_globales/array/foreach/index.html | 257 ------ .../objetos_globales/array/from/index.html | 242 ------ .../objetos_globales/array/includes/index.html | 181 ---- .../referencia/objetos_globales/array/index.html | 449 ---------- .../objetos_globales/array/indexof/index.html | 248 ------ .../objetos_globales/array/isarray/index.html | 128 --- .../objetos_globales/array/join/index.html | 110 --- .../objetos_globales/array/keys/index.html | 84 -- .../objetos_globales/array/lastindexof/index.html | 164 ---- .../objetos_globales/array/length/index.html | 143 --- .../objetos_globales/array/map/index.html | 360 -------- .../objetos_globales/array/of/index.html | 97 --- .../objetos_globales/array/pop/index.html | 94 -- .../objetos_globales/array/prototype/index.html | 188 ---- .../objetos_globales/array/push/index.html | 140 --- .../objetos_globales/array/reduce/index.html | 215 ----- .../objetos_globales/array/reduceright/index.html | 166 ---- .../objetos_globales/array/reverse/index.html | 88 -- .../objetos_globales/array/shift/index.html | 124 --- .../objetos_globales/array/slice/index.html | 287 ------ .../objetos_globales/array/some/index.html | 204 ----- .../objetos_globales/array/sort/index.html | 301 ------- .../objetos_globales/array/splice/index.html | 148 ---- .../array/tolocalestring/index.html | 177 ---- .../objetos_globales/array/tosource/index.html | 112 --- .../objetos_globales/array/tostring/index.html | 78 -- .../objetos_globales/array/unshift/index.html | 100 --- .../objetos_globales/array/values/index.html | 82 -- .../arraybuffer/@@species/index.html | 72 -- .../arraybuffer/bytelength/index.html | 70 -- .../objetos_globales/arraybuffer/index.html | 139 --- .../arraybuffer/prototype/index.html | 69 -- .../objetos_globales/boolean/boolean/index.html | 75 -- .../referencia/objetos_globales/boolean/index.html | 126 --- .../objetos_globales/boolean/tosource/index.html | 36 - .../objetos_globales/date/getdate/index.html | 119 --- .../objetos_globales/date/getday/index.html | 124 --- .../objetos_globales/date/getfullyear/index.html | 67 -- .../objetos_globales/date/gethours/index.html | 119 --- .../date/getmilliseconds/index.html | 121 --- .../objetos_globales/date/getminutes/index.html | 118 --- .../objetos_globales/date/getmonth/index.html | 125 --- .../objetos_globales/date/getseconds/index.html | 83 -- .../objetos_globales/date/gettime/index.html | 140 --- .../date/getutcfullyear/index.html | 121 --- .../objetos_globales/date/getutchours/index.html | 117 --- .../referencia/objetos_globales/date/index.html | 132 --- .../objetos_globales/date/now/index.html | 30 - .../objetos_globales/date/parse/index.html | 35 - .../objetos_globales/date/prototype/index.html | 201 ----- .../objetos_globales/date/setfullyear/index.html | 133 --- .../objetos_globales/date/setmonth/index.html | 78 -- .../objetos_globales/date/todatestring/index.html | 88 -- .../objetos_globales/date/toisostring/index.html | 144 ---- .../objetos_globales/date/tojson/index.html | 61 -- .../date/tolocaledatestring/index.html | 159 ---- .../date/tolocalestring/index.html | 163 ---- .../date/tolocaletimestring/index.html | 152 ---- .../objetos_globales/date/toutcstring/index.html | 105 --- .../objetos_globales/date/utc/index.html | 78 -- .../objetos_globales/decodeuri/index.html | 38 - .../objetos_globales/decodeuricomponent/index.html | 42 - .../objetos_globales/encodeuri/index.html | 61 -- .../objetos_globales/encodeuricomponent/index.html | 161 ---- .../error/constructor_error/index.html | 69 -- .../objetos_globales/error/filename/index.html | 48 -- .../referencia/objetos_globales/error/index.html | 219 ----- .../objetos_globales/error/linenumber/index.html | 101 --- .../objetos_globales/error/message/index.html | 114 --- .../objetos_globales/error/name/index.html | 58 -- .../objetos_globales/error/prototype/index.html | 154 ---- .../objetos_globales/error/tosource/index.html | 60 -- .../objetos_globales/error/tostring/index.html | 98 --- .../referencia/objetos_globales/escape/index.html | 91 -- .../referencia/objetos_globales/eval/index.html | 309 ------- .../objetos_globales/evalerror/index.html | 163 ---- .../funcionesas\303\255ncronas/index.html" | 122 --- .../objetos_globales/function/apply/index.html | 233 ----- .../objetos_globales/function/arguments/index.html | 44 - .../objetos_globales/function/bind/index.html | 293 ------- .../objetos_globales/function/call/index.html | 113 --- .../objetos_globales/function/caller/index.html | 128 --- .../function/displayname/index.html | 77 -- .../function/funci\303\263n/index.html" | 92 -- .../objetos_globales/function/index.html | 118 --- .../objetos_globales/function/length/index.html | 151 ---- .../objetos_globales/function/name/index.html | 223 ----- .../objetos_globales/function/prototype/index.html | 65 -- .../objetos_globales/function/tosource/index.html | 97 --- .../objetos_globales/function/tostring/index.html | 130 --- .../objetos_globales/generador/index.html | 228 ----- .../objetos_globales/generador/next/index.html | 109 --- .../objetos_globales/generador/return/index.html | 102 --- .../objetos_globales/generador/throw/index.html | 94 -- .../referencia/objetos_globales/index.html | 203 ----- .../objetos_globales/infinity/index.html | 96 --- .../constructor_internalerror/index.html | 55 -- .../objetos_globales/internalerror/index.html | 98 --- .../referencia/objetos_globales/intl/index.html | 126 --- .../intl/numberformat/format/index.html | 92 -- .../objetos_globales/intl/numberformat/index.html | 188 ---- .../intl/relativetimeformat/index.html | 106 --- .../objetos_globales/isfinite/index.html | 114 --- .../referencia/objetos_globales/isnan/index.html | 88 -- .../referencia/objetos_globales/json/index.html | 231 ----- .../objetos_globales/json/parse/index.html | 178 ---- .../objetos_globales/json/stringify/index.html | 265 ------ .../objetos_globales/map/clear/index.html | 109 --- .../objetos_globales/map/delete/index.html | 114 --- .../objetos_globales/map/entries/index.html | 109 --- .../objetos_globales/map/foreach/index.html | 94 -- .../referencia/objetos_globales/map/get/index.html | 77 -- .../referencia/objetos_globales/map/has/index.html | 65 -- .../referencia/objetos_globales/map/index.html | 213 ----- .../objetos_globales/map/keys/index.html | 109 --- .../objetos_globales/map/prototype/index.html | 135 --- .../referencia/objetos_globales/map/set/index.html | 133 --- .../objetos_globales/map/size/index.html | 110 --- .../objetos_globales/map/values/index.html | 77 -- .../objetos_globales/math/abs/index.html | 149 ---- .../objetos_globales/math/acos/index.html | 99 --- .../objetos_globales/math/acosh/index.html | 94 -- .../objetos_globales/math/asin/index.html | 144 ---- .../objetos_globales/math/asinh/index.html | 90 -- .../objetos_globales/math/atan/index.html | 107 --- .../objetos_globales/math/atan2/index.html | 141 --- .../objetos_globales/math/atanh/index.html | 87 -- .../objetos_globales/math/cbrt/index.html | 96 --- .../objetos_globales/math/ceil/index.html | 166 ---- .../objetos_globales/math/cos/index.html | 74 -- .../referencia/objetos_globales/math/e/index.html | 83 -- .../objetos_globales/math/exp/index.html | 136 --- .../objetos_globales/math/expm1/index.html | 89 -- .../objetos_globales/math/floor/index.html | 124 --- .../objetos_globales/math/fround/index.html | 199 ----- .../objetos_globales/math/hypot/index.html | 124 --- .../referencia/objetos_globales/math/index.html | 196 ----- .../objetos_globales/math/ln10/index.html | 84 -- .../objetos_globales/math/ln2/index.html | 83 -- .../objetos_globales/math/log/index.html | 112 --- .../objetos_globales/math/log10/index.html | 137 --- .../objetos_globales/math/log10e/index.html | 130 --- .../objetos_globales/math/log2/index.html | 96 --- .../objetos_globales/math/log2e/index.html | 27 - .../objetos_globales/math/max/index.html | 145 ---- .../objetos_globales/math/min/index.html | 150 ---- .../referencia/objetos_globales/math/pi/index.html | 126 --- .../objetos_globales/math/pow/index.html | 140 --- .../objetos_globales/math/random/index.html | 132 --- .../objetos_globales/math/round/index.html | 218 ----- .../objetos_globales/math/seno/index.html | 126 --- .../objetos_globales/math/sign/index.html | 151 ---- .../objetos_globales/math/sqrt/index.html | 134 --- .../objetos_globales/math/sqrt1_2/index.html | 123 --- .../objetos_globales/math/sqrt2/index.html | 124 --- .../objetos_globales/math/tan/index.html | 82 -- .../objetos_globales/math/tanh/index.html | 95 -- .../objetos_globales/math/trunc/index.html | 144 ---- .../referencia/objetos_globales/nan/index.html | 46 - .../referencia/objetos_globales/null/index.html | 129 --- .../referencia/objetos_globales/number/index.html | 181 ---- .../objetos_globales/number/isfinite/index.html | 88 -- .../objetos_globales/number/isinteger/index.html | 94 -- .../objetos_globales/number/isnan/index.html | 140 --- .../number/issafeinteger/index.html | 99 --- .../number/max_safe_integer/index.html | 68 -- .../objetos_globales/number/max_value/index.html | 131 --- .../objetos_globales/number/min_value/index.html | 121 --- .../objetos_globales/number/nan/index.html | 59 -- .../number/negative_infinity/index.html | 117 --- .../objetos_globales/number/parsefloat/index.html | 76 -- .../objetos_globales/number/parseint/index.html | 80 -- .../number/positive_infinity/index.html | 115 --- .../objetos_globales/number/prototype/index.html | 16 - .../objetos_globales/number/tofixed/index.html | 147 ---- .../number/tolocalestring/index.html | 155 ---- .../objetos_globales/number/toprecision/index.html | 102 --- .../objetos_globales/number/tostring/index.html | 63 -- .../objetos_globales/number/valueof/index.html | 81 -- .../object/__definegetter__/index.html | 144 ---- .../object/__lookupgetter__/index.html | 84 -- .../objetos_globales/object/assign/index.html | 274 ------ .../objetos_globales/object/constructor/index.html | 161 ---- .../objetos_globales/object/create/index.html | 377 -------- .../object/defineproperties/index.html | 194 ----- .../object/defineproperty/index.html | 419 --------- .../objetos_globales/object/entries/index.html | 161 ---- .../objetos_globales/object/freeze/index.html | 174 ---- .../objetos_globales/object/fromentries/index.html | 106 --- .../object/getownpropertydescriptor/index.html | 161 ---- .../object/getownpropertydescriptors/index.html | 117 --- .../object/getownpropertynames/index.html | 163 ---- .../object/getownpropertysymbols/index.html | 123 --- .../object/getprototypeof/index.html | 137 --- .../object/hasownproperty/index.html | 186 ---- .../referencia/objetos_globales/object/index.html | 187 ---- .../objetos_globales/object/is/index.html | 172 ---- .../object/isextensible/index.html | 144 ---- .../objetos_globales/object/isfrozen/index.html | 190 ---- .../object/isprototypeof/index.html | 158 ---- .../objetos_globales/object/issealed/index.html | 140 --- .../objetos_globales/object/keys/index.html | 156 ---- .../object/preventextensions/index.html | 176 ---- .../object/propertyisenumerable/index.html | 185 ---- .../objetos_globales/object/proto/index.html | 128 --- .../objetos_globales/object/prototype/index.html | 195 ----- .../objetos_globales/object/seal/index.html | 167 ---- .../object/setprototypeof/index.html | 237 ----- .../object/tolocalestring/index.html | 106 --- .../objetos_globales/object/tosource/index.html | 126 --- .../objetos_globales/object/tostring/index.html | 70 -- .../objetos_globales/object/valueof/index.html | 157 ---- .../objetos_globales/object/values/index.html | 97 --- .../objetos_globales/parsefloat/index.html | 58 -- .../objetos_globales/parseint/index.html | 89 -- .../objetos_globales/promise/all/index.html | 123 --- .../objetos_globales/promise/catch/index.html | 183 ---- .../objetos_globales/promise/finally/index.html | 95 -- .../referencia/objetos_globales/promise/index.html | 222 ----- .../objetos_globales/promise/prototype/index.html | 69 -- .../objetos_globales/promise/race/index.html | 112 --- .../objetos_globales/promise/reject/index.html | 80 -- .../objetos_globales/promise/resolve/index.html | 150 ---- .../objetos_globales/promise/then/index.html | 302 ------- .../referencia/objetos_globales/proxy/index.html | 439 ---------- .../objetos_globales/referenceerror/index.html | 99 --- .../objetos_globales/regexp/compile/index.html | 93 -- .../objetos_globales/regexp/exec/index.html | 238 ----- .../objetos_globales/regexp/ignorecase/index.html | 142 --- .../referencia/objetos_globales/regexp/index.html | 264 ------ .../objetos_globales/regexp/regexp/index.html | 114 --- .../regexp/rightcontext/index.html | 54 -- .../objetos_globales/regexp/test/index.html | 152 ---- .../objetos_globales/regexp/tostring/index.html | 171 ---- .../objetos_globales/set/@@iterator/index.html | 86 -- .../referencia/objetos_globales/set/add/index.html | 124 --- .../objetos_globales/set/clear/index.html | 119 --- .../objetos_globales/set/delete/index.html | 117 --- .../objetos_globales/set/entries/index.html | 71 -- .../referencia/objetos_globales/set/has/index.html | 124 --- .../referencia/objetos_globales/set/index.html | 230 ----- .../objetos_globales/set/size/index.html | 106 --- .../objetos_globales/set/values/index.html | 72 -- .../objetos_globales/string/anchor/index.html | 56 -- .../objetos_globales/string/big/index.html | 54 -- .../objetos_globales/string/blink/index.html | 42 - .../objetos_globales/string/bold/index.html | 43 - .../objetos_globales/string/charat/index.html | 143 --- .../objetos_globales/string/charcodeat/index.html | 65 -- .../objetos_globales/string/codepointat/index.html | 127 --- .../objetos_globales/string/concat/index.html | 90 -- .../objetos_globales/string/endswith/index.html | 88 -- .../objetos_globales/string/fixed/index.html | 35 - .../objetos_globales/string/fontcolor/index.html | 122 --- .../objetos_globales/string/fontsize/index.html | 123 --- .../string/fromcharcode/index.html | 130 --- .../string/fromcodepoint/index.html | 204 ----- .../objetos_globales/string/includes/index.html | 108 --- .../referencia/objetos_globales/string/index.html | 385 --------- .../objetos_globales/string/indexof/index.html | 104 --- .../objetos_globales/string/italics/index.html | 49 -- .../objetos_globales/string/lastindexof/index.html | 79 -- .../objetos_globales/string/length/index.html | 94 -- .../objetos_globales/string/link/index.html | 56 -- .../string/localecompare/index.html | 159 ---- .../objetos_globales/string/match/index.html | 78 -- .../objetos_globales/string/matchall/index.html | 134 --- .../objetos_globales/string/normalize/index.html | 126 --- .../objetos_globales/string/padstart/index.html | 100 --- .../objetos_globales/string/prototype/index.html | 118 --- .../objetos_globales/string/raw/index.html | 112 --- .../objetos_globales/string/repeat/index.html | 128 --- .../objetos_globales/string/replace/index.html | 202 ----- .../objetos_globales/string/search/index.html | 153 ---- .../objetos_globales/string/slice/index.html | 161 ---- .../objetos_globales/string/small/index.html | 38 - .../objetos_globales/string/split/index.html | 240 ------ .../objetos_globales/string/startswith/index.html | 97 --- .../objetos_globales/string/strike/index.html | 42 - .../objetos_globales/string/sub/index.html | 35 - .../objetos_globales/string/substr/index.html | 83 -- .../objetos_globales/string/substring/index.html | 92 -- .../objetos_globales/string/sup/index.html | 35 - .../string/tolocalelowercase/index.html | 113 --- .../string/tolocaleuppercase/index.html | 100 --- .../objetos_globales/string/tolowercase/index.html | 40 - .../objetos_globales/string/tosource/index.html | 56 -- .../objetos_globales/string/tostring/index.html | 28 - .../objetos_globales/string/touppercase/index.html | 39 - .../objetos_globales/string/trim/index.html | 133 --- .../objetos_globales/string/trimend/index.html | 82 -- .../objetos_globales/string/valueof/index.html | 28 - .../objetos_globales/symbol/for/index.html | 153 ---- .../objetos_globales/symbol/hasinstance/index.html | 105 --- .../referencia/objetos_globales/symbol/index.html | 364 -------- .../objetos_globales/symbol/iterator/index.html | 98 --- .../objetos_globales/syntaxerror/index.html | 176 ---- .../syntaxerror/prototype/index.html | 133 --- .../objetos_globales/typedarray/buffer/index.html | 110 --- .../objetos_globales/typedarray/index.html | 317 ------- .../objetos_globales/uint8array/index.html | 260 ------ .../objetos_globales/undefined/index.html | 183 ---- .../objetos_globales/unescape/index.html | 123 --- .../objetos_globales/urierror/index.html | 136 --- .../objetos_globales/weakmap/clear/index.html | 52 -- .../objetos_globales/weakmap/delete/index.html | 124 --- .../objetos_globales/weakmap/get/index.html | 80 -- .../objetos_globales/weakmap/has/index.html | 83 -- .../referencia/objetos_globales/weakmap/index.html | 278 ------ .../objetos_globales/weakmap/prototype/index.html | 143 --- .../objetos_globales/weakmap/set/index.html | 91 -- .../referencia/objetos_globales/weakset/index.html | 227 ----- .../objetos_globales/webassembly/index.html | 120 --- .../operadores/adici\303\263n/index.html" | 77 -- .../operadores/aritm\303\251ticos/index.html" | 315 ------- .../referencia/operadores/asignacion/index.html | 62 -- .../operadores/assignment_operators/index.html | 462 ---------- .../operadores/async_function/index.html | 102 --- .../referencia/operadores/await/index.html | 102 --- .../operadores/bitwise_operators/index.html | 722 ---------------- .../referencia/operadores/class/index.html | 157 ---- .../referencia/operadores/comparacion/index.html | 129 --- .../operadores/comparison_operators/index.html | 262 ------ .../operadores/conditional_operator/index.html | 171 ---- .../referencia/operadores/decremento/index.html | 83 -- .../referencia/operadores/delete/index.html | 242 ------ .../operadores/destructuring_assignment/index.html | 442 ---------- .../referencia/operadores/division/index.html | 77 -- .../operadores/encadenamiento_opcional/index.html | 187 ---- .../referencia/operadores/function/index.html | 73 -- .../operadores/function_star_/index.html | 91 -- .../referencia/operadores/grouping/index.html | 128 --- .../javascript/referencia/operadores/in/index.html | 139 --- .../javascript/referencia/operadores/index.html | 280 ------ .../referencia/operadores/instanceof/index.html | 88 -- .../referencia/operadores/miembros/index.html | 85 -- .../referencia/operadores/new.target/index.html | 139 --- .../referencia/operadores/new/index.html | 179 ---- .../referencia/operadores/operador_coma/index.html | 132 --- .../operadores_l\303\263gicos/index.html" | 296 ------- .../operadores/operator_precedence/index.html | 297 ------- .../operadores/pipeline_operator/index.html | 78 -- .../referencia/operadores/resto/index.html | 82 -- .../operadores/sintaxis_spread/index.html | 242 ------ .../operadores/spread_operator/index.html | 220 ----- .../operadores/strict_equality/index.html | 101 --- .../referencia/operadores/super/index.html | 178 ---- .../operadores/sustracci\303\263n/index.html" | 65 -- .../referencia/operadores/this/index.html | 239 ----- .../referencia/operadores/typeof/index.html | 76 -- .../referencia/operadores/void/index.html | 36 - .../referencia/operadores/yield/index.html | 130 --- .../referencia/operadores/yield_star_/index.html | 199 ----- .../referencia/palabras_reservadas/index.html | 99 --- .../referencia/sentencias/block/index.html | 89 -- .../referencia/sentencias/break/index.html | 41 - .../referencia/sentencias/class/index.html | 148 ---- .../referencia/sentencias/const/index.html | 127 --- .../referencia/sentencias/continue/index.html | 66 -- .../referencia/sentencias/debugger/index.html | 125 --- .../referencia/sentencias/default/index.html | 121 --- .../referencia/sentencias/do...while/index.html | 49 -- .../referencia/sentencias/empty/index.html | 141 --- .../referencia/sentencias/export/index.html | 175 ---- .../sentencias/for-await...of/index.html | 144 ---- .../referencia/sentencias/for...in/index.html | 150 ---- .../referencia/sentencias/for...of/index.html | 319 ------- .../referencia/sentencias/for/index.html | 57 -- .../sentencias/funcion_asincrona/index.html | 173 ---- .../referencia/sentencias/function/index.html | 52 -- .../sentencias/function_star_/index.html | 224 ----- .../referencia/sentencias/if...else/index.html | 109 --- .../referencia/sentencias/import.meta/index.html | 93 -- .../referencia/sentencias/import/index.html | 177 ---- .../javascript/referencia/sentencias/index.html | 141 --- .../referencia/sentencias/label/index.html | 35 - .../referencia/sentencias/let/index.html | 393 --------- .../referencia/sentencias/return/index.html | 73 -- .../referencia/sentencias/switch/index.html | 245 ------ .../referencia/sentencias/throw/index.html | 153 ---- .../referencia/sentencias/try...catch/index.html | 254 ------ .../referencia/sentencias/var/index.html | 163 ---- .../referencia/sentencias/while/index.html | 58 -- .../referencia/sentencias/with/index.html | 166 ---- .../referencia/template_strings/index.html | 314 ------- files/es/web/javascript/typed_arrays/index.html | 272 ++++++ .../index.html" | 960 --------------------- .../es/web/javascript/vectores_tipados/index.html | 272 ------ 883 files changed, 64844 insertions(+), 69759 deletions(-) create mode 100644 files/es/web/javascript/a_re-introduction_to_javascript/index.html create mode 100644 files/es/web/javascript/about_javascript/index.html delete mode 100644 files/es/web/javascript/acerca_de_javascript/index.html delete mode 100644 "files/es/web/javascript/descripci\303\263n_de_las_tecnolog\303\255as_javascript/index.html" create mode 100644 files/es/web/javascript/enumerability_and_ownership_of_properties/index.html delete mode 100644 files/es/web/javascript/enumeracion_y_propietario_de_propiedades/index.html delete mode 100644 files/es/web/javascript/gestion_de_memoria/index.html delete mode 100644 "files/es/web/javascript/guide/bucles_e_iteraci\303\263n/index.html" delete mode 100644 files/es/web/javascript/guide/colecciones_indexadas/index.html delete mode 100644 files/es/web/javascript/guide/control_de_flujo_y_manejo_de_errores/index.html create mode 100644 files/es/web/javascript/guide/control_flow_and_error_handling/index.html delete mode 100644 files/es/web/javascript/guide/funciones/index.html create mode 100644 files/es/web/javascript/guide/functions/index.html create mode 100644 files/es/web/javascript/guide/indexed_collections/index.html delete mode 100644 "files/es/web/javascript/guide/introducci\303\263n/index.html" create mode 100644 files/es/web/javascript/guide/introduction/index.html create mode 100644 files/es/web/javascript/guide/loops_and_iteration/index.html create mode 100644 files/es/web/javascript/guide/modules/index.html delete mode 100644 "files/es/web/javascript/guide/m\303\263dulos/index.html" delete mode 100644 files/es/web/javascript/guide/regular_expressions/aserciones/index.html create mode 100644 files/es/web/javascript/guide/regular_expressions/assertions/index.html create mode 100644 files/es/web/javascript/guide/regular_expressions/character_classes/index.html create mode 100644 files/es/web/javascript/guide/regular_expressions/cheatsheet/index.html delete mode 100644 files/es/web/javascript/guide/regular_expressions/clases_de_caracteres/index.html delete mode 100644 files/es/web/javascript/guide/regular_expressions/cuantificadores/index.html delete mode 100644 files/es/web/javascript/guide/regular_expressions/escapes_de_propiedades_unicode/index.html create mode 100644 files/es/web/javascript/guide/regular_expressions/groups_and_ranges/index.html delete mode 100644 files/es/web/javascript/guide/regular_expressions/grupos_y_rangos/index.html delete mode 100644 files/es/web/javascript/guide/regular_expressions/hoja_de_referencia/index.html create mode 100644 files/es/web/javascript/guide/regular_expressions/quantifiers/index.html create mode 100644 files/es/web/javascript/guide/regular_expressions/unicode_property_escapes/index.html delete mode 100644 files/es/web/javascript/guide/trabajando_con_objectos/index.html delete mode 100644 files/es/web/javascript/guide/usar_promesas/index.html create mode 100644 files/es/web/javascript/guide/using_promises/index.html create mode 100644 files/es/web/javascript/guide/working_with_objects/index.html delete mode 100644 files/es/web/javascript/herencia_y_la_cadena_de_protipos/index.html create mode 100644 files/es/web/javascript/inheritance_and_the_prototype_chain/index.html delete mode 100644 "files/es/web/javascript/introducci\303\263n_a_javascript_orientado_a_objetos/index.html" delete mode 100644 files/es/web/javascript/introduction_to_using_xpath_in_javascript/index.html create mode 100644 files/es/web/javascript/javascript_technologies_overview/index.html create mode 100644 files/es/web/javascript/memory_management/index.html create mode 100644 files/es/web/javascript/reference/about/index.html create mode 100644 files/es/web/javascript/reference/classes/constructor/index.html create mode 100644 files/es/web/javascript/reference/classes/extends/index.html create mode 100644 files/es/web/javascript/reference/classes/index.html create mode 100644 files/es/web/javascript/reference/classes/private_class_fields/index.html create mode 100644 files/es/web/javascript/reference/classes/public_class_fields/index.html create mode 100644 files/es/web/javascript/reference/classes/static/index.html create mode 100644 files/es/web/javascript/reference/deprecated_and_obsolete_features/index.html create mode 100644 files/es/web/javascript/reference/deprecated_and_obsolete_features/the_legacy_iterator_protocol/index.html create mode 100644 files/es/web/javascript/reference/errors/bad_regexp_flag/index.html delete mode 100644 files/es/web/javascript/reference/errors/caracter_ilegal/index.html delete mode 100644 files/es/web/javascript/reference/errors/falta_puntoycoma_antes_de_declaracion/index.html create mode 100644 files/es/web/javascript/reference/errors/illegal_character/index.html delete mode 100644 files/es/web/javascript/reference/errors/indicador_regexp_no-val/index.html create mode 100644 files/es/web/javascript/reference/errors/missing_semicolon_before_statement/index.html create mode 100644 files/es/web/javascript/reference/errors/strict_non_simple_params/index.html delete mode 100644 "files/es/web/javascript/reference/errors/strict_y_par\303\241metros_complejos/index.html" create mode 100644 files/es/web/javascript/reference/functions/arguments/callee/index.html create mode 100644 files/es/web/javascript/reference/functions/arguments/index.html create mode 100644 files/es/web/javascript/reference/functions/arguments/length/index.html create mode 100644 files/es/web/javascript/reference/functions/arrow_functions/index.html create mode 100644 files/es/web/javascript/reference/functions/default_parameters/index.html create mode 100644 files/es/web/javascript/reference/functions/get/index.html create mode 100644 files/es/web/javascript/reference/functions/index.html create mode 100644 files/es/web/javascript/reference/functions/method_definitions/index.html create mode 100644 files/es/web/javascript/reference/functions/rest_parameters/index.html create mode 100644 files/es/web/javascript/reference/functions/set/index.html create mode 100644 files/es/web/javascript/reference/global_objects/aggregateerror/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/@@iterator/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/@@species/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/@@unscopables/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/concat/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/copywithin/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/entries/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/every/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/fill/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/filter/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/find/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/findindex/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/flat/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/flatmap/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/foreach/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/from/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/includes/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/indexof/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/isarray/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/join/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/keys/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/lastindexof/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/length/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/map/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/of/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/pop/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/push/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/reduce/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/reduceright/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/reverse/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/shift/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/slice/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/some/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/sort/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/splice/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/tolocalestring/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/tosource/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/tostring/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/unshift/index.html create mode 100644 files/es/web/javascript/reference/global_objects/array/values/index.html create mode 100644 files/es/web/javascript/reference/global_objects/arraybuffer/@@species/index.html create mode 100644 files/es/web/javascript/reference/global_objects/arraybuffer/bytelength/index.html create mode 100644 files/es/web/javascript/reference/global_objects/arraybuffer/index.html create mode 100644 files/es/web/javascript/reference/global_objects/asyncfunction/index.html create mode 100644 files/es/web/javascript/reference/global_objects/boolean/boolean/index.html create mode 100644 files/es/web/javascript/reference/global_objects/boolean/index.html create mode 100644 files/es/web/javascript/reference/global_objects/boolean/tosource/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/getdate/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/getday/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/getfullyear/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/gethours/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/getmilliseconds/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/getminutes/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/getmonth/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/getseconds/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/gettime/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/getutcfullyear/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/getutchours/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/now/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/parse/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/setfullyear/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/setmonth/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/todatestring/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/toisostring/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/tojson/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/tolocaledatestring/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/tolocalestring/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/tolocaletimestring/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/toutcstring/index.html create mode 100644 files/es/web/javascript/reference/global_objects/date/utc/index.html create mode 100644 files/es/web/javascript/reference/global_objects/decodeuri/index.html create mode 100644 files/es/web/javascript/reference/global_objects/decodeuricomponent/index.html create mode 100644 files/es/web/javascript/reference/global_objects/encodeuri/index.html create mode 100644 files/es/web/javascript/reference/global_objects/encodeuricomponent/index.html create mode 100644 files/es/web/javascript/reference/global_objects/error/error/index.html create mode 100644 files/es/web/javascript/reference/global_objects/error/filename/index.html create mode 100644 files/es/web/javascript/reference/global_objects/error/index.html create mode 100644 files/es/web/javascript/reference/global_objects/error/linenumber/index.html create mode 100644 files/es/web/javascript/reference/global_objects/error/message/index.html create mode 100644 files/es/web/javascript/reference/global_objects/error/name/index.html create mode 100644 files/es/web/javascript/reference/global_objects/error/tosource/index.html create mode 100644 files/es/web/javascript/reference/global_objects/error/tostring/index.html create mode 100644 files/es/web/javascript/reference/global_objects/escape/index.html create mode 100644 files/es/web/javascript/reference/global_objects/eval/index.html create mode 100644 files/es/web/javascript/reference/global_objects/evalerror/index.html create mode 100644 files/es/web/javascript/reference/global_objects/function/apply/index.html create mode 100644 files/es/web/javascript/reference/global_objects/function/arguments/index.html create mode 100644 files/es/web/javascript/reference/global_objects/function/bind/index.html create mode 100644 files/es/web/javascript/reference/global_objects/function/call/index.html create mode 100644 files/es/web/javascript/reference/global_objects/function/caller/index.html create mode 100644 files/es/web/javascript/reference/global_objects/function/displayname/index.html create mode 100644 files/es/web/javascript/reference/global_objects/function/function/index.html create mode 100644 files/es/web/javascript/reference/global_objects/function/index.html create mode 100644 files/es/web/javascript/reference/global_objects/function/length/index.html create mode 100644 files/es/web/javascript/reference/global_objects/function/name/index.html create mode 100644 files/es/web/javascript/reference/global_objects/function/tosource/index.html create mode 100644 files/es/web/javascript/reference/global_objects/function/tostring/index.html create mode 100644 files/es/web/javascript/reference/global_objects/generator/index.html create mode 100644 files/es/web/javascript/reference/global_objects/generator/next/index.html create mode 100644 files/es/web/javascript/reference/global_objects/generator/return/index.html create mode 100644 files/es/web/javascript/reference/global_objects/generator/throw/index.html create mode 100644 files/es/web/javascript/reference/global_objects/index.html create mode 100644 files/es/web/javascript/reference/global_objects/infinity/index.html create mode 100644 files/es/web/javascript/reference/global_objects/internalerror/index.html create mode 100644 files/es/web/javascript/reference/global_objects/internalerror/internalerror/index.html create mode 100644 files/es/web/javascript/reference/global_objects/intl/index.html create mode 100644 files/es/web/javascript/reference/global_objects/intl/numberformat/format/index.html create mode 100644 files/es/web/javascript/reference/global_objects/intl/numberformat/index.html create mode 100644 files/es/web/javascript/reference/global_objects/intl/relativetimeformat/index.html create mode 100644 files/es/web/javascript/reference/global_objects/isfinite/index.html create mode 100644 files/es/web/javascript/reference/global_objects/isnan/index.html create mode 100644 files/es/web/javascript/reference/global_objects/json/index.html create mode 100644 files/es/web/javascript/reference/global_objects/json/parse/index.html create mode 100644 files/es/web/javascript/reference/global_objects/json/stringify/index.html create mode 100644 files/es/web/javascript/reference/global_objects/map/clear/index.html create mode 100644 files/es/web/javascript/reference/global_objects/map/delete/index.html create mode 100644 files/es/web/javascript/reference/global_objects/map/entries/index.html create mode 100644 files/es/web/javascript/reference/global_objects/map/foreach/index.html create mode 100644 files/es/web/javascript/reference/global_objects/map/get/index.html create mode 100644 files/es/web/javascript/reference/global_objects/map/has/index.html create mode 100644 files/es/web/javascript/reference/global_objects/map/index.html create mode 100644 files/es/web/javascript/reference/global_objects/map/keys/index.html create mode 100644 files/es/web/javascript/reference/global_objects/map/set/index.html create mode 100644 files/es/web/javascript/reference/global_objects/map/size/index.html create mode 100644 files/es/web/javascript/reference/global_objects/map/values/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/abs/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/acos/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/acosh/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/asin/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/asinh/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/atan/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/atan2/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/atanh/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/cbrt/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/ceil/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/cos/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/e/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/exp/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/expm1/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/floor/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/fround/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/hypot/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/ln10/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/ln2/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/log/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/log10/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/log10e/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/log2/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/log2e/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/max/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/min/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/pi/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/pow/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/random/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/round/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/sign/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/sin/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/sqrt/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/sqrt1_2/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/sqrt2/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/tan/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/tanh/index.html create mode 100644 files/es/web/javascript/reference/global_objects/math/trunc/index.html create mode 100644 files/es/web/javascript/reference/global_objects/nan/index.html create mode 100644 files/es/web/javascript/reference/global_objects/null/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/isfinite/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/isinteger/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/isnan/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/issafeinteger/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/max_safe_integer/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/max_value/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/min_value/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/nan/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/negative_infinity/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/parsefloat/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/parseint/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/positive_infinity/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/tofixed/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/tolocalestring/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/toprecision/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/tostring/index.html create mode 100644 files/es/web/javascript/reference/global_objects/number/valueof/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/__definegetter__/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/__lookupgetter__/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/assign/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/constructor/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/create/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/defineproperties/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/defineproperty/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/entries/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/freeze/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/fromentries/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/getownpropertynames/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/getprototypeof/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/hasownproperty/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/is/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/isextensible/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/isfrozen/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/isprototypeof/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/issealed/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/keys/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/preventextensions/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/propertyisenumerable/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/proto/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/seal/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/setprototypeof/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/tolocalestring/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/tosource/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/tostring/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/valueof/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/values/index.html create mode 100644 files/es/web/javascript/reference/global_objects/parsefloat/index.html create mode 100644 files/es/web/javascript/reference/global_objects/parseint/index.html create mode 100644 files/es/web/javascript/reference/global_objects/promise/all/index.html create mode 100644 files/es/web/javascript/reference/global_objects/promise/catch/index.html create mode 100644 files/es/web/javascript/reference/global_objects/promise/finally/index.html create mode 100644 files/es/web/javascript/reference/global_objects/promise/index.html create mode 100644 files/es/web/javascript/reference/global_objects/promise/race/index.html create mode 100644 files/es/web/javascript/reference/global_objects/promise/reject/index.html create mode 100644 files/es/web/javascript/reference/global_objects/promise/resolve/index.html create mode 100644 files/es/web/javascript/reference/global_objects/promise/then/index.html delete mode 100644 files/es/web/javascript/reference/global_objects/proxy/handler/getownpropertydescriptor/index.html delete mode 100644 files/es/web/javascript/reference/global_objects/proxy/handler/index.html delete mode 100644 files/es/web/javascript/reference/global_objects/proxy/handler/set/index.html create mode 100644 files/es/web/javascript/reference/global_objects/proxy/index.html create mode 100644 files/es/web/javascript/reference/global_objects/proxy/proxy/getownpropertydescriptor/index.html create mode 100644 files/es/web/javascript/reference/global_objects/proxy/proxy/index.html create mode 100644 files/es/web/javascript/reference/global_objects/proxy/proxy/set/index.html delete mode 100644 files/es/web/javascript/reference/global_objects/rangeerror/prototype/index.html create mode 100644 files/es/web/javascript/reference/global_objects/referenceerror/index.html create mode 100644 files/es/web/javascript/reference/global_objects/regexp/compile/index.html create mode 100644 files/es/web/javascript/reference/global_objects/regexp/exec/index.html create mode 100644 files/es/web/javascript/reference/global_objects/regexp/ignorecase/index.html create mode 100644 files/es/web/javascript/reference/global_objects/regexp/index.html create mode 100644 files/es/web/javascript/reference/global_objects/regexp/regexp/index.html create mode 100644 files/es/web/javascript/reference/global_objects/regexp/rightcontext/index.html create mode 100644 files/es/web/javascript/reference/global_objects/regexp/test/index.html create mode 100644 files/es/web/javascript/reference/global_objects/regexp/tostring/index.html create mode 100644 files/es/web/javascript/reference/global_objects/set/@@iterator/index.html create mode 100644 files/es/web/javascript/reference/global_objects/set/add/index.html create mode 100644 files/es/web/javascript/reference/global_objects/set/clear/index.html create mode 100644 files/es/web/javascript/reference/global_objects/set/delete/index.html create mode 100644 files/es/web/javascript/reference/global_objects/set/entries/index.html create mode 100644 files/es/web/javascript/reference/global_objects/set/has/index.html create mode 100644 files/es/web/javascript/reference/global_objects/set/index.html create mode 100644 files/es/web/javascript/reference/global_objects/set/size/index.html create mode 100644 files/es/web/javascript/reference/global_objects/set/values/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/anchor/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/big/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/blink/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/bold/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/charat/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/charcodeat/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/codepointat/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/concat/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/endswith/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/fixed/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/fontcolor/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/fontsize/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/fromcharcode/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/fromcodepoint/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/includes/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/indexof/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/italics/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/lastindexof/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/length/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/link/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/localecompare/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/match/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/matchall/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/normalize/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/padstart/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/raw/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/repeat/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/replace/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/search/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/slice/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/small/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/split/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/startswith/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/strike/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/sub/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/substr/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/substring/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/sup/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/tolocalelowercase/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/tolowercase/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/tosource/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/tostring/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/touppercase/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/trim/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/trimend/index.html create mode 100644 files/es/web/javascript/reference/global_objects/string/valueof/index.html create mode 100644 files/es/web/javascript/reference/global_objects/symbol/for/index.html create mode 100644 files/es/web/javascript/reference/global_objects/symbol/hasinstance/index.html create mode 100644 files/es/web/javascript/reference/global_objects/symbol/index.html create mode 100644 files/es/web/javascript/reference/global_objects/symbol/iterator/index.html create mode 100644 files/es/web/javascript/reference/global_objects/syntaxerror/index.html create mode 100644 files/es/web/javascript/reference/global_objects/typedarray/buffer/index.html create mode 100644 files/es/web/javascript/reference/global_objects/typedarray/index.html create mode 100644 files/es/web/javascript/reference/global_objects/uint8array/index.html create mode 100644 files/es/web/javascript/reference/global_objects/undefined/index.html create mode 100644 files/es/web/javascript/reference/global_objects/unescape/index.html create mode 100644 files/es/web/javascript/reference/global_objects/urierror/index.html create mode 100644 files/es/web/javascript/reference/global_objects/weakmap/clear/index.html create mode 100644 files/es/web/javascript/reference/global_objects/weakmap/delete/index.html create mode 100644 files/es/web/javascript/reference/global_objects/weakmap/get/index.html create mode 100644 files/es/web/javascript/reference/global_objects/weakmap/has/index.html create mode 100644 files/es/web/javascript/reference/global_objects/weakmap/index.html create mode 100644 files/es/web/javascript/reference/global_objects/weakmap/set/index.html create mode 100644 files/es/web/javascript/reference/global_objects/weakset/index.html create mode 100644 files/es/web/javascript/reference/global_objects/webassembly/index.html create mode 100644 files/es/web/javascript/reference/index.html create mode 100644 files/es/web/javascript/reference/iteration_protocols/index.html create mode 100644 files/es/web/javascript/reference/lexical_grammar/index.html create mode 100644 files/es/web/javascript/reference/operators/addition/index.html create mode 100644 files/es/web/javascript/reference/operators/assignment/index.html create mode 100644 files/es/web/javascript/reference/operators/async_function/index.html create mode 100644 files/es/web/javascript/reference/operators/await/index.html create mode 100644 files/es/web/javascript/reference/operators/class/index.html create mode 100644 files/es/web/javascript/reference/operators/comma_operator/index.html create mode 100644 files/es/web/javascript/reference/operators/conditional_operator/index.html create mode 100644 files/es/web/javascript/reference/operators/decrement/index.html create mode 100644 files/es/web/javascript/reference/operators/delete/index.html create mode 100644 files/es/web/javascript/reference/operators/destructuring_assignment/index.html create mode 100644 files/es/web/javascript/reference/operators/division/index.html create mode 100644 files/es/web/javascript/reference/operators/equality/index.html create mode 100644 files/es/web/javascript/reference/operators/function/index.html create mode 100644 files/es/web/javascript/reference/operators/function_star_/index.html create mode 100644 files/es/web/javascript/reference/operators/grouping/index.html create mode 100644 files/es/web/javascript/reference/operators/in/index.html create mode 100644 files/es/web/javascript/reference/operators/index.html create mode 100644 files/es/web/javascript/reference/operators/instanceof/index.html create mode 100644 files/es/web/javascript/reference/operators/new.target/index.html create mode 100644 files/es/web/javascript/reference/operators/new/index.html create mode 100644 files/es/web/javascript/reference/operators/operator_precedence/index.html create mode 100644 files/es/web/javascript/reference/operators/optional_chaining/index.html create mode 100644 files/es/web/javascript/reference/operators/pipeline_operator/index.html create mode 100644 files/es/web/javascript/reference/operators/property_accessors/index.html create mode 100644 files/es/web/javascript/reference/operators/remainder/index.html create mode 100644 files/es/web/javascript/reference/operators/spread_syntax/index.html create mode 100644 files/es/web/javascript/reference/operators/strict_equality/index.html create mode 100644 files/es/web/javascript/reference/operators/subtraction/index.html create mode 100644 files/es/web/javascript/reference/operators/super/index.html create mode 100644 files/es/web/javascript/reference/operators/this/index.html create mode 100644 files/es/web/javascript/reference/operators/typeof/index.html create mode 100644 files/es/web/javascript/reference/operators/void/index.html create mode 100644 files/es/web/javascript/reference/operators/yield/index.html create mode 100644 files/es/web/javascript/reference/operators/yield_star_/index.html create mode 100644 files/es/web/javascript/reference/statements/async_function/index.html create mode 100644 files/es/web/javascript/reference/statements/block/index.html create mode 100644 files/es/web/javascript/reference/statements/break/index.html create mode 100644 files/es/web/javascript/reference/statements/class/index.html create mode 100644 files/es/web/javascript/reference/statements/const/index.html create mode 100644 files/es/web/javascript/reference/statements/continue/index.html create mode 100644 files/es/web/javascript/reference/statements/debugger/index.html create mode 100644 files/es/web/javascript/reference/statements/do...while/index.html create mode 100644 files/es/web/javascript/reference/statements/empty/index.html create mode 100644 files/es/web/javascript/reference/statements/export/index.html create mode 100644 files/es/web/javascript/reference/statements/for-await...of/index.html create mode 100644 files/es/web/javascript/reference/statements/for...in/index.html create mode 100644 files/es/web/javascript/reference/statements/for...of/index.html create mode 100644 files/es/web/javascript/reference/statements/for/index.html create mode 100644 files/es/web/javascript/reference/statements/function/index.html create mode 100644 files/es/web/javascript/reference/statements/function_star_/index.html create mode 100644 files/es/web/javascript/reference/statements/if...else/index.html create mode 100644 files/es/web/javascript/reference/statements/import.meta/index.html create mode 100644 files/es/web/javascript/reference/statements/import/index.html create mode 100644 files/es/web/javascript/reference/statements/index.html create mode 100644 files/es/web/javascript/reference/statements/label/index.html create mode 100644 files/es/web/javascript/reference/statements/let/index.html create mode 100644 files/es/web/javascript/reference/statements/return/index.html create mode 100644 files/es/web/javascript/reference/statements/switch/index.html create mode 100644 files/es/web/javascript/reference/statements/throw/index.html create mode 100644 files/es/web/javascript/reference/statements/try...catch/index.html create mode 100644 files/es/web/javascript/reference/statements/var/index.html create mode 100644 files/es/web/javascript/reference/statements/while/index.html create mode 100644 files/es/web/javascript/reference/statements/with/index.html create mode 100644 files/es/web/javascript/reference/strict_mode/index.html create mode 100644 files/es/web/javascript/reference/template_literals/index.html delete mode 100644 files/es/web/javascript/referencia/acerca_de/index.html delete mode 100644 "files/es/web/javascript/referencia/caracter\303\255sticas_desaprobadas/index.html" delete mode 100644 "files/es/web/javascript/referencia/caracter\303\255sticas_desaprobadas/the_legacy_iterator_protocol/index.html" delete mode 100644 files/es/web/javascript/referencia/classes/class_fields/index.html delete mode 100644 files/es/web/javascript/referencia/classes/constructor/index.html delete mode 100644 files/es/web/javascript/referencia/classes/extends/index.html delete mode 100644 files/es/web/javascript/referencia/classes/index.html delete mode 100644 files/es/web/javascript/referencia/classes/private_class_fields/index.html delete mode 100644 files/es/web/javascript/referencia/classes/static/index.html delete mode 100644 files/es/web/javascript/referencia/funciones/arguments/callee/index.html delete mode 100644 files/es/web/javascript/referencia/funciones/arguments/index.html delete mode 100644 files/es/web/javascript/referencia/funciones/arguments/length/index.html delete mode 100644 files/es/web/javascript/referencia/funciones/arrow_functions/index.html delete mode 100644 files/es/web/javascript/referencia/funciones/get/index.html delete mode 100644 files/es/web/javascript/referencia/funciones/index.html delete mode 100644 files/es/web/javascript/referencia/funciones/method_definitions/index.html delete mode 100644 files/es/web/javascript/referencia/funciones/parametros_por_defecto/index.html delete mode 100644 files/es/web/javascript/referencia/funciones/parametros_rest/index.html delete mode 100644 files/es/web/javascript/referencia/funciones/set/index.html delete mode 100644 files/es/web/javascript/referencia/gramatica_lexica/index.html delete mode 100644 files/es/web/javascript/referencia/index.html delete mode 100644 files/es/web/javascript/referencia/iteration_protocols/index.html delete mode 100644 files/es/web/javascript/referencia/modo_estricto/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/aggregateerror/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/@@iterator/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/@@species/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/@@unscopables/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/concat/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/copywithin/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/entries/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/every/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/fill/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/filter/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/find/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/findindex/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/flat/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/flatmap/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/foreach/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/from/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/includes/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/indexof/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/isarray/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/join/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/keys/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/lastindexof/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/length/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/map/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/of/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/pop/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/prototype/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/push/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/reduce/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/reduceright/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/reverse/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/shift/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/slice/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/some/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/sort/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/splice/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/tolocalestring/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/tosource/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/tostring/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/unshift/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/array/values/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/arraybuffer/@@species/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/arraybuffer/bytelength/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/arraybuffer/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/arraybuffer/prototype/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/boolean/boolean/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/boolean/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/boolean/tosource/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/getdate/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/getday/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/getfullyear/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/gethours/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/getmilliseconds/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/getminutes/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/getmonth/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/getseconds/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/gettime/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/getutcfullyear/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/getutchours/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/now/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/parse/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/prototype/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/setfullyear/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/setmonth/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/todatestring/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/toisostring/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/tojson/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/tolocaledatestring/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/tolocalestring/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/tolocaletimestring/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/toutcstring/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/date/utc/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/decodeuri/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/decodeuricomponent/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/encodeuri/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/encodeuricomponent/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/error/constructor_error/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/error/filename/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/error/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/error/linenumber/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/error/message/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/error/name/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/error/prototype/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/error/tosource/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/error/tostring/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/escape/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/eval/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/evalerror/index.html delete mode 100644 "files/es/web/javascript/referencia/objetos_globales/funcionesas\303\255ncronas/index.html" delete mode 100644 files/es/web/javascript/referencia/objetos_globales/function/apply/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/function/arguments/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/function/bind/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/function/call/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/function/caller/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/function/displayname/index.html delete mode 100644 "files/es/web/javascript/referencia/objetos_globales/function/funci\303\263n/index.html" delete mode 100644 files/es/web/javascript/referencia/objetos_globales/function/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/function/length/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/function/name/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/function/prototype/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/function/tosource/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/function/tostring/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/generador/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/generador/next/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/generador/return/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/generador/throw/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/infinity/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/internalerror/constructor_internalerror/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/internalerror/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/intl/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/intl/numberformat/format/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/intl/numberformat/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/intl/relativetimeformat/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/isfinite/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/isnan/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/json/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/json/parse/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/json/stringify/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/map/clear/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/map/delete/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/map/entries/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/map/foreach/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/map/get/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/map/has/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/map/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/map/keys/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/map/prototype/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/map/set/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/map/size/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/map/values/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/abs/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/acos/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/acosh/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/asin/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/asinh/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/atan/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/atan2/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/atanh/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/cbrt/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/ceil/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/cos/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/e/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/exp/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/expm1/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/floor/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/fround/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/hypot/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/ln10/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/ln2/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/log/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/log10/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/log10e/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/log2/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/log2e/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/max/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/min/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/pi/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/pow/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/random/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/round/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/seno/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/sign/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/sqrt/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/sqrt1_2/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/sqrt2/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/tan/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/tanh/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/math/trunc/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/nan/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/null/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/isfinite/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/isinteger/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/isnan/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/issafeinteger/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/max_safe_integer/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/max_value/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/min_value/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/nan/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/negative_infinity/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/parsefloat/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/parseint/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/positive_infinity/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/prototype/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/tofixed/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/tolocalestring/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/toprecision/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/tostring/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/number/valueof/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/__definegetter__/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/__lookupgetter__/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/assign/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/constructor/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/create/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/defineproperties/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/defineproperty/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/entries/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/freeze/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/fromentries/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/getownpropertydescriptor/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/getownpropertydescriptors/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/getownpropertynames/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/getownpropertysymbols/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/getprototypeof/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/hasownproperty/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/is/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/isextensible/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/isfrozen/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/isprototypeof/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/issealed/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/keys/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/preventextensions/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/propertyisenumerable/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/proto/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/prototype/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/seal/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/setprototypeof/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/tolocalestring/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/tosource/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/tostring/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/valueof/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/object/values/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/parsefloat/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/parseint/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/promise/all/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/promise/catch/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/promise/finally/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/promise/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/promise/prototype/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/promise/race/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/promise/reject/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/promise/resolve/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/promise/then/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/proxy/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/referenceerror/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/regexp/compile/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/regexp/exec/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/regexp/ignorecase/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/regexp/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/regexp/regexp/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/regexp/rightcontext/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/regexp/test/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/regexp/tostring/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/set/@@iterator/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/set/add/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/set/clear/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/set/delete/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/set/entries/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/set/has/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/set/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/set/size/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/set/values/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/anchor/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/big/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/blink/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/bold/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/charat/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/charcodeat/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/codepointat/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/concat/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/endswith/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/fixed/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/fontcolor/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/fontsize/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/fromcharcode/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/fromcodepoint/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/includes/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/indexof/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/italics/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/lastindexof/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/length/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/link/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/localecompare/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/match/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/matchall/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/normalize/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/padstart/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/prototype/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/raw/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/repeat/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/replace/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/search/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/slice/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/small/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/split/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/startswith/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/strike/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/sub/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/substr/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/substring/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/sup/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/tolocalelowercase/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/tolocaleuppercase/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/tolowercase/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/tosource/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/tostring/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/touppercase/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/trim/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/trimend/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/string/valueof/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/symbol/for/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/symbol/hasinstance/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/symbol/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/symbol/iterator/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/syntaxerror/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/syntaxerror/prototype/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/typedarray/buffer/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/typedarray/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/uint8array/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/undefined/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/unescape/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/urierror/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/weakmap/clear/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/weakmap/delete/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/weakmap/get/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/weakmap/has/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/weakmap/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/weakmap/prototype/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/weakmap/set/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/weakset/index.html delete mode 100644 files/es/web/javascript/referencia/objetos_globales/webassembly/index.html delete mode 100644 "files/es/web/javascript/referencia/operadores/adici\303\263n/index.html" delete mode 100644 "files/es/web/javascript/referencia/operadores/aritm\303\251ticos/index.html" delete mode 100644 files/es/web/javascript/referencia/operadores/asignacion/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/assignment_operators/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/async_function/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/await/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/bitwise_operators/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/class/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/comparacion/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/comparison_operators/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/conditional_operator/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/decremento/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/delete/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/destructuring_assignment/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/division/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/encadenamiento_opcional/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/function/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/function_star_/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/grouping/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/in/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/instanceof/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/miembros/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/new.target/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/new/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/operador_coma/index.html delete mode 100644 "files/es/web/javascript/referencia/operadores/operadores_l\303\263gicos/index.html" delete mode 100644 files/es/web/javascript/referencia/operadores/operator_precedence/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/pipeline_operator/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/resto/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/sintaxis_spread/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/spread_operator/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/strict_equality/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/super/index.html delete mode 100644 "files/es/web/javascript/referencia/operadores/sustracci\303\263n/index.html" delete mode 100644 files/es/web/javascript/referencia/operadores/this/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/typeof/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/void/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/yield/index.html delete mode 100644 files/es/web/javascript/referencia/operadores/yield_star_/index.html delete mode 100644 files/es/web/javascript/referencia/palabras_reservadas/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/block/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/break/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/class/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/const/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/continue/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/debugger/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/default/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/do...while/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/empty/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/export/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/for-await...of/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/for...in/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/for...of/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/for/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/funcion_asincrona/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/function/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/function_star_/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/if...else/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/import.meta/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/import/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/label/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/let/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/return/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/switch/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/throw/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/try...catch/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/var/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/while/index.html delete mode 100644 files/es/web/javascript/referencia/sentencias/with/index.html delete mode 100644 files/es/web/javascript/referencia/template_strings/index.html create mode 100644 files/es/web/javascript/typed_arrays/index.html delete mode 100644 "files/es/web/javascript/una_re-introducci\303\263n_a_javascript/index.html" delete mode 100644 files/es/web/javascript/vectores_tipados/index.html (limited to 'files/es/web/javascript') diff --git a/files/es/web/javascript/a_re-introduction_to_javascript/index.html b/files/es/web/javascript/a_re-introduction_to_javascript/index.html new file mode 100644 index 0000000000..b8f2756627 --- /dev/null +++ b/files/es/web/javascript/a_re-introduction_to_javascript/index.html @@ -0,0 +1,960 @@ +--- +title: Una reintroducción a JavaScript (Tutorial de JS) +slug: Web/JavaScript/Una_re-introducción_a_JavaScript +tags: + - Aprender + - Guía + - Intermedio + - Intro + - JavaScript + - Tutorial + - introducción +translation_of: Web/JavaScript/A_re-introduction_to_JavaScript +--- +
{{jsSidebar}}
+ + +

¿Por qué una reintroducción? Porque {{Glossary("JavaScript")}} es conocido por ser el lenguaje de programación más incomprendido. A menudo se le ridiculiza como un juguete, pero debajo de esa capa de engañosa simplicidad, aguardan poderosas características del lenguaje. Ahora un increíble número de aplicaciones de alto perfil utilizan JavaScript, lo cual demuestra que un conocimiento más profundo de esta tecnología es una habilidad importante para cualquier desarrollador web o móvil.

+ +

Es útil comenzar con una descripción general de la historia del lenguaje. JavaScript fue creado en 1995 por Brendan Eich mientras era ingeniero en Netscape. JavaScript se lanzó por primera vez con Netscape 2 a principios de 1996. Originalmente se iba a llamar LiveScript, pero se le cambió el nombre en una desafortunada decisión de marketing que intentó capitalizar la popularidad del lenguaje Java de Sun Microsystem, a pesar de que los dos tienen muy poco en común. Esto ha sido una fuente de confusión desde entonces.

+ +

Varios meses después, Microsoft lanzó JScript con Internet Explorer 3. Era un JavaScript prácticamente compatible. Varios meses después de eso, Netscape envió JavaScript a Ecma International, una organización europea de estándares, que resultó en la primera edición del estándar {{Glossary("ECMAScript")}} ese año. El estándar recibió una actualización significativa como ECMAScript edición 3 en 1999, y se ha mantenido bastante estable desde entonces. La cuarta edición fue abandonada debido a diferencias políticas sobre la complejidad del lenguaje. Muchas partes de la cuarta edición formaron la base para la edición 5 de ECMAScript, publicada en diciembre de 2009, y para la sexta edición principal del estándar, publicada en junio de 2015.

+ +
+

Debido a que es más familiar, nos referiremos a ECMAScript como "JavaScript" de ahora en adelante.

+
+ +

A diferencia de la mayoría de los lenguajes de programación, el lenguaje JavaScript no tiene un concepto de entrada o salida. Está diseñado para ejecutarse como un lenguaje de scripting en un entorno hospedado, y depende del entorno para proporcionar los mecanismos para comunicarse con el mundo exterior. El entorno de alojamiento más común es el navegador, pero también se pueden encontrar intérpretes de JavaScript en una gran lista de otros lugares, incluidos Adobe Acrobat, Adobe Photoshop, imágenes SVG, el motor de widgets de Yahoo, entornos de lado del servidor como Node.js, bases de datos NoSQL como Apache CouchDB de código abierto, computadoras integradas, entornos de escritorio completos como GNOME (una de las IGU —Interfaz Gráfica de Usuario— más populares para sistemas operativos GNU/Linux), y otros.

+ +

Información general

+ +

JavaScript es un lenguaje dinámico múltiparadigma con tipos y operadores, objetos estándar integrados y métodos. Su sintaxis se basa en los lenguajes Java y C — muchas estructuras de esos lenguajes también se aplican a JavaScript. JavaScript admite la programación orientada a objetos con prototipos de objetos, en lugar de clases (consulta más información sobre {{jsxref("Inheritance_and_the_prototype_chain", "herencia prototípica")}} y ES2015 {{jsxref("Reference/Classes", "clases")}}. JavaScript también admite la programación funcional — debido a que son objetos, las funciones se pueden almacenar en variables y pasarse como cualquier otro objeto.

+ +

Comencemos observando los componentes básicos de cualquier lenguaje: los tipos. Los programas JavaScript manipulan valores, y todos esos valores pertenecen a un tipo. Los tipos de JavaScript son:

+ + + +

... oh, y {{jsxref("undefined")}} y {{jsxref("null")}}, que son ... ligeramente extraños. Y {{jsxref("Array")}}, que es un tipo de objeto especial. Y {{jsxref("Date", "Fechas (Date)")}} y {{jsxref("RegExp", "Expresiones regulares (RegExp)")}}, que son objetos que obtienes de forma gratuita. Y para ser técnicamente precisos, las funciones son solo un tipo especial de objeto. Por lo tanto, el diagrama de tipos se parece más a este:

+ + + +

Y también hay algunos tipos {{jsxref("Error")}} integrados. Sin embargo, las cosas son mucho más fáciles si nos atenemos al primer diagrama, por lo que discutiremos los tipos enumerados allí por ahora.

+ +

Números

+ +

Los números en JavaScript son "valores IEEE 754 de formato de 64 bits de doble precisión", de acuerdo con las especificaciones. No existen números enteros en JavaScript (excepto {{jsxref("BigInt")}}), por lo que debes tener un poco de cuidado. Ve este ejemplo:

+ +
console.log(3 / 2);             // 1.5, not 1
+console.log(Math.floor(3 / 2)); // 1
+ +

Entonces, un entero aparente de hecho implícitamente es un float.

+ +

Además, ten cuidado con cosas como:

+ +
0.1 + 0.2 == 0.30000000000000004;
+
+ +

En la práctica, los valores enteros se tratan como enteros de 32 bits, y algunas implementaciones incluso los almacenan de esa manera hasta que se les pide que realicen una instrucción que sea válida en un Número pero no en un entero de 32 bits. Esto puede ser importante para operaciones bit a bit.

+ +

Se admiten los {{jsxref("Operators", "operadores", "#Operadores_aritméticos")}} estándar, incluidas la aritmética de suma, resta, módulo (o resto), etc. También hay un objeto incorporado que no mencionamos anteriormente llamado {{jsxref("Math")}} que proporciona funciones matemáticas avanzadas y constantes:

+ +
Math.sin(3.5);
+var circumference = 2 * Math.PI * r;
+
+ +

Puedes convertir una cadena en un número entero usando la función {{jsxref("Objetos_Globales/parseInt", "parseInt()")}} incorporada. Esta toma la base para la conversión como un segundo argumento opcional, que siempre debes proporcionar:

+ +
parseInt('123', 10); // 123
+parseInt('010', 10); // 10
+
+ +

En los navegadores más antiguos, se supone que las cadenas que comienzan con un "0" están en octal (raíz 8), pero este no ha sido el caso desde 2013 más o menos. A menos que estés seguro de tu formato de cadena, puedes obtener resultados sorprendentes en esos navegadores más antiguos:

+ +
parseInt('010');  //  8
+parseInt('0x10'); // 16
+
+ +

Aquí, vemos que la función {{jsxref("Objetos_Globales/parseInt", "parseInt()")}} trata la primera cadena como octal debido al 0 inicial, y la segunda cadena como hexadecimal debido al "0x" inicial. La notación hexadecimal todavía está en su lugar; solo se ha eliminado el octal.

+ +

Si deseas convertir un número binario en un entero, simplemente cambia la base:

+ +
parseInt('11', 2); // 3
+
+ +

De manera similar, puedes analizar números de coma flotante utilizando la función incorporada {{jsxref("Objetos_Globales/parseFloat", "parseFloat()")}}. A diferencia de su primo {{jsxref("Objetos_Globales/parseInt", "parseInt()")}}, parseFloat() siempre usa base 10.

+ +

También puedes utilizar el operador + unario para convertir valores en números:

+ +
+ '42';   // 42
++ '010';  // 10
++ '0x10'; // 16
+
+ +

Se devuelve un valor especial llamado {{jsxref("NaN")}} (abreviatura de "Not a Number" o "No es un número") si la cadena no es numérica:

+ +
parseInt('hello', 10); // NaN
+
+ +

NaN es tóxico: si lo proporcionas como operando para cualquier operación matemática, el resultado también será NaN:

+ +
NaN + 5; // NaN
+
+ +

Puedes probar si un valor es NaN utilizando la función incorporada {{jsxref("Objetos_Globales/isNaN", "isNaN()")}}:

+ +
isNaN(NaN); // true
+
+ +

JavaScript también tiene los valores especiales {{jsxref("Infinity")}} e -Infinity:

+ +
 1 / 0; //  Infinity
+-1 / 0; // -Infinity
+
+ +

Puedes probar los valores Infinity, -Infinity y NaN utilizando la función integrada {{jsxref("Objetos_Globales/isFinite", "isFinite()")}}:

+ +
isFinite(1 / 0); // false
+isFinite(-Infinity); // false
+isFinite(NaN); // false
+
+ +
Las funciones {{jsxref("Objetos_Globales/parseInt", "parseInt()")}} y {{jsxref("Objetos_Globales/parseFloat", "parseFloat()")}} analizan una cadena hasta que alcancen un caracter que no es válido para el formato de número especificado, luego devuelve el número analizado hasta ese punto. Sin embargo, el operador "+" simplemente convierte la cadena a NaN si contiene un caracter no válido. Intenta analizar la cadena "10.2abc" con cada método tú mismo en la consola y comprenderás mejor las diferencias.
+ +

Strings)

+ +

Las cadenas en JavaScript son secuencias de caracteres Unicode. Esta debería ser una buena noticia para cualquiera que haya tenido que lidiar con la internacionalización. Exactamente, son secuencias de unidades de código UTF-16; cada unidad de código está representada por un número de 16 bits. Cada caracter Unicode está representado por 1 o 2 unidades de código.

+ +

Si deseas representar un solo caracter, simplemente usa una cadena que consta de ese único caracter.

+ +

Para encontrar la longitud de una cadena (en unidades de código), accede a su propiedad {{jsxref("Objetos_Globales/String/length", "lenght")}}:

+ +
'hello'.length; // 5
+
+ +

¡Aquí está nuestra primer pincelada con objetos JavaScript! ¿Mencionamos que también puedes usar cadenas como {{jsxref("Object", "objectos", "", 1)}}? También tienen {{jsxref("String", "métodos", "#Métodos", 1)}} que te permiten manipular la cadena y acceder a información sobre la cadena:

+ +
'hello'.charAt(0); // "h"
+'hello, world'.replace('world', 'mars'); // "hello, mars"
+'hello'.toUpperCase(); // "HELLO"
+
+ +

Otros tipos

+ +

JavaScript distingue entre {{jsxref("null")}}, que es un valor que indica un no valor deliberado (y solo se puede acceder a él mediante la palabra clave null), y {{jsxref("undefined")}}, que es un valor de tipo undefined que indica una variable no iniciada es decir, que aún no se le ha asignado un valor. Hablaremos de variables más adelante, pero en JavaScript es posible declarar una variable sin asignarle un valor. Si hace esto, el tipo de la variable es undefined. undefined en realidad es una constante.

+ +

JavaScript tiene un tipo booleano, con valores posibles true y false (ambos son palabras clave). Cualquier valor se puede convertir a booleano de acuerdo con las siguientes reglas:

+ +
    +
  1. false, 0, cadenas vacías (""), NaN, null, y undefined todos se vuelven false.
  2. +
  3. Todos los demás valores se vuelven true.
  4. +
+ +

Puedes realizar esta conversión explícitamente utilizando la función Boolean():

+ +
Boolean('');  // false
+Boolean(234); // true
+
+ +

Sin embargo, esto rara vez es necesario, ya que JavaScript realizará silenciosamente esta conversión cuando espera un booleano, como en una declaración if (ve más adelante). Por esta razón, a veces hablamos simplemente de "valores verdaderos" y "valores falsos", es decir, valores que se convierten en true y false, respectivamente, cuando se convierten en booleanos. Alternativamente, estos valores se pueden llamar "veracidad" y "falsedad", respectivamente.

+ +

Operaciones booleanas como && (and lógico), || (or lógico) y ! (not lógico) son compatibles; ve más adelante.

+ +

Variables

+ +

Las nuevas variables en JavaScript se declaran utilizando una de tres palabras clave: {{jsxref("Sentencias/let", "let")}}, {{jsxref("Sentencias/const", "const")}} o {{jsxref("Sentencias/var", "var")}}.
+
+ let te permite declarar variables a nivel de bloque. La variable declarada está disponible en el bloque en el que está incluida.

+ +
let a;
+let name = 'Simon';
+
+ +

El siguiente es un ejemplo de alcance con una variable declarada con let:

+ +
// myLetVariable *no* es visible aquí
+
+for (let myLetVariable = 0; myLetVariable < 5; myLetVariable++) {
+  // myLetVariable solo es visible aquí
+}
+
+// myLetVariable *no* es visible aquí
+
+
+ +

const te permite declarar variables cuyos valores pretendes nunca cambiar. La variable está disponible en el bloque en el que se declara.

+ +
const Pi = 3.14; // establece la variable Pi
+Pi = 1; // arrojará un error porque no puede cambiar una variable constante.
+ +


+ var es la palabra clave declarativa más común. No tiene las restricciones que tienen las otras dos palabras clave. Esto se debe a que tradicionalmente era la única forma de declarar una variable en JavaScript. Una variable declarada con la palabra clave var está disponible en la función en la que se declara.

+ +
var a;
+var name = 'Simon';
+ +

Un ejemplo de ámbito con una variable declarada con var:

+ +
// myVarVariable *es* visible aquí
+
+for (var myVarVariable = 0; myVarVariable < 5; myVarVariable++) {
+  // myVarVariable es visible para toda la función
+}
+
+// myVarVariable *es* visible aquí
+
+ +

Si declaras una variable sin asignarle ningún valor, su tipo es undefined.

+ +

Una diferencia importante entre JavaScript y otros lenguajes como Java es que en JavaScript, los bloques no tienen alcance; solo las funciones tienen alcance. Entonces, si una variable se define usando var en una declaración compuesta (por ejemplo, dentro de una estructura de control if), será visible para toda la función. Sin embargo, a partir de ECMAScript 2015, las declaraciones {{jsxref("Sentencias/let", "let")}} y {{jsxref("Sentencias/const", "const")}} te permiten crear variables con alcance de bloque.

+ +

Operadores

+ +

Los operadores numéricos de JavaScript son +, -, *, / y % que es el operador de residuo o resto (que es lo mismo que módulo). Los valores se asignan usando =, y también hay declaraciones de asignación compuestas como += y -=. Estas se extienden hasta x = x operador y.

+ +
x += 5;
+x = x + 5;
+
+ +

Puedes usar ++ y -- para incrementar y disminuir respectivamente. Estos se pueden utilizar como operadores prefijos o sufijos.

+ +

El operador + también hace concatenación de cadenas:

+ +
'hello' + ' world'; // "hello world"
+
+ +

Si agregas una cadena a un número (u otro valor), todo se convierte primero en cadena. Esto podría hacerte tropezar:

+ +
'3' + 4 + 5;  // "345"
+ 3 + 4 + '5'; // "75"
+
+ +

Agregar una cadena vacía a algo es una forma útil de convertirla en cadena.

+ +

Se pueden realizar comparaciones en JavaScript utilizando <, >, <= y >=. Estas funcionan tanto para cadenas como para números. La igualdad es un poco menos sencilla. El operador doble-igual realiza la coerción de tipos si le das diferentes tipos, con resultados a veces interesantes:

+ +
123 == '123'; // true
+1 == true; // true
+
+ +

Para evitar la coerción de tipos, usa el operador triple-igual:

+ +
123 === '123'; // false
+1 === true;    // false
+
+ +

También hay operadores != y !==.

+ +

JavaScript también tiene operaciones bit a bit. Si quieres usarlas, ahí están.

+ +

Estructuras de control

+ +

JavaScript tiene un conjunto de estructuras de control similar a otros lenguajes de la familia C. Las declaraciones condicionales son compatibles con if y else; las puedes encadenarlas si lo deseas:

+ +
var name = 'kittens';
+if (name == 'puppies') {
+  name += ' woof';
+} else if (name == 'kittens') {
+  name += ' meow';
+} else {
+  name += '!';
+}
+name == 'kittens meow';
+
+ +

JavaScript tiene bucles while y bucles do-while. El primero es bueno para bucles básicos; el segundo bucle para donde deseas asegurarte de que el cuerpo del bucle se ejecute por lo menos una vez:

+ +
while (true) {
+  // ¡un bucle infinito!
+}
+
+var input;
+do {
+  input = get_input();
+} while (inputIsNotValid(input));
+
+ +

El bucle for de JavaScript es igual que el de C y Java: te permite proporcione la información de control para tu bucle en una sola línea.

+ +
for (var i = 0; i < 5; i++) {
+  // Se ejecutará 5 veces
+}
+
+ +

JavaScript también contiene otros dos bucles for destacados: for...of

+ +
for (let value of array) {
+  // haz algo con valor
+}
+
+ +

y for...in:

+ +
for (let property in object) {
+  // hacer algo con la propiedad del objeto
+}
+
+ +

Los operadores && y || utilizan lógica de cortocircuito, lo cual significa que si ejecutarán su segundo operando depende del primero. Esto es útil para verificar objetos nulos antes de acceder a sus atributos:

+ +
var name = o && o.getName();
+
+ +

O para almacenar en caché los valores (cuando los valores falsos no son válidos):

+ +
var name = cachedName || (cachedName = getName());
+
+ +

JavaScript tiene un operador ternario para expresiones condicionales:

+ +
var allowed = (age > 18) ? 'yes' : 'no';
+
+ +

La instrucción switch se puede usar para múltiples ramas según un número o cadena:

+ +
switch (action) {
+  case 'draw':
+    drawIt();
+    break;
+  case 'eat':
+    eatIt();
+    break;
+  default:
+    doNothing();
+}
+
+ +

Si no agregas una instrucción break, la ejecución "caerá" al siguiente nivel. Esto muy rara vez es lo que deseas; de hecho, vale la pena etiquetar específicamente la caída deliberada con un comentario si realmente lo pretendías para ayudar a la depuración:

+ +
switch (a) {
+  case 1: // caída deliberada
+  case 2:
+    eatIt();
+    break;
+  default:
+    doNothing();
+}
+
+ +

La cláusula default es opcional. Puedes tener expresiones tanto en la parte del switch como en los casos si lo deseas; las comparaciones tienen lugar entre los dos utilizando el operador ===:

+ +
switch (1 + 3) {
+  case 2 + 2:
+    yay();
+    break;
+  default:
+    neverhappens();
+}
+
+ +

Objetos

+ +

Los objetos de JavaScript se pueden considerar como simples colecciones de pares nombre-valor. Como tal, son similares a:

+ + + +

El hecho de que esta estructura de datos se utilice tan ampliamente es un testimonio de su versatilidad. Dado que todo (el núcleo, tipos bar) en JavaScript es un objeto, cualquier programa de JavaScript implica naturalmente una gran cantidad de búsquedas en tablas hash. ¡Qué bueno que sean tan rápidas!

+ +

La parte "name" es una cadena JavaScript, mientras que el valor puede ser cualquier valor de JavaScript, incluidos más objetos. Esto te permite construir estructuras de datos de complejidad arbitraria.

+ +

Hay dos formas básicas de crear un objeto vacío:

+ +
var obj = new Object();
+
+ +

Y:

+ +
var obj = {};
+
+ +

Estas son semánticamente equivalentes; la segunda se llama sintaxis literal de objeto y es más conveniente. Esta sintaxis también es el núcleo del formato JSON y se debe preferir en todo momento.

+ +

La sintaxis de objeto literal se puede utilizar para iniciar un objeto en su totalidad:

+ +
var obj = {
+  name: 'Carrot',
+  for: 'Max', // 'for' es una palabra reservada, use '_for' en su lugar.
+  details: {
+    color: 'orange',
+    size: 12
+  }
+};
+
+ +

El acceso a los atributos se puede encadenar:

+ +
obj.details.color; // orange
+obj['details']['size']; // 12
+
+ +

El siguiente ejemplo crea un prototipo de objeto (Person) y una instancia de ese prototipo (you).

+ +
function Person(name, age) {
+  this.name = name;
+  this.age = age;
+}
+
+// Define un objeto
+var you = new Person('You', 24);
+// Estamos creando una nueva persona llamada "You" de 24 años.
+
+
+ +

Una vez creado, se puede volver a acceder a las propiedades de un objeto de dos formas:

+ +
// notación de puntos
+obj.name = 'Simon';
+var name = obj.name;
+
+ +

Y...

+ +
// notación de corchetes
+obj['name'] = 'Simon';
+var name = obj['name'];
+// puedes usar una variable para definir una clave
+var user = prompt('¿cuál es su clave?')
+obj[user] = prompt('¿cuál es su valor?')
+
+ +

Estas también son semánticamente equivalentes. El segundo método tiene la ventaja de que el nombre de la propiedad se proporciona como una cadena, lo cual significa que se puede calcular en tiempo de ejecución. Sin embargo, el uso de este método evita que se apliquen algunas optimizaciones de minificación y del motor de JavaScript. También se puede utilizar para establecer y obtener propiedades con nombres palabras reservadas:

+ +
obj.for = 'Simon'; // Error de sintaxis, porque 'for' es una palabra reservada
+obj['for'] = 'Simon'; // trabaja bien
+
+ +
+

A partir de ECMAScript 5, las palabras reservadas se pueden utilizar como nombres de propiedad de objeto "en bruto". Esto significa que no necesitan "vestirse" entre comillas al definir objeto literales. Consulta la especificación de ES5.

+
+ +

Para obtener más información sobre objetos y prototipos, consulta {{jsxref("Objetos_Globales/Object/prototype", "Object.prototype")}}. Para obtener una explicación de los prototipos de objetos y las cadenas de prototipos de objetos, consulta Herencia y la cadena de prototipos.

+ +
+

A partir de ECMAScript 2015, las claves de objeto se pueden definir mediante la variable en notación de corchetes al crearlas. {[phoneType]: 12345} es posible en lugar de solo var userPhone = {}; userPhone[phoneType] = 12345.

+
+ +

Arreglos

+ +

Los arreglos en JavaScript en son realidad un tipo especial de objeto. Funcionan de manera muy parecida a los objetos normales (las propiedades numéricas se pueden acceder naturalmente solo usando la sintaxis []) pero tienen una propiedad mágica llamada 'length'. Este siempre es uno más que el índice más alto de el arreglo.

+ +

Una forma de crear arreglos es la siguiente:

+ +
var a = new Array();
+a[0] = 'dog';
+a[1] = 'cat';
+a[2] = 'hen';
+a.length; // 3
+
+ +

Una notación más conveniente es usar un arreglo literal:

+ +
var a = ['dog', 'cat', 'hen'];
+a.length; // 3
+
+ +

Ten en cuenta que array.length no necesariamente es el número de elementos del arreglo. Considera lo siguiente:

+ +
var a = ['dog', 'cat', 'hen'];
+a[100] = 'fox';
+a.length; // 101
+
+ +

Recuerda — la longitud de el arreglo es uno más que el índice más alto.

+ +

Si consultas un índice de arreglo que no existe, obtendrás un valor de undefined:

+ +
typeof a[90]; // undefined
+
+ +

Si tienes en cuenta lo anterior sobre [] y length, puedes iterar sobre un arreglo utilizando el siguiente bucle for:

+ +
for (var i = 0; i < a.length; i++) {
+  // Haz algo con a[i]
+}
+
+ +

ES2015 introdujo el bucle más conciso for...of para objetos iterables como arreglos:

+ +
for (const currentValue of a) {
+  // Haz algo con currentValue
+}
+ +

También puedes iterar sobre un arreglo utilizando el bucle for...in, sin embargo, este no itera sobre los elementos del arreglo, sino los índices del arreglo. Además, si alguien agrega nuevas propiedades a Array.prototype, también serán iteradas por dicho bucle. Por lo tanto, este tipo de bucle no se recomienda para arreglos.

+ +

Otra forma de iterar sobre un arreglo que se agregó con ECMAScript 5 es {{jsxref("Objetos_Globales/Array/forEach", "arr.forEach()")}}:

+ +
['dog', 'cat', 'hen'].forEach(function(currentValue, index, array) {
+  // Hacer algo con currentValue o array[index]
+});
+
+ +

Si deseas agregar un elemento a un arreglo, simplemente hazlo así:

+ +
a.push(item);
+ +

Los arreglos vienen con varios métodos. Consulta también la {{jsxref("Objetos_Globales/Array", "documentación completa para métodos de arreglo")}}.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Nombre del métodoDescripción
a.toString()Devuelve una cadena con el toString() de cada elemento separado por comas.
a.toLocaleString()Devuelve una cadena con el toLocaleString() de cada elemento separado por comas.
a.concat(item1[, item2[, ...[, itemN]]])Devuelve un nuevo arreglo con los elementos agregados.
a.join(sep)Convierte el arreglo en una cadena, con valores delimitados por el parámetro sep
a.pop()Elimina y devuelve el último elemento.
a.push(item1, ..., itemN)Agrega elementos al final del arreglo.
a.shift()Elimina y devuelve el primer elemento.
a.unshift(item1[, item2[, ...[, itemN]]])Añade elementos al inicio del arreglo.
a.slice(start[, end])Devuelve un subarreglo.
a.sort([cmpfn])Toma una función de comparación opcional.
a.splice(start, delcount[, item1[, ...[, itemN]]])Te permite modificar un arreglo eliminando una sección y reemplazándola con más elementos.
a.reverse()Invierte el arreglo.
+ +

Funciones

+ +

Junto con los objetos, las funciones son el componente principal para comprender JavaScript. La función más básica no podría ser mucho más sencilla:

+ +
function add(x, y) {
+  var total = x + y;
+  return total;
+}
+
+ +

Esto demuestra una función básica. Una función de JavaScript puede tomar 0 o más parámetros con nombre. El cuerpo de la función puede contener tantas declaraciones como desees y puedes declarar tus propias variables que son locales para esa función. La declaración return se puede usar para devolver un valor en cualquier momento, terminando la función. Si no se utiliza una declaración return (o return vacía sin valor), JavaScript devuelve undefined.

+ +

Los parámetros nombrados resultan ser más intuitivos que cualquier otra cosa. Puedes llamar a una función sin pasar los parámetros que espera, en cuyo caso se establecerán en undefined.

+ +
add(); // NaN
+// No puedes realizar sumas en undefined
+
+ +

También puedes pasar más argumentos de los que espera la función:

+ +
add(2, 3, 4); // 5
+// sumó los dos primeros; el 4 fue ignorado
+
+ +

Eso puede parecer un poco tonto, pero las funciones tienen acceso a una variable adicional dentro de su cuerpo llamada argumentos, que es un objeto tipo arreglo que contiene todos los valores pasados a la función. Reescribamos la función de suma para tomar tantos valores como queramos:

+ +
function add() {
+  var sum = 0;
+  for (var i = 0, j = arguments.length; i < j; i++) {
+    sum += arguments[i];
+  }
+  return sum;
+}
+
+add(2, 3, 4, 5); // 14
+
+ +

Sin embargo, eso no es más útil que escribir 2 + 3 + 4 + 5. Creemos una función de promedio:

+ +
function avg() {
+  var sum = 0;
+  for (var i = 0, j = arguments.length; i < j; i++) {
+    sum += arguments[i];
+  }
+  return sum / arguments.length;
+}
+
+avg(2, 3, 4, 5); // 3.5
+
+ +

Esta es bastante útil, pero parece un poco detallada. Para reducir un poco más este código, podemos considerar la sustitución del uso del arreglo de argumentos a través de la sintaxis del parámetro Rest. De esta manera, podemos pasar cualquier número de argumentos a la función manteniendo nuestro código mínimo. El operador de parámetro rest se usa en listas de parámetros de función con el formato: ...variable e incluirá dentro de esa variable la lista completa de argumentos no capturados a los que se llamó la función. with. También reemplazaremos el bucle for con un bucle for...of para devolver los valores dentro de nuestra variable.

+ +
function avg(...args) {
+  var sum = 0;
+  for (let value of args) {
+    sum += value;
+  }
+  return sum / args.length;
+}
+
+avg(2, 3, 4, 5); // 3.5
+
+ +
En el código anterior, la variable args contiene todos los valores que se pasaron a la función.
+
+Es importante tener en cuenta que dondequiera que se coloque el operador de parámetro rest en una declaración de función, almacenará todos los argumentos después de su declaración, pero no antes. es decir, function avg(firstValue, ...args) almacenará el primer valor pasado a la función en la variable firstValue y los argumentos restantes en args. Esa es otra característica útil del lenguaje, pero nos lleva a un nuevo problema. La función avg() toma una lista de argumentos separados por comas, pero ¿qué sucede si deseas encontrar el promedio de un arreglo? Simplemente, podrías reescribir la función de la siguiente manera:
+ +
function avgArray(arr) {
+  var sum = 0;
+  for (var i = 0, j = arr.length; i < j; i++) {
+    sum += arr[i];
+  }
+  return sum / arr.length;
+}
+
+avgArray([2, 3, 4, 5]); // 3.5
+
+ +

Pero sería bueno poder reutilizar la función que ya hemos creado. Afortunadamente, JavaScript te permite llamar a una función con un arreglo arbitrario de argumentos, usando el método {{jsxref("Function.apply", "apply()")}} de cualquier objeto función.

+ +
avg.apply(null, [2, 3, 4, 5]); // 3.5
+
+ +

El segundo argumento de apply() es el arreglo que se utilizará como arguments; el primero se explicará más adelante. Esto enfatiza el hecho de que las funciones también son objetos.

+ +
+

Puedes lograr el mismo resultado utilizando el operador de propagación en la llamada de función.

+ +

Por ejemplo: avg(...numbers)

+
+ +

JavaScript te permite crear funciones anónimas.

+ +
var avg = function() {
+  var sum = 0;
+  for (var i = 0, j = arguments.length; i < j; i++) {
+    sum += arguments[i];
+  }
+  return sum / arguments.length;
+};
+
+ +

Esto semánticamente es equivalente a la forma function avg(). Es extremadamente poderosa, ya que te permite colocar una definición de función completa en cualquier lugar donde normalmente colocarías una expresión. Esto permite todo tipo de ingeniosos trucos. Aquí hay una forma de "ocultar" algunas variables locales — como alcance de bloque en C:

+ +
var a = 1;
+var b = 2;
+
+(function() {
+  var b = 3;
+  a += b;
+})();
+
+a; // 4
+b; // 2
+
+ +

JavaScript te permite llamar a funciones de forma recursiva. Esto es particularmente útil para tratar con estructuras de árbol, como las que se encuentran en el DOM del navegador.

+ +
function countChars(elm) {
+  if (elm.nodeType == 3) { // TEXT_NODE
+    return elm.nodeValue.length;
+  }
+  var count = 0;
+  for (var i = 0, child; child = elm.childNodes[i]; i++) {
+    count += countChars(child);
+  }
+  return count;
+}
+
+ +

Esto resalta un problema potencial con las funciones anónimas: ¿cómo las llama de forma recursiva si no tienen un nombre? JavaScript te permite nombrar expresiones de función para esto. Puedes utilizar {{Glossary("IIFE", "IIFE (expresiones de función invocadas inmediatamente)")}} con nombre como se muestra a continuación:

+ +
var charsInBody = (function counter(elm) {
+  if (elm.nodeType == 3) { // TEXT_NODE
+    return elm.nodeValue.length;
+  }
+  var count = 0;
+  for (var i = 0, child; child = elm.childNodes[i]; i++) {
+    count += counter(child);
+  }
+  return count;
+})(document.body);
+
+ +

El nombre proporcionado a una expresión de función como arriba solo está disponible para el alcance de la función. Esto permite que el motor realice más optimizaciones y da como resultado un código más legible. El nombre también aparece en el depurador y en algunos seguimientos de la pila, lo cual puede ahorrarte tiempo al depurar.

+ +

Ten en cuenta que las funciones de JavaScript en sí mismas son objetos, como todo lo demás en JavaScript, y puedes agregar o cambiar propiedades en ellas tal como hemos visto anteriormente en la sección Objetos.

+ +

Objetos personalizados

+ +
Para obtener una descripción más detallada de la programación orientada a objetos en JavaScript, consulta Introducción a JavaScript orientado a objetos.
+ +

En la programación clásica orientada a objetos, los objetos son colecciones de datos y métodos que operan sobre esos datos. JavaScript es un lenguaje basado en prototipos que no contiene una declaración de clase, como la encontrarías en C++ o Java (esto, a veces es confuso para los programadores acostumbrados a lenguajes con una declaración de clase). En cambio, JavaScript usa funciones como clases. Consideremos un objeto person con campos first y last name. Hay dos formas de mostrar el nombre: como "primero último" o como "último, primero". Usando las funciones y objetos que hemos explicado anteriormente, podríamos mostrar los datos de esta manera:

+ +
function makePerson(first, last) {
+  return {
+    first: first,
+    last: last
+  };
+}
+function personFullName(person) {
+  return person.first + ' ' + person.last;
+}
+function personFullNameReversed(person) {
+  return person.last + ', ' + person.first;
+}
+
+var s = makePerson('Simon', 'Willison');
+personFullName(s); // "Simon Willison"
+personFullNameReversed(s); // "Willison, Simon"
+
+ +

Esto funciona, pero es bastante feo. Terminas con docenas de funciones en tu espacio de nombres global. Lo que realmente necesitamos es una forma de enlazar una función a un objeto. Dado que las funciones son objetos, esto es fácil:

+ +
function makePerson(first, last) {
+  return {
+    first: first,
+    last: last,
+    fullName: function() {
+      return this.first + ' ' + this.last;
+    },
+    fullNameReversed: function() {
+      return this.last + ', ' + this.first;
+    }
+  };
+}
+
+var s = makePerson('Simon', 'Willison');
+s.fullName(); // "Simon Willison"
+s.fullNameReversed(); // "Willison, Simon"
+
+ +

Nota sobre la palabra clave this. Usada dentro de una función, this se refiere al objeto actual. Lo que realmente significa está especificado por la forma en que llamaste a esa función. Si lo llamaste usando notación de puntos o notación de corchetes en un objeto, ese objeto se convierte en this. Si la notación de puntos no se usó para la llamada, this se refiere al objeto global.

+ +

Ten en cuenta que this es una frecuente causa de errores. Por ejemplo:

+ +
var s = makePerson('Simon', 'Willison');
+var fullName = s.fullName;
+fullName(); // undefined undefined
+
+ +

Cuando llamamos a fullName() solo, sin usar s.fullName(), this está vinculado al objeto global. Debido a que no hay variables globales llamadas first o last obtenemos undefined para cada una.

+ +

Podemos aprovechar la palabra clave this para mejorar nuestra función makePerson:

+ +
function Person(first, last) {
+  this.first = first;
+  this.last = last;
+  this.fullName = function() {
+    return this.first + ' ' + this.last;
+  };
+  this.fullNameReversed = function() {
+    return this.last + ', ' + this.first;
+  };
+}
+var s = new Person('Simon', 'Willison');
+
+ +

Hemos introducido otra palabra clave: new. new está fuertemente relacionado con this. Crea un nuevo objeto vacío y luego llama a la función especificada, con this configurado para ese nuevo objeto. Sin embargo, ten en cuenta que la función especificada con this no devuelve un valor, sino que simplemente modifica el objeto this. Es new que devuelve el objeto this al sitio que realiza la llamada. Las funciones que están diseñadas para ser llamadas por new se denominan funciones constructoras. La práctica común es poner en mayúscula estas funciones como recordatorio para llamarlas con new.

+ +

La función mejorada todavía tiene el mismo error al llamar a fullName() sola.

+ +

Nuestros objetos person están mejorando, pero todavía tienen algunos bordes desagradables. Cada vez que creamos un objeto person, estamos creando dos nuevos objetos de función dentro de él, ¿no sería mejor si este código fuera compartido?

+ +
function personFullName() {
+  return this.first + ' ' + this.last;
+}
+function personFullNameReversed() {
+  return this.last + ', ' + this.first;
+}
+function Person(first, last) {
+  this.first = first;
+  this.last = last;
+  this.fullName = personFullName;
+  this.fullNameReversed = personFullNameReversed;
+}
+
+ +

Eso es mejor: estamos creando las funciones como métodos solo una vez y asignándoles referencias dentro del constructor. ¿Podemos hacer algo mejor que eso? La respuesta es sí:

+ +
function Person(first, last) {
+  this.first = first;
+  this.last = last;
+}
+Person.prototype.fullName = function() {
+  return this.first + ' ' + this.last;
+};
+Person.prototype.fullNameReversed = function() {
+  return this.last + ', ' + this.first;
+};
+
+ +

Person.prototype es un objeto compartido por todas las instancias de Person. Forma parte de una cadena de búsqueda (que tiene un nombre especial, "cadena de prototipos"): cada vez que intentes acceder a una propiedad de Person que no esté configurada, JavaScript revisará Person.prototype para ver si esa propiedad existe allí. Como resultado, todo lo asignado a Person.prototype pasa a estar disponible para todas las instancias de ese constructor a través del objeto this.

+ +

Esta es una herramienta increíblemente poderosa. JavaScript te permite modificar el prototipo de algo en cualquier momento en tu programa, lo cual significa que —en tiempo de ejecución— puedes agregar métodos adicionales a los objetos existentes:

+ +
var s = new Person('Simon', 'Willison');
+s.firstNameCaps(); // TypeError en la línea 1: s.firstNameCaps no es una función
+
+Person.prototype.firstNameCaps = function() {
+  return this.first.toUpperCase();
+};
+s.firstNameCaps(); // "SIMON"
+
+ +

Curiosamente, también puedes agregar cosas al prototipo de objetos JavaScript integrados. Agreguemos un método a String que devuelva esa cadena a la inversa:

+ +
var s = 'Simon';
+s.reversed(); // TypeError en la línea 1: s.reversed no es una función
+
+String.prototype.reversed = function() {
+  var r = '';
+  for (var i = this.length - 1; i >= 0; i--) {
+    r += this[i];
+  }
+  return r;
+};
+
+s.reversed(); // nomiS
+
+ +

¡Nuestro método new funciona incluso con cadenas literales!

+ +
'Esto ahora se puede revertir'.reversed(); // ritrever edeup es aroha otsE
+
+ +

Como se mencionó anteriormente, el prototipo forma parte de una cadena. La raíz de esa cadena es Object.prototype, cuyos métodos incluyen toString(); es este método el que se llama cuando intentas representar un objeto como una cadena. Esto es útil para depurar nuestros objetos Person:

+ +
var s = new Person('Simon', 'Willison');
+s.toString(); // [object Object]
+
+Person.prototype.toString = function() {
+  return '<Person: ' + this.fullName() + '>';
+}
+
+s.toString(); // "<Person: Simon Willison>"
+
+ +

¿Recuerda cómo avg.apply() tenía un primer argumento null? Ahora lo podemos revisar. El primer argumento de apply() es el objeto que se debe tratar como 'this'. Por ejemplo, aquí hay una implementación trivial de new:

+ +
function trivialNew(constructor, ...args) {
+  var o = {}; // Crea un objeto
+  constructor.apply(o, args);
+  return o;
+}
+
+ +

Esta no es una réplica exacta de new ya que no configura la cadena de prototipos (sería difícil de ilustrar). Esto no es algo que use con mucha frecuencia, pero es útil conocerlo. En este fragmento, ...args (incluidos los puntos suspensivos) se denomina "argumentos rest" — como su nombre indica, contiene el resto de los argumentos.

+ +

Llamar a...

+ +
var bill = trivialNew(Person, 'William', 'Orange');
+ +

...por tanto, casi es equivalente a

+ +
var bill = new Person('William', 'Orange');
+ +

apply() tiene una función hermana llamada {{jsxref("Objetos_Globales/Function/call", "call()")}}, que nuevamente te permite establecer this pero toma una lista de argumentos expandida en lugar de un arreglo.

+ +
function lastNameCaps() {
+  return this.last.toUpperCase();
+}
+var s = new Person('Simon', 'Willison');
+lastNameCaps.call(s);
+// Es lo mismo que:
+s.lastNameCaps = lastNameCaps;
+s.lastNameCaps(); // WILLISON
+
+ +

Funciones internas

+ +

Las declaraciones de función de JavaScript están permitidas dentro de otras funciones. Hemos visto esto una vez antes, con la función makePerson() anterior. Un detalle importante de las funciones anidadas en JavaScript es que pueden acceder a las variables en el alcance de su función padre:

+ +
function parentFunc() {
+  var a = 1;
+
+  function nestedFunc() {
+    var b = 4; // parentFunc no puede usar esto
+    return a + b;
+  }
+  return nestedFunc(); // 5
+}
+
+ +

Esto proporciona una gran utilidad para escribir un código más fácil de mantener. Si una función llamada se basa en una o dos funciones que no son útiles para ninguna otra parte de tu código, puedes anidar esas funciones de utilidad dentro de ella. Esto mantiene baja la cantidad de funciones que están en el alcance global, lo cual siempre es bueno.

+ +

Esto también contrarresta el atractivo de las variables globales. Al escribir código complejo, a menudo es tentador utilizar variables globales para compartir valores entre múltiples funciones, lo que conduce a un código difícil de mantener. Las funciones anidadas pueden compartir variables en su padre, por lo que puedes usar ese mecanismo para unir funciones cuando tenga sentido sin contaminar tu espacio de nombres global — "globales locales" si lo deseas. Esta técnica se debe usar con precaución, pero es una útil habilidad.

+ +

Cierres

+ +

Esto nos lleva a una de las abstracciones más poderosas que JavaScript tiene para ofrecer — pero potencialmente, también la más confusa. ¿Qué hace esta?

+ +
function makeAdder(a) {
+  return function(b) {
+    return a + b;
+  };
+}
+var add5 = makeAdder(5);
+var add20 = makeAdder(20);
+add5(6); // ?
+add20(7); // ?
+
+ +

El nombre de la función makeAdder() lo debería revelar: crea nuevas funciones 'adder', cada una de las cuales, cuando se llama con un argumento, lo suma al argumento con el que fue creada.

+ +

Lo que está sucediendo aquí es más o menos lo mismo que sucedía anteriormente con las funciones internas: una función definida dentro de otra función tiene acceso a las variables de la función externa. La única diferencia aquí es que la función externa ha regresado y, por lo tanto, el sentido común parece dictar que sus variables locales ya no existen. Pero existen todavía — de lo contrario, las funciones de suma no podrían funcionar. Además, hay dos diferentes "copias" de las variables locales de makeAdder(): una en la que a es 5 y la otra en la que a es 20. Entonces, el resultado de las llamadas a esa función es el siguiente:

+ +
add5(6); // returns 11
+add20(7); // devuelve 27
+
+ +

Esto es lo que está sucediendo realmente. Siempre que JavaScript ejecuta una función, se crea un objeto 'scope' para contener las variables locales creadas dentro de esa función. Se inicia con cualquier variable pasada como parámetros de función. Esto es similar al objeto global en el que viven todas las variables y funciones globales, pero con un par de importantes diferencias: en primer lugar, se crea un objeto de alcance completamente nuevo cada vez que una función se comienza a ejecutar y, en segundo lugar, a diferencia del objeto global (que es accesible como this y en los navegadores como window) no se puede acceder directamente a estos objetos scope desde tu código JavaScript. No hay ningún mecanismo para iterar sobre las propiedades del objeto scope actual, por ejemplo.

+ +

Entonces, cuando se llama a makeAdder(), se crea un objeto scope con una propiedad: a, que es el argumento que se pasa a la función makeAdder(). makeAdder() luego devuelve una función recién creada. Normalmente, el recolector de basura de JavaScript limpiaría el objeto scope creado para makeAdder() en este punto, pero la función devuelta mantiene una referencia a ese objeto de ámbito. Como resultado, el objeto scope no será recolectado como basura hasta que no haya más referencias al objeto función que makeAdder() devolvió.

+ +

Los objetos scope forman una cadena llamada cadena de ámbito, similar a la cadena de prototipos utilizada por el sistema de objetos de JavaScript.

+ +

Un cierre es la combinación de una función y el objeto scope en el que se creó. Los cierres te permiten guardar el estado — como tal, a menudo se pueden usar en lugar de objetos. Puedes encontrar varias presentaciones excelentes de los cierres.

diff --git a/files/es/web/javascript/about_javascript/index.html b/files/es/web/javascript/about_javascript/index.html new file mode 100644 index 0000000000..a66f16e061 --- /dev/null +++ b/files/es/web/javascript/about_javascript/index.html @@ -0,0 +1,59 @@ +--- +title: Acerca de JavaScript +slug: Web/JavaScript/Acerca_de_JavaScript +tags: + - JavaScript +translation_of: Web/JavaScript/About_JavaScript +--- +
{{JsSidebar}}
+ +

¿Qué es JavaScript?

+ +

JavaScript® (a menudo abreviado como JS) es un lenguaje ligero, interpretado y orientado a objetos con funciones de primera clase, y mejor conocido como el lenguaje de programación para las páginas Web, pero {{Interwiki("wikipedia", "JavaScript#Otras_características", "también se utiliza en muchos entornos que no son de navegador")}}. Es un lenguaje de scripts que es dinámico, multiparadigma, {{Interwiki("wikipedia", "Programación_basada_en_prototipos", "basado en prototipos")}} y admite estilos de programación orientados a objetos, imperativos y funcionales.

+ +

JavaScript se ejecuta en el lado del cliente de la web, y se puede utilizar para estilizar/programar cómo se comportan las páginas web cuando ocurre un evento. JavaScript es un potente lenguaje de scripts y fácil de aprender, ampliamente utilizado para controlar el comportamiento de las páginas web.

+ +

Contrariamente a la creencia popular, JavaScript no es "Java interpretado". En pocas palabras, JavaScript es un lenguaje de scripts dinámico que admite {{JSxRef("../Guide/Details_of_the_Object_Model", "construcción de objetos basada en prototipos", "#Lenguajes_basados_en_clases_vs._basados_en_prototipos")}}. Intencionalmente, la sintaxis básica es similar a Java y C++ para reducir la cantidad de conceptos nuevos necesarios para aprender el lenguaje. Construcciones del lenguaje, como las declaraciones if, los bucles for y while, y switch y los bloques try...catch funcionan igual que en esos lenguajes (o casi).

+ +

JavaScript puede funcionar como un {{JSxRef("../Introduction_to_Object-Oriented_JavaScript", "lenguaje orientado a objetos")}} y {{Interwiki("wikipedia", "Programación_por_procedimientos", "procedimental")}}. Los objetos se crean mediante programación en JavaScript, adjuntando métodos y propiedades a objetos que de otro modo en tiempo de ejecución estarían vacíos, a diferencia de las definiciones de clases sintácticas comunes en lenguajes compilados como C++ y Java. Una vez que se ha construido un objeto, se puede utilizar como plano (o prototipo) para crear objetos similares.

+ +

Las capacidades dinámicas de JavaScript incluyen la construcción de objetos en tiempo de ejecución, listas de parámetros variables, variables de función, creación dinámica de scripts (a través de {{JSxRef("Objetos_globales/eval", "eval")}}, introspección de objetos (a través de for...in) y recuperación de código fuente (los programas JavaScript pueden descompilar los cuerpos de las funciones en su texto fuente).

+ +

Para una explicación más profunda de la programación de JavaScript, sigue los enlaces {{anch("Recursos_de_JavaScript", "recursos de JavaScript")}} a continuación.

+ +

¿Qué implementaciones de JavaScript están disponibles?

+ +

El proyecto Mozilla proporciona dos implementaciones de JavaScript. El primer JavaScript fue creado por Brendan Eich en Netscape, y a partir de entonces se ha actualizado para cumplir con ECMA-262 Edición 5 y versiones posteriores. Este motor, cuyo nombre en código es {{web.link("/es/docs/Mozilla/Projects/SpiderMonkey", "SpiderMonkey")}}, está implementado en C/C++. El motor {{web.link("/es/docs/Rhino", "Rhino")}}, creado principalmente por Norris Boyd (también en Netscape) es una implementación de JavaScript escrita en Java. Al igual que SpiderMonkey, Rhino también es compatible con ECMA-262 Edition 5.

+ +

Con el transcurso del tiempo, y tras varias importantes optimizaciones del entorno de ejecución como TraceMonkey (Firefox 3.5), JägerMonkey (Firefox 4) e IonMonkey se agregaron al motor de JavaScript SpiderMonkey. El trabajo siempre está en curso para mejorar el rendimiento de ejecución de JavaScript.

+ +

Más allá de las implementaciones anteriores, existen otros motores JavaScript populares como:—

+ + + +

Cada uno de los motores de JavaScript de Mozilla expone una API pública que los desarrolladores de aplicaciones pueden utilizar para integrar JavaScript en su software. Hasta ahora, el entorno de alojamiento más común para JavaScript son los navegadores web. Los navegadores web suelen utilizar la API pública para crear objetos del anfitrión responsables de reflejar el DOM en JavaScript.

+ +

Otra aplicación común para JavaScript es como lenguaje de programación de lado del servidor (Web). Un servidor web JavaScript expondría objetos del anfitrión que representan una solicitud HTTP y objetos de respuesta, que luego podría manipular un programa JavaScript para generar páginas web dinámicamente. Node.js es un ejemplo popular de esto.

+ +

Recursos de JavaScript

+ +
+
{{web.link("/es/docs/Mozilla/Projects/SpiderMonkey", "SpiderMonkey")}}
+
Información específica sobre la implementación de JavaScript de Mozilla en el motor C/C++ (también conocido como SpiderMonkey), incluye cómo integrarlo en aplicaciones.
+
+ +
+
{{web.link("/es/docs/Rhino", "Rhino")}}
+
Información específica para la implementación de JavaScript escrita en Java (también conocido como Rhino).
+
{{JSxRef("../Language_Resources", "Recursos del lenguaje")}}
+
Punteros a estándares JavaScript publicados.
+
{{JSxRef("../A_re-introduction_to_JavaScript", "Una reintroducción a JavaScript")}}
+
{{JSxRef("../Guide", "Guía de JavaScript")}} y {{JSxRef("../Referencia", "Referencia de JavaScript")}}.
+
+ +

JavaScript® es una marca comercial o una marca comercial registrada de Oracle en EE. UU. y otros países.

diff --git a/files/es/web/javascript/acerca_de_javascript/index.html b/files/es/web/javascript/acerca_de_javascript/index.html deleted file mode 100644 index a66f16e061..0000000000 --- a/files/es/web/javascript/acerca_de_javascript/index.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Acerca de JavaScript -slug: Web/JavaScript/Acerca_de_JavaScript -tags: - - JavaScript -translation_of: Web/JavaScript/About_JavaScript ---- -
{{JsSidebar}}
- -

¿Qué es JavaScript?

- -

JavaScript® (a menudo abreviado como JS) es un lenguaje ligero, interpretado y orientado a objetos con funciones de primera clase, y mejor conocido como el lenguaje de programación para las páginas Web, pero {{Interwiki("wikipedia", "JavaScript#Otras_características", "también se utiliza en muchos entornos que no son de navegador")}}. Es un lenguaje de scripts que es dinámico, multiparadigma, {{Interwiki("wikipedia", "Programación_basada_en_prototipos", "basado en prototipos")}} y admite estilos de programación orientados a objetos, imperativos y funcionales.

- -

JavaScript se ejecuta en el lado del cliente de la web, y se puede utilizar para estilizar/programar cómo se comportan las páginas web cuando ocurre un evento. JavaScript es un potente lenguaje de scripts y fácil de aprender, ampliamente utilizado para controlar el comportamiento de las páginas web.

- -

Contrariamente a la creencia popular, JavaScript no es "Java interpretado". En pocas palabras, JavaScript es un lenguaje de scripts dinámico que admite {{JSxRef("../Guide/Details_of_the_Object_Model", "construcción de objetos basada en prototipos", "#Lenguajes_basados_en_clases_vs._basados_en_prototipos")}}. Intencionalmente, la sintaxis básica es similar a Java y C++ para reducir la cantidad de conceptos nuevos necesarios para aprender el lenguaje. Construcciones del lenguaje, como las declaraciones if, los bucles for y while, y switch y los bloques try...catch funcionan igual que en esos lenguajes (o casi).

- -

JavaScript puede funcionar como un {{JSxRef("../Introduction_to_Object-Oriented_JavaScript", "lenguaje orientado a objetos")}} y {{Interwiki("wikipedia", "Programación_por_procedimientos", "procedimental")}}. Los objetos se crean mediante programación en JavaScript, adjuntando métodos y propiedades a objetos que de otro modo en tiempo de ejecución estarían vacíos, a diferencia de las definiciones de clases sintácticas comunes en lenguajes compilados como C++ y Java. Una vez que se ha construido un objeto, se puede utilizar como plano (o prototipo) para crear objetos similares.

- -

Las capacidades dinámicas de JavaScript incluyen la construcción de objetos en tiempo de ejecución, listas de parámetros variables, variables de función, creación dinámica de scripts (a través de {{JSxRef("Objetos_globales/eval", "eval")}}, introspección de objetos (a través de for...in) y recuperación de código fuente (los programas JavaScript pueden descompilar los cuerpos de las funciones en su texto fuente).

- -

Para una explicación más profunda de la programación de JavaScript, sigue los enlaces {{anch("Recursos_de_JavaScript", "recursos de JavaScript")}} a continuación.

- -

¿Qué implementaciones de JavaScript están disponibles?

- -

El proyecto Mozilla proporciona dos implementaciones de JavaScript. El primer JavaScript fue creado por Brendan Eich en Netscape, y a partir de entonces se ha actualizado para cumplir con ECMA-262 Edición 5 y versiones posteriores. Este motor, cuyo nombre en código es {{web.link("/es/docs/Mozilla/Projects/SpiderMonkey", "SpiderMonkey")}}, está implementado en C/C++. El motor {{web.link("/es/docs/Rhino", "Rhino")}}, creado principalmente por Norris Boyd (también en Netscape) es una implementación de JavaScript escrita en Java. Al igual que SpiderMonkey, Rhino también es compatible con ECMA-262 Edition 5.

- -

Con el transcurso del tiempo, y tras varias importantes optimizaciones del entorno de ejecución como TraceMonkey (Firefox 3.5), JägerMonkey (Firefox 4) e IonMonkey se agregaron al motor de JavaScript SpiderMonkey. El trabajo siempre está en curso para mejorar el rendimiento de ejecución de JavaScript.

- -

Más allá de las implementaciones anteriores, existen otros motores JavaScript populares como:—

- - - -

Cada uno de los motores de JavaScript de Mozilla expone una API pública que los desarrolladores de aplicaciones pueden utilizar para integrar JavaScript en su software. Hasta ahora, el entorno de alojamiento más común para JavaScript son los navegadores web. Los navegadores web suelen utilizar la API pública para crear objetos del anfitrión responsables de reflejar el DOM en JavaScript.

- -

Otra aplicación común para JavaScript es como lenguaje de programación de lado del servidor (Web). Un servidor web JavaScript expondría objetos del anfitrión que representan una solicitud HTTP y objetos de respuesta, que luego podría manipular un programa JavaScript para generar páginas web dinámicamente. Node.js es un ejemplo popular de esto.

- -

Recursos de JavaScript

- -
-
{{web.link("/es/docs/Mozilla/Projects/SpiderMonkey", "SpiderMonkey")}}
-
Información específica sobre la implementación de JavaScript de Mozilla en el motor C/C++ (también conocido como SpiderMonkey), incluye cómo integrarlo en aplicaciones.
-
- -
-
{{web.link("/es/docs/Rhino", "Rhino")}}
-
Información específica para la implementación de JavaScript escrita en Java (también conocido como Rhino).
-
{{JSxRef("../Language_Resources", "Recursos del lenguaje")}}
-
Punteros a estándares JavaScript publicados.
-
{{JSxRef("../A_re-introduction_to_JavaScript", "Una reintroducción a JavaScript")}}
-
{{JSxRef("../Guide", "Guía de JavaScript")}} y {{JSxRef("../Referencia", "Referencia de JavaScript")}}.
-
- -

JavaScript® es una marca comercial o una marca comercial registrada de Oracle en EE. UU. y otros países.

diff --git "a/files/es/web/javascript/descripci\303\263n_de_las_tecnolog\303\255as_javascript/index.html" "b/files/es/web/javascript/descripci\303\263n_de_las_tecnolog\303\255as_javascript/index.html" deleted file mode 100644 index b61a56c1e5..0000000000 --- "a/files/es/web/javascript/descripci\303\263n_de_las_tecnolog\303\255as_javascript/index.html" +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Descripción de las tecnologías JavaScript -slug: Web/JavaScript/Descripción_de_las_tecnologías_JavaScript -translation_of: Web/JavaScript/JavaScript_technologies_overview ---- -
{{JsSidebar("Introductory")}}
- -

Introducción

- -

Mientras que HTML define la estructura y el contenido de una página web y el CSS define el formato y la apariencia, JavaScript agrega interactividad a una página web y crea aplicaciones web enriquecidas.

- -

Sin embargo, el término paraguas "JavaScript", tal como se entiende en un contexto de navegador web, contiene varios elementos muy diferentes. Uno de ellos es el lenguaje principal (ECMAScript), otro es la colección de las APIs Web, incluyendo el DOM (Document Object Model).

- -

JavaScript, el núcleo del lenguaje (ECMAScript)

- -

EL núcleo del lenguaje JavaScript está estandarizado por el Comité ECMA TC39 como un lenguaje llamado ECMAScript. La última versión de la especificación es ECMAScript 6.0.

- -

Éste núcleo del lenguaje es también usado en ambientes No-Navegadores, por ejemplo en node.js.

- -

Qué considera ECMAScript scope?

- -

Entre otras cosas, ECMAScript define:

- - - - - -

A partir de Octubre del 2016, la gran mayoria de los navegadores soportan ECMAScript 5.1 y ECMAScript 2015 aka ES6, pero versiones antiguas (aún en uso) implementan ECMAScript 5 solamente.

- -

Futuro

- -

La 6ta edición principal de ECMAScript fue oficialmente aprobada y publicada como un estándar el 17 de Junio del 2015 por la ECMA General Assembly. Desde entonces las ediciones de ECMAScript son publicadas anualmente.

- -

Internacionalización de la API

- -

La ECMAScript Internationalization API Specification es una adición para la especificación del lenguaje ECMAScript, también estandarizada por Ecma TC39. La internacionalización de la API provee intercalación --collation-- (comparación de string), formateo de números, y fomateo de fechas/tiempo para aplicaciones JavaScript, permitiendo que las aplicaciones elijan el idioma y adapten la funcionalidad a sus necesidades. El estandar inicial fue aprobado en Diciembre del 2012; el estado de la implementación en navegadores es rastreado en la documentación de la Intl object. Las especificaciones de la internacionalización son actualmente ratificadas cada año y los navegadores constantemente mejoran su implementación.

- -

DOM APIs

- -

WebIDL

- -

Las especificaciones de la WebIDL proporcionan el vínculo de las tecnologías DOM y ECMAScript.

- -

El núcleo del DOM

- -

El Document Object Model (DOM) es una convención multiplataforma e independiente del lenguaje para representar e interactuar con objetos en documentos HTML, XHTML y XML. Los objetos en el árbol DOM se pueden abordar y manipular mediante el uso de métodos en los objetos de otras tecnologías. El {{Glossary("W3C")}} estandariza el Modelo de Objetos del Documento Central, que define interfaces independientes del lenguaje que abstraen documentos HTML y XML como objetos, y también define mecanismos para manipular esta abstracción. Entre las cosas definidas por el DOM, podemos encontrar:

- - - -

Desde el punto de vista ECMAScript, los objetos definidos en la especificación DOM se denominan "objetos host".

- -

HTML DOM

- -

HTML, el lenguaje de marcado de la Web, se especifica en términos del DOM. Por encima de los conceptos abstractos definidos en DOM Core, HTML también define el significado de los elementos. El DOM HTML incluye cosas como el className propiedad en elementos HTML o API como {{domxref ("document.body")}}.

- -

La especificación HTML también define restricciones en los documentos; por ejemplo, requiere que todos los elementos secundarios de un elemento ul que representa una lista desordenada, sean elementos li, ya que representan elementos de la lista. En general, también prohíbe el uso de elementos y atributos que no están definidos en un estándar.

- -

¿Busca Document object, Window object, y los otros elementos DOM? ? Lee la documentación DOM documentation.

- -

Otras API notables

- - - -

Soporte del navegador

- -

Como todos los desarrolladores web han experimentadoel DOM es un desastre. La uniformidad del soporte del navegador varía mucho de una característica a otra, principalmente porque muchas características DOM importantes tienen especificaciones muy poco claras (si las hay), y diferentes navegadores web agregan características incompatibles para casos de uso superpuestos (como el modelo de evento de Internet Explorer). A partir de junio de 2011, el W3C y particularmente el WHATWG están definiendo características antiguas en detalle para mejorar la interoperabilidad, y los navegadores a su vez pueden mejorar sus implementaciones basadas en estas especificaciones.

- -

Un enfoque común, aunque quizás no el más confiable, para la compatibilidad entre navegadores es usar bibliotecas de JavaScript, que resumen las funciones DOM y mantienen sus API funcionando igual en diferentes navegadores. Algunos de los frameworks más utilizados son jQuery, prototype, y YUI.

diff --git a/files/es/web/javascript/enumerability_and_ownership_of_properties/index.html b/files/es/web/javascript/enumerability_and_ownership_of_properties/index.html new file mode 100644 index 0000000000..fbe97185f6 --- /dev/null +++ b/files/es/web/javascript/enumerability_and_ownership_of_properties/index.html @@ -0,0 +1,333 @@ +--- +title: Enumerabilidad y posesión de propiedades +slug: Web/JavaScript/enumeracion_y_propietario_de_propiedades +tags: + - Enumerabilidad + - Enumeración + - Guía + - JavaScript + - Propiedades +translation_of: Web/JavaScript/Enumerability_and_ownership_of_properties +--- +
{{JsSidebar("Más")}}
+ +

Las propiedades enumerables son aquellas propiedades cuyo indicador enumerable interno se establece en true, que es el valor predeterminado para las propiedades creadas mediante una asignación simple o mediante un iniciador de propiedad (propiedades definidas mediante {{jsxref("Global_Objects/Object/defineProperty", "Object.defineProperty")}} y tal valor enumerable predeterminado a false). Se muestran numerosas propiedades en bucles {{jsref("Statements/for...in", "for...in")}} a menos que la clave de la propiedad sea {{jsxref("Global_Objects/Symbol", "Symbol")}}. La posesión de las propiedades está determinada por si la propiedad pertenece directamente al objeto y no a su cadena prototipo. Las propiedades de un objeto también se pueden recuperar en total. Hay varios medios incorporados para detectar, iterar/enumerar y recuperar propiedades de objetos, y el gráfico que se muestra a continuación está disponible. A continuación, se muestra un código de muestra que demuestra cómo obtener las categorías faltantes.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Propiedad, enumerabilidad y posesión — métodos integrados de detección, recuperación e iteración
FuncionalidadPropia del ObjetoPropia del Objeto y su cadena prototipoSolo en cadena prototipo
Detección + + + + + + + + + + + + + + + +
EnumerableNo enumerableEnumerable y no enumerable
+

{{jsxref("Global_Objects/Object/propertyIsEnumerable", "propertyIsEnumerable")}}

+ +

{{jsxref("Global_Objects/Object/hasOwnProperty", "hasOwnProperty")}}

+
+

{{jsxref("Global_Objects/Object/hasOwnProperty", "hasOwnProperty")}} — filtrado para excluir enumerables mediante {{jsxref("Global_Objects/Object/propertyIsEnumerable", "propertyIsEnumerable")}}

+
{{jsxref("Global_Objects/Object/hasOwnProperty", "hasOwnProperty")}}
+
+ + + + + + + + + + + + + + + +
EnumerableNo enumerableEnumerable y no enumerable
No disponible sin código adicionalNo disponible sin código adicional{{jsxref("Operators/in", "in")}}
+
No disponible sin código adicional
Recuperación + + + + + + + + + + + + + + + +
EnumerableNo enumerableEnumerable y no enumerable
+

{{jsxref("Global_Objects/Object/keys", "Object.keys")}}

+ +

{{jsxref("Global_Objects/Object/getOwnPropertyNames", "getOwnPropertyNames")}}

+ +

{{jsxref("Global_Objects/Object/getOwnPropertySymbols", "getOwnPropertySymbols")}}

+
{{jsxref("Global_Objects/Object/getOwnPropertyNames", "getOwnPropertyNames")}}, {{jsxref("Global_Objects/Object/getOwnPropertySymbols", "getOwnPropertySymbols")}} — filtrado para excluir enumerables usando {{jsxref("Global_Objects/Object/propertyIsEnumerable", "propertyIsEnumerable")}} +

{{jsxref("Global_Objects/Object/getOwnPropertyNames", "getOwnPropertyNames")}}

+ +

{{jsxref("Global_Objects/Object/getOwnPropertySymbols", "getOwnPropertySymbols")}}

+
+
No disponible sin código adicionalNo disponible sin código adicional
Iterable + + + + + + + + + + + + + + + +
EnumerableNo enumerableEnumerable y no enumerable
+

{{jsxref("Global_Objects/Object/keys", "Object.keys")}}

+ +

{{jsxref("Global_Objects/Object/getOwnPropertyNames", "getOwnPropertyNames")}}

+ +

{{jsxref("Global_Objects/Object/getOwnPropertySymbols", "getOwnPropertySymbols")}}

+
{{jsxref("Global_Objects/Object/getOwnPropertyNames", "getOwnPropertyNames")}}, {{jsxref("Global_Objects/Object/getOwnPropertySymbols", "getOwnPropertySymbols")}} — filtrado para excluir enumerables usando {{jsxref("Global_Objects/Object/propertyIsEnumerable", "propertyIsEnumerable")}} +

{{jsxref("Global_Objects/Object/getOwnPropertyNames", "getOwnPropertyNames")}}

+ +

{{jsxref("Global_Objects/Object/getOwnPropertySymbols", "getOwnPropertySymbols")}}

+
+
+ + + + + + + + + + + + + + + +
EnumerableNo enumerableEnumerable y no enumerable
+

{{jsxref("Statements/for...in", "for..in")}}

+ +

(no incluye símbolos)

+
No disponible sin código adicionalNo disponible sin código adicional
+
No disponible sin código adicional
+
+ +

Obtención de propiedades por enumerabilidad/posesión

+ +

Ten en cuenta que este no es el algoritmo más eficiente para todos los casos, pero es útil para una demostración rápida.

+ + + +
var SimplePropertyRetriever = {
+    getOwnEnumerables: function(obj) {
+        return this._getPropertyNames(obj, true, false, this._enumerable);
+         // O podrías usar for..in filtrado con hasOwnProperty o simplemente esto: return Object.keys(obj);
+    },
+    getOwnNonenumerables: function(obj) {
+        return this._getPropertyNames(obj, true, false, this._notEnumerable);
+    },
+    getOwnEnumerablesAndNonenumerables: function(obj) {
+        return this._getPropertyNames(obj, true, false, this._enumerableAndNotEnumerable);
+        // O simplemente usa: return Object.getOwnPropertyNames(obj);
+    },
+    getPrototypeEnumerables: function(obj) {
+        return this._getPropertyNames(obj, false, true, this._enumerable);
+    },
+    getPrototypeNonenumerables: function(obj) {
+        return this._getPropertyNames(obj, false, true, this._notEnumerable);
+    },
+    getPrototypeEnumerablesAndNonenumerables: function(obj) {
+        return this._getPropertyNames(obj, false, true, this._enumerableAndNotEnumerable);
+    },
+    getOwnAndPrototypeEnumerables: function(obj) {
+        return this._getPropertyNames(obj, true, true, this._enumerable);
+        // O podrías usar "for..in" sin filtrar
+    },
+    getOwnAndPrototypeNonenumerables: function(obj) {
+        return this._getPropertyNames(obj, true, true, this._notEnumerable);
+    },
+    getOwnAndPrototypeEnumerablesAndNonenumerables: function(obj) {
+        return this._getPropertyNames(obj, true, true, this._enumerableAndNotEnumerable);
+    },
+    // Retrollamada del supervisor de propiedad estática privada
+    _enumerable: function(obj, prop) {
+        return obj.propertyIsEnumerable(prop);
+    },
+    _notEnumerable: function(obj, prop) {
+        return !obj.propertyIsEnumerable(prop);
+    },
+    _enumerableAndNotEnumerable: function(obj, prop) {
+        return true;
+    },
+    // Inspirado en http://stackoverflow.com/a/8024294/271577
+    _getPropertyNames: function getAllPropertyNames(obj, iterateSelfBool, iteratePrototypeBool, includePropCb) {
+        var props = [];
+
+        do {
+            if (iterateSelfBool) {
+                Object.getOwnPropertyNames(obj).forEach(function(prop) {
+                    if (props.indexOf(prop) === -1 && includePropCb(obj, prop)) {
+                        props.push(prop);
+                    }
+                });
+            }
+            if (!iteratePrototypeBool) {
+                break;
+            }
+            iterateSelfBool = true;
+        } while (obj = Object.getPrototypeOf(obj));
+
+        return props;
+    }
+};
+ +

Tabla de detección

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
infor..inobj.hasOwnPropertyobj.propertyIsEnumerableObject.keysObject.getOwnPropertyNamesObject.getOwnPropertyDescriptorsReflect.ownKeys()
Enumerabletruetruetruetruetruetruetruetrue
No enumerabletruefalsetruefalsefalsetruetruetrue
Símbolos clavetruefalsetruetruefalsefalsetruetrue
Enumerable heredadotruetruefalsefalsefalsefalsefalsefalse
Heredado no enumerabletruefalsefalsefalsefalsefalsefalsefalse
Símbolos clave heredadostruefalsefalsefalsefalsefalsefalsefalse
+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/enumeracion_y_propietario_de_propiedades/index.html b/files/es/web/javascript/enumeracion_y_propietario_de_propiedades/index.html deleted file mode 100644 index fbe97185f6..0000000000 --- a/files/es/web/javascript/enumeracion_y_propietario_de_propiedades/index.html +++ /dev/null @@ -1,333 +0,0 @@ ---- -title: Enumerabilidad y posesión de propiedades -slug: Web/JavaScript/enumeracion_y_propietario_de_propiedades -tags: - - Enumerabilidad - - Enumeración - - Guía - - JavaScript - - Propiedades -translation_of: Web/JavaScript/Enumerability_and_ownership_of_properties ---- -
{{JsSidebar("Más")}}
- -

Las propiedades enumerables son aquellas propiedades cuyo indicador enumerable interno se establece en true, que es el valor predeterminado para las propiedades creadas mediante una asignación simple o mediante un iniciador de propiedad (propiedades definidas mediante {{jsxref("Global_Objects/Object/defineProperty", "Object.defineProperty")}} y tal valor enumerable predeterminado a false). Se muestran numerosas propiedades en bucles {{jsref("Statements/for...in", "for...in")}} a menos que la clave de la propiedad sea {{jsxref("Global_Objects/Symbol", "Symbol")}}. La posesión de las propiedades está determinada por si la propiedad pertenece directamente al objeto y no a su cadena prototipo. Las propiedades de un objeto también se pueden recuperar en total. Hay varios medios incorporados para detectar, iterar/enumerar y recuperar propiedades de objetos, y el gráfico que se muestra a continuación está disponible. A continuación, se muestra un código de muestra que demuestra cómo obtener las categorías faltantes.

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Propiedad, enumerabilidad y posesión — métodos integrados de detección, recuperación e iteración
FuncionalidadPropia del ObjetoPropia del Objeto y su cadena prototipoSolo en cadena prototipo
Detección - - - - - - - - - - - - - - - -
EnumerableNo enumerableEnumerable y no enumerable
-

{{jsxref("Global_Objects/Object/propertyIsEnumerable", "propertyIsEnumerable")}}

- -

{{jsxref("Global_Objects/Object/hasOwnProperty", "hasOwnProperty")}}

-
-

{{jsxref("Global_Objects/Object/hasOwnProperty", "hasOwnProperty")}} — filtrado para excluir enumerables mediante {{jsxref("Global_Objects/Object/propertyIsEnumerable", "propertyIsEnumerable")}}

-
{{jsxref("Global_Objects/Object/hasOwnProperty", "hasOwnProperty")}}
-
- - - - - - - - - - - - - - - -
EnumerableNo enumerableEnumerable y no enumerable
No disponible sin código adicionalNo disponible sin código adicional{{jsxref("Operators/in", "in")}}
-
No disponible sin código adicional
Recuperación - - - - - - - - - - - - - - - -
EnumerableNo enumerableEnumerable y no enumerable
-

{{jsxref("Global_Objects/Object/keys", "Object.keys")}}

- -

{{jsxref("Global_Objects/Object/getOwnPropertyNames", "getOwnPropertyNames")}}

- -

{{jsxref("Global_Objects/Object/getOwnPropertySymbols", "getOwnPropertySymbols")}}

-
{{jsxref("Global_Objects/Object/getOwnPropertyNames", "getOwnPropertyNames")}}, {{jsxref("Global_Objects/Object/getOwnPropertySymbols", "getOwnPropertySymbols")}} — filtrado para excluir enumerables usando {{jsxref("Global_Objects/Object/propertyIsEnumerable", "propertyIsEnumerable")}} -

{{jsxref("Global_Objects/Object/getOwnPropertyNames", "getOwnPropertyNames")}}

- -

{{jsxref("Global_Objects/Object/getOwnPropertySymbols", "getOwnPropertySymbols")}}

-
-
No disponible sin código adicionalNo disponible sin código adicional
Iterable - - - - - - - - - - - - - - - -
EnumerableNo enumerableEnumerable y no enumerable
-

{{jsxref("Global_Objects/Object/keys", "Object.keys")}}

- -

{{jsxref("Global_Objects/Object/getOwnPropertyNames", "getOwnPropertyNames")}}

- -

{{jsxref("Global_Objects/Object/getOwnPropertySymbols", "getOwnPropertySymbols")}}

-
{{jsxref("Global_Objects/Object/getOwnPropertyNames", "getOwnPropertyNames")}}, {{jsxref("Global_Objects/Object/getOwnPropertySymbols", "getOwnPropertySymbols")}} — filtrado para excluir enumerables usando {{jsxref("Global_Objects/Object/propertyIsEnumerable", "propertyIsEnumerable")}} -

{{jsxref("Global_Objects/Object/getOwnPropertyNames", "getOwnPropertyNames")}}

- -

{{jsxref("Global_Objects/Object/getOwnPropertySymbols", "getOwnPropertySymbols")}}

-
-
- - - - - - - - - - - - - - - -
EnumerableNo enumerableEnumerable y no enumerable
-

{{jsxref("Statements/for...in", "for..in")}}

- -

(no incluye símbolos)

-
No disponible sin código adicionalNo disponible sin código adicional
-
No disponible sin código adicional
-
- -

Obtención de propiedades por enumerabilidad/posesión

- -

Ten en cuenta que este no es el algoritmo más eficiente para todos los casos, pero es útil para una demostración rápida.

- - - -
var SimplePropertyRetriever = {
-    getOwnEnumerables: function(obj) {
-        return this._getPropertyNames(obj, true, false, this._enumerable);
-         // O podrías usar for..in filtrado con hasOwnProperty o simplemente esto: return Object.keys(obj);
-    },
-    getOwnNonenumerables: function(obj) {
-        return this._getPropertyNames(obj, true, false, this._notEnumerable);
-    },
-    getOwnEnumerablesAndNonenumerables: function(obj) {
-        return this._getPropertyNames(obj, true, false, this._enumerableAndNotEnumerable);
-        // O simplemente usa: return Object.getOwnPropertyNames(obj);
-    },
-    getPrototypeEnumerables: function(obj) {
-        return this._getPropertyNames(obj, false, true, this._enumerable);
-    },
-    getPrototypeNonenumerables: function(obj) {
-        return this._getPropertyNames(obj, false, true, this._notEnumerable);
-    },
-    getPrototypeEnumerablesAndNonenumerables: function(obj) {
-        return this._getPropertyNames(obj, false, true, this._enumerableAndNotEnumerable);
-    },
-    getOwnAndPrototypeEnumerables: function(obj) {
-        return this._getPropertyNames(obj, true, true, this._enumerable);
-        // O podrías usar "for..in" sin filtrar
-    },
-    getOwnAndPrototypeNonenumerables: function(obj) {
-        return this._getPropertyNames(obj, true, true, this._notEnumerable);
-    },
-    getOwnAndPrototypeEnumerablesAndNonenumerables: function(obj) {
-        return this._getPropertyNames(obj, true, true, this._enumerableAndNotEnumerable);
-    },
-    // Retrollamada del supervisor de propiedad estática privada
-    _enumerable: function(obj, prop) {
-        return obj.propertyIsEnumerable(prop);
-    },
-    _notEnumerable: function(obj, prop) {
-        return !obj.propertyIsEnumerable(prop);
-    },
-    _enumerableAndNotEnumerable: function(obj, prop) {
-        return true;
-    },
-    // Inspirado en http://stackoverflow.com/a/8024294/271577
-    _getPropertyNames: function getAllPropertyNames(obj, iterateSelfBool, iteratePrototypeBool, includePropCb) {
-        var props = [];
-
-        do {
-            if (iterateSelfBool) {
-                Object.getOwnPropertyNames(obj).forEach(function(prop) {
-                    if (props.indexOf(prop) === -1 && includePropCb(obj, prop)) {
-                        props.push(prop);
-                    }
-                });
-            }
-            if (!iteratePrototypeBool) {
-                break;
-            }
-            iterateSelfBool = true;
-        } while (obj = Object.getPrototypeOf(obj));
-
-        return props;
-    }
-};
- -

Tabla de detección

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
infor..inobj.hasOwnPropertyobj.propertyIsEnumerableObject.keysObject.getOwnPropertyNamesObject.getOwnPropertyDescriptorsReflect.ownKeys()
Enumerabletruetruetruetruetruetruetruetrue
No enumerabletruefalsetruefalsefalsetruetruetrue
Símbolos clavetruefalsetruetruefalsefalsetruetrue
Enumerable heredadotruetruefalsefalsefalsefalsefalsefalse
Heredado no enumerabletruefalsefalsefalsefalsefalsefalsefalse
Símbolos clave heredadostruefalsefalsefalsefalsefalsefalsefalse
-
- -

Ve también

- - diff --git a/files/es/web/javascript/gestion_de_memoria/index.html b/files/es/web/javascript/gestion_de_memoria/index.html deleted file mode 100644 index 3e2a47287f..0000000000 --- a/files/es/web/javascript/gestion_de_memoria/index.html +++ /dev/null @@ -1,204 +0,0 @@ ---- -title: Gestión de Memoria -slug: Web/JavaScript/Gestion_de_Memoria -tags: - - Advanced - - JavaScript - - Performance - - Reference - - Referencia - - Rendimiento - - memoria -translation_of: Web/JavaScript/Memory_Management ---- -
{{JsSidebar("Advanced")}}
- -

Introducción

- -

Los lenguajes de bajo nivel, como C, tienen primitivos de bajo nivel como malloc() y free() para la gestión de memoria. Por otro lado, para los valores en JavaScript se reserva memoria cuando"cosas" (objetos, strings, etc.) son creados y "automáticamente" liberados cuando ya no son utilizados. El proceso anterior es conocido como Recolección de basura (garbage collection). Su forma "automática" es fuente de confusión, y da la impresión a los desarrolladores de JavaScript (y de otros lenguajes de alto nivel) de poder ignorar el proceso de gestión de memoria. Esto es erróneo. 

- -

Ciclo de vida de memoria

- -

Sin importar el lenguaje de programación, el ciclo de memoria es casi siempre parecido al siguiente:

- -
    -
  1. Reservar la memoria necesaria
  2. -
  3. Utilizarla (lectura, escritura)
  4. -
  5. Liberar la memoria una vez ya no es necesaria.
  6. -
- -

El primer y el segundo paso son explícitos en todos los lenguajes. El último paso es explícito en lenguajes de bajo nivel, pero es mayormente implícito en lenguajes de alto nivel como JavaScript

- -

Reserva de memoria en JavaScript

- -

Inicialización de valores

- -

Para no agobiar al programador con reservas de memoria, JavaScript las realiza al mismo tiempo que la declaración de los valores.

- -
var n = 123; // reserva memoria para un número
-var s = "azerty"; // reserva memoria para un string
-
-var o = {
-  a: 1,
-  b: null
-}; // reserva memoria para un objeto y los valores que
-   // contiene
-
-// (similar a objeto) reserva memoria para el arreglo y
-// los valores que contiene
-var a = [1, null, "abra"];
-
-function f(a){
-  return a + 2;
-} // reserva memoria para una funcion (la cual es un objeto)
-
-// las expresiones de función tambien reservan memoria para un objeto
-someElement.addEventListener('click', function(){
-  someElement.style.backgroundColor = 'blue';
-}, false);
-
- -

Reserva de memoria al llamar una función

- -

En ocasiones al llamar a una función se reserva memoria para un objeto.

- -
var d = new Date();
-// reserva memoria para un elemento del DOM
-var e = document.createElement('div');
-
- -

Algunos métodos reservan memoria para nuevos valores u objetos:

- -
var s = "azerty";
-var s2 = s.substr(0, 3); // s2 es un nuevo string
-// Como los strings son valores inmutables,
-// JavaScript puede NO reservar memoria para este,
-// y solo almacenar el rango [0, 3].
-
-var a = ["ouais ouais", "nan nan"];
-var a2 = ["generation", "nan nan"];
-var a3 = a.concat(a2);
-// nuevo arreglo con 4 elementos resultado de
-// concatenar los elementos de a y a2
-
- -

Usando valores

- -

Usar un valor es simplemente leerlo o escribirlo en memoria reservada. Esto puede ocurrir al leer o escribir el valor de una variable o de una propiedad de un objeto, inclusive pasando un argumento a una función.

- -

Liberar la memoria cuando ya no es necesaria

- -

En este punto ocurren la mayoria de los inconvenientes con la gestión de memoria. Lo más díficil es encontrar el cuándo la "memoria ya no es necesaria". En algunas ocasiones, es necesario que el desarrollador determine en qué parte de un programa esa parte de memoria ya no es necesaria y la libere.

- -

Los lenguajes de alto nivel incluyen una herramienta de software conocida como "recolector de basura" (garbage collector), cuya función es rastrear las reservas de memoria y su utilización, para así encontrar cuándo cierta parte de la memoria ya no es necesaria, y en su momento liberarla automáticamente.  Este proceso es sólo una aproximación al problema general de saber cuándo una parte de la memoria ya no es necesaria, ya que éste es indecidible (no puede ser resuelto por un algoritmo).

- -

Recolección de basura (Garbage collection)

- -

Como antes se mencionaba el problema general de encontrar automáticamente cuando la memoria "ya no es necesaria" es indecidible. Como consecuencia, las recolecciones de basura implementan sólo una restricción a la solución del problema general. En esta sección se explicarán las nociones necesarias para entender los principales algoritmos de recolección de basura y sus limitaciones.

- -

Referencias

- -

La noción principal de los algoritmos de recolección se basan en la noción de referencia. Dentro del contexto de gestión de memoria, se dice que un objeto hace referencia a otro si el primero tiene acceso al segundo (ya sea de forma implícita o explícita). Por ejemplo, un objeto de JavaScript guarda una referencia a su prototipo (referencia implícita) y a cualquiera de los valores de sus propiedades (referencia explícita)

- -

Hay que mencionar que en este contexto la noción de "objeto" se refiere a algo más amplio que los objetos normales de JavaScript y que también incluye al ámbito de la función (o ámbito de léxico global).

- -

Recolección de basura a través de conteo de referencias

- -

Éste es el algoritmo de recolección más simple. Este algoritmo reduce la definición de "un objejo ya no es necesario" a "un objeto ya no tiene ningún otro objeto que lo referencíe". Un objeto es considerado recolectable si existen cero referencias hacia él.

- -

Ejemplo

- -
var o = {
-  a: {
-    b:2
-  }
-};
-// Se crean dos objetos. Uno es referenciado por el otro como
-// una de sus propiedades.
-// El otro es referenciado al ser asignado a la variable "o"
-// Ninguno puede ser recolectado.
-
-
-var o2 = o; // la variable "o2" es lo segundo en tener una
-            // referencia al objeto.
-o = 1;      // ahora el objeto solo tiene una referencia mediante
-            // la variable "o2"
-
-var oa = o2.a; // referencia a la propiedad "a" del objeto.
-               // ahora el objeto posee dos referencias, una como propiedad
-               // la otra como la variable "oa"
-
-o2 = "yo"; // el objeto original "o" ahora ya no tiene
-           // referencias a él. Podría ser recolectado.
-           // Sin embargo lo que había en la propiedad "a" aún
-           // esta refernciado en la variable "oa";
-           // no puede ser recolectado aún
-
-oa = null; // lo que estaba en la propiedad "a" del objeto original "o"
-           // ahora ya no tiene ninguna referencia.Puede ser recolectado.
-
- -

Limitación : ciclos

- -

Existe una limitación cuando se trata de ciclos.  En el siguiente ejemplo dos objetos son creados y se referencían entre ellos -por lo que se crea un ciclo. Ellos no saldrán del ámbito de la función después del llamado de la función, con lo que serían efectivamente "ya no son necesarios" y por lo cual ser liberados. Sin embargo, el algoritmo de conteo de referencias considera que ya que cada uno de los dos objetos está referenciado por lo menos una vez, ninguno podra ser recolectado. Este simple algoritmo tiene la limitación de que si un grupo de objetos se referencian a sí mismos (y forman un ciclo), nunca pasarán a "ya no ser necesitados" y no podrán ser recolectados nunca.

- -
function f(){
-  var o = {};
-  var o2 = {};
-  o.a = o2; // o referencía o2
-  o2.a = o; // o2 referencía o
-
-  return "azerty";
-}
-
-f();
-// Dos objetos son creados y se referencían uno al otro creando un ciclo
-// Estan atrapados en el scope de la funcion después de la llamada
-// por lo que son inútiles fuera de la función y podrían ser recolectados.
-// Sin embargo, el algoritmo de conteo de referencias considera que como
-// ambos objetos estan referenciados (aunque sean a si mismos) ambos
-// siguen en uso y por lo tanto no pueden ser recolectados.
-
-
- -

Ejemplo real aplicado

- -

Internet Explorer 6 y 7 son conocidos por tener recolectores de basura por conteo de referencias para los objetos del DOM. Los Ciclos son un error común que pueden generar fugas de memoria (memory leaks) (art. en inglés):

- -
var div;
-window.onload = function(){
-  div = document.getElementById("miDiv");
-  div.referenciaCircular = div;
-  div.muchosDatos = new Array(10000).join("*");
-};
-
- -

En el ejemplo anterior, el elemento del DOM "miDiv" posée una referencia circular a sí mismo en la propiedad "referenciaCircular". Si la propiedad no es explícitamente removida o asignada con el valor null,  un algoritmo de conteo de referencias siempre va a dejar por lo menos una referencia intacta y va a mantener el elemento del DOM activo en memoria incluso cuando es removido del DOM. Si el objeto del DOM contiene una gran cantidad de datos (ejemplificado en la propiedad "muchosDatos"), la memoria consumida por estos datos nunca será liberada.

- -

Algoritmo Mark-and-sweep (Marcado y barrido)

- -

Este algoritmo reduce la definición de "un objeto ya no es necesitado" a "un objeto es inalcanzable"

- -

Este algoritmo asume la noción de un grupo de objetos llamados objetos raíz (en JavaScript la raíz es el objeto global). Periódicamente el recolector empieza por estas raíces, encuentra todos los objetos que están referenciados por estas raíces, y luego todos los objetos referenciados de estos, etc. Empezando por las raíces, el recolector de esta forma encontrará todos los objetos que son alcanzables y recolectará los objetos inalcanzables.

- -

Este algoritmo es mejor que el anterior ya que "un objeto tiene cero referencias" equivale al "objeto es inalcanzable". Esto no sucedía asi en el algoritmo anterior cuando se trataba de un ciclo.

- -

Desde el 2012, todos los navegadores incluyen un recolector de basura basado en mark-and-sweep. Todas las mejoras realizadas en el campo de Recolección de basura en JavaScript (recolección generacional/incremental/concurrida/paralela) en los ultimos años son mejoras a la implementación del algoritmo, pero no mejoras sobre el algoritmo de recolección ni a la reducción de la definicion de cuando"un objeto ya no es necesario".

- -

Los ciclos son problema del pasado

- -

En el primer ejemplo, después de que la llamada a una función termina, los dos objetos ya no son referenciados por nada alcanzable desde el objeto global. De esta forma serán identificados como inalcanzables por el recolector de basura.

- -

Lo mismo ocurre en el segundo ejemplo. Una vez que el elemento div y sus métodos se hacen inalcanzable desde los objetos raíz, ambos pueden ser recolectados a pesar de que estén referenciados los unos de los otros.

- -

Limitación: los objetos necesarios se hacen inalcanzables de forma explícita.

- -

Aunque esto está marcado como una limitación, se puede encontrar muy poco en la práctica. Ésta es la razón por la cuál la recolección de basura es poco tomada en cuenta.

- -

Véase también

- - diff --git "a/files/es/web/javascript/guide/bucles_e_iteraci\303\263n/index.html" "b/files/es/web/javascript/guide/bucles_e_iteraci\303\263n/index.html" deleted file mode 100644 index 07b7c12e31..0000000000 --- "a/files/es/web/javascript/guide/bucles_e_iteraci\303\263n/index.html" +++ /dev/null @@ -1,334 +0,0 @@ ---- -title: Bucles e iteración -slug: Web/JavaScript/Guide/Bucles_e_iteración -tags: - - Bucle - - Guia(2) - - Guía - - Iteración - - JavaScript - - Sintaxis -translation_of: Web/JavaScript/Guide/Loops_and_iteration ---- -
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Control_flow_and_error_handling", "Web/JavaScript/Guide/Functions")}}
- -

Los bucles ofrecen una forma rápida y sencilla de hacer algo repetidamente. Este capítulo de la {{JSxRef("../Guide", "Guía de JavaScript")}} presenta las diferentes declaraciones de iteración disponibles para JavaScript.

- -

Puedes pensar en un bucle como una versión computarizada del juego en la que le dices a alguien que dé X pasos en una dirección y luego Y pasos en otra. Por ejemplo, la idea "Ve cinco pasos hacia el este" se podría expresar de esta manera como un bucle:

- -
for (let step = 0; step < 5; step++) {
-  // Se ejecuta 5 veces, con valores del paso 0 al 4.
-  console.log('Camina un paso hacia el este');
-}
-
- -

Hay muchos diferentes tipos de bucles, pero esencialmente, todos hacen lo mismo: repiten una acción varias veces. (¡Ten en cuenta que es posible que ese número sea cero!).

- -

Los diversos mecanismos de bucle ofrecen diferentes formas de determinar los puntos de inicio y terminación del bucle. Hay varias situaciones que son fácilmente atendidas por un tipo de bucle que por otros.

- -

Las declaraciones para bucles proporcionadas en JavaScript son:

- - - -

Declaración for

- -

Un ciclo {{JSxRef("Sentencias/for", "for")}} se repite hasta que una condición especificada se evalúe como false. El bucle for de JavaScript es similar al bucle for de Java y C.

- -

Una declaración for tiene el siguiente aspecto:

- -
for ([expresiónInicial]; [expresiónCondicional]; [expresiónDeActualización])
-  instrucción
-
- -

Cuando se ejecuta un bucle for, ocurre lo siguiente:

- -
    -
  1. Se ejecuta la expresión de iniciación expresiónInicial, si existe. Esta expresión normalmente inicia uno o más contadores de bucle, pero la sintaxis permite una expresión de cualquier grado de complejidad. Esta expresión también puede declarar variables.
  2. -
  3. Se evalúa la expresión expresiónCondicional. Si el valor de expresiónCondicional es verdadero, se ejecutan las instrucciones del bucle. Si el valor de condición es falso, el bucle for termina. (Si la expresión condición se omite por completo, se supone que la condición es verdadera).
  4. -
  5. Se ejecuta la instrucción. Para ejecutar varias instrucciones, usa una declaración de bloque ({ ... }) para agrupar esas declaraciones.
  6. -
  7. Si está presente, se ejecuta la expresión de actualización expresiónDeActualización.
  8. -
  9. El control regresa al paso 2.
  10. -
- -

Ejemplo

- -

En el siguiente ejemplo, la función contiene una instrucción for que cuenta el número de opciones seleccionadas en una lista de desplazamiento (el elemento {{HTMLElement("select")}} de HTML representa un control que proporciona un menú de opciones que permite múltiples selecciones). La instrucción for declara la variable i y la inicia a 0. Comprueba que i es menor que el número de opciones en el elemento <select>, realiza la siguiente instrucción if e incrementa i después de cada pasada por el bucle.

- -
<form name="selectForm">
-  <p>
-    <label for="musicTypes">Elija algunos tipos de música, luego haga clic en el botón de abajo:</label>
-    <select id="musicTypes" name="musicTypes" multiple="multiple">
-      <option selected="selected">R&B</option>
-      <option>Jazz</option>
-      <option>Blues</option>
-      <option>New Age</option>
-      <option>Classical</option>
-      <option>Opera</option>
-    </select>
-  </p>
-  <p><input id="btn" type="button" value="¿Cuántos están seleccionados?" /></p>
-</form>
-
-<script>
-function howMany(selectObject) {
-  let numberSelected = 0;
-  for (let i = 0; i < selectObject.options.length; i++) {
-    if (selectObject.options[i].selected) {
-      numberSelected++;
-    }
-  }
-  return numberSelected;
-}
-
-let btn = document.getElementById('btn');
-btn.addEventListener('click', function() {
-  alert('Número de opciones seleccionadas: ' + howMany(document.selectForm.musicTypes));
-});
-</script>
-
-
- -

Declaración do...while

- -

La instrucción {{JSxRef("Sentencias/do...while", "do...while")}} se repite hasta que una condición especificada se evalúe como falsa.

- -

Una declaración do...while tiene el siguiente aspecto:

- -
do
-  expresión
-while (condición);
-
- -

exposición siempre se ejecuta una vez antes de que se verifique la condición. (Para ejecutar varias instrucciones, usa una declaración de bloque ({ ... }) para agrupar esas declaraciones).

- -

Si condición es true, la declaración se ejecuta de nuevo. Al final de cada ejecución, se comprueba la condición. Cuando la condición es false, la ejecución se detiene y el control pasa a la declaración que sigue a do...while.

- -

Ejemplo

- -

En el siguiente ejemplo, el bucle do itera al menos una vez y se repite hasta que i ya no sea menor que 5.

- -

let i = 0; do { i += 1; console.log(i); } while (i < 5);

- -

Declaración while

- -

Una declaración {{JSxRef("Sentencias/while", "while")}} ejecuta sus instrucciones siempre que una condición especificada se evalúe como true. Una instrucción while tiene el siguiente aspecto:

- -
while (condición)
-  expresión
-
- -

Si la condición se vuelve false, la instrucción dentro del bucle se deja de ejecutar y el control pasa a la instrucción que sigue al bucle.

- -

La prueba de condición ocurre antes de que se ejecute la expresión en el bucle. Si la condición devuelve true, se ejecuta la expresión y la condición se prueba de nuevo. Si la condición devuelve false, la ejecución se detiene y el control se pasa a la instrucción que sigue a while.

- -

Para ejecutar varias instrucciones, usa una declaración de bloque ({ ... }) para agrupar esas declaraciones.

- -

Ejemplo 1

- -

El siguiente ciclo del while se repite siempre que n sea menor que 3:

- -
let n = 0;
-let x = 0;
-while (n < 3) {
-  n++;
-  x += n;
-}
-
- -

Con cada iteración, el bucle incrementa n y agrega ese valor a x. Por lo tanto, x y n toman los siguientes valores:

- - - -

Después de completar la tercera pasada, la condición n < 3 ya no es true, por lo que el bucle termina.Ejemplo 2

- -

Evita los bucles infinitos. Asegúrate de que la condición en un bucle eventualmente se convierta en false; de lo contrario, el bucle nunca terminará. Las declaraciones en el siguiente bucle while se ejecutan indefinidamente porque la condición nunca se vuelve false:

- -
// ¡Los bucles infinitos son malos!
-while (true) {
-  console.log('¡Hola, mundo!');
-}
- -

Declaración labeled

- -

Una {{JSxRef("Sentencias/label", "label")}} proporciona una instrucción con un identificador que te permite hacer referencia a ella en otra parte de tu programa. Por ejemplo, puedes usar una etiqueta para identificar un bucle y luego usar las declaraciones break o continue para indicar si un programa debe interrumpir el bucle o continuar su ejecución.La sintaxis de la instrucción etiquetada es similar a la siguiente:label : instrucción

- -

El valor de label puede ser cualquier identificador de JavaScript que no sea una palabra reservada. La declaración que identifica a una etiqueta puede ser cualquier enunciado.

- -

Ejemplo

- -

En este ejemplo, la etiqueta markLoop identifica un bucle while.

- -

markLoop: while (theMark === true) { doSomething(); }

- -

Declaración break

- -

Usa la instrucción {{JSxRef("Sentencias/break", "break")}} para terminar un bucle, switch o junto con una declaración etiquetada.

- - - -

La sintaxis de la instrucción break se ve así:

- -
break;
-break [label];
-
- -
    -
  1. La primera forma de la sintaxis termina el bucle envolvente más interno o el switch.
  2. -
  3. La segunda forma de la sintaxis termina la instrucción etiquetada específica.
  4. -
- -

Ejemplo 1

- -

El siguiente ejemplo recorre en iteración los elementos de un arreglo hasta que encuentra el índice de un elemento cuyo valor es theValue:

- -
for (let i = 0; i < a.length; i++) {
-  if (a[i] === theValue) {
-    break;
-  }
-}
- -

Ejemplo 2: romper una etiqueta

- -
let x = 0;
-let z = 0;
-labelCancelLoops: while (true) {
-  console.log('Bucles externos: ' + x);
-  x += 1;
-  z = 1;
-  while (true) {
-    console.log('Bucles internos: ' + z);
-    z += 1;
-    if (z === 10 && x === 10) {
-      break labelCancelLoops;
-    } else if (z === 10) {
-      break;
-    }
-  }
-}
-
- -

Declaración continue

- -

La instrucción {{JSxRef("Sentencias/continue", "continue")}} se puede usar para reiniciar un while, do-while, for, o declaración label.

- - - -

La sintaxis de la instrucción continue se parece a la siguiente:

- -
continue [label];
-
- -

Ejemplo 1

- -

El siguiente ejemplo muestra un bucle while con una instrucción continue que se ejecuta cuando el valor de i es 3. Por lo tanto, n toma los valores 1, 3, 7 y 12.

- -
let i = 0;
-let n = 0;
-while (i < 5) {
-  i++;
-  if (i === 3) {
-    continue;
-  }
-  n += i;
-  console.log(n);
-}
-//1,3,7,12
-
-
-let i = 0;
-let n = 0;
-while (i < 5) {
-  i++;
-  if (i === 3) {
-     // continue;
-  }
-  n += i;
-  console.log(n);
-}
-// 1,3,6,10,15
-
- -

Ejemplo 2

- -

Una declaración etiquetada checkiandj contiene una declaración etiquetada checkj. Si se encuentra continue, el programa termina la iteración actual de checkj y comienza la siguiente iteración. Cada vez que se encuentra continue, checkj reitera hasta que su condición devuelve false. Cuando se devuelve false, el resto de la instrucción checkiandj se completa y checkiandj reitera hasta que su condición devuelve false. Cuando se devuelve false, el programa continúa en la declaración que sigue a checkiandj.

- -

Si continue tuviera una etiqueta de checkiandj, el programa continuaría en la parte superior de la declaración checkiandj.

- -

let i = 0; let j = 10; checkiandj: while (i < 4) { console.log(i); i += 1; checkj: while (j > 4) { console.log(j); j -= 1; if ((j % 2) === 0) { continue checkj; } console.log(j + 'es impar.'); } console.log('i = ' + i); console.log('j = ' + j); }

- -

Declaración for...in

- -

La instrucción {{JSxRef("Sentencias/for...in", "for...in")}} itera una variable especificada sobre todas las propiedades enumerables de un objeto. Para cada propiedad distinta, JavaScript ejecuta las instrucciones especificadas. Una declaración for...in tiene el siguiente aspecto:

- -
for (variable in objeto)
-  instrucción
-
- -

Ejemplo

- -

La siguiente función toma como argumento un objeto y el nombre del objeto. Luego itera sobre todas las propiedades del objeto y devuelve una cadena que enumera los nombres de las propiedades y sus valores.

- -
function dump_props(obj, obj_name) {
-  let result = '';
-  for (let i in obj) {
-    result += obj_name + '.' + i + ' = ' + obj[i] + '<br>';
-  }
-  result += '<hr>';
-  return result;
-}
-
- -

Para un objeto car con propiedades make y model, result sería:

- -
car.make = Ford
-car.model = Mustang
-
- -

Arrays

- -

Aunque puede ser tentador usar esto como una forma de iterar sobre los elementos {{JSxRef("Array")}}, la instrucción for...in devolverá el nombre de sus propiedades definidas por el usuario además de los índices numéricos.

- -

Por lo tanto, es mejor usar un bucle {{JSxRef("Sentencias/for", "for")}} tradicional con un índice numérico cuando se itera sobre arreglos, porque la instrucción for...in itera sobre las propiedades definidas por el usuario además de los elementos del arreglo, si modificas el objeto Array (tal como agregar propiedades o métodos personalizados).

- -

Declaración for...of

- -

La declaración {{JSxRef("Sentencias/for...of", "for...of")}} crea un bucle que se repite sobre {{JSxRef("../Guide/iterable", "objetos iterables")}} (incluidos {{JSxRef("Array")}}, {{JSxRef("Map")}}, {{JSxRef("Set")}}, objetos {{JSxRef("Funciones/arguments", "arguments")}} y así sucesivamente), invocando un gancho de iteración personalizado con declaraciones que se ejecutarán para el valor de cada distinta propiedad.

- -
para (variable of objeto)
-  expresión
-
- -

El siguiente ejemplo muestra la diferencia entre un bucle for...in y un bucle {{JSxRef("Sentencias/for...in", "for...in")}}. Mientras que for...in itera sobre los nombres de propiedad, for...of itera sobre los valores de propiedad:

- -
const arr = [3, 5, 7];
-arr.foo = 'hola';
-
-for (let i in arr) {
-   console.log(i); // logs "0", "1", "2", "foo"
-}
-
-for (let i of arr) {
-   console.log(i); // logs 3, 5, 7
-}
-
- -

{{PreviousNext("Web/JavaScript/Guide/Control_flow_and_error_handling", "Web/JavaScript/Guide/Functions")}}

diff --git a/files/es/web/javascript/guide/colecciones_indexadas/index.html b/files/es/web/javascript/guide/colecciones_indexadas/index.html deleted file mode 100644 index baf55a84d5..0000000000 --- a/files/es/web/javascript/guide/colecciones_indexadas/index.html +++ /dev/null @@ -1,603 +0,0 @@ ---- -title: Colecciones indexadas -slug: Web/JavaScript/Guide/colecciones_indexadas -tags: - - Array - - Arreglo - - Guía - - JavaScript - - 'l10n:priority' -translation_of: Web/JavaScript/Guide/Indexed_collections ---- -
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Regular_Expressions", "Web/JavaScript/Guide/Keyed_Collections")}}
- -

Este capítulo presenta colecciones de datos ordenados por un valor de índice. Esto incluye arreglos y construcciones similares a arreglos tal como objetos {{jsxref("Array")}} y objetos {{jsxref("TypedArray")}}.

- -

El objeto Array

- -

Un array es una lista ordenada de valores a los que te refieres con un nombre y un índice.

- -

Por ejemplo, considera un arreglo llamado emp, que contiene los nombres de los empleados indexados por su id de empleado numérico. De tal modo que emp[0] sería el empleado número cero, emp[1] el empleado número uno, y así sucesivamente.

- -

JavaScript no tiene un tipo de dato array explícito. Sin embargo, puedes utilizar el objeto Array predefinido y sus métodos para trabajar con arreglos en tus aplicaciones. El objeto Array tiene métodos para manipular arreglos de varias formas, tal como unirlos, invertirlos y ordenarlos. Tiene una propiedad para determinar la longitud del arreglo y otras propiedades para usar con expresiones regulares.

- -

Crear un arreglo

- -

Las siguientes declaraciones crean arreglos equivalentes:

- -
let arr = new Array(element0, element1, ..., elementN)
-let arr = Array(element0, element1, ..., elementN)
-let arr = [element0, element1, ..., elementN]
-
- -

element0, element1, ..., elementN es una lista de valores para los elementos del arreglo. Cuando se especifican estos valores, el arreglo se inicia con ellos como elementos del arreglo. La propiedad length del arreglo se establece en el número de argumentos.

- -

La sintaxis de corchetes se denomina "arreglo literal" o "iniciador de arreglo". Es más corto que otras formas de creación de arreglos, por lo que generalmente se prefiere. Consulta Arreglos literales para obtener más detalles.

- -

Para crear un arreglo con una longitud distinta de cero, pero sin ningún elemento, se puede utilizar cualquiera de las siguientes:

- -
// Esta...
-let arr = new Array(arrayLength)
-
-// ...da como resultado el mismo arreglo que este
-let arr = Array(arrayLength)
-
-
-// Esto tiene exactamente el mismo efecto
-let arr = []
-arr.length = arrayLength
-
- -
-

Nota: En el código anterior, arrayLength debe ser un Número. De lo contrario, se creará un arreglo con un solo elemento (el valor proporcionado). Llamar a arr.length devolverá arrayLength, pero el arreglo no contiene ningún elemento. Un bucle {{jsxref("Statements/for...in", "for...in")}} no encontrarás ninguna propiedad en el arreglo.

-
- -

Además de una variable recién definida como se muestra arriba, los arreglos también se pueden asignar como una propiedad a un objeto nuevo o existente:

- -
let obj = {}
-// ...
-obj.prop = [element0, element1, ..., elementN]
-
-// O
-let obj = {prop: [element0, element1, ...., elementN]}
-
- -

Si deseas iniciar un arreglo con un solo elemento, y el elemento resulta ser un Número, debes usar la sintaxis de corchetes. Cuando se pasa un solo valor Number al constructor o función Array(), se interpreta como un arrayLength, no como un solo elemento.

- -
let arr = [42]       // Crea un arreglo con un solo elemento:
-                     // el número 42.
-
-let arr = Array(42)  // Crea un arreglo sin elementos
-                     // y arr.length establecidos en 42.
-                     //
-                     // Esto es equivalente a:
-let arr = []
-arr.length = 42
-
- -

Llamar a Array(N) da como resultado un RangeError, si N no es un número entero cuya porción fraccionaria no es cero. El siguiente ejemplo ilustra este comportamiento.

- -
let arr = Array(9.3)   // RangeError: Longitud de arreglo no válida
-
- -

Si tu código necesita crear arreglos con elementos únicos de un tipo de dato arbitrario, es más seguro utilizar arreglos literales. Alternativamente, crea un arreglo vacío primero antes de agregarle el único elemento.

- -

En ES2015, puedes utilizar el método estático {{jsxref("Array.of")}} para crear arreglos con un solo elemento.

- -
let wisenArray = Array.of(9.3)   // wisenArray contiene solo un elemento 9.3
- -

Refiriéndose a elementos del arreglo

- -

Dado que los elementos también son propiedades, puedes acceder a ellos usando la propiedad accessors. Supongamos que defines el siguiente arreglo:

- -
let myArray = ['Wind', 'Rain', 'Fire']
-
- -

Puedes referirte al primer elemento del arreglo como myArray[0], al segundo elemento del arreglo como myArray[1], etc El índice de los elementos comienza en cero.

- -
-

Nota: También puedes utilizar la propiedad accessors para acceder a otras propiedades del arreglo, como con un objeto.

- -
let arr = ['one', 'two', 'three']
-arr[2]          // three
-arr['length']   // 3
-
-
- -

Llenar un arreglo

- -

Puedes llenar un arreglo asignando valores a sus elementos. Por ejemplo:

- -
let emp = []
-emp[0] = 'Casey Jones'
-emp[1] = 'Phil Lesh'
-emp[2] = 'August West'
-
- -
-

Nota: Si proporcionas un valor no entero al operador array en el código anterior, se creará una propiedad en el objeto que representa al arreglo, en lugar de un elemento del arreglo.

- -
let arr = []
-arr[3.4] = 'Oranges'
-console.log(arr.length)                 // 0
-console.log(arr.hasOwnProperty(3.4))    // true
-
-
- -

También puedes rellenar un arreglo cuando lo creas:

- -
let myArray = new Array('Hello', myVar, 3.14159)
-// OR
-let myArray = ['Mango', 'Apple', 'Orange']
-
- -

Entendiendo length

- -

A nivel de implementación, los arreglos de JavaScript almacenan sus elementos como propiedades de objeto estándar, utilizando el índice del arreglo como nombre de propiedad.

- -

La propiedad length es especial. Siempre devuelve el índice del último elemento más uno. (En el siguiente ejemplo, 'Dusty' está indexado en 30, por lo que cats.length devuelve 30 + 1).

- -

Recuerda, los índices del Array JavaScript están basados en 0: comienzan en 0, no en 1. Esto significa que la propiedad length será uno más que el índice más alto almacenado en el arreglo:

- -
let cats = []
-cats[30] = ['Dusty']
-console.log(cats.length) // 31
-
- -

También puedes asignar la propiedad length.

- -

Escribir un valor que sea más corto que el número de elementos almacenados trunca el arreglo. Escribir 0 lo vacía por completo:

- -
let cats = ['Dusty', 'Misty', 'Twiggy']
-console.log(cats.length)  // 3
-
-cats.length = 2
-console.log(cats)  // logs "Dusty, Misty" - Twiggy se ha eliminado
-
-cats.length = 0
-console.log(cats)  // logs []; el arreglo cats está vacío
-
-cats.length = 3
-console.log(cats)  // logs [ <3 elementos vacíos> ]
-
- -

Iterando sobre arreglos

- -

Una operación común es iterar sobre los valores de un arreglo, procesando cada uno de alguna manera. La forma más sencilla de hacerlo es la siguiente:

- -
let colors = ['red', 'green', 'blue']
-for (let i = 0; i < colors.length; i++) {
-  console.log(colors[i])
-}
-
- -

Si sabes que ninguno de los elementos de tu arreglo se evalúa como false en un contexto booleano, si tu arreglo consta solo de nodos DOM, por ejemplo, puedes usar un lenguaje eficiente:

- -
let divs = document.getElementsByTagName('div')
-for (let i = 0, div; div = divs[i]; i++) {
-  /* Procesar div de alguna manera */
-}
-
- -

Esto evita la sobrecarga de verificar la longitud del arreglo y garantiza que la variable div se reasigne al elemento actual cada vez que se realiza el bucle para mayor comodidad.

- -

El método {{jsxref("Array.forEach", "forEach()")}} proporciona otra forma de iterar sobre un arreglo:

- -
let colors = ['red', 'green', 'blue']
-colors.forEach(function(color) {
-  console.log(color)
-})
-// red
-// green
-// blue
-
- -

Alternativamente, puedes acortar el código para el parámetro forEach con las funciones de flecha ES2015:

- -
let colors = ['red', 'green', 'blue']
-colors.forEach(color => console.log(color))
-// red
-// green
-// blue
-
- -

La función pasada a forEach se ejecuta una vez por cada elemento del arreglo, con el elemento de arreglo pasado como argumento de la función. Los valores no asignados no se iteran en un bucle forEach.

- -

Ten en cuenta que los elementos de un arreglo que se omiten cuando se define el arreglo no se enumeran cuando lo itera forEach, pero se enumeran cuando undefined se ha asignado manualmente al elemento:

- -
let array = ['first', 'second', , 'fourth']
-
-array.forEach(function(element) {
-  console.log(element)
-})
-// first
-// second
-// fourth
-
-if (array[2] === undefined) {
-  console.log('array[2] is undefined')  // true
-}
-
-array = ['first', 'second', undefined, 'fourth']
-
-array.forEach(function(element) {
-  console.log(element)
-})
-// first
-// second
-// undefined
-// fourth
-
- -

Dado que los elementos de JavaScript se guardan como propiedades de objeto estándar, no es recomendable iterar a través de arreglos de JavaScript usando bucles {{jsxref("Statements/for...in", "for...in")}}, porque se enumerarán los elementos normales y todas las propiedades enumerables.

- -

Métodos de array

- -

El objeto {{jsxref("Array")}} tiene los siguientes métodos:

- -

{{jsxref("Array.concat", "concat()")}} une dos o más arreglos y devuelve un nuevo arreglo.

- -
let myArray = new Array('1', '2', '3')
-myArray = myArray.concat('a', 'b', 'c')
-// myArray is now ["1", "2", "3", "a", "b", "c"]
-
- -

{{jsxref("Array.join", "join(delimiter = ',')")}} une todos los elementos de un arreglo en una cadena.

- -
let myArray = new Array('Viento', 'Lluvia', 'Fuego')
-let list = myArray.join('-')   // la lista es "Viento - Lluvia - Fuego"
-
- -

{{jsxref("Array.push", "push()")}} agrega uno o más elementos al final de un arreglo y devuelve la longitud resultante del arreglo.

- -
let myArray = new Array('1', '2')
-myArray.push('3') // myArray ahora es ["1", "2", "3"]
-
- -

{{jsxref("Array.pop", "pop()")}} elimina el último elemento de un arreglo y devuelve ese elemento.

- -
let myArray = new Array ('1', '2', '3')
-let last = myArray.pop()
-// myArray ahora es ["1", "2"], last = "3"
-
- -

{{jsxref("Array.shift", "shift()")}} elimina el primer elemento de un arreglo y devuelve ese elemento.

- -
let myArray = new Array ('1', '2', '3')
-let first = myArray.shift()
-// myArray ahora es ["2", "3"], first es "1"
-
- -

{{jsxref("Array.unshift", "unshift()")}} agrega uno o más elementos al frente de un arreglo y devuelve la nueva longitud del arreglo.

- -
let myArray = new Array('1', '2', '3')
-myArray.unshift('4', '5')
-// myArray se convierte en ["4", "5", "1", "2", "3"]
-
- -

{{jsxref("Array.slice", "slice(start_index, upto_index)")}} extrae una sección de un arreglo y devuelve un nuevo arreglo.

- -
let myArray = new Array('a', 'b', 'c', 'd', 'e')
-myArray = myArray.slice(1, 4) // comienza en el índice 1 y extrae todos los elementos
-                               // hasta el índice 3, devuelve ["b", "c", "d"]
-
- -

{{jsxref("Array.splice", "splice(index, count_to_remove, addElement1, addElement2, ...)")}} elimina elementos de un arreglo y (opcionalmente) los reemplaza. Devuelve los elementos que se eliminaron del arreglo.

- -
let myArray = new Array('1', '2', '3', '4', '5')
-myArray.splice(1, 3, 'a', 'b', 'c', 'd')
-// myArray ahora es ["1", "a", "b", "c", "d", "5"]
-// Este código comenzó en el índice uno (o donde estaba el "2"),
-// eliminó 3 elementos allí, y luego insertó todos los consecutivos
-// elementos en su lugar.
-
- -

{{jsxref("Array.reverse", "reverse()")}} transpone los elementos de un arreglo, en su lugar: el primer elemento del arreglo se convierte en el último y el último en el primero. Devuelve una referencia al arreglo.

- -
let myArray = new Array ('1', '2', '3')
-myArray.reverse()
-// transpone el arreglo para que myArray = ["3", "2", "1"]
-
- -

{{jsxref("Array.sort", "sort()")}} ordena los elementos de un arreglo en su lugar y devuelve una referencia al arreglo.

- -
let myArray = new Array('Viento', 'Lluvia', 'Fuego')
-myArray.sort()
-// ordena el arreglo para que myArray = ["Fuego", "Lluvia", "Viento"]
-
- -

sort() también puede tomar una función retrollamada para determinar cómo se comparan los elementos del arreglo.

- -

El método sort (y otros a continuación) que reciben una retrollamada se conocen como métodos iterativos, porque iteran sobre todo el arreglo de alguna manera. Cada uno toma un segundo argumento opcional llamado thisObject. Si se proporciona, thisObject se convierte en el valor de la palabra clave this dentro del cuerpo de la función retrollamada. Si no se proporciona, como en otros casos en los que se invoca una función fuera de un contexto de objeto explícito, this se referirá al objeto global (window) cuando se usa la función de flecha como retrollamada, o undefined cuando se usa una función normal como retrollamada.

- -

La función retrollamada se invoca con dos argumentos, que son elementos del arreglo.

- -

La siguiente función compara dos valores y devuelve uno de tres valores:

- -

Por ejemplo, lo siguiente se ordenará por la última letra de una cadena:

- -
let sortFn = function(a, b) {
-  if (a[a.length - 1] < b[b.length - 1]) return -1;
-  if (a[a.length - 1] > b[b.length - 1]) return 1;
-  if (a[a.length - 1] == b[b.length - 1]) return 0;
-}
-myArray.sort(sortFn)
-// ordena el arreglo para que myArray = ["Viento", "Fuego", "Lluvia"]
- - - -

{{jsxref("Array.indexOf", "indexOf (searchElement[, fromIndex])")}} busca en el arreglo searchElement y devuelve el índice de la primera coincidencia.

- -
let a = ['a', 'b', 'a', 'b', 'a']
-console.log(a.indexOf('b')) // registros 1
-
-// Ahora inténtalo de nuevo, comenzando después de la última coincidencia
-console.log(a.indexOf('b', 2)) // registra 3
-console.log(a.indexOf('z')) // logs -1, porque no se encontró 'z'
-
- -

{{jsxref("Array.lastIndexOf", "lastIndexOf(searchElement [, fromIndex])")}} funciona como indexOf, pero comienza al final y busca hacia atrás.

- -
let​a = ['a', 'b', 'c', 'd', 'a', 'b']
-console.log(a.lastIndexOf('b')) // registra 5
-
-// Ahora inténtalo de nuevo, comenzando desde antes de la última coincidencia
-console.log(a.lastIndexOf('b', 4)) // registra 1
-console.log(a.lastIndexOf('z'))    // registra -1
-
- -

{{jsxref("Array.forEach", "forEach(callback[, thisObject])")}} ejecuta callback en cada elemento del arreglo y devuelve undefined.

- -
let​a = ['a', 'b', 'c']
-a.forEach(function(elemento) { console.log(elemento) })
-// registra cada elemento por turno
-
- -

{{jsxref("Array.map", "map(callback [, thisObject])")}} devuelve un nuevo arreglo del valor de retorno de ejecutar callback en cada elemento del arreglo.

- -
let a1 = ['a', 'b', 'c']
-let a2 = a1.map(function(item) { return item.toUpperCase() })
-console.log(a2) // registra ['A', 'B', 'C']
-
- -

{{jsxref("Array.filter", "filter(callback [, thisObject])")}} devuelve un nuevo arreglo que contiene los elementos para los cuales callback devolvió true.

- -
let a1 = ['a', 10, 'b', 20, 'c', 30]
-let a2 = a1.filter(function(item) { return typeof item === 'number'; })
-console.log(a2)  // registra [10, 20, 30]
-
- -

{{jsxref("Array.every", "every(callback [, thisObject])")}} devuelve true si callback devuelve true para cada elemento del arreglo.

- -
function isNumber(value) {
-  return typeof value === 'number'
-}
-let a1 = [1, 2, 3]
-console.log(a1.every(isNumber))  // registra true
-let a2 = [1, '2', 3]
-console.log(a2.every(isNumber))  // registra false
-
- -

{{jsxref("Array.some", "some(callback[, thisObject])")}} devuelve true si callback devuelve true para al menos un elemento del arreglo.

- -
function isNumber(value) {
-  return typeof value === 'number'
-}
-let a1 = [1, 2, 3]
-console.log(a1.some(isNumber))  // registra true
-let a2 = [1, '2', 3]
-console.log(a2.some(isNumber))  // registra true
-let a3 = ['1', '2', '3']
-console.log(a3.some(isNumber))  // registra false
-
- -

{{jsxref("Array.reduce", "reduce(callback[, initialValue])")}} aplica callback(acumulador, currentValue[, currentIndex[,array]]) para cada valor en el arreglo con el fin de reducir la lista de elementos a un solo valor. La función reduce devuelve el valor final devuelto por la función callback

- -

Si se especifica initialValue, entonces callback se llama con initialValue como primer valor de parámetro y el valor del primer elemento del arreglo como segundo valor de parámetro. 

- -

Si initialValue no es especificado, entonces callback los primeros dos valores de parámetro deberán ser el primer y segundo elemento del arreglo. En cada llamada subsiguiente, el valor del primer parámetro será el valor de callback devuelto en la llamada anterior, y el valor del segundo parámetro será el siguiente valor en el arreglo.

- -

Si callback necesita acceso al índice del elemento que se está procesando, al acceder al arreglo completo, están disponibles como parámetros opcionales.

- -
let​a = [10, 20, 30]
-let total = a.reduce(function(accumulator, currentValue) { return accumulator + currentValue }, 0)
-console.log(total) // Imprime 60
-
- -

{{jsxref("Array.reduceRight", "reduceRight(callback[, initialValue])")}} funciona como reduce(), pero comienza con el último elemento.

- -

reduce y reduceRight son los menos obvios de los métodos de arreglo iterativos. Se deben utilizar para algoritmos que combinan dos valores de forma recursiva para reducir una secuencia a un solo valor.

- -

Arreglos multidimensionales

- -

Los arreglos se pueden anidar, lo cual significa que un arreglo puede contener otro arreglo como elemento. Usando esta característica de los arreglos de JavaScript, se pueden crear arreglos multidimensionales.

- -

El siguiente código crea un arreglo bidimensional.

- -
let a = new Array(4)
-for (let i = 0; i < 4; i++) {
-  a[i] = new Array(4)
-  for (let j = 0; j < 4; j++) {
-    a[i][j] = '[' + i + ', ' + j + ']'
-  }
-}
-
- -

Este ejemplo crea un arreglo con las siguientes filas:

- -
Row 0: [0, 0] [0, 1] [0, 2] [0, 3]
-Row 1: [1, 0] [1, 1] [1, 2] [1, 3]
-Row 2: [2, 0] [2, 1] [2, 2] [2, 3]
-Row 3: [3, 0] [3, 1] [3, 2] [3, 3]
-
- -

Usar arreglos para almacenar otras propiedades

- -

Los arreglos también se pueden utilizar como objetos para almacenar información relacionada.

- -
const arr = [1, 2, 3];
-arr.property = "value";
-console.log(arr.property);  // Registra "value"
-
- -

Arreglos y expresiones regulares

- -

Cuando un arreglo es el resultado de una coincidencia entre una expresión regular y una cadena, el arreglo devuelve propiedades y elementos que proporcionan información sobre la coincidencia. Un arreglo es el valor de retorno de {{jsxref("Global_Objects/RegExp/exec", "RegExp.exec()")}}, {{jsxref("Global_Objects/String/match", "String.match()")}} y {{jsxref("Global_Objects/String/split", "String.split()")}}. Para obtener información sobre el uso de arreglos con expresiones regulares, consulta Expresiones regulares.

- -

Trabajar con objetos tipo array

- -

Algunos objetos JavaScript, como NodeList devueltos por document.getElementsByTagName() o un objeto {{jsxref("Functions/arguments", "arguments")}} disponible dentro del cuerpo de una función, se ven y se comportan como arreglos en la superficie pero no comparten todos sus métodos. El objeto arguments proporciona un atributo {{jsxref("Global_Objects/Function/length", "length")}} pero no implementa el método {{jsxref("Array.forEach", "forEach()")}}, por ejemplo.

- -

Los métodos de arreglo no se pueden llamar directamente en objetos similares a un arreglo.

- -
function printArguments() {
-  arguments.forEach(function(item) {// TypeError: arguments.forEach no es una función
-    console.log(item);
-  });
-}
-
- -

Pero puedes llamarlos indirectamente usando {{jsxref("Global_Objects/Function/call", "Function.prototype.call()")}}.

- -
function printArguments() {
-  Array.prototype.forEach.call(arguments, function(item) {
-    console.log(item);
-  });
-}
-
- -

Los métodos de prototipos de arreglos también se pueden utilizar en cadenas, ya que proporcionan acceso secuencial a sus caracteres de forma similar a los arreglos:

- -
Array.prototype.forEach.call('a string', function(chr) {
-  console.log(chr)
-})
-
- -

Arrays tipados

- -

Los arreglos tipados en JavaScript son objetos similares a arreglos y proporcionan un mecanismo para acceder a datos binarios sin procesar. Como ya sabes, los objetos {{jsxref("Array")}} crecen y se encogen dinámicamente y pueden tener cualquier valor de JavaScript. Los motores de JavaScript realizan optimizaciones para que estos arreglos sean rápidos. Sin embargo, a medida que las aplicaciones web se vuelven cada vez más poderosas, agregando características como manipulación de audio y video, acceso a datos sin procesar usando WebSockets, y así sucesivamente, ha quedado claro que hay momentos en los que sería útil para que el código JavaScript pueda manipular rápida y fácilmente datos binarios sin procesar en arreglos tipados.

- -

Búferes y vistas: arquitectura de los arreglos con tipo

- -

Para lograr la máxima flexibilidad y eficiencia, los arreglos de JavaScript dividen la implementación en búferes y vistas. Un búfer (implementado por el objeto {{jsxref("ArrayBuffer")}} es un objeto que representa una porción de datos; no tiene un formato del que hablar y no ofrece ningún mecanismo para acceder a su contenido. Para acceder a la memoria contenida en un búfer, necesitas usar una vista. Una vista proporciona un contexto , es decir, un tipo de datos, un desplazamiento inicial y un número de elementos, que convierte los datos en un arreglo con tipo real.

- -

Arreglos tipados en un <code>ArrayBuffer</code>

- -

ArrayBuffer

- -

{{jsxref("ArrayBuffer")}} es un tipo de dato que se utiliza para representar un búfer de datos binarios genérico de longitud fija. No puedes manipular directamente el contenido de un ArrayBuffer; en su lugar, creas una vista de arreglo con tipo o un {{jsxref("DataView")}} que representa el búfer en un formato específico, y lo usa para leer y escribir el contenido del búfer.

- -

Vistas de arreglos tipados

- -

Las vistas de arreglos tipados tienen nombres autodescriptivos y proporcionan vistas para todos los tipos numéricos habituales como Int8, Uint32, Float64 y así sucesivamente. Hay una vista de arreglo con tipo especial, {jsxref("Uint8ClampedArray")}}, que fija los valores entre 0 y 255. Esto es útil para procesamiento de datos de Canvas, por ejemplo.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TipoRango de valoresTamaño en bytesDescripciónTipo de IDL webTipo C equivalente
{{jsxref("Int8Array")}}-128 a 1271Dos enteros complementarios de 8 bits con signobyteint8_t
{{jsxref("Uint8Array")}}0 a 2551Entero de 8-bit sin signooctetouint8_t
{{jsxref("Uint8ClampedArray")}}0 a 2551Entero de 8 bits sin signo (sujeto)octetouint8_t
{{jsxref("Int16Array")}}-32768 a 327672Dos enteros complementarios de 16 bits con signoshortint16_t
{{jsxref("Uint16Array")}}0 a 655352Entero de 16 bits sin signoshort sin signouint16_t
{{jsxref("Int32Array")}}-2147483648 a 21474836474dos enteros complementarios de 32 bits con signolongint32_t
{{jsxref("Uint32Array")}}0 a 42949672954Enteros de 32 bits sin signolong sin signouint32_t
{{jsxref("Float32Array")}}1.2×10-38 a 3.4×10384Número de coma flotante IEEE de 32 bits (7 dígitos significativos, p. ej., 1.1234567)float sin restriccionesfloat
{{jsxref("Float64Array")}}5.0×10-324 a 1.8×103088Número de coma flotante IEEE de 64 bits (16 dígitos significativos, por ejemplo,1.123 ... 15)double sin restriccionesdouble
{{jsxref("BigInt64Array")}}-263 a 263-18Dos enteros complementarios de 64 bits con signobigintint64_t (long long con signo)
{{jsxref("BigUint64Array")}}0 a 264-18Entero de 64 bits sin signobigintuint64_t (long long sin signo)
- -

Para obtener más información, consulta Arreglos tipados en JavaScript y la documentación de referencia para los diferentes objetos {{jsxref("TypedArray")}}.

- -

{{PreviousNext("Web/JavaScript/Guide/Regular_Expressions", "Web/JavaScript/Guide/Keyed_Collections")}}

diff --git a/files/es/web/javascript/guide/control_de_flujo_y_manejo_de_errores/index.html b/files/es/web/javascript/guide/control_de_flujo_y_manejo_de_errores/index.html deleted file mode 100644 index d685818029..0000000000 --- a/files/es/web/javascript/guide/control_de_flujo_y_manejo_de_errores/index.html +++ /dev/null @@ -1,456 +0,0 @@ ---- -title: Control de flujo y manejo de errores -slug: Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores -tags: - - Control de flujo - - Guía - - JavaScript - - Lógica - - Manejo de errores - - Novato - - Principiantes - - Promesas - - declaraciones - - 'l10n:priority' -translation_of: Web/JavaScript/Guide/Control_flow_and_error_handling ---- -
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Grammar_and_types", "Web/JavaScript/Guide/Loops_and_iteration")}}
- -

JavaScript admite un compacto conjunto de declaraciones, específicamente declaraciones de control de flujo, que puedes utilizar para incorporar una gran cantidad de interactividad en tu aplicación. Este capítulo proporciona una descripción de estas declaraciones.

- -

La {{JSxRef("Sentencias", "referencia de JavaScript")}} contiene detalles exhaustivos sobre las declaraciones de este capítulo. El carácter de punto y coma (;) se utiliza para separar declaraciones en código JavaScript.

- -

Todas las expresiones e instrucciones de JavaScript también son una declaración. Consulta {{JSxRef("../Guide/Expressions_and_Operators", "Expresiones y operadores")}} para obtener información completa sobre las expresiones.

- -

Declaración de bloque

- -

La declaración más básica es una declaración de bloque, que se utiliza para agrupar instrucciones. El bloque está delimitado por un par de llaves:

- -
{
-  statement_1;
-  statement_2;
-  ⋮
-  statement_n;
-}
-
- -

Ejemplo

- -

Las declaraciones de bloque se utilizan comúnmente con declaraciones de control de flujo (if, for, while).

- -
while (x < 10) {
-  x++;
-}
-
- -

Aquí, { x++; } es la declaración de bloque.

- -
-

Importante: JavaScript anterior a ECMAScript2015 (6a edición) no tiene ámbito de bloque. En JavaScript más antiguo, las variables introducidas dentro de un bloque tienen como ámbito la función o script que las contiene, y los efectos de establecerlas persisten más allá del bloque en sí mismo. En otras palabras, las declaraciones de bloque no definen un ámbito.

- -

Los bloques "independientes" en JavaScript pueden producir resultados completamente diferentes de los que producirían en C o Java. Por ejemplo:

- -
var x = 1;
-{
-  var x = 2;
-}
-console.log(x); // muestra 2
-
- -

Esto muestra 2 porque la instrucción var x dentro del bloque está en el mismo ámbito que la instrucción var x anterior del bloque. (En C o Java, el código equivalente habría generado 1).

- -

A partir de ECMAScript2015, las declaraciones de variables let y const tienen un ámbito de bloque. Consulta las páginas de referencia de {{JSxRef("Sentencias/let", "let")}} y {{JSxRef("Sentencias/const", "const")}} para obtener más información.

-
- -

Expresiones condicionales

- -

Una expresión condicional es un conjunto de instrucciones que se ejecutarán si una condición especificada es verdadera. JavaScript admite dos expresiones condicionales: if...else y switch.

- -

Expresión if...else

- -

Utiliza la expresión if para ejecutar una instrucción si una condición lógica es true. Utiliza la cláusula opcional else para ejecutar una instrucción si la condición es false.

- -

Una declaración if se ve así:

- -
if (condition) {
-  statement_1;
-} else {
-  statement_2;
-}
- -

Aquí, la condition puede ser cualquier expresión que se evalúe como true o false. (Consulta {{JSxRef("Objetos_globales/Boolean", "Boolean", "#Description")}} para obtener una explicación de lo que se evalúa como true y false).

- -

Si condition se evalúa como true, se ejecuta statement_1. De lo contrario, se ejecuta statement_2. statement_1 y statement_2 pueden ser cualquier declaración, incluidas otras declaraciones if anidadas.

- -

También puedes componer las declaraciones usando else if para que se prueben varias condiciones en secuencia, de la siguiente manera:

- -
if (condition_1) {
-  statement_1;
-} else if (condition_2) {
-  statement_2;
-} else if (condition_n) {
-  statement_n;
-} else {
-  statement_last;
-}
-
- -

En el caso de múltiples condiciones, solo se ejecutará la primera condición lógica que se evalúe como true. Para ejecutar múltiples declaraciones, agrúpalas dentro de una declaración de bloque ({ … }).

- -

Mejores prácticas

- -

En general, es una buena práctica usar siempre declaraciones de bloque, especialmente al anidar declaraciones if:

- -
if (condition) {
-  statement_1_runs_if_condition_is_true;
-  statement_2_runs_if_condition_is_true;
-} else {
-  statement_3_runs_if_condition_is_false;
-  statement_4_runs_if_condition_is_false;
-}
-
- -

No es aconsejable utilizar asignaciones simples en una expresión condicional, porque la asignación se puede confundir con la igualdad al mirar el código.

- -

Por ejemplo, no escribas un código como este:

- -
// Propenso a ser mal interpretado como "x == y"
-if (x = y) {
-  /* expresiones aquí */
-}
-
- -

Si necesitas usar una tarea en una expresión condicional, una práctica común es poner paréntesis adicionales alrededor de la asignación, así:

- -
if ((x = y)) {
-  /* expresiones aquí */
-}
-
- -

Valores falsos

- -

Los siguientes valores se evalúan como false (también conocidos como valores {{Glossary("Falsy")}}:

- - - -

Todos los demás valores, incluidos todos los objetos, se evalúan como true cuando se pasan a una declaración condicional.

- -
-

Precaución: ¡No confundas los valores booleanos primitivos true y false con los valores true y false del objeto {{JSxRef("Boolean")}}!.

- -

Por ejemplo:

- -
var b = new Boolean(false);
-if (b)         // esta condición se evalúa como verdadera
-if (b == true) // esta condición se evalúa como false
-
-
- -

Ejemplo

- -

En el siguiente ejemplo, la función checkData devuelve true si el número de caracteres en un objeto Text es tres. De lo contrario, muestra una alerta y devuelve false.

- -
function checkData() {
-  if (document.form1.threeChar.value.length == 3) {
-    return true;
-  } else {
-    alert(
-        'Introduce exactamente tres caracteres. ' +
-        `${document.form1.threeChar.value} no es válido.`);
-    return false;
-  }
-}
-
- -

Declaración switch

- -

Una instrucción switch permite que un programa evalúe una expresión e intente hacer coincidir el valor de la expresión con una etiqueta case. Si la encuentra, el programa ejecuta la declaración asociada.

- -

Una instrucción switch se ve así:

- -
switch (expression) {
-  case label_1:
-    statements_1
-    [break;]
-  case label_2:
-    statements_2
-    [break;]
-    …
-  default:
-    statements_def
-    [break;]
-}
-
- -

JavaScript evalúa la instrucción switch anterior de la siguiente manera:

- - - -

Declaraciones break

- -

La declaración opcional break asociada con cada cláusula case asegura que el programa salga de switch una vez que se ejecuta la instrucción coincidente, y luego continúa la ejecución en la declaración que sigue a switch. Si se omite break, el programa continúa la ejecución dentro de la instrucción switch (y evaluará el siguiente case, y así sucesivamente).

- -
Ejemplo
- -

En el siguiente ejemplo, si fruittype se evalúa como 'Bananas', el programa hace coincidir el valor con el caso 'Bananas' y ejecuta la declaración asociada. Cuando se encuentra break, el programa sale del switch y continúa la ejecución de la instrucción que sigue a switch. Si se omitiera break, también se ejecutará la instrucción para case 'Cherries'.

- -
switch (fruittype) {
-  case 'Oranges':
-    console.log('Las naranjas cuestan $0.59 la libra.');
-    break;
-  case 'Apples':
-    console.log('Las manzanas cuestan $0.32 la libra.');
-    break;
-  case 'Bananas':
-    console.log('Los plátanos cuestan $0.48 la libra.');
-    break;
-  case 'Cherries':
-    console.log('Las cerezas cuestan $3.00 la libra.');
-    break;
-  case 'Mangoes':
-    console.log('Los mangos cuestan $0.56 la libra.');
-    break;
-  case 'Papayas':
-    console.log('Los mangos y las papayas cuestan $2.79 la libra.');
-    break;
-  default:
-   console.log(`Lo sentimos, no tenemos ${fruittype}.`);
-}
-console.log("¿Hay algo más que quieras?");
- -

Expresiones de manejo de excepciones

- -

Puedes lanzar excepciones usando la instrucción throw y manejarlas usando las declaraciones try...catch.

- - - -

Tipos de excepciones

- -

Casi cualquier objeto se puede lanzar en JavaScript. Sin embargo, no todos los objetos lanzados son iguales. Si bien es común lanzar números o cadenas como errores, con frecuencia es más efectivo usar uno de los tipos de excepción creados específicamente para este propósito:

- - - -

Expresión throw

- -

Utiliza la expresión throw para lanzar una excepción. Una expresión throw especifica el valor que se lanzará:

- -
throw expression;
-
- -

Puedes lanzar cualquier expresión, no solo expresiones de un tipo específico. El siguiente código arroja varias excepciones de distintos tipos:

- -
throw 'Error2';   // tipo String
-throw 42;         // tipo Number
-throw true;       // tipo Boolean
-throw {toString: function() { return "¡Soy un objeto!"; } };
-
- -
-

Nota Puedes especificar un objeto cuando lanzas una excepción. A continuación, puedes hacer referencia a las propiedades del objeto en el bloque catch.

-
- -
// Crea un objeto tipo de UserException
-function UserException(message) {
-  this.message = message;
-  this.name = 'UserException';
-}
-
-// Hacer que la excepción se convierta en una bonita cadena cuando se usa como cadena
-// (por ejemplo, por la consola de errores)
-UserException.prototype.toString = function() {
-  return `${this.name}: "${this.message}"`;
-}
-
-// Crea una instancia del tipo de objeto y tírala
-throw new UserException('Valor muy alto');
- -

Declaración try...catch

- -

La declaración try...catch marca un bloque de expresiones para probar y especifica una o más respuestas en caso de que se produzca una excepción. Si se lanza una excepción, la declaración try...catch la detecta.

- -

La declaración try...catch consta de un bloque try, que contiene una o más declaraciones, y un bloque catch, que contiene declaraciones que especifican qué hacer si se lanza una excepción en el bloque try.

- -

En otras palabras, deseas que el bloque try tenga éxito, pero si no es así, deseas que el control pase al bloque catch. Si alguna instrucción dentro del bloque try (o en una función llamada desde dentro del bloque try) arroja una excepción, el control inmediatamente cambia al bloque catch. Si no se lanza ninguna excepción en el bloque try, se omite el bloque catch. El bloque finalmente se ejecuta después de que se ejecutan los bloques try y catch, pero antes de las declaraciones que siguen a la declaración try...catch.

- -

El siguiente ejemplo usa una instrucción try...catch. El ejemplo llama a una función que recupera el nombre de un mes de un arreglo en función del valor pasado a la función. Si el valor no corresponde a un número de mes (1-12), se lanza una excepción con el valor "InvalidMonthNo" y las declaraciones en el bloque catch establezca la variable monthName en 'unknown'.

- -
function getMonthName(mo) {
-  mo = mo - 1; // Ajusta el número de mes para el índice del arreglo (1 = Ene, 12 = Dic)
-  let months = ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul',
-                'Ago', 'Sep', 'Oct', 'Nov', 'Dic'];
-  if (months[mo]) {
-    return months[mo];
-  } else {
-    throw 'InvalidMonthNo'; // aquí se usa la palabra clave throw
-  }
-}
-
-try { // declaraciones para try
-  monthName = getMonthName(myMonth); // la función podría lanzar una excepción
-}
-catch (e) {
-  monthName = 'unknown';
-  logMyErrors(e); // pasar el objeto exception al controlador de errores (es decir, su propia función)
-}
-
- -

El bloque catch

- -

Puedes usar un bloque catch para manejar todas las excepciones que se puedan generar en el bloque try.

- -
catch (catchID) {
-  instrucciones
-}
-
- -

El bloque catch especifica un identificador (catchID en la sintaxis anterior) que contiene el valor especificado por la expresión throw. Puedes usar este identificador para obtener información sobre la excepción que se lanzó.

- -

JavaScript crea este identificador cuando se ingresa al bloque catch. El identificador dura solo la duración del bloque catch. Una vez que el bloque catch termina de ejecutarse, el identificador ya no existe.

- -

Por ejemplo, el siguiente código lanza una excepción. Cuando ocurre la excepción, el control se transfiere al bloque catch.

- -
try {
-  throw 'myException'; // genera una excepción
-}
-catch (err) {
-  // declaraciones para manejar cualquier excepción
-  logMyErrors(err);    // pasa el objeto exception al controlador de errores
-}
-
- -
-

Mejores prácticas: Cuando se registran errores en la consola dentro de un bloque catch, se usa console.error() en lugar de console.log() aconsejado para la depuración. Formatea el mensaje como un error y lo agrega a la lista de mensajes de error generados por la página.

-
- -

El bloque finally

- -

El bloque finally contiene instrucciones que se ejecutarán después que se ejecuten los bloques try y catch. Además, el bloque finally ejecuta antes el código que sigue a la declaración try...catch...finally.

- -

También es importante notar que el bloque finally se ejecutará independientemente de que se produzca una excepción. Sin embargo, si se lanza una excepción, las declaraciones en el bloque finally se ejecutan incluso si ningún bloque catch maneje la excepción que se lanzó.

- -

Puedes usar el bloque finally para hacer que tu script falle correctamente cuando ocurra una excepción. Por ejemplo, es posible que debas liberar un recurso que tu script haya inmovilizado.

- -

El siguiente ejemplo abre un archivo y luego ejecuta declaraciones que usan el archivo. (JavaScript de lado del servidor te permite acceder a los archivos). Si se lanza una excepción mientras el archivo está abierto, el bloque finally cierra el archivo antes de que falle el script. Usar finally aquí asegura que el archivo nunca se deje abierto, incluso si ocurre un error.

- -
openMyFile();
-try {
-  writeMyFile(theData); // Esto puede arrojar un error
-} catch(e) {
-  handleError(e); // Si ocurrió un error, manéjalo
-} finally {
-  closeMyFile(); // Siempre cierra el recurso
-}
-
- -

Si el bloque finally devuelve un valor, este valor se convierte en el valor de retorno de toda la producción de try…catch…finally, independientemente de las declaraciones return en los bloques try y catch:

- -
function f() {
-  try {
-    console.log(0);
-    throw 'bogus';
-  } catch(e) {
-    console.log(1);
-    return true;    // esta declaración de retorno está suspendida
-                    // hasta que el bloque finally se haya completado
-    console.log(2); // no alcanzable
-  } finally {
-    console.log(3);
-    return false;   // sobrescribe el "return" anterior
-    console.log(4); // no alcanzable
-  }
-  // "return false" se ejecuta ahora
-  console.log(5);   // inalcanzable
-}
-console.log(f()); // 0, 1, 3, false
-
- -

La sobrescritura de los valores devueltos por el bloque finally también se aplica a las excepciones lanzadas o relanzadas dentro del bloque catch:

- -
function f() {
-  try {
-    throw 'bogus';
-  } catch(e) {
-    console.log('captura "falso" interno');
-    throw e; // esta instrucción throw se suspende hasta
-             // que el bloque finally se haya completado
-  } finally {
-    return false; // sobrescribe el "throw" anterior
-  }
-  // "return false" se ejecuta ahora
-}
-
-try {
-  console.log(f());
-} catch(e) {
-  // ¡esto nunca se alcanza!
-  // mientras se ejecuta f(), el bloque `finally` devuelve false,
-  // que sobrescribe el `throw` dentro del `catch` anterior
-  console.log('"falso" externo capturado');
-}
-
-// Produce
-// "falso" interno capturado
-// false
- -

Declaraciones try...catch anidadas

- -

Puedes anidar una o más declaraciones try...catch.

- -

Si un bloque try interno no tiene un bloque catch correspondiente:

- -
    -
  1. debe contener un bloque finally, y
  2. -
  3. el bloque catch adjunto de la declaración try...catch se comprueba para una coincidencia.
  4. -
- -

Para obtener más información, consulta {{JSxRef("Sentencias/try...catch", "bloques try anidados", "#Nested_try-blocks")}} en la una página de referencia {{JSxRef("Sentencias/try...catch", "try...catch")}}.

- -

Utilizar objetos Error

- -

Dependiendo del tipo de error, es posible que puedas utilizar las propiedades name y message para obtener un mensaje más refinado.

- -

La propiedad name proporciona la clase general de Error (tal como DOMException o Error), mientras que message generalmente proporciona un mensaje más conciso que el que se obtendría al convertir el objeto error en una cadena.

- -

Si estás lanzando tus propias excepciones, para aprovechar estas propiedades (por ejemplo, si tu bloque catch no discrimina entre tus propias excepciones y las del sistema), puedes usar el constructor Error.

- -

Por ejemplo:

- -
function doSomethingErrorProne() {
-  if (ourCodeMakesAMistake()) {
-    throw (new Error('El mensaje'));
-  } else {
-    doSomethingToGetAJavascriptError();
-  }
-}
-⋮
-try {
-  doSomethingErrorProne();
-} catch (e) {               // AHORA, en realidad usamos `console.error()`
-  console.error(e.name);    // registra 'Error'
-  console.error(e.message); // registra 'The message' o un mensaje de error de JavaScript
-}
-
- -
{{PreviousNext("Web/JavaScript/Guide/Grammar_and_types", "Web/JavaScript/Guide/Loops_and_iteration")}}
diff --git a/files/es/web/javascript/guide/control_flow_and_error_handling/index.html b/files/es/web/javascript/guide/control_flow_and_error_handling/index.html new file mode 100644 index 0000000000..d685818029 --- /dev/null +++ b/files/es/web/javascript/guide/control_flow_and_error_handling/index.html @@ -0,0 +1,456 @@ +--- +title: Control de flujo y manejo de errores +slug: Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores +tags: + - Control de flujo + - Guía + - JavaScript + - Lógica + - Manejo de errores + - Novato + - Principiantes + - Promesas + - declaraciones + - 'l10n:priority' +translation_of: Web/JavaScript/Guide/Control_flow_and_error_handling +--- +
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Grammar_and_types", "Web/JavaScript/Guide/Loops_and_iteration")}}
+ +

JavaScript admite un compacto conjunto de declaraciones, específicamente declaraciones de control de flujo, que puedes utilizar para incorporar una gran cantidad de interactividad en tu aplicación. Este capítulo proporciona una descripción de estas declaraciones.

+ +

La {{JSxRef("Sentencias", "referencia de JavaScript")}} contiene detalles exhaustivos sobre las declaraciones de este capítulo. El carácter de punto y coma (;) se utiliza para separar declaraciones en código JavaScript.

+ +

Todas las expresiones e instrucciones de JavaScript también son una declaración. Consulta {{JSxRef("../Guide/Expressions_and_Operators", "Expresiones y operadores")}} para obtener información completa sobre las expresiones.

+ +

Declaración de bloque

+ +

La declaración más básica es una declaración de bloque, que se utiliza para agrupar instrucciones. El bloque está delimitado por un par de llaves:

+ +
{
+  statement_1;
+  statement_2;
+  ⋮
+  statement_n;
+}
+
+ +

Ejemplo

+ +

Las declaraciones de bloque se utilizan comúnmente con declaraciones de control de flujo (if, for, while).

+ +
while (x < 10) {
+  x++;
+}
+
+ +

Aquí, { x++; } es la declaración de bloque.

+ +
+

Importante: JavaScript anterior a ECMAScript2015 (6a edición) no tiene ámbito de bloque. En JavaScript más antiguo, las variables introducidas dentro de un bloque tienen como ámbito la función o script que las contiene, y los efectos de establecerlas persisten más allá del bloque en sí mismo. En otras palabras, las declaraciones de bloque no definen un ámbito.

+ +

Los bloques "independientes" en JavaScript pueden producir resultados completamente diferentes de los que producirían en C o Java. Por ejemplo:

+ +
var x = 1;
+{
+  var x = 2;
+}
+console.log(x); // muestra 2
+
+ +

Esto muestra 2 porque la instrucción var x dentro del bloque está en el mismo ámbito que la instrucción var x anterior del bloque. (En C o Java, el código equivalente habría generado 1).

+ +

A partir de ECMAScript2015, las declaraciones de variables let y const tienen un ámbito de bloque. Consulta las páginas de referencia de {{JSxRef("Sentencias/let", "let")}} y {{JSxRef("Sentencias/const", "const")}} para obtener más información.

+
+ +

Expresiones condicionales

+ +

Una expresión condicional es un conjunto de instrucciones que se ejecutarán si una condición especificada es verdadera. JavaScript admite dos expresiones condicionales: if...else y switch.

+ +

Expresión if...else

+ +

Utiliza la expresión if para ejecutar una instrucción si una condición lógica es true. Utiliza la cláusula opcional else para ejecutar una instrucción si la condición es false.

+ +

Una declaración if se ve así:

+ +
if (condition) {
+  statement_1;
+} else {
+  statement_2;
+}
+ +

Aquí, la condition puede ser cualquier expresión que se evalúe como true o false. (Consulta {{JSxRef("Objetos_globales/Boolean", "Boolean", "#Description")}} para obtener una explicación de lo que se evalúa como true y false).

+ +

Si condition se evalúa como true, se ejecuta statement_1. De lo contrario, se ejecuta statement_2. statement_1 y statement_2 pueden ser cualquier declaración, incluidas otras declaraciones if anidadas.

+ +

También puedes componer las declaraciones usando else if para que se prueben varias condiciones en secuencia, de la siguiente manera:

+ +
if (condition_1) {
+  statement_1;
+} else if (condition_2) {
+  statement_2;
+} else if (condition_n) {
+  statement_n;
+} else {
+  statement_last;
+}
+
+ +

En el caso de múltiples condiciones, solo se ejecutará la primera condición lógica que se evalúe como true. Para ejecutar múltiples declaraciones, agrúpalas dentro de una declaración de bloque ({ … }).

+ +

Mejores prácticas

+ +

En general, es una buena práctica usar siempre declaraciones de bloque, especialmente al anidar declaraciones if:

+ +
if (condition) {
+  statement_1_runs_if_condition_is_true;
+  statement_2_runs_if_condition_is_true;
+} else {
+  statement_3_runs_if_condition_is_false;
+  statement_4_runs_if_condition_is_false;
+}
+
+ +

No es aconsejable utilizar asignaciones simples en una expresión condicional, porque la asignación se puede confundir con la igualdad al mirar el código.

+ +

Por ejemplo, no escribas un código como este:

+ +
// Propenso a ser mal interpretado como "x == y"
+if (x = y) {
+  /* expresiones aquí */
+}
+
+ +

Si necesitas usar una tarea en una expresión condicional, una práctica común es poner paréntesis adicionales alrededor de la asignación, así:

+ +
if ((x = y)) {
+  /* expresiones aquí */
+}
+
+ +

Valores falsos

+ +

Los siguientes valores se evalúan como false (también conocidos como valores {{Glossary("Falsy")}}:

+ + + +

Todos los demás valores, incluidos todos los objetos, se evalúan como true cuando se pasan a una declaración condicional.

+ +
+

Precaución: ¡No confundas los valores booleanos primitivos true y false con los valores true y false del objeto {{JSxRef("Boolean")}}!.

+ +

Por ejemplo:

+ +
var b = new Boolean(false);
+if (b)         // esta condición se evalúa como verdadera
+if (b == true) // esta condición se evalúa como false
+
+
+ +

Ejemplo

+ +

En el siguiente ejemplo, la función checkData devuelve true si el número de caracteres en un objeto Text es tres. De lo contrario, muestra una alerta y devuelve false.

+ +
function checkData() {
+  if (document.form1.threeChar.value.length == 3) {
+    return true;
+  } else {
+    alert(
+        'Introduce exactamente tres caracteres. ' +
+        `${document.form1.threeChar.value} no es válido.`);
+    return false;
+  }
+}
+
+ +

Declaración switch

+ +

Una instrucción switch permite que un programa evalúe una expresión e intente hacer coincidir el valor de la expresión con una etiqueta case. Si la encuentra, el programa ejecuta la declaración asociada.

+ +

Una instrucción switch se ve así:

+ +
switch (expression) {
+  case label_1:
+    statements_1
+    [break;]
+  case label_2:
+    statements_2
+    [break;]
+    …
+  default:
+    statements_def
+    [break;]
+}
+
+ +

JavaScript evalúa la instrucción switch anterior de la siguiente manera:

+ + + +

Declaraciones break

+ +

La declaración opcional break asociada con cada cláusula case asegura que el programa salga de switch una vez que se ejecuta la instrucción coincidente, y luego continúa la ejecución en la declaración que sigue a switch. Si se omite break, el programa continúa la ejecución dentro de la instrucción switch (y evaluará el siguiente case, y así sucesivamente).

+ +
Ejemplo
+ +

En el siguiente ejemplo, si fruittype se evalúa como 'Bananas', el programa hace coincidir el valor con el caso 'Bananas' y ejecuta la declaración asociada. Cuando se encuentra break, el programa sale del switch y continúa la ejecución de la instrucción que sigue a switch. Si se omitiera break, también se ejecutará la instrucción para case 'Cherries'.

+ +
switch (fruittype) {
+  case 'Oranges':
+    console.log('Las naranjas cuestan $0.59 la libra.');
+    break;
+  case 'Apples':
+    console.log('Las manzanas cuestan $0.32 la libra.');
+    break;
+  case 'Bananas':
+    console.log('Los plátanos cuestan $0.48 la libra.');
+    break;
+  case 'Cherries':
+    console.log('Las cerezas cuestan $3.00 la libra.');
+    break;
+  case 'Mangoes':
+    console.log('Los mangos cuestan $0.56 la libra.');
+    break;
+  case 'Papayas':
+    console.log('Los mangos y las papayas cuestan $2.79 la libra.');
+    break;
+  default:
+   console.log(`Lo sentimos, no tenemos ${fruittype}.`);
+}
+console.log("¿Hay algo más que quieras?");
+ +

Expresiones de manejo de excepciones

+ +

Puedes lanzar excepciones usando la instrucción throw y manejarlas usando las declaraciones try...catch.

+ + + +

Tipos de excepciones

+ +

Casi cualquier objeto se puede lanzar en JavaScript. Sin embargo, no todos los objetos lanzados son iguales. Si bien es común lanzar números o cadenas como errores, con frecuencia es más efectivo usar uno de los tipos de excepción creados específicamente para este propósito:

+ + + +

Expresión throw

+ +

Utiliza la expresión throw para lanzar una excepción. Una expresión throw especifica el valor que se lanzará:

+ +
throw expression;
+
+ +

Puedes lanzar cualquier expresión, no solo expresiones de un tipo específico. El siguiente código arroja varias excepciones de distintos tipos:

+ +
throw 'Error2';   // tipo String
+throw 42;         // tipo Number
+throw true;       // tipo Boolean
+throw {toString: function() { return "¡Soy un objeto!"; } };
+
+ +
+

Nota Puedes especificar un objeto cuando lanzas una excepción. A continuación, puedes hacer referencia a las propiedades del objeto en el bloque catch.

+
+ +
// Crea un objeto tipo de UserException
+function UserException(message) {
+  this.message = message;
+  this.name = 'UserException';
+}
+
+// Hacer que la excepción se convierta en una bonita cadena cuando se usa como cadena
+// (por ejemplo, por la consola de errores)
+UserException.prototype.toString = function() {
+  return `${this.name}: "${this.message}"`;
+}
+
+// Crea una instancia del tipo de objeto y tírala
+throw new UserException('Valor muy alto');
+ +

Declaración try...catch

+ +

La declaración try...catch marca un bloque de expresiones para probar y especifica una o más respuestas en caso de que se produzca una excepción. Si se lanza una excepción, la declaración try...catch la detecta.

+ +

La declaración try...catch consta de un bloque try, que contiene una o más declaraciones, y un bloque catch, que contiene declaraciones que especifican qué hacer si se lanza una excepción en el bloque try.

+ +

En otras palabras, deseas que el bloque try tenga éxito, pero si no es así, deseas que el control pase al bloque catch. Si alguna instrucción dentro del bloque try (o en una función llamada desde dentro del bloque try) arroja una excepción, el control inmediatamente cambia al bloque catch. Si no se lanza ninguna excepción en el bloque try, se omite el bloque catch. El bloque finalmente se ejecuta después de que se ejecutan los bloques try y catch, pero antes de las declaraciones que siguen a la declaración try...catch.

+ +

El siguiente ejemplo usa una instrucción try...catch. El ejemplo llama a una función que recupera el nombre de un mes de un arreglo en función del valor pasado a la función. Si el valor no corresponde a un número de mes (1-12), se lanza una excepción con el valor "InvalidMonthNo" y las declaraciones en el bloque catch establezca la variable monthName en 'unknown'.

+ +
function getMonthName(mo) {
+  mo = mo - 1; // Ajusta el número de mes para el índice del arreglo (1 = Ene, 12 = Dic)
+  let months = ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul',
+                'Ago', 'Sep', 'Oct', 'Nov', 'Dic'];
+  if (months[mo]) {
+    return months[mo];
+  } else {
+    throw 'InvalidMonthNo'; // aquí se usa la palabra clave throw
+  }
+}
+
+try { // declaraciones para try
+  monthName = getMonthName(myMonth); // la función podría lanzar una excepción
+}
+catch (e) {
+  monthName = 'unknown';
+  logMyErrors(e); // pasar el objeto exception al controlador de errores (es decir, su propia función)
+}
+
+ +

El bloque catch

+ +

Puedes usar un bloque catch para manejar todas las excepciones que se puedan generar en el bloque try.

+ +
catch (catchID) {
+  instrucciones
+}
+
+ +

El bloque catch especifica un identificador (catchID en la sintaxis anterior) que contiene el valor especificado por la expresión throw. Puedes usar este identificador para obtener información sobre la excepción que se lanzó.

+ +

JavaScript crea este identificador cuando se ingresa al bloque catch. El identificador dura solo la duración del bloque catch. Una vez que el bloque catch termina de ejecutarse, el identificador ya no existe.

+ +

Por ejemplo, el siguiente código lanza una excepción. Cuando ocurre la excepción, el control se transfiere al bloque catch.

+ +
try {
+  throw 'myException'; // genera una excepción
+}
+catch (err) {
+  // declaraciones para manejar cualquier excepción
+  logMyErrors(err);    // pasa el objeto exception al controlador de errores
+}
+
+ +
+

Mejores prácticas: Cuando se registran errores en la consola dentro de un bloque catch, se usa console.error() en lugar de console.log() aconsejado para la depuración. Formatea el mensaje como un error y lo agrega a la lista de mensajes de error generados por la página.

+
+ +

El bloque finally

+ +

El bloque finally contiene instrucciones que se ejecutarán después que se ejecuten los bloques try y catch. Además, el bloque finally ejecuta antes el código que sigue a la declaración try...catch...finally.

+ +

También es importante notar que el bloque finally se ejecutará independientemente de que se produzca una excepción. Sin embargo, si se lanza una excepción, las declaraciones en el bloque finally se ejecutan incluso si ningún bloque catch maneje la excepción que se lanzó.

+ +

Puedes usar el bloque finally para hacer que tu script falle correctamente cuando ocurra una excepción. Por ejemplo, es posible que debas liberar un recurso que tu script haya inmovilizado.

+ +

El siguiente ejemplo abre un archivo y luego ejecuta declaraciones que usan el archivo. (JavaScript de lado del servidor te permite acceder a los archivos). Si se lanza una excepción mientras el archivo está abierto, el bloque finally cierra el archivo antes de que falle el script. Usar finally aquí asegura que el archivo nunca se deje abierto, incluso si ocurre un error.

+ +
openMyFile();
+try {
+  writeMyFile(theData); // Esto puede arrojar un error
+} catch(e) {
+  handleError(e); // Si ocurrió un error, manéjalo
+} finally {
+  closeMyFile(); // Siempre cierra el recurso
+}
+
+ +

Si el bloque finally devuelve un valor, este valor se convierte en el valor de retorno de toda la producción de try…catch…finally, independientemente de las declaraciones return en los bloques try y catch:

+ +
function f() {
+  try {
+    console.log(0);
+    throw 'bogus';
+  } catch(e) {
+    console.log(1);
+    return true;    // esta declaración de retorno está suspendida
+                    // hasta que el bloque finally se haya completado
+    console.log(2); // no alcanzable
+  } finally {
+    console.log(3);
+    return false;   // sobrescribe el "return" anterior
+    console.log(4); // no alcanzable
+  }
+  // "return false" se ejecuta ahora
+  console.log(5);   // inalcanzable
+}
+console.log(f()); // 0, 1, 3, false
+
+ +

La sobrescritura de los valores devueltos por el bloque finally también se aplica a las excepciones lanzadas o relanzadas dentro del bloque catch:

+ +
function f() {
+  try {
+    throw 'bogus';
+  } catch(e) {
+    console.log('captura "falso" interno');
+    throw e; // esta instrucción throw se suspende hasta
+             // que el bloque finally se haya completado
+  } finally {
+    return false; // sobrescribe el "throw" anterior
+  }
+  // "return false" se ejecuta ahora
+}
+
+try {
+  console.log(f());
+} catch(e) {
+  // ¡esto nunca se alcanza!
+  // mientras se ejecuta f(), el bloque `finally` devuelve false,
+  // que sobrescribe el `throw` dentro del `catch` anterior
+  console.log('"falso" externo capturado');
+}
+
+// Produce
+// "falso" interno capturado
+// false
+ +

Declaraciones try...catch anidadas

+ +

Puedes anidar una o más declaraciones try...catch.

+ +

Si un bloque try interno no tiene un bloque catch correspondiente:

+ +
    +
  1. debe contener un bloque finally, y
  2. +
  3. el bloque catch adjunto de la declaración try...catch se comprueba para una coincidencia.
  4. +
+ +

Para obtener más información, consulta {{JSxRef("Sentencias/try...catch", "bloques try anidados", "#Nested_try-blocks")}} en la una página de referencia {{JSxRef("Sentencias/try...catch", "try...catch")}}.

+ +

Utilizar objetos Error

+ +

Dependiendo del tipo de error, es posible que puedas utilizar las propiedades name y message para obtener un mensaje más refinado.

+ +

La propiedad name proporciona la clase general de Error (tal como DOMException o Error), mientras que message generalmente proporciona un mensaje más conciso que el que se obtendría al convertir el objeto error en una cadena.

+ +

Si estás lanzando tus propias excepciones, para aprovechar estas propiedades (por ejemplo, si tu bloque catch no discrimina entre tus propias excepciones y las del sistema), puedes usar el constructor Error.

+ +

Por ejemplo:

+ +
function doSomethingErrorProne() {
+  if (ourCodeMakesAMistake()) {
+    throw (new Error('El mensaje'));
+  } else {
+    doSomethingToGetAJavascriptError();
+  }
+}
+⋮
+try {
+  doSomethingErrorProne();
+} catch (e) {               // AHORA, en realidad usamos `console.error()`
+  console.error(e.name);    // registra 'Error'
+  console.error(e.message); // registra 'The message' o un mensaje de error de JavaScript
+}
+
+ +
{{PreviousNext("Web/JavaScript/Guide/Grammar_and_types", "Web/JavaScript/Guide/Loops_and_iteration")}}
diff --git a/files/es/web/javascript/guide/funciones/index.html b/files/es/web/javascript/guide/funciones/index.html deleted file mode 100644 index 9594a71f4c..0000000000 --- a/files/es/web/javascript/guide/funciones/index.html +++ /dev/null @@ -1,706 +0,0 @@ ---- -title: Funciones -slug: Web/JavaScript/Guide/Funciones -tags: - - Funciones - - Guía - - JavaScript - - Novato - - Principiante - - 'l10n:priority' -translation_of: Web/JavaScript/Guide/Functions ---- -
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Loops_and_iteration", "Web/JavaScript/Guide/Expressions_and_Operators")}}
- -

Las funciones son uno de los bloques de construcción fundamentales en JavaScript. Una función en JavaScript es similar a un procedimiento — un conjunto de instrucciones que realiza una tarea o calcula un valor, pero para que un procedimiento califique como función, debe tomar alguna entrada y devolver una salida donde hay alguna relación obvia entre la entrada y la salida. Para usar una función, debes definirla en algún lugar del ámbito desde el que deseas llamarla.

- -

Consulta también el {{JSxRef("Funciones", "capítulo de referencia exhaustivo sobre funciones de JavaScript")}} para conocer los detalles.

- -

Definir funciones

- -

Declaración de función

- -

Una definición de función (también denominada declaración de función o expresión de función) consta de la palabra clave {{JSxRef("Sentencias/function", "function")}}, seguida de:

- - - -

Por ejemplo, el siguiente código define una función simple llamada square ("cuadrado"):

- -
function square(number) {
-  return number * number;
-}
-
- -

La función square toma un parámetro, llamado number. La función consta de una declaración que dice devuelva el parámetro de la función (es decir, number) multiplicado por sí mismo. La instrucción {{JSxRef("Sentencias/return", "return")}} especifica el valor devuelto por la función:

- -
return number * number;
-
- -

Los parámetros primitivos (como un number) se pasan a las funciones por valor; el valor se pasa a la función, pero si la función cambia el valor del parámetro, este cambio no se refleja globalmente ni en la función que llama.

- -

Si pasas un objeto (es decir, un valor no primitivo, como {{JSxRef("Array")}} o un objeto definido por el usuario) como parámetro y la función cambia las propiedades del objeto, ese cambio es visible fuera de la función, como se muestra en el siguiente ejemplo:

- -
function myFunc(theObject) {
-  theObject.make = 'Toyota';
-}
-
-[parcial]var mycar = { make: 'Honda', model: 'Accord', year: 1998 };
-var x, y;
-
-x = mycar.make; // x obtiene el valor "Honda"
-
-myFunc(mycar);
-y = mycar.make; // y obtiene el valor "Toyota"
-                // (la propiedad make fue cambiada por la función)
-
- -

Expresiones function

- -

Si bien la declaración de función anterior sintácticamente es una declaración, las funciones también se pueden crear mediante una {{JSxRef("Operadores/function", "expresión function")}}.

- -

Esta función puede ser anónima; no tiene por qué tener un nombre. Por ejemplo, la función square se podría haber definido como:

- -
const square = function(number) { return number * number }
-var x = square(4) // x obtiene el valor 16
- -

Sin embargo, puedes proporcionar un nombre con una expresión function. Proporcionar un nombre permite que la función se refiera a sí misma y también facilita la identificación de la función en el seguimiento de la pila de un depurador:

- -
const factorial = function fac(n) { return n < 2 ? 1 : n * fac(n - 1) }
-
-console.log(factorial(3))
-
- -

Las expresiones function son convenientes cuando se pasa una función como argumento a otra función. El siguiente ejemplo muestra una función map que debería recibir una función como primer argumento y un arreglo como segundo argumento.

- -
function map(f, a) {
-  let result = []; // Crea un nuevo arreglo
-  let i; // Declara una variable
-  for (i = 0; i != a.length; i++)
-    result[i] = f(a[i]);
-  return result;
-}
-
- -

En el siguiente código, la función recibe una función definida por una expresión de función y la ejecuta por cada elemento del arreglo recibido como segundo argumento.

- -
function map(f, a) {
-  let result = []; // Crea un nuevo arreglo
-  let i; // Declara una variable
-  for (i = 0; i != a.length; i++)
-    result[i] = f(a[i]);
-  return result;
-}
-const f = function(x) {
-   return x * x * x;
-}
-let numbers = [0, 1, 2, 5, 10];
-let cube = map(f,numbers);
-console.log(cube);
- -

La función devuelve: [0, 1, 8, 125, 1000].

- -

En JavaScript, una función se puede definir en función de una condición. Por ejemplo, la siguiente definición de función define myFunc solo si num es igual a 0:

- -
var myFunc;
-if (num === 0) {
-  myFunc = function(theObject) {
-    theObject.make = 'Toyota';
-  }
-}
- -

Además de definir funciones como se describe aquí, también puedes usar el constructor {{JSxRef("Function")}} para crear funciones a partir de una cadena en tiempo de ejecución, muy al estilo de {{JSxRef("eval", "eval()")}}.

- -

Un método es una función que es propiedad de un objeto. Obten más información sobre objetos y métodos en {{JSxRef("../Guide/Working_with_Objects", "Trabajar con objetos")}}.

- -

Llamar funciones

- -

Definir una función no la ejecuta. Definirla simplemente nombra la función y especifica qué hacer cuando se llama a la función.

- -

Llamar a la función en realidad lleva a cabo las acciones especificadas con los parámetros indicados. Por ejemplo, si defines la función square, podrías llamarla de la siguiente manera:

- -
square(5);
-
- -

La declaración anterior llama a la función con un argumento de 5. La función ejecuta sus declaraciones y devuelve el valor 25.

- -

Las funciones deben estar dentro del ámbito cuando se llaman, pero la declaración de la función se puede elevar (cuando aparece debajo de la llamada en el código), como en este ejemplo:

- -
console.log(square(5));
-/* ... */
-function square(n) { return n * n }
-
- -

El ámbito de una función es la función en la que se declara (o el programa completo, si se declara en el nivel superior).

- -
-

Nota: Esto solo trabaja cuando se define la función usando la sintaxis anterior (es decir, function funcName() {}). El siguiente código no trabajará.

- -

Esto significa que la elevación de función solo trabaja con declaraciones de función, no con expresiones de función.

- -
console.log(square)    // square se eleva con un valor inicial undefined.
-console.log(square(5)) // Error de tipo no detectado: square no es una función
-const square = function(n) {
-  return n * n;
-}
-
-
- -

Los argumentos de una función no se limitan a cadenas y números. Puedes pasar objetos completos a una función. La función show_props() (definida en {{JSxRef("../Guide/Working_with_Objects", "Trabajar con objetos", "#Objetos_y_propiedades")}} es un ejemplo de una función que toma un objeto como argumento.

- -

Una función se puede llamar a sí misma. Por ejemplo, aquí hay una función que calcula factoriales de forma recursiva:

- -
function factorial(n) {
-  if ((n === 0) || (n === 1))
-    return 1;
-  else
-    return (n * factorial(n - 1));
-}
-
- -

Luego, podrías calcular los factoriales de 1 a 5 de la siguiente manera:

- -
var a, b, c, d, e;
-a = factorial(1); // a obtiene el valor 1
-b = factorial(2); // b obtiene el valor 2
-c = factorial(3); // c obtiene el valor 6
-d = factorial(4); // d obtiene el valor 24
-e = factorial(5); // e obtiene el valor 120
-
- -

Hay otras formas de llamar funciones. A menudo hay casos en los que una función se tiene que llamar dinámicamente, o el número de argumentos de una función varía, o en los que el contexto de la llamada a la función se tiene que establecer en un determinado objeto específico en tiempo de ejecución.

- -

Resulta que las funciones en sí mismas son objetos y, a su vez, estos objetos tienen métodos. (Consulta el objeto {{JSxRef("Function")}}. Uno de estos, el método {{JSxRef("Function.apply", "apply()")}}, se puede utilizar para lograr este objetivo.

- -

Ámbito de function

- -

No se puede acceder a las variables definidas dentro de una función desde cualquier lugar fuera de la función, porque la variable se define solo en el ámbito de la función. Sin embargo, una función puede acceder a todas las variables y funciones definidas dentro del ámbito en el que está definida.

- -

En otras palabras, una función definida en el ámbito global puede acceder a todas las variables definidas en el ámbito global. Una función definida dentro de otra función también puede acceder a todas las variables definidas en su función principal y a cualquier otra variable a la que tenga acceso la función principal.

- -
// Las siguientes variables se definen en el ámbito global
-var num1 = 20,
-    num2 = 3,
-    name = 'Chamahk';
-
-// Esta función está definida en el ámbito global
-function multiply() {
-  return num1 * num2;
-}
-
-multiply(); // Devuelve 60
-
-// Un ejemplo de función anidada
-function getScore() {
-  var num1 = 2,
-      num2 = 3;
-
-  function add() {
-    return name + ' anotó ' + (num1 + num2);
-  }
-
-  return add();
-}
-
-getScore(); // Devuelve "Chamahk anotó 5"
-
- -

Ámbito y la pila de funciones

- -

Recursión

- -

Una función se puede referir y llamarse a sí misma. Hay tres formas de que una función se refiera a sí misma:

- -
    -
  1. El nombre de la función
  2. -
  3. {{JSxRef("Funciones/arguments/callee", "arguments.callee")}}
  4. -
  5. Una variable dentro del ámbito que se refiere a la función
  6. -
- -

Por ejemplo, considera la siguiente definición de función:

- -
var foo = function bar() {
-   // las instrucciones van aquí
-}
-
- -

Dentro del cuerpo de la función, todos los siguientes son equivalentes:

- -
    -
  1. bar()
  2. -
  3. arguments.callee()
  4. -
  5. foo()
  6. -
- -

Una función que se llama a sí misma se conoce como una función recursiva. En cierto modo, la recursividad es análoga a un bucle. Ambas ejecutan el mismo código varias veces y ambas requieren una condición (para evitar un bucle infinito, o más bien, una recursividad infinita en este caso).

- -

Por ejemplo, el siguiente bucle...

- -
var x = 0;
-while (x < 10) { // "x < 10" es la condición del bucle
-   // hacer cosas
-   x++;
-}
-
- -

...se puede convertir en una declaración de función recursiva, seguida de una llamada a esa función:

- -
function loop(x) {
-  if (x >= 10) // "x >= 10" es la condición de salida (equivalente a "!(x < 10)")
-    return;
-  // hacer cosas
-  loop(x + 1); // la llamada recursiva
-}
-loop(0);
-
- -

Sin embargo, algunos algoritmos no pueden ser simples bucles iterativos. Por ejemplo, obtener todos los nodos de una estructura de árbol (como {{web.link("/es/docs/DOM", "DOM")}}) es más fácil a través de la recursividad:

- -
function walkTree(node) {
-  if (node == null) //
-    return;
-  // hacer algo con el nodo
-  for (var i = 0; i < node.childNodes.length; i++) {
-    walkTree(node.childNodes[i]);
-  }
-}
-
- -

En comparación con la función loop, cada llamada recursiva en sí misma hace muchas llamadas recursivas aquí.

- -

Es posible convertir cualquier algoritmo recursivo en uno no recursivo, pero la lógica suele ser mucho más compleja, y hacerlo requiere el uso de una pila.

- -

De hecho, la recursividad en sí misma usa una pila: la pila de funciones. El comportamiento similar a una pila se puede ver en el siguiente ejemplo:

- -
function foo(i) {
-  if (i < 0)
-    return;
-  console.log('inicio: ' + i);
-  foo(i - 1);
-  console.log('fin: ' + i);
-}
-foo(3);
-
-// Produce:
-
-// inicio: 3
-// inicio: 2
-// inicio: 1
-// inicio: 0
-// fin: 0
-// fin: 1
-// fin: 2
-// fin: 3
- -

Funciones anidadas y cierres

- -

Puedes anidar una función dentro de otra función. La función anidada (interna) es privada de su función contenedora (externa).

- -

También forma un cierre. Un cierre es una expresión (comúnmente, una función) que puede tener variables libres junto con un entorno que une esas variables (que "cierra" la expresión).

- -

Dado que una función anidada es un cierre, significa que una función anidada puede "heredar" los argumentos y variables de su función contenedora. En otras palabras, la función interna contiene el ámbito de la función externa.

- -

Para resumir:

- - - - - -

El siguiente ejemplo muestra funciones anidadas:

- -
function addSquares(a, b) {
-  function square(x) {
-    return x * x;
-  }
-  return square(a) + square(b);
-}
-a = addSquares(2, 3); // devuelve 13
-b = addSquares(3, 4); // devuelve 25
-c = addSquares(4, 5); // devuelve 41
-
- -

Dado que la función interna forma un cierre, puedes llamar a la función externa y especificar argumentos tanto para la función externa como para la interna:

- -
function outside(x) {
-  function inside(y) {
-    return x + y;
-  }
-  return inside;
-}
-fn_inside = outside(3); // Piensa en ello como: dame una función que agregue 3 a lo que sea que le des
-                        // eso
-result = fn_inside(5); // devuelve 8
-
-result1 = outside(3)(5); // devuelve 8
-
- -

Preservación de variables

- -

Observa cómo se conserva x cuando se devuelve inside. Un cierre debe conservar los argumentos y variables en todos los ámbitos a los que hace referencia. Dado que cada llamada proporciona argumentos potencialmente diferentes, se crea un nuevo cierre para cada llamada a outside. La memoria se puede liberar solo cuando el inside devuelto ya no es accesible.

- -

Esto no es diferente de almacenar referencias en otros objetos, pero a menudo es menos obvio porque uno no establece las referencias directamente y no las puede inspeccionar.

- -

Funciones multianidadas

- -

Las funciones se pueden anidar de forma múltiple. Por ejemplo:

- - - -

Por tanto, los cierres pueden contener múltiples ámbitos; contienen de forma recursiva el ámbito de las funciones que la contienen. Esto se llama encadenamiento de alcance. (La razón por la que se llama "encadenamiento" se explica más adelante).

- -

Considera el siguiente ejemplo:

- -
function A(x) {
-  function B(y) {
-    function C(z) {
-      console.log(x + y + z);
-    }
-    C(3);
-  }
-  B(2);
-}
-A(1); // registra 6 (1 + 2 + 3)
-
- -

En este ejemplo, C accede a y de B y a x de A.

- -

Esto se puede hacer porque:

- -
    -
  1. B forma un cierre que incluye a A (es decir, B puede acceder a los argumentos y variables de A).
  2. -
  3. C forma un cierre que incluye a B.
  4. -
  5. Debido a que el cierre de B incluye a A, el cierre de C incluye a A, C puede acceder a los argumentos y variables de B y de A. En otras palabras, C encadena los ámbitos de B y A, en ese orden.
  6. -
- -

Sin embargo, lo contrario no es cierto. A no puede acceder a C, porque A no puede acceder a ningún argumento o variable de B, del que C es una variable. Por lo tanto, C permanece privado solo para B.

- -

Conflictos de nombres

- -

Cuando dos argumentos o variables en el ámbito de un cierre tienen el mismo nombre, hay un conflicto de nombres. Tiene más prioridad el ámbito anidado. Entonces, el ámbito más interno tiene la mayor prioridad, mientras que el ámbito más externo tiene la más baja. Esta es la cadena de ámbito. El primero de la cadena es el ámbito más interno y el último es el ámbito más externo. Considera lo siguiente:

- -
function outside() {
-  var x = 5;
-  function inside(x) {
-    return x * 2;
-  }
-  return inside;
-}
-
-outside()(10); // devuelve 20 en lugar de 10
-
- -

El conflicto de nombre ocurre en la declaración return x y está entre el parámetro x de inside y la variable x de outside. La cadena de ámbito aquí es {inside, outside, objeto global}. Por lo tanto, x de inside tiene precedencia sobre x de outside y 20 (x) de inside se devuelve en lugar de 10 (x de outside).

- -

Cierres

- -

Los cierres son una de las características más poderosas de JavaScript. JavaScript permite el anidamiento de funciones y otorga a la función interna acceso completo a todas las variables y funciones definidas dentro de la función externa (y todas las demás variables y funciones a las que la función externa tiene acceso).

- -

Sin embargo, la función externa no tiene acceso a las variables y funciones definidas dentro de la función interna. Esto proporciona una especie de encapsulación para las variables de la función interna.

- -

Además, dado que la función interna tiene acceso a el ámbito de la función externa, las variables y funciones definidas en la función externa vivirán más que la duración de la ejecución de la función externa, si la función interna logra sobrevivir más allá de la vida de la función externa. Se crea un cierre cuando la función interna de alguna manera se pone a disposición de cualquier ámbito fuera de la función externa.

- -
var pet = function(name) {   // La función externa define una variable llamada "name"
-  var getName = function() {
-    return name;             // La función interna tiene acceso a la variable
-                             // "name" de la función externa
-  }
-  return getName;            // Devuelve la función interna, exponiéndola así a ámbitos externos
-}
-myPet = pet('Vivie');
-
-myPet();                     // Devuelve "Vivie"
-
- -

Puede ser mucho más complejo que el código anterior. Se puede devolver un objeto que contiene métodos para manipular las variables internas de la función externa.

- -
var createPet = function(name) {
-  var sex;
-
-  return {
-    setName: function(newName) {
-      name = newName;
-    },
-
-    getName: function() {
-      return name;
-    },
-
-    getSex: function() {
-      return sex;
-    },
-
-    setSex: function(newSex) {
-      if(typeof newSex === 'string' && (newSex.toLowerCase() === 'male' ||
-        newSex.toLowerCase() === 'female')) {
-        sex = newSex;
-      }
-    }
-  }
-}
-
-var pet = createPet('Vivie');
-pet.getName();                  // Vivie
-
-pet.setName('Oliver');
-pet.setSex('male');
-pet.getSex();                   // male
-pet.getName();                  // Oliver
-
- -

En el código anterior, la variable name de la función externa es accesible para las funciones internas, y no hay otra forma de acceder a las variables internas excepto a través de las funciones internas. Las variables internas de las funciones internas actúan como almacenes seguros para los argumentos y variables externos. Contienen datos "persistentes" y "encapsulados" para que trabajen las funciones internas. Las funciones ni siquiera tienen que estar asignadas a una variable o tener un nombre.

- -
var getCode = (function() {
-  var apiCode = '0]Eal(eh&2';    // Un código que no queremos que los externos puedan modificar...
-
-  return function() {
-    return apiCode;
-  };
-})();
-
-getCode();    // Devuelve el apiCode
-
- -
-

Precaución ¡Hay una serie de trampas a tener en cuenta al usar cierres!

- -

Si una función encerrada define una variable con el mismo nombre que una variable en el ámbito externo, entonces no hay forma de hacer referencia a la variable en el ámbito externo nuevamente. (La variable de ámbito interno "anula" la externa, hasta que el programa sale de el ámbito interno).

- -
var createPet = function(name) {  // La función externa define una variable llamada "name".
-  return {
-    setName: function(name) {    // La función envolvente también define una variable llamada "name".
-      name = name;               // ¿Cómo accedemos al "name" definido por la función externa?
-    }
-  }
-}
-
-
- -

Usar el objeto arguments

- -

El arguments de una función se mantiene en un objeto similar a un arreglo. Dentro de una función, puedes abordar los argumentos que se le pasan de la siguiente manera:

- -
arguments[i]
-
- -

donde i es el número ordinal del argumento, comenzando en 0. Entonces, el primer argumento que se pasa a una función sería arguments[0]. El número total de argumentos se indica mediante arguments.length.

- -

Usando el objeto arguments, puedes llamar a una función con más argumentos de los que formalmente declara aceptar. Esto suele ser útil si no sabes de antemano cuántos argumentos se pasarán a la función. Puedes usar arguments.length para determinar el número de argumentos que realmente se pasan a la función, y luego acceder a cada argumento usando el objeto arguments.

- -

Por ejemplo, considera una función que concatena varias cadenas. El único argumento formal para la función es una cadena que especifica los caracteres que separan los elementos a concatenar. La función se define de la siguiente manera:

- -
function myConcat(separator) {
-   var result = ''; // inicia list
-   var i;
-   // itera a través de arguments
-   for (i = 1; i < arguments.length; i++) {
-      result += arguments[i] + separator;
-   }
-   return result;
-}
-
- -

Puedes pasar cualquier número de argumentos a esta función, y concatena cada argumento en una "lista" de cadenas:

- -
// devuelve "red, orange, blue, "
-myConcat(', ', 'red', 'orange', 'blue');
-
-// devuelve "elephant; giraffe; lion; cheetah"
-myConcat('; ', 'elephant', 'giraffe', 'lion', 'cheetah');
-
-// devuelve "sage. basil. oregano. pepper. perejil. "
-myConcat('. ', 'salvia', 'albahaca', 'orégano', 'pimienta', 'perejil');
-
- -
-

Nota: La variable arguments es "similar a un arreglo", pero no es un arreglo. Es similar a un arreglo en el sentido de que tiene un índice numerado y una propiedad length. Sin embargo, no posee todos los métodos de manipulación de arreglos.

-
- -

Consulta el objeto {{JSxRef("Function")}} en la referencia de JavaScript para obtener más información.

- -

Parámetros de función

- -

A partir de ECMAScript 2015, hay dos nuevos tipos de parámetros: parámetros predeterminados y parámetros resto.

- -

Parámetros predeterminados

- -

En JavaScript, los parámetros de las funciones están predeterminados en undefined. Sin embargo, en algunas situaciones puede resultar útil establecer un valor predeterminado diferente. Esto es exactamente lo que hacen los parámetros predeterminados.

- -

Sin parámetros predeterminados (preECMAScript 2015)

- -

En el pasado, la estrategia general para establecer valores predeterminados era probar los valores de los parámetros en el cuerpo de la función y asignar un valor si eran undefined.

- -

En el siguiente ejemplo, si no se proporciona ningún valor para b, su valor sería undefined al evaluar a * b, y una llamada a multiply normalmente habría devuelto NaN. Sin embargo, esto se evita con la segunda línea de este ejemplo:

- -
function multiply(a, b) {
-  b = typeof b !== 'undefined' ?  b : 1;
-
-  return a * b;
-}
-
-multiply(5); // 5
-
- -

Con parámetros predeterminados (posECMAScript 2015)

- -

Con parámetros predeterminados, ya no es necesaria una verificación manual en el cuerpo de la función. Simplemente puedes poner 1 como valor predeterminado para b en el encabezado de la función:

- -
function multiply(a, b = 1) {
-  return a * b;
-}
-
-multiply(5); // 5
- -

Para obtener más detalles, consulta {{JSxRef("Funciones/Parametros_predeterminados", "parámetros predeterminados")}} en la referencia.

- -

Parámetros rest

- -

La sintaxis del {{JSxRef("Funciones/Parametros_rest", "parámetro rest")}} nos permite representar un número indefinido de argumentos como un arreglo.

- -

En el siguiente ejemplo, la función multiply usa parámetros rest para recopilar argumentos desde el segundo hasta el final. Luego, la función los multiplica por el primer argumento.

- -
function multiply(multiplier, ...theArgs) {
-  return theArgs.map(x => multiplier * x);
-}
-
-var arr = multiply(2, 1, 2, 3);
-console.log(arr); // [2, 4, 6]
- -

Funciones Flecha

- -

Una {{JSxRef("Funciones/Funciones_flecha", "expresión de función flecha")}} (anteriormente, y ahora conocida incorrectamente como función de flecha gruesa) tiene una sintaxis más corta en comparación con las expresiones de función y no tiene su propio {{JSxRef("Operadores/this", "this")}}, {{JSxRef("Funciones/arguments", "arguments")}}, {{JSxRef("Operadores/super", "super")}} o {{JSxRef("../Operadores/new.target", "new.target")}}. Las funciones flecha siempre son anónimas. Consulta también esta publicación del blog hacks.mozilla.org: "ES6 en profundidad: funciones flecha".

- -

Dos factores influyeron en la introducción de las funciones flecha: funciones más cortas y no vinculantes de this.

- -

Funciones más cortas

- -

En algunos patrones funcionales, las funciones más cortas son bienvenidas. Compara:

- -
var a = [
-  'Hidrógeno',
-  'Helio',
-  'Litio',
-  'Berilio'
-];
-
-var a2 = a.map(function(s) { return s.length; });
-
-console.log(a2); // logs [8, 6, 7, 9]
-
-var a3 = a.map(s => s.length);
-
-console.log(a3); // logs [8, 6, 7, 9]
-
- -

Sin this separado

- -

Hasta las funciones flecha, cada nueva función definía su propio valor {{JSxRef("Operadores/this", "this")}} (un nuevo objeto en el caso de un constructor, indefinido en llamadas a funciones en {{JSxRef("Strict_mode", "modo estricto")}}, el objeto base si la función se llama como un "método de objeto", etc.). Esto resultó ser poco menos que ideal con un estilo de programación orientado a objetos.

- -
function Person() {
-  // El constructor Person() define `this` como él mismo.
-  this.age = 0;
-
-  setInterval(function growUp() {
-    // En modo no estricto, la función growUp() define `this`
-    // como el objeto global, que es diferente del `this`
-    // definido por el constructor Person().
-    this.age++;
-  }, 1000);
-}
-
-var p = new Person();
- -

En ECMAScript 3/5, este problema se solucionó asignando el valor en this a una variable que se podría cerrar.

- -
function Person() {
-  var self = this; // Algunos eligen `that` en lugar de` self`.
-                   // Elige uno y se congruente.
-  self.age = 0;
-
-  setInterval(function growUp() {
-    // La retrollamada se refiere a la variable `self` de la cual
-    // el valor es el objeto esperado.
-    self.age++;
-  }, 1000);
-}
- -

Alternativamente, podrías crear una {{JSxRef("Objetos_globales/Function/bind", "función vinculada")}} para que el valor this adecuado se pasara a la función growUp().

- -

Una función flecha no tiene su propio this se utiliza el valor de this del contexto de ejecución adjunto. Por lo tanto, en el siguiente código, this dentro de la función que se pasa a setInterval tiene el mismo valor que this en la función adjunta:

- -
function Person() {
-  this.age = 0;
-
-  setInterval(() => {
-    this.age++; // |this| propiamente se refiere al objeto person
-  }, 1000);
-}
-
-var p = new Person();
- -

Funciones predefinidas

- -

JavaScript tiene integradas varias funciones de nivel superior:

- -
-
{{JSxRef("Objetos_globales/eval", "eval()")}}
-
-

El método eval() evalúa el código JavaScript representado como una cadena.

-
-
{{JSxRef("Objetos_globales/uneval", "uneval()")}}
-
-

El método uneval() crea una representación de cadena del código fuente de un {{JSxRef("Object")}}.

-
-
{{JSxRef("Objetos_globales/isFinite", "isFinite()")}}
-
-

La función global isFinite() determina si el valor pasado es un número finito. Si es necesario, el parámetro, primero se convierte en un número.

-
-
{{JSxRef("Objetos_globales/isNaN", "isNaN()")}}
-
-

La función isNaN() determina si un valor es {{JSxRef("Objetos_globales/NaN", "NaN")}} o no. Nota: La coerción dentro de la función isNaN tiene {{JSxRef("Objetos_globales/isNaN", "interesantes", "#Descripcion")}} reglas; también puedes querer usar {{JSxRef("Number.isNaN()")}}, como se define en ECMAScript 2015, o puedes usar {{JSxRef("Operadores/typeof", "typeof")}} para determinar si el valor no es un número (NaN).

-
-
{{JSxRef("Objetos_globales/parseFloat", "parseFloat()")}}
-
-

La función parseFloat() procesa un argumento de cadena y devuelve un número de punto flotante.

-
-
{{JSxRef("Objetos_globales/parseInt", "parseInt()")}}
-
-

La función parseInt() procesa un argumento de cadena y devuelve un número entero de la base especificada (la base en los sistemas numéricos matemáticos).

-
-
{{JSxRef("Objetos_globales/decodeURI", "decodeURI()")}}
-
-

La función decodeURI() decodifica un identificador uniforme de recursos (URI) creado previamente por {{JSxRef("Objetos_globales/encodeURI", "encodeURI")}} o por una rutina similar.

-
-
{{JSxRef("Objetos_globales/decodeURIComponent", "decodeURIComponent()")}}
-
-

El método decodeURIComponent() decodifica un componente Identificador uniforme de recursos (URI) creado previamente por {{JSxRef("Objetos_globales/encodeURIComponent", "encodeURIComponent")}} o por un rutina similar.

-
-
{{JSxRef("Objetos_globales/encodeURI", "encodeURI()")}}
-
-

El método encodeURI() codifica un identificador uniforme de recursos (URI) reemplazando cada instancia de ciertos caracteres por una, dos, tres o cuatro secuencias de escape que representan la codificación UTF-8 del caracter (solo habrá cuatro secuencias de escape para caracteres compuestos por dos caracteres "sustitutos").

-
-
{{JSxRef("Objetos_globales/encodeURIComponent", "encodeURIComponent()")}}
-
-

El método encodeURIComponent() codifica un componente Identificador uniforme de recursos (URI) reemplazando cada instancia de ciertos caracteres por una, dos, tres o cuatro secuencias de escape que representan la codificación UTF-8 del caracter (solo habrá cuatro secuencias de escape para caracteres compuestos por dos caracteres "sustitutos").

-
-
{{JSxRef("Objetos_globales/escape", "escape()")}}
-
-

El método obsoleto escape() calcula una nueva cadena en la que ciertos caracteres han sido reemplazados por una secuencia de escape hexadecimal. En su lugar usa {{JSxRef("Objetos_globales/encodeURI", "encodeURI")}} o {{JSxRef("Objetos_globales/encodeURIComponent", "encodeURIComponent")}}.

-
-
{{JSxRef("Objetos_globales/unescape", "unescape()")}}
-
-

El método obsoleto unescape() calcula una nueva cadena en la que las secuencias de escape hexadecimales se reemplazan con el caracter que representan. Las secuencias de escape se pueden introducir por medio de una función como {{JSxRef("Objetos_globales/escape", "escape")}}. Debido a que unescape() está en desuso, usa {{JSxRef("Objetos_globales/decodeURI", "decodeURI()")}} o {{JSxRef("Objetos_globales/decodeURIComponent", "decodeURIComponent")}} en su lugar.

-
-
- -

{{PreviousNext("Web/JavaScript/Guide/Loops_and_iteration", "Web/JavaScript/Guide/Expressions_and_Operators")}}

diff --git a/files/es/web/javascript/guide/functions/index.html b/files/es/web/javascript/guide/functions/index.html new file mode 100644 index 0000000000..9594a71f4c --- /dev/null +++ b/files/es/web/javascript/guide/functions/index.html @@ -0,0 +1,706 @@ +--- +title: Funciones +slug: Web/JavaScript/Guide/Funciones +tags: + - Funciones + - Guía + - JavaScript + - Novato + - Principiante + - 'l10n:priority' +translation_of: Web/JavaScript/Guide/Functions +--- +
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Loops_and_iteration", "Web/JavaScript/Guide/Expressions_and_Operators")}}
+ +

Las funciones son uno de los bloques de construcción fundamentales en JavaScript. Una función en JavaScript es similar a un procedimiento — un conjunto de instrucciones que realiza una tarea o calcula un valor, pero para que un procedimiento califique como función, debe tomar alguna entrada y devolver una salida donde hay alguna relación obvia entre la entrada y la salida. Para usar una función, debes definirla en algún lugar del ámbito desde el que deseas llamarla.

+ +

Consulta también el {{JSxRef("Funciones", "capítulo de referencia exhaustivo sobre funciones de JavaScript")}} para conocer los detalles.

+ +

Definir funciones

+ +

Declaración de función

+ +

Una definición de función (también denominada declaración de función o expresión de función) consta de la palabra clave {{JSxRef("Sentencias/function", "function")}}, seguida de:

+ + + +

Por ejemplo, el siguiente código define una función simple llamada square ("cuadrado"):

+ +
function square(number) {
+  return number * number;
+}
+
+ +

La función square toma un parámetro, llamado number. La función consta de una declaración que dice devuelva el parámetro de la función (es decir, number) multiplicado por sí mismo. La instrucción {{JSxRef("Sentencias/return", "return")}} especifica el valor devuelto por la función:

+ +
return number * number;
+
+ +

Los parámetros primitivos (como un number) se pasan a las funciones por valor; el valor se pasa a la función, pero si la función cambia el valor del parámetro, este cambio no se refleja globalmente ni en la función que llama.

+ +

Si pasas un objeto (es decir, un valor no primitivo, como {{JSxRef("Array")}} o un objeto definido por el usuario) como parámetro y la función cambia las propiedades del objeto, ese cambio es visible fuera de la función, como se muestra en el siguiente ejemplo:

+ +
function myFunc(theObject) {
+  theObject.make = 'Toyota';
+}
+
+[parcial]var mycar = { make: 'Honda', model: 'Accord', year: 1998 };
+var x, y;
+
+x = mycar.make; // x obtiene el valor "Honda"
+
+myFunc(mycar);
+y = mycar.make; // y obtiene el valor "Toyota"
+                // (la propiedad make fue cambiada por la función)
+
+ +

Expresiones function

+ +

Si bien la declaración de función anterior sintácticamente es una declaración, las funciones también se pueden crear mediante una {{JSxRef("Operadores/function", "expresión function")}}.

+ +

Esta función puede ser anónima; no tiene por qué tener un nombre. Por ejemplo, la función square se podría haber definido como:

+ +
const square = function(number) { return number * number }
+var x = square(4) // x obtiene el valor 16
+ +

Sin embargo, puedes proporcionar un nombre con una expresión function. Proporcionar un nombre permite que la función se refiera a sí misma y también facilita la identificación de la función en el seguimiento de la pila de un depurador:

+ +
const factorial = function fac(n) { return n < 2 ? 1 : n * fac(n - 1) }
+
+console.log(factorial(3))
+
+ +

Las expresiones function son convenientes cuando se pasa una función como argumento a otra función. El siguiente ejemplo muestra una función map que debería recibir una función como primer argumento y un arreglo como segundo argumento.

+ +
function map(f, a) {
+  let result = []; // Crea un nuevo arreglo
+  let i; // Declara una variable
+  for (i = 0; i != a.length; i++)
+    result[i] = f(a[i]);
+  return result;
+}
+
+ +

En el siguiente código, la función recibe una función definida por una expresión de función y la ejecuta por cada elemento del arreglo recibido como segundo argumento.

+ +
function map(f, a) {
+  let result = []; // Crea un nuevo arreglo
+  let i; // Declara una variable
+  for (i = 0; i != a.length; i++)
+    result[i] = f(a[i]);
+  return result;
+}
+const f = function(x) {
+   return x * x * x;
+}
+let numbers = [0, 1, 2, 5, 10];
+let cube = map(f,numbers);
+console.log(cube);
+ +

La función devuelve: [0, 1, 8, 125, 1000].

+ +

En JavaScript, una función se puede definir en función de una condición. Por ejemplo, la siguiente definición de función define myFunc solo si num es igual a 0:

+ +
var myFunc;
+if (num === 0) {
+  myFunc = function(theObject) {
+    theObject.make = 'Toyota';
+  }
+}
+ +

Además de definir funciones como se describe aquí, también puedes usar el constructor {{JSxRef("Function")}} para crear funciones a partir de una cadena en tiempo de ejecución, muy al estilo de {{JSxRef("eval", "eval()")}}.

+ +

Un método es una función que es propiedad de un objeto. Obten más información sobre objetos y métodos en {{JSxRef("../Guide/Working_with_Objects", "Trabajar con objetos")}}.

+ +

Llamar funciones

+ +

Definir una función no la ejecuta. Definirla simplemente nombra la función y especifica qué hacer cuando se llama a la función.

+ +

Llamar a la función en realidad lleva a cabo las acciones especificadas con los parámetros indicados. Por ejemplo, si defines la función square, podrías llamarla de la siguiente manera:

+ +
square(5);
+
+ +

La declaración anterior llama a la función con un argumento de 5. La función ejecuta sus declaraciones y devuelve el valor 25.

+ +

Las funciones deben estar dentro del ámbito cuando se llaman, pero la declaración de la función se puede elevar (cuando aparece debajo de la llamada en el código), como en este ejemplo:

+ +
console.log(square(5));
+/* ... */
+function square(n) { return n * n }
+
+ +

El ámbito de una función es la función en la que se declara (o el programa completo, si se declara en el nivel superior).

+ +
+

Nota: Esto solo trabaja cuando se define la función usando la sintaxis anterior (es decir, function funcName() {}). El siguiente código no trabajará.

+ +

Esto significa que la elevación de función solo trabaja con declaraciones de función, no con expresiones de función.

+ +
console.log(square)    // square se eleva con un valor inicial undefined.
+console.log(square(5)) // Error de tipo no detectado: square no es una función
+const square = function(n) {
+  return n * n;
+}
+
+
+ +

Los argumentos de una función no se limitan a cadenas y números. Puedes pasar objetos completos a una función. La función show_props() (definida en {{JSxRef("../Guide/Working_with_Objects", "Trabajar con objetos", "#Objetos_y_propiedades")}} es un ejemplo de una función que toma un objeto como argumento.

+ +

Una función se puede llamar a sí misma. Por ejemplo, aquí hay una función que calcula factoriales de forma recursiva:

+ +
function factorial(n) {
+  if ((n === 0) || (n === 1))
+    return 1;
+  else
+    return (n * factorial(n - 1));
+}
+
+ +

Luego, podrías calcular los factoriales de 1 a 5 de la siguiente manera:

+ +
var a, b, c, d, e;
+a = factorial(1); // a obtiene el valor 1
+b = factorial(2); // b obtiene el valor 2
+c = factorial(3); // c obtiene el valor 6
+d = factorial(4); // d obtiene el valor 24
+e = factorial(5); // e obtiene el valor 120
+
+ +

Hay otras formas de llamar funciones. A menudo hay casos en los que una función se tiene que llamar dinámicamente, o el número de argumentos de una función varía, o en los que el contexto de la llamada a la función se tiene que establecer en un determinado objeto específico en tiempo de ejecución.

+ +

Resulta que las funciones en sí mismas son objetos y, a su vez, estos objetos tienen métodos. (Consulta el objeto {{JSxRef("Function")}}. Uno de estos, el método {{JSxRef("Function.apply", "apply()")}}, se puede utilizar para lograr este objetivo.

+ +

Ámbito de function

+ +

No se puede acceder a las variables definidas dentro de una función desde cualquier lugar fuera de la función, porque la variable se define solo en el ámbito de la función. Sin embargo, una función puede acceder a todas las variables y funciones definidas dentro del ámbito en el que está definida.

+ +

En otras palabras, una función definida en el ámbito global puede acceder a todas las variables definidas en el ámbito global. Una función definida dentro de otra función también puede acceder a todas las variables definidas en su función principal y a cualquier otra variable a la que tenga acceso la función principal.

+ +
// Las siguientes variables se definen en el ámbito global
+var num1 = 20,
+    num2 = 3,
+    name = 'Chamahk';
+
+// Esta función está definida en el ámbito global
+function multiply() {
+  return num1 * num2;
+}
+
+multiply(); // Devuelve 60
+
+// Un ejemplo de función anidada
+function getScore() {
+  var num1 = 2,
+      num2 = 3;
+
+  function add() {
+    return name + ' anotó ' + (num1 + num2);
+  }
+
+  return add();
+}
+
+getScore(); // Devuelve "Chamahk anotó 5"
+
+ +

Ámbito y la pila de funciones

+ +

Recursión

+ +

Una función se puede referir y llamarse a sí misma. Hay tres formas de que una función se refiera a sí misma:

+ +
    +
  1. El nombre de la función
  2. +
  3. {{JSxRef("Funciones/arguments/callee", "arguments.callee")}}
  4. +
  5. Una variable dentro del ámbito que se refiere a la función
  6. +
+ +

Por ejemplo, considera la siguiente definición de función:

+ +
var foo = function bar() {
+   // las instrucciones van aquí
+}
+
+ +

Dentro del cuerpo de la función, todos los siguientes son equivalentes:

+ +
    +
  1. bar()
  2. +
  3. arguments.callee()
  4. +
  5. foo()
  6. +
+ +

Una función que se llama a sí misma se conoce como una función recursiva. En cierto modo, la recursividad es análoga a un bucle. Ambas ejecutan el mismo código varias veces y ambas requieren una condición (para evitar un bucle infinito, o más bien, una recursividad infinita en este caso).

+ +

Por ejemplo, el siguiente bucle...

+ +
var x = 0;
+while (x < 10) { // "x < 10" es la condición del bucle
+   // hacer cosas
+   x++;
+}
+
+ +

...se puede convertir en una declaración de función recursiva, seguida de una llamada a esa función:

+ +
function loop(x) {
+  if (x >= 10) // "x >= 10" es la condición de salida (equivalente a "!(x < 10)")
+    return;
+  // hacer cosas
+  loop(x + 1); // la llamada recursiva
+}
+loop(0);
+
+ +

Sin embargo, algunos algoritmos no pueden ser simples bucles iterativos. Por ejemplo, obtener todos los nodos de una estructura de árbol (como {{web.link("/es/docs/DOM", "DOM")}}) es más fácil a través de la recursividad:

+ +
function walkTree(node) {
+  if (node == null) //
+    return;
+  // hacer algo con el nodo
+  for (var i = 0; i < node.childNodes.length; i++) {
+    walkTree(node.childNodes[i]);
+  }
+}
+
+ +

En comparación con la función loop, cada llamada recursiva en sí misma hace muchas llamadas recursivas aquí.

+ +

Es posible convertir cualquier algoritmo recursivo en uno no recursivo, pero la lógica suele ser mucho más compleja, y hacerlo requiere el uso de una pila.

+ +

De hecho, la recursividad en sí misma usa una pila: la pila de funciones. El comportamiento similar a una pila se puede ver en el siguiente ejemplo:

+ +
function foo(i) {
+  if (i < 0)
+    return;
+  console.log('inicio: ' + i);
+  foo(i - 1);
+  console.log('fin: ' + i);
+}
+foo(3);
+
+// Produce:
+
+// inicio: 3
+// inicio: 2
+// inicio: 1
+// inicio: 0
+// fin: 0
+// fin: 1
+// fin: 2
+// fin: 3
+ +

Funciones anidadas y cierres

+ +

Puedes anidar una función dentro de otra función. La función anidada (interna) es privada de su función contenedora (externa).

+ +

También forma un cierre. Un cierre es una expresión (comúnmente, una función) que puede tener variables libres junto con un entorno que une esas variables (que "cierra" la expresión).

+ +

Dado que una función anidada es un cierre, significa que una función anidada puede "heredar" los argumentos y variables de su función contenedora. En otras palabras, la función interna contiene el ámbito de la función externa.

+ +

Para resumir:

+ + + + + +

El siguiente ejemplo muestra funciones anidadas:

+ +
function addSquares(a, b) {
+  function square(x) {
+    return x * x;
+  }
+  return square(a) + square(b);
+}
+a = addSquares(2, 3); // devuelve 13
+b = addSquares(3, 4); // devuelve 25
+c = addSquares(4, 5); // devuelve 41
+
+ +

Dado que la función interna forma un cierre, puedes llamar a la función externa y especificar argumentos tanto para la función externa como para la interna:

+ +
function outside(x) {
+  function inside(y) {
+    return x + y;
+  }
+  return inside;
+}
+fn_inside = outside(3); // Piensa en ello como: dame una función que agregue 3 a lo que sea que le des
+                        // eso
+result = fn_inside(5); // devuelve 8
+
+result1 = outside(3)(5); // devuelve 8
+
+ +

Preservación de variables

+ +

Observa cómo se conserva x cuando se devuelve inside. Un cierre debe conservar los argumentos y variables en todos los ámbitos a los que hace referencia. Dado que cada llamada proporciona argumentos potencialmente diferentes, se crea un nuevo cierre para cada llamada a outside. La memoria se puede liberar solo cuando el inside devuelto ya no es accesible.

+ +

Esto no es diferente de almacenar referencias en otros objetos, pero a menudo es menos obvio porque uno no establece las referencias directamente y no las puede inspeccionar.

+ +

Funciones multianidadas

+ +

Las funciones se pueden anidar de forma múltiple. Por ejemplo:

+ + + +

Por tanto, los cierres pueden contener múltiples ámbitos; contienen de forma recursiva el ámbito de las funciones que la contienen. Esto se llama encadenamiento de alcance. (La razón por la que se llama "encadenamiento" se explica más adelante).

+ +

Considera el siguiente ejemplo:

+ +
function A(x) {
+  function B(y) {
+    function C(z) {
+      console.log(x + y + z);
+    }
+    C(3);
+  }
+  B(2);
+}
+A(1); // registra 6 (1 + 2 + 3)
+
+ +

En este ejemplo, C accede a y de B y a x de A.

+ +

Esto se puede hacer porque:

+ +
    +
  1. B forma un cierre que incluye a A (es decir, B puede acceder a los argumentos y variables de A).
  2. +
  3. C forma un cierre que incluye a B.
  4. +
  5. Debido a que el cierre de B incluye a A, el cierre de C incluye a A, C puede acceder a los argumentos y variables de B y de A. En otras palabras, C encadena los ámbitos de B y A, en ese orden.
  6. +
+ +

Sin embargo, lo contrario no es cierto. A no puede acceder a C, porque A no puede acceder a ningún argumento o variable de B, del que C es una variable. Por lo tanto, C permanece privado solo para B.

+ +

Conflictos de nombres

+ +

Cuando dos argumentos o variables en el ámbito de un cierre tienen el mismo nombre, hay un conflicto de nombres. Tiene más prioridad el ámbito anidado. Entonces, el ámbito más interno tiene la mayor prioridad, mientras que el ámbito más externo tiene la más baja. Esta es la cadena de ámbito. El primero de la cadena es el ámbito más interno y el último es el ámbito más externo. Considera lo siguiente:

+ +
function outside() {
+  var x = 5;
+  function inside(x) {
+    return x * 2;
+  }
+  return inside;
+}
+
+outside()(10); // devuelve 20 en lugar de 10
+
+ +

El conflicto de nombre ocurre en la declaración return x y está entre el parámetro x de inside y la variable x de outside. La cadena de ámbito aquí es {inside, outside, objeto global}. Por lo tanto, x de inside tiene precedencia sobre x de outside y 20 (x) de inside se devuelve en lugar de 10 (x de outside).

+ +

Cierres

+ +

Los cierres son una de las características más poderosas de JavaScript. JavaScript permite el anidamiento de funciones y otorga a la función interna acceso completo a todas las variables y funciones definidas dentro de la función externa (y todas las demás variables y funciones a las que la función externa tiene acceso).

+ +

Sin embargo, la función externa no tiene acceso a las variables y funciones definidas dentro de la función interna. Esto proporciona una especie de encapsulación para las variables de la función interna.

+ +

Además, dado que la función interna tiene acceso a el ámbito de la función externa, las variables y funciones definidas en la función externa vivirán más que la duración de la ejecución de la función externa, si la función interna logra sobrevivir más allá de la vida de la función externa. Se crea un cierre cuando la función interna de alguna manera se pone a disposición de cualquier ámbito fuera de la función externa.

+ +
var pet = function(name) {   // La función externa define una variable llamada "name"
+  var getName = function() {
+    return name;             // La función interna tiene acceso a la variable
+                             // "name" de la función externa
+  }
+  return getName;            // Devuelve la función interna, exponiéndola así a ámbitos externos
+}
+myPet = pet('Vivie');
+
+myPet();                     // Devuelve "Vivie"
+
+ +

Puede ser mucho más complejo que el código anterior. Se puede devolver un objeto que contiene métodos para manipular las variables internas de la función externa.

+ +
var createPet = function(name) {
+  var sex;
+
+  return {
+    setName: function(newName) {
+      name = newName;
+    },
+
+    getName: function() {
+      return name;
+    },
+
+    getSex: function() {
+      return sex;
+    },
+
+    setSex: function(newSex) {
+      if(typeof newSex === 'string' && (newSex.toLowerCase() === 'male' ||
+        newSex.toLowerCase() === 'female')) {
+        sex = newSex;
+      }
+    }
+  }
+}
+
+var pet = createPet('Vivie');
+pet.getName();                  // Vivie
+
+pet.setName('Oliver');
+pet.setSex('male');
+pet.getSex();                   // male
+pet.getName();                  // Oliver
+
+ +

En el código anterior, la variable name de la función externa es accesible para las funciones internas, y no hay otra forma de acceder a las variables internas excepto a través de las funciones internas. Las variables internas de las funciones internas actúan como almacenes seguros para los argumentos y variables externos. Contienen datos "persistentes" y "encapsulados" para que trabajen las funciones internas. Las funciones ni siquiera tienen que estar asignadas a una variable o tener un nombre.

+ +
var getCode = (function() {
+  var apiCode = '0]Eal(eh&2';    // Un código que no queremos que los externos puedan modificar...
+
+  return function() {
+    return apiCode;
+  };
+})();
+
+getCode();    // Devuelve el apiCode
+
+ +
+

Precaución ¡Hay una serie de trampas a tener en cuenta al usar cierres!

+ +

Si una función encerrada define una variable con el mismo nombre que una variable en el ámbito externo, entonces no hay forma de hacer referencia a la variable en el ámbito externo nuevamente. (La variable de ámbito interno "anula" la externa, hasta que el programa sale de el ámbito interno).

+ +
var createPet = function(name) {  // La función externa define una variable llamada "name".
+  return {
+    setName: function(name) {    // La función envolvente también define una variable llamada "name".
+      name = name;               // ¿Cómo accedemos al "name" definido por la función externa?
+    }
+  }
+}
+
+
+ +

Usar el objeto arguments

+ +

El arguments de una función se mantiene en un objeto similar a un arreglo. Dentro de una función, puedes abordar los argumentos que se le pasan de la siguiente manera:

+ +
arguments[i]
+
+ +

donde i es el número ordinal del argumento, comenzando en 0. Entonces, el primer argumento que se pasa a una función sería arguments[0]. El número total de argumentos se indica mediante arguments.length.

+ +

Usando el objeto arguments, puedes llamar a una función con más argumentos de los que formalmente declara aceptar. Esto suele ser útil si no sabes de antemano cuántos argumentos se pasarán a la función. Puedes usar arguments.length para determinar el número de argumentos que realmente se pasan a la función, y luego acceder a cada argumento usando el objeto arguments.

+ +

Por ejemplo, considera una función que concatena varias cadenas. El único argumento formal para la función es una cadena que especifica los caracteres que separan los elementos a concatenar. La función se define de la siguiente manera:

+ +
function myConcat(separator) {
+   var result = ''; // inicia list
+   var i;
+   // itera a través de arguments
+   for (i = 1; i < arguments.length; i++) {
+      result += arguments[i] + separator;
+   }
+   return result;
+}
+
+ +

Puedes pasar cualquier número de argumentos a esta función, y concatena cada argumento en una "lista" de cadenas:

+ +
// devuelve "red, orange, blue, "
+myConcat(', ', 'red', 'orange', 'blue');
+
+// devuelve "elephant; giraffe; lion; cheetah"
+myConcat('; ', 'elephant', 'giraffe', 'lion', 'cheetah');
+
+// devuelve "sage. basil. oregano. pepper. perejil. "
+myConcat('. ', 'salvia', 'albahaca', 'orégano', 'pimienta', 'perejil');
+
+ +
+

Nota: La variable arguments es "similar a un arreglo", pero no es un arreglo. Es similar a un arreglo en el sentido de que tiene un índice numerado y una propiedad length. Sin embargo, no posee todos los métodos de manipulación de arreglos.

+
+ +

Consulta el objeto {{JSxRef("Function")}} en la referencia de JavaScript para obtener más información.

+ +

Parámetros de función

+ +

A partir de ECMAScript 2015, hay dos nuevos tipos de parámetros: parámetros predeterminados y parámetros resto.

+ +

Parámetros predeterminados

+ +

En JavaScript, los parámetros de las funciones están predeterminados en undefined. Sin embargo, en algunas situaciones puede resultar útil establecer un valor predeterminado diferente. Esto es exactamente lo que hacen los parámetros predeterminados.

+ +

Sin parámetros predeterminados (preECMAScript 2015)

+ +

En el pasado, la estrategia general para establecer valores predeterminados era probar los valores de los parámetros en el cuerpo de la función y asignar un valor si eran undefined.

+ +

En el siguiente ejemplo, si no se proporciona ningún valor para b, su valor sería undefined al evaluar a * b, y una llamada a multiply normalmente habría devuelto NaN. Sin embargo, esto se evita con la segunda línea de este ejemplo:

+ +
function multiply(a, b) {
+  b = typeof b !== 'undefined' ?  b : 1;
+
+  return a * b;
+}
+
+multiply(5); // 5
+
+ +

Con parámetros predeterminados (posECMAScript 2015)

+ +

Con parámetros predeterminados, ya no es necesaria una verificación manual en el cuerpo de la función. Simplemente puedes poner 1 como valor predeterminado para b en el encabezado de la función:

+ +
function multiply(a, b = 1) {
+  return a * b;
+}
+
+multiply(5); // 5
+ +

Para obtener más detalles, consulta {{JSxRef("Funciones/Parametros_predeterminados", "parámetros predeterminados")}} en la referencia.

+ +

Parámetros rest

+ +

La sintaxis del {{JSxRef("Funciones/Parametros_rest", "parámetro rest")}} nos permite representar un número indefinido de argumentos como un arreglo.

+ +

En el siguiente ejemplo, la función multiply usa parámetros rest para recopilar argumentos desde el segundo hasta el final. Luego, la función los multiplica por el primer argumento.

+ +
function multiply(multiplier, ...theArgs) {
+  return theArgs.map(x => multiplier * x);
+}
+
+var arr = multiply(2, 1, 2, 3);
+console.log(arr); // [2, 4, 6]
+ +

Funciones Flecha

+ +

Una {{JSxRef("Funciones/Funciones_flecha", "expresión de función flecha")}} (anteriormente, y ahora conocida incorrectamente como función de flecha gruesa) tiene una sintaxis más corta en comparación con las expresiones de función y no tiene su propio {{JSxRef("Operadores/this", "this")}}, {{JSxRef("Funciones/arguments", "arguments")}}, {{JSxRef("Operadores/super", "super")}} o {{JSxRef("../Operadores/new.target", "new.target")}}. Las funciones flecha siempre son anónimas. Consulta también esta publicación del blog hacks.mozilla.org: "ES6 en profundidad: funciones flecha".

+ +

Dos factores influyeron en la introducción de las funciones flecha: funciones más cortas y no vinculantes de this.

+ +

Funciones más cortas

+ +

En algunos patrones funcionales, las funciones más cortas son bienvenidas. Compara:

+ +
var a = [
+  'Hidrógeno',
+  'Helio',
+  'Litio',
+  'Berilio'
+];
+
+var a2 = a.map(function(s) { return s.length; });
+
+console.log(a2); // logs [8, 6, 7, 9]
+
+var a3 = a.map(s => s.length);
+
+console.log(a3); // logs [8, 6, 7, 9]
+
+ +

Sin this separado

+ +

Hasta las funciones flecha, cada nueva función definía su propio valor {{JSxRef("Operadores/this", "this")}} (un nuevo objeto en el caso de un constructor, indefinido en llamadas a funciones en {{JSxRef("Strict_mode", "modo estricto")}}, el objeto base si la función se llama como un "método de objeto", etc.). Esto resultó ser poco menos que ideal con un estilo de programación orientado a objetos.

+ +
function Person() {
+  // El constructor Person() define `this` como él mismo.
+  this.age = 0;
+
+  setInterval(function growUp() {
+    // En modo no estricto, la función growUp() define `this`
+    // como el objeto global, que es diferente del `this`
+    // definido por el constructor Person().
+    this.age++;
+  }, 1000);
+}
+
+var p = new Person();
+ +

En ECMAScript 3/5, este problema se solucionó asignando el valor en this a una variable que se podría cerrar.

+ +
function Person() {
+  var self = this; // Algunos eligen `that` en lugar de` self`.
+                   // Elige uno y se congruente.
+  self.age = 0;
+
+  setInterval(function growUp() {
+    // La retrollamada se refiere a la variable `self` de la cual
+    // el valor es el objeto esperado.
+    self.age++;
+  }, 1000);
+}
+ +

Alternativamente, podrías crear una {{JSxRef("Objetos_globales/Function/bind", "función vinculada")}} para que el valor this adecuado se pasara a la función growUp().

+ +

Una función flecha no tiene su propio this se utiliza el valor de this del contexto de ejecución adjunto. Por lo tanto, en el siguiente código, this dentro de la función que se pasa a setInterval tiene el mismo valor que this en la función adjunta:

+ +
function Person() {
+  this.age = 0;
+
+  setInterval(() => {
+    this.age++; // |this| propiamente se refiere al objeto person
+  }, 1000);
+}
+
+var p = new Person();
+ +

Funciones predefinidas

+ +

JavaScript tiene integradas varias funciones de nivel superior:

+ +
+
{{JSxRef("Objetos_globales/eval", "eval()")}}
+
+

El método eval() evalúa el código JavaScript representado como una cadena.

+
+
{{JSxRef("Objetos_globales/uneval", "uneval()")}}
+
+

El método uneval() crea una representación de cadena del código fuente de un {{JSxRef("Object")}}.

+
+
{{JSxRef("Objetos_globales/isFinite", "isFinite()")}}
+
+

La función global isFinite() determina si el valor pasado es un número finito. Si es necesario, el parámetro, primero se convierte en un número.

+
+
{{JSxRef("Objetos_globales/isNaN", "isNaN()")}}
+
+

La función isNaN() determina si un valor es {{JSxRef("Objetos_globales/NaN", "NaN")}} o no. Nota: La coerción dentro de la función isNaN tiene {{JSxRef("Objetos_globales/isNaN", "interesantes", "#Descripcion")}} reglas; también puedes querer usar {{JSxRef("Number.isNaN()")}}, como se define en ECMAScript 2015, o puedes usar {{JSxRef("Operadores/typeof", "typeof")}} para determinar si el valor no es un número (NaN).

+
+
{{JSxRef("Objetos_globales/parseFloat", "parseFloat()")}}
+
+

La función parseFloat() procesa un argumento de cadena y devuelve un número de punto flotante.

+
+
{{JSxRef("Objetos_globales/parseInt", "parseInt()")}}
+
+

La función parseInt() procesa un argumento de cadena y devuelve un número entero de la base especificada (la base en los sistemas numéricos matemáticos).

+
+
{{JSxRef("Objetos_globales/decodeURI", "decodeURI()")}}
+
+

La función decodeURI() decodifica un identificador uniforme de recursos (URI) creado previamente por {{JSxRef("Objetos_globales/encodeURI", "encodeURI")}} o por una rutina similar.

+
+
{{JSxRef("Objetos_globales/decodeURIComponent", "decodeURIComponent()")}}
+
+

El método decodeURIComponent() decodifica un componente Identificador uniforme de recursos (URI) creado previamente por {{JSxRef("Objetos_globales/encodeURIComponent", "encodeURIComponent")}} o por un rutina similar.

+
+
{{JSxRef("Objetos_globales/encodeURI", "encodeURI()")}}
+
+

El método encodeURI() codifica un identificador uniforme de recursos (URI) reemplazando cada instancia de ciertos caracteres por una, dos, tres o cuatro secuencias de escape que representan la codificación UTF-8 del caracter (solo habrá cuatro secuencias de escape para caracteres compuestos por dos caracteres "sustitutos").

+
+
{{JSxRef("Objetos_globales/encodeURIComponent", "encodeURIComponent()")}}
+
+

El método encodeURIComponent() codifica un componente Identificador uniforme de recursos (URI) reemplazando cada instancia de ciertos caracteres por una, dos, tres o cuatro secuencias de escape que representan la codificación UTF-8 del caracter (solo habrá cuatro secuencias de escape para caracteres compuestos por dos caracteres "sustitutos").

+
+
{{JSxRef("Objetos_globales/escape", "escape()")}}
+
+

El método obsoleto escape() calcula una nueva cadena en la que ciertos caracteres han sido reemplazados por una secuencia de escape hexadecimal. En su lugar usa {{JSxRef("Objetos_globales/encodeURI", "encodeURI")}} o {{JSxRef("Objetos_globales/encodeURIComponent", "encodeURIComponent")}}.

+
+
{{JSxRef("Objetos_globales/unescape", "unescape()")}}
+
+

El método obsoleto unescape() calcula una nueva cadena en la que las secuencias de escape hexadecimales se reemplazan con el caracter que representan. Las secuencias de escape se pueden introducir por medio de una función como {{JSxRef("Objetos_globales/escape", "escape")}}. Debido a que unescape() está en desuso, usa {{JSxRef("Objetos_globales/decodeURI", "decodeURI()")}} o {{JSxRef("Objetos_globales/decodeURIComponent", "decodeURIComponent")}} en su lugar.

+
+
+ +

{{PreviousNext("Web/JavaScript/Guide/Loops_and_iteration", "Web/JavaScript/Guide/Expressions_and_Operators")}}

diff --git a/files/es/web/javascript/guide/indexed_collections/index.html b/files/es/web/javascript/guide/indexed_collections/index.html new file mode 100644 index 0000000000..baf55a84d5 --- /dev/null +++ b/files/es/web/javascript/guide/indexed_collections/index.html @@ -0,0 +1,603 @@ +--- +title: Colecciones indexadas +slug: Web/JavaScript/Guide/colecciones_indexadas +tags: + - Array + - Arreglo + - Guía + - JavaScript + - 'l10n:priority' +translation_of: Web/JavaScript/Guide/Indexed_collections +--- +
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Regular_Expressions", "Web/JavaScript/Guide/Keyed_Collections")}}
+ +

Este capítulo presenta colecciones de datos ordenados por un valor de índice. Esto incluye arreglos y construcciones similares a arreglos tal como objetos {{jsxref("Array")}} y objetos {{jsxref("TypedArray")}}.

+ +

El objeto Array

+ +

Un array es una lista ordenada de valores a los que te refieres con un nombre y un índice.

+ +

Por ejemplo, considera un arreglo llamado emp, que contiene los nombres de los empleados indexados por su id de empleado numérico. De tal modo que emp[0] sería el empleado número cero, emp[1] el empleado número uno, y así sucesivamente.

+ +

JavaScript no tiene un tipo de dato array explícito. Sin embargo, puedes utilizar el objeto Array predefinido y sus métodos para trabajar con arreglos en tus aplicaciones. El objeto Array tiene métodos para manipular arreglos de varias formas, tal como unirlos, invertirlos y ordenarlos. Tiene una propiedad para determinar la longitud del arreglo y otras propiedades para usar con expresiones regulares.

+ +

Crear un arreglo

+ +

Las siguientes declaraciones crean arreglos equivalentes:

+ +
let arr = new Array(element0, element1, ..., elementN)
+let arr = Array(element0, element1, ..., elementN)
+let arr = [element0, element1, ..., elementN]
+
+ +

element0, element1, ..., elementN es una lista de valores para los elementos del arreglo. Cuando se especifican estos valores, el arreglo se inicia con ellos como elementos del arreglo. La propiedad length del arreglo se establece en el número de argumentos.

+ +

La sintaxis de corchetes se denomina "arreglo literal" o "iniciador de arreglo". Es más corto que otras formas de creación de arreglos, por lo que generalmente se prefiere. Consulta Arreglos literales para obtener más detalles.

+ +

Para crear un arreglo con una longitud distinta de cero, pero sin ningún elemento, se puede utilizar cualquiera de las siguientes:

+ +
// Esta...
+let arr = new Array(arrayLength)
+
+// ...da como resultado el mismo arreglo que este
+let arr = Array(arrayLength)
+
+
+// Esto tiene exactamente el mismo efecto
+let arr = []
+arr.length = arrayLength
+
+ +
+

Nota: En el código anterior, arrayLength debe ser un Número. De lo contrario, se creará un arreglo con un solo elemento (el valor proporcionado). Llamar a arr.length devolverá arrayLength, pero el arreglo no contiene ningún elemento. Un bucle {{jsxref("Statements/for...in", "for...in")}} no encontrarás ninguna propiedad en el arreglo.

+
+ +

Además de una variable recién definida como se muestra arriba, los arreglos también se pueden asignar como una propiedad a un objeto nuevo o existente:

+ +
let obj = {}
+// ...
+obj.prop = [element0, element1, ..., elementN]
+
+// O
+let obj = {prop: [element0, element1, ...., elementN]}
+
+ +

Si deseas iniciar un arreglo con un solo elemento, y el elemento resulta ser un Número, debes usar la sintaxis de corchetes. Cuando se pasa un solo valor Number al constructor o función Array(), se interpreta como un arrayLength, no como un solo elemento.

+ +
let arr = [42]       // Crea un arreglo con un solo elemento:
+                     // el número 42.
+
+let arr = Array(42)  // Crea un arreglo sin elementos
+                     // y arr.length establecidos en 42.
+                     //
+                     // Esto es equivalente a:
+let arr = []
+arr.length = 42
+
+ +

Llamar a Array(N) da como resultado un RangeError, si N no es un número entero cuya porción fraccionaria no es cero. El siguiente ejemplo ilustra este comportamiento.

+ +
let arr = Array(9.3)   // RangeError: Longitud de arreglo no válida
+
+ +

Si tu código necesita crear arreglos con elementos únicos de un tipo de dato arbitrario, es más seguro utilizar arreglos literales. Alternativamente, crea un arreglo vacío primero antes de agregarle el único elemento.

+ +

En ES2015, puedes utilizar el método estático {{jsxref("Array.of")}} para crear arreglos con un solo elemento.

+ +
let wisenArray = Array.of(9.3)   // wisenArray contiene solo un elemento 9.3
+ +

Refiriéndose a elementos del arreglo

+ +

Dado que los elementos también son propiedades, puedes acceder a ellos usando la propiedad accessors. Supongamos que defines el siguiente arreglo:

+ +
let myArray = ['Wind', 'Rain', 'Fire']
+
+ +

Puedes referirte al primer elemento del arreglo como myArray[0], al segundo elemento del arreglo como myArray[1], etc El índice de los elementos comienza en cero.

+ +
+

Nota: También puedes utilizar la propiedad accessors para acceder a otras propiedades del arreglo, como con un objeto.

+ +
let arr = ['one', 'two', 'three']
+arr[2]          // three
+arr['length']   // 3
+
+
+ +

Llenar un arreglo

+ +

Puedes llenar un arreglo asignando valores a sus elementos. Por ejemplo:

+ +
let emp = []
+emp[0] = 'Casey Jones'
+emp[1] = 'Phil Lesh'
+emp[2] = 'August West'
+
+ +
+

Nota: Si proporcionas un valor no entero al operador array en el código anterior, se creará una propiedad en el objeto que representa al arreglo, en lugar de un elemento del arreglo.

+ +
let arr = []
+arr[3.4] = 'Oranges'
+console.log(arr.length)                 // 0
+console.log(arr.hasOwnProperty(3.4))    // true
+
+
+ +

También puedes rellenar un arreglo cuando lo creas:

+ +
let myArray = new Array('Hello', myVar, 3.14159)
+// OR
+let myArray = ['Mango', 'Apple', 'Orange']
+
+ +

Entendiendo length

+ +

A nivel de implementación, los arreglos de JavaScript almacenan sus elementos como propiedades de objeto estándar, utilizando el índice del arreglo como nombre de propiedad.

+ +

La propiedad length es especial. Siempre devuelve el índice del último elemento más uno. (En el siguiente ejemplo, 'Dusty' está indexado en 30, por lo que cats.length devuelve 30 + 1).

+ +

Recuerda, los índices del Array JavaScript están basados en 0: comienzan en 0, no en 1. Esto significa que la propiedad length será uno más que el índice más alto almacenado en el arreglo:

+ +
let cats = []
+cats[30] = ['Dusty']
+console.log(cats.length) // 31
+
+ +

También puedes asignar la propiedad length.

+ +

Escribir un valor que sea más corto que el número de elementos almacenados trunca el arreglo. Escribir 0 lo vacía por completo:

+ +
let cats = ['Dusty', 'Misty', 'Twiggy']
+console.log(cats.length)  // 3
+
+cats.length = 2
+console.log(cats)  // logs "Dusty, Misty" - Twiggy se ha eliminado
+
+cats.length = 0
+console.log(cats)  // logs []; el arreglo cats está vacío
+
+cats.length = 3
+console.log(cats)  // logs [ <3 elementos vacíos> ]
+
+ +

Iterando sobre arreglos

+ +

Una operación común es iterar sobre los valores de un arreglo, procesando cada uno de alguna manera. La forma más sencilla de hacerlo es la siguiente:

+ +
let colors = ['red', 'green', 'blue']
+for (let i = 0; i < colors.length; i++) {
+  console.log(colors[i])
+}
+
+ +

Si sabes que ninguno de los elementos de tu arreglo se evalúa como false en un contexto booleano, si tu arreglo consta solo de nodos DOM, por ejemplo, puedes usar un lenguaje eficiente:

+ +
let divs = document.getElementsByTagName('div')
+for (let i = 0, div; div = divs[i]; i++) {
+  /* Procesar div de alguna manera */
+}
+
+ +

Esto evita la sobrecarga de verificar la longitud del arreglo y garantiza que la variable div se reasigne al elemento actual cada vez que se realiza el bucle para mayor comodidad.

+ +

El método {{jsxref("Array.forEach", "forEach()")}} proporciona otra forma de iterar sobre un arreglo:

+ +
let colors = ['red', 'green', 'blue']
+colors.forEach(function(color) {
+  console.log(color)
+})
+// red
+// green
+// blue
+
+ +

Alternativamente, puedes acortar el código para el parámetro forEach con las funciones de flecha ES2015:

+ +
let colors = ['red', 'green', 'blue']
+colors.forEach(color => console.log(color))
+// red
+// green
+// blue
+
+ +

La función pasada a forEach se ejecuta una vez por cada elemento del arreglo, con el elemento de arreglo pasado como argumento de la función. Los valores no asignados no se iteran en un bucle forEach.

+ +

Ten en cuenta que los elementos de un arreglo que se omiten cuando se define el arreglo no se enumeran cuando lo itera forEach, pero se enumeran cuando undefined se ha asignado manualmente al elemento:

+ +
let array = ['first', 'second', , 'fourth']
+
+array.forEach(function(element) {
+  console.log(element)
+})
+// first
+// second
+// fourth
+
+if (array[2] === undefined) {
+  console.log('array[2] is undefined')  // true
+}
+
+array = ['first', 'second', undefined, 'fourth']
+
+array.forEach(function(element) {
+  console.log(element)
+})
+// first
+// second
+// undefined
+// fourth
+
+ +

Dado que los elementos de JavaScript se guardan como propiedades de objeto estándar, no es recomendable iterar a través de arreglos de JavaScript usando bucles {{jsxref("Statements/for...in", "for...in")}}, porque se enumerarán los elementos normales y todas las propiedades enumerables.

+ +

Métodos de array

+ +

El objeto {{jsxref("Array")}} tiene los siguientes métodos:

+ +

{{jsxref("Array.concat", "concat()")}} une dos o más arreglos y devuelve un nuevo arreglo.

+ +
let myArray = new Array('1', '2', '3')
+myArray = myArray.concat('a', 'b', 'c')
+// myArray is now ["1", "2", "3", "a", "b", "c"]
+
+ +

{{jsxref("Array.join", "join(delimiter = ',')")}} une todos los elementos de un arreglo en una cadena.

+ +
let myArray = new Array('Viento', 'Lluvia', 'Fuego')
+let list = myArray.join('-')   // la lista es "Viento - Lluvia - Fuego"
+
+ +

{{jsxref("Array.push", "push()")}} agrega uno o más elementos al final de un arreglo y devuelve la longitud resultante del arreglo.

+ +
let myArray = new Array('1', '2')
+myArray.push('3') // myArray ahora es ["1", "2", "3"]
+
+ +

{{jsxref("Array.pop", "pop()")}} elimina el último elemento de un arreglo y devuelve ese elemento.

+ +
let myArray = new Array ('1', '2', '3')
+let last = myArray.pop()
+// myArray ahora es ["1", "2"], last = "3"
+
+ +

{{jsxref("Array.shift", "shift()")}} elimina el primer elemento de un arreglo y devuelve ese elemento.

+ +
let myArray = new Array ('1', '2', '3')
+let first = myArray.shift()
+// myArray ahora es ["2", "3"], first es "1"
+
+ +

{{jsxref("Array.unshift", "unshift()")}} agrega uno o más elementos al frente de un arreglo y devuelve la nueva longitud del arreglo.

+ +
let myArray = new Array('1', '2', '3')
+myArray.unshift('4', '5')
+// myArray se convierte en ["4", "5", "1", "2", "3"]
+
+ +

{{jsxref("Array.slice", "slice(start_index, upto_index)")}} extrae una sección de un arreglo y devuelve un nuevo arreglo.

+ +
let myArray = new Array('a', 'b', 'c', 'd', 'e')
+myArray = myArray.slice(1, 4) // comienza en el índice 1 y extrae todos los elementos
+                               // hasta el índice 3, devuelve ["b", "c", "d"]
+
+ +

{{jsxref("Array.splice", "splice(index, count_to_remove, addElement1, addElement2, ...)")}} elimina elementos de un arreglo y (opcionalmente) los reemplaza. Devuelve los elementos que se eliminaron del arreglo.

+ +
let myArray = new Array('1', '2', '3', '4', '5')
+myArray.splice(1, 3, 'a', 'b', 'c', 'd')
+// myArray ahora es ["1", "a", "b", "c", "d", "5"]
+// Este código comenzó en el índice uno (o donde estaba el "2"),
+// eliminó 3 elementos allí, y luego insertó todos los consecutivos
+// elementos en su lugar.
+
+ +

{{jsxref("Array.reverse", "reverse()")}} transpone los elementos de un arreglo, en su lugar: el primer elemento del arreglo se convierte en el último y el último en el primero. Devuelve una referencia al arreglo.

+ +
let myArray = new Array ('1', '2', '3')
+myArray.reverse()
+// transpone el arreglo para que myArray = ["3", "2", "1"]
+
+ +

{{jsxref("Array.sort", "sort()")}} ordena los elementos de un arreglo en su lugar y devuelve una referencia al arreglo.

+ +
let myArray = new Array('Viento', 'Lluvia', 'Fuego')
+myArray.sort()
+// ordena el arreglo para que myArray = ["Fuego", "Lluvia", "Viento"]
+
+ +

sort() también puede tomar una función retrollamada para determinar cómo se comparan los elementos del arreglo.

+ +

El método sort (y otros a continuación) que reciben una retrollamada se conocen como métodos iterativos, porque iteran sobre todo el arreglo de alguna manera. Cada uno toma un segundo argumento opcional llamado thisObject. Si se proporciona, thisObject se convierte en el valor de la palabra clave this dentro del cuerpo de la función retrollamada. Si no se proporciona, como en otros casos en los que se invoca una función fuera de un contexto de objeto explícito, this se referirá al objeto global (window) cuando se usa la función de flecha como retrollamada, o undefined cuando se usa una función normal como retrollamada.

+ +

La función retrollamada se invoca con dos argumentos, que son elementos del arreglo.

+ +

La siguiente función compara dos valores y devuelve uno de tres valores:

+ +

Por ejemplo, lo siguiente se ordenará por la última letra de una cadena:

+ +
let sortFn = function(a, b) {
+  if (a[a.length - 1] < b[b.length - 1]) return -1;
+  if (a[a.length - 1] > b[b.length - 1]) return 1;
+  if (a[a.length - 1] == b[b.length - 1]) return 0;
+}
+myArray.sort(sortFn)
+// ordena el arreglo para que myArray = ["Viento", "Fuego", "Lluvia"]
+ + + +

{{jsxref("Array.indexOf", "indexOf (searchElement[, fromIndex])")}} busca en el arreglo searchElement y devuelve el índice de la primera coincidencia.

+ +
let a = ['a', 'b', 'a', 'b', 'a']
+console.log(a.indexOf('b')) // registros 1
+
+// Ahora inténtalo de nuevo, comenzando después de la última coincidencia
+console.log(a.indexOf('b', 2)) // registra 3
+console.log(a.indexOf('z')) // logs -1, porque no se encontró 'z'
+
+ +

{{jsxref("Array.lastIndexOf", "lastIndexOf(searchElement [, fromIndex])")}} funciona como indexOf, pero comienza al final y busca hacia atrás.

+ +
let​a = ['a', 'b', 'c', 'd', 'a', 'b']
+console.log(a.lastIndexOf('b')) // registra 5
+
+// Ahora inténtalo de nuevo, comenzando desde antes de la última coincidencia
+console.log(a.lastIndexOf('b', 4)) // registra 1
+console.log(a.lastIndexOf('z'))    // registra -1
+
+ +

{{jsxref("Array.forEach", "forEach(callback[, thisObject])")}} ejecuta callback en cada elemento del arreglo y devuelve undefined.

+ +
let​a = ['a', 'b', 'c']
+a.forEach(function(elemento) { console.log(elemento) })
+// registra cada elemento por turno
+
+ +

{{jsxref("Array.map", "map(callback [, thisObject])")}} devuelve un nuevo arreglo del valor de retorno de ejecutar callback en cada elemento del arreglo.

+ +
let a1 = ['a', 'b', 'c']
+let a2 = a1.map(function(item) { return item.toUpperCase() })
+console.log(a2) // registra ['A', 'B', 'C']
+
+ +

{{jsxref("Array.filter", "filter(callback [, thisObject])")}} devuelve un nuevo arreglo que contiene los elementos para los cuales callback devolvió true.

+ +
let a1 = ['a', 10, 'b', 20, 'c', 30]
+let a2 = a1.filter(function(item) { return typeof item === 'number'; })
+console.log(a2)  // registra [10, 20, 30]
+
+ +

{{jsxref("Array.every", "every(callback [, thisObject])")}} devuelve true si callback devuelve true para cada elemento del arreglo.

+ +
function isNumber(value) {
+  return typeof value === 'number'
+}
+let a1 = [1, 2, 3]
+console.log(a1.every(isNumber))  // registra true
+let a2 = [1, '2', 3]
+console.log(a2.every(isNumber))  // registra false
+
+ +

{{jsxref("Array.some", "some(callback[, thisObject])")}} devuelve true si callback devuelve true para al menos un elemento del arreglo.

+ +
function isNumber(value) {
+  return typeof value === 'number'
+}
+let a1 = [1, 2, 3]
+console.log(a1.some(isNumber))  // registra true
+let a2 = [1, '2', 3]
+console.log(a2.some(isNumber))  // registra true
+let a3 = ['1', '2', '3']
+console.log(a3.some(isNumber))  // registra false
+
+ +

{{jsxref("Array.reduce", "reduce(callback[, initialValue])")}} aplica callback(acumulador, currentValue[, currentIndex[,array]]) para cada valor en el arreglo con el fin de reducir la lista de elementos a un solo valor. La función reduce devuelve el valor final devuelto por la función callback

+ +

Si se especifica initialValue, entonces callback se llama con initialValue como primer valor de parámetro y el valor del primer elemento del arreglo como segundo valor de parámetro. 

+ +

Si initialValue no es especificado, entonces callback los primeros dos valores de parámetro deberán ser el primer y segundo elemento del arreglo. En cada llamada subsiguiente, el valor del primer parámetro será el valor de callback devuelto en la llamada anterior, y el valor del segundo parámetro será el siguiente valor en el arreglo.

+ +

Si callback necesita acceso al índice del elemento que se está procesando, al acceder al arreglo completo, están disponibles como parámetros opcionales.

+ +
let​a = [10, 20, 30]
+let total = a.reduce(function(accumulator, currentValue) { return accumulator + currentValue }, 0)
+console.log(total) // Imprime 60
+
+ +

{{jsxref("Array.reduceRight", "reduceRight(callback[, initialValue])")}} funciona como reduce(), pero comienza con el último elemento.

+ +

reduce y reduceRight son los menos obvios de los métodos de arreglo iterativos. Se deben utilizar para algoritmos que combinan dos valores de forma recursiva para reducir una secuencia a un solo valor.

+ +

Arreglos multidimensionales

+ +

Los arreglos se pueden anidar, lo cual significa que un arreglo puede contener otro arreglo como elemento. Usando esta característica de los arreglos de JavaScript, se pueden crear arreglos multidimensionales.

+ +

El siguiente código crea un arreglo bidimensional.

+ +
let a = new Array(4)
+for (let i = 0; i < 4; i++) {
+  a[i] = new Array(4)
+  for (let j = 0; j < 4; j++) {
+    a[i][j] = '[' + i + ', ' + j + ']'
+  }
+}
+
+ +

Este ejemplo crea un arreglo con las siguientes filas:

+ +
Row 0: [0, 0] [0, 1] [0, 2] [0, 3]
+Row 1: [1, 0] [1, 1] [1, 2] [1, 3]
+Row 2: [2, 0] [2, 1] [2, 2] [2, 3]
+Row 3: [3, 0] [3, 1] [3, 2] [3, 3]
+
+ +

Usar arreglos para almacenar otras propiedades

+ +

Los arreglos también se pueden utilizar como objetos para almacenar información relacionada.

+ +
const arr = [1, 2, 3];
+arr.property = "value";
+console.log(arr.property);  // Registra "value"
+
+ +

Arreglos y expresiones regulares

+ +

Cuando un arreglo es el resultado de una coincidencia entre una expresión regular y una cadena, el arreglo devuelve propiedades y elementos que proporcionan información sobre la coincidencia. Un arreglo es el valor de retorno de {{jsxref("Global_Objects/RegExp/exec", "RegExp.exec()")}}, {{jsxref("Global_Objects/String/match", "String.match()")}} y {{jsxref("Global_Objects/String/split", "String.split()")}}. Para obtener información sobre el uso de arreglos con expresiones regulares, consulta Expresiones regulares.

+ +

Trabajar con objetos tipo array

+ +

Algunos objetos JavaScript, como NodeList devueltos por document.getElementsByTagName() o un objeto {{jsxref("Functions/arguments", "arguments")}} disponible dentro del cuerpo de una función, se ven y se comportan como arreglos en la superficie pero no comparten todos sus métodos. El objeto arguments proporciona un atributo {{jsxref("Global_Objects/Function/length", "length")}} pero no implementa el método {{jsxref("Array.forEach", "forEach()")}}, por ejemplo.

+ +

Los métodos de arreglo no se pueden llamar directamente en objetos similares a un arreglo.

+ +
function printArguments() {
+  arguments.forEach(function(item) {// TypeError: arguments.forEach no es una función
+    console.log(item);
+  });
+}
+
+ +

Pero puedes llamarlos indirectamente usando {{jsxref("Global_Objects/Function/call", "Function.prototype.call()")}}.

+ +
function printArguments() {
+  Array.prototype.forEach.call(arguments, function(item) {
+    console.log(item);
+  });
+}
+
+ +

Los métodos de prototipos de arreglos también se pueden utilizar en cadenas, ya que proporcionan acceso secuencial a sus caracteres de forma similar a los arreglos:

+ +
Array.prototype.forEach.call('a string', function(chr) {
+  console.log(chr)
+})
+
+ +

Arrays tipados

+ +

Los arreglos tipados en JavaScript son objetos similares a arreglos y proporcionan un mecanismo para acceder a datos binarios sin procesar. Como ya sabes, los objetos {{jsxref("Array")}} crecen y se encogen dinámicamente y pueden tener cualquier valor de JavaScript. Los motores de JavaScript realizan optimizaciones para que estos arreglos sean rápidos. Sin embargo, a medida que las aplicaciones web se vuelven cada vez más poderosas, agregando características como manipulación de audio y video, acceso a datos sin procesar usando WebSockets, y así sucesivamente, ha quedado claro que hay momentos en los que sería útil para que el código JavaScript pueda manipular rápida y fácilmente datos binarios sin procesar en arreglos tipados.

+ +

Búferes y vistas: arquitectura de los arreglos con tipo

+ +

Para lograr la máxima flexibilidad y eficiencia, los arreglos de JavaScript dividen la implementación en búferes y vistas. Un búfer (implementado por el objeto {{jsxref("ArrayBuffer")}} es un objeto que representa una porción de datos; no tiene un formato del que hablar y no ofrece ningún mecanismo para acceder a su contenido. Para acceder a la memoria contenida en un búfer, necesitas usar una vista. Una vista proporciona un contexto , es decir, un tipo de datos, un desplazamiento inicial y un número de elementos, que convierte los datos en un arreglo con tipo real.

+ +

Arreglos tipados en un <code>ArrayBuffer</code>

+ +

ArrayBuffer

+ +

{{jsxref("ArrayBuffer")}} es un tipo de dato que se utiliza para representar un búfer de datos binarios genérico de longitud fija. No puedes manipular directamente el contenido de un ArrayBuffer; en su lugar, creas una vista de arreglo con tipo o un {{jsxref("DataView")}} que representa el búfer en un formato específico, y lo usa para leer y escribir el contenido del búfer.

+ +

Vistas de arreglos tipados

+ +

Las vistas de arreglos tipados tienen nombres autodescriptivos y proporcionan vistas para todos los tipos numéricos habituales como Int8, Uint32, Float64 y así sucesivamente. Hay una vista de arreglo con tipo especial, {jsxref("Uint8ClampedArray")}}, que fija los valores entre 0 y 255. Esto es útil para procesamiento de datos de Canvas, por ejemplo.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TipoRango de valoresTamaño en bytesDescripciónTipo de IDL webTipo C equivalente
{{jsxref("Int8Array")}}-128 a 1271Dos enteros complementarios de 8 bits con signobyteint8_t
{{jsxref("Uint8Array")}}0 a 2551Entero de 8-bit sin signooctetouint8_t
{{jsxref("Uint8ClampedArray")}}0 a 2551Entero de 8 bits sin signo (sujeto)octetouint8_t
{{jsxref("Int16Array")}}-32768 a 327672Dos enteros complementarios de 16 bits con signoshortint16_t
{{jsxref("Uint16Array")}}0 a 655352Entero de 16 bits sin signoshort sin signouint16_t
{{jsxref("Int32Array")}}-2147483648 a 21474836474dos enteros complementarios de 32 bits con signolongint32_t
{{jsxref("Uint32Array")}}0 a 42949672954Enteros de 32 bits sin signolong sin signouint32_t
{{jsxref("Float32Array")}}1.2×10-38 a 3.4×10384Número de coma flotante IEEE de 32 bits (7 dígitos significativos, p. ej., 1.1234567)float sin restriccionesfloat
{{jsxref("Float64Array")}}5.0×10-324 a 1.8×103088Número de coma flotante IEEE de 64 bits (16 dígitos significativos, por ejemplo,1.123 ... 15)double sin restriccionesdouble
{{jsxref("BigInt64Array")}}-263 a 263-18Dos enteros complementarios de 64 bits con signobigintint64_t (long long con signo)
{{jsxref("BigUint64Array")}}0 a 264-18Entero de 64 bits sin signobigintuint64_t (long long sin signo)
+ +

Para obtener más información, consulta Arreglos tipados en JavaScript y la documentación de referencia para los diferentes objetos {{jsxref("TypedArray")}}.

+ +

{{PreviousNext("Web/JavaScript/Guide/Regular_Expressions", "Web/JavaScript/Guide/Keyed_Collections")}}

diff --git "a/files/es/web/javascript/guide/introducci\303\263n/index.html" "b/files/es/web/javascript/guide/introducci\303\263n/index.html" deleted file mode 100644 index 6200c2c7d6..0000000000 --- "a/files/es/web/javascript/guide/introducci\303\263n/index.html" +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: Introducción -slug: Web/JavaScript/Guide/Introducción -tags: - - Guía - - Introducion - - JavaScript - - Novato - - Principiante - - 'l10n:priority' -translation_of: Web/JavaScript/Guide/Introduction ---- -
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide", "Web/JavaScript/Guide/Grammar_and_types")}}
- -

Este capítulo presenta JavaScript y analiza algunos de sus conceptos fundamentales.

- -

¿Qué debes conocer previamente?

- -

Esta guía presume que tienes los siguientes antecedentes básicos:

- - - -

Dónde encontrar información sobre JavaScript

- -

La documentación de JavaScript en MDN incluye lo siguiente:

- - - -

Si eres nuevo en JavaScript, comienza con los artículos en el {{web.link("/es/docs/Learn", "área de aprendizaje")}} y la {{JSxRef("../Guide", "Guía de JavaScript")}}. Una vez que tengas una firme comprensión de los fundamentos, puedes usar la {{JSxRef("../Referencia", "Referencia de JavaScript")}} para obtener más detalles sobre objetos y declaraciones individuales.

- -

¿Qué es JavaScript?

- -

JavaScript es un lenguaje de programación multiplataforma orientado a objetos que se utiliza para hacer que las páginas web sean interactivas (p. ej., Que tienen animaciones complejas, botones en los que se puede hacer clic, menús emergentes, etc.). También hay versiones de JavaScript de lado del servidor más avanzadas, como Node.js, que te permiten agregar más funcionalidad a un sitio web que simplemente descargar archivos (como la colaboración en tiempo real entre varias computadoras). Dentro de un entorno (por ejemplo, un navegador web), JavaScript se puede conectar a los objetos de su entorno para proporcionar control programático sobre ellos.

- -

JavaScript contiene una biblioteca estándar de objetos, como Array, Date y Math, y un conjunto básico de elementos del lenguaje como operadores, estructuras de control y declaraciones. El núcleo de JavaScript se puede extender para una variedad de propósitos completándolo con objetos adicionales; por ejemplo:

- - - -

Esto significa que en el navegador, JavaScript puede cambiar la apariencia de la página web (DOM). Y, del mismo modo, el JavaScript de Node.js en el servidor puede responder a solicitudes personalizadas desde el código escrito en el navegador.

- -

JavaScript y Java

- -

JavaScript y Java son similares en algunos aspectos, pero fundamentalmente diferentes en otros. El lenguaje JavaScript se parece a Java, pero no tiene el tipado estático ni la fuerte verificación de tipos de Java. JavaScript sigue la mayoría de la sintaxis de las expresiones de Java, convenciones de nomenclatura y construcciones de control de flujo básicas, razón por la cual se cambió el nombre de LiveScript a JavaScript.

- -

A diferencia del sistema de clases en tiempo de compilación de Java creado por declaraciones, JavaScript admite un sistema de tiempo de ejecución basado en una pequeña cantidad de tipos de datos que representan valores numéricos, booleanos y de cadena. JavaScript tiene un modelo de objetos basado en prototipos en lugar del modelo de objetos basado en clases más común. El modelo basado en prototipos proporciona herencia dinámica; es decir, lo que se hereda puede variar en objetos individuales. JavaScript también admite funciones sin requisitos declarativos especiales. Las funciones pueden ser propiedades de objetos, ejecutándose como métodos débilmente tipados.

- -

JavaScript es un lenguaje de forma muy libre en comparación con Java. No es necesario declarar todas las variables, clases y métodos. No tienes que preocuparte por si los métodos son públicos, privados o protegidos, y no tienes que implementar interfaces. Las variables, los parámetros y los tipos de retorno de función no se tipifican explícitamente.

- -

Java es un lenguaje de programación basado en clases diseñado para una ejecución rápida y con seguridad de tipos. La seguridad de tipos significa, por ejemplo, que no puedes convertir un entero de Java en una referencia de objeto o acceder a la memoria privada corrompiendo el código de bytes de Java. El modelo basado en clases de Java significa que los programas constan exclusivamente de clases y sus métodos. La herencia de clases de Java y la tipificación fuerte generalmente requieren jerarquías de objetos estrechamente acopladas. Estos requisitos hacen que la programación Java sea más compleja que la programación JavaScript.

- -

Por el contrario, JavaScript desciende en espíritu de una línea de lenguajes más pequeños de tipado dinámico como HyperTalk y dBASE. Estos lenguajes de «scripting» ofrecen herramientas de programación a una audiencia mucho más amplia debido a su sintaxis más sencilla, funcionalidad especializada incorporada y requisitos mínimos para la creación de objetos.

- - - - - - - - - - - - - - - - - - - - - - - -
JavaScript comparado con Java
JavaScriptJava
Orientado a objetos. No hay distinción entre tipos de objetos. La herencia se realiza a través del mecanismo de prototipo, y las propiedades y métodos se pueden agregar a cualquier objeto de forma dinámica.Basado en clases. Los objetos se dividen en clases e instancias con toda la herencia a través de la jerarquía de clases. Las clases y las instancias no pueden tener propiedades o métodos agregados dinámicamente.
Los tipos de datos de las variables no se declaran (tipado dinámico, tipado flexible).Los tipos de datos de las variables se deben declarar (tipado estático, fuertemente tipado).
No se puede escribir automáticamente en el disco duro.Puede escribir automáticamente en el disco duro.
- -

Para obtener más información sobre las diferencias entre JavaScript y Java, consulta el capítulo {{JSxRef("../Guide/Details_of_the_Object_Model", "Detalles del modelo de objetos")}}.

- -

JavaScript y la especificación ECMAScript

- -

JavaScript está estandarizado en Ecma International, la asociación europea para estandarizar los sistemas de información y comunicación (ECMA antes era un acrónimo para la Asociación Europea de Fabricantes de Computadoras) para ofrecer un lenguaje de programación internacional estandarizado basado en JavaScript. Esta versión estandarizada de JavaScript, denominada ECMAScript, se comporta de la misma manera en todas las aplicaciones que admiten el estándar. Las empresas pueden utilizar el lenguaje estándar abierto para desarrollar su implementación de JavaScript. El estándar ECMAScript está documentado en la especificación ECMA-262. Consulta {{JSxRef("../Novedades_en_JavaScript", "Novedades en JavaScript")}} para obtener más información sobre las diferentes versiones de JavaScript y las ediciones de especificación ECMAScript.

- -

El estándar ECMA-262 también está aprobado por ISO (Organización Internacional de Normalización) como ISO-16262. También puedes encontrar la especificación en el sitio web de Ecma International. La especificación ECMAScript no describe el modelo de objetos de documento (DOM), que está estandarizado por el World Wide Web Consortium (W3C) y/o WHATWG (Grupo de trabajo de tecnología de aplicaciones de hipertexto web). El DOM define la forma en que los objetos de documentos HTML se exponen a tu «script». Para tener una mejor idea de las diferentes tecnologías que se utilizan al programar con JavaScript, consulta el artículo {{JSxRef("../Descripción_de_las_tecnologías_JavaScript", "descripción de las tecnologías JavaScript")}}.

- -

Documentación de JavaScript versus especificación de ECMAScript

- -

La especificación ECMAScript es un conjunto de requisitos para implementar ECMAScript. Es útil si deseas implementar funciones del lenguaje compatibles con los estándares en tu implementación o motor ECMAScript (como SpiderMonkey en Firefox o V8 en Chrome).

- -

El documento ECMAScript no está destinado a ayudar a los programadores de scripts. Utiliza la documentación de JavaScript para obtener información al escribir tus scripts.

- -

La especificación ECMAScript utiliza terminología y sintaxis que puede resultar desconocida para un programador de JavaScript. Aunque la descripción del lenguaje puede diferir en ECMAScript, el lenguaje en sí sigue siendo el mismo. JavaScript admite todas las funciones descritas en la especificación ECMAScript.

- -

La documentación de JavaScript describe aspectos del lenguaje que son apropiados para un programador de JavaScript.

- -

Cómo empezar con JavaScript

- -

Comenzar con JavaScript es fácil: todo lo que necesitas es un navegador web moderno. Esta guía incluye algunas funciones de JavaScript que solo están disponibles actualmente en las últimas versiones de Firefox, por lo que se recomienda utilizar la versión más reciente de Firefox.

- -

La herramienta Consola web integrada en Firefox es útil para experimentar con JavaScript; Puedes usarla en dos modos: modo de entrada unilínea y modo de entrada multilínea.

- -

Entrada unilínea en la consola web

- -

La {{web.link("/es/docs/Tools/Web_Console", "Consola web")}} te muestra información sobre la página web cargada actualmente, y también incluye un intérprete de JavaScript que puedes usar para ejecutar expresiones de JavaScript en la página actual.

- -

Para abrir la Consola web (Ctrl+Mayús+I en Windows y Linux o Cmd-Opción-K en Mac), abre el menú Herramientas en Firefox y selecciona "Desarrollador ▶ Consola web".

- -

La consola web aparece en la parte inferior de la ventana del navegador. En la parte inferior de la consola hay una línea de entrada que puedes usar para ingresar JavaScript, y la salida aparece en el panel de arriba:

- -

Consola web

- -

La consola funciona exactamente de la misma manera que eval: devuelve la última expresión ingresada. En aras de la simplicidad, te puedes imaginar que cada vez que ingresas algo en la consola, en realidad estás rodeado por console.log alrededor de eval, así:

- -
function greetMe(tuNombre) {
-  alert("Hola " + tuNombre)
-}
-console.log(eval('3 + 5'))
-
- -

Entrada multilínea en la consola web

- -

El modo de entrada unilínea de la consola web es ideal para realizar pruebas rápidas de expresiones JavaScript, pero aunque puedes ejecutar varias líneas, no es muy conveniente para eso. Para JavaScript más complejo, puedes utilizar el modo de entrada multilínea.

- -

Hola mundo

- -

Para comenzar a escribir JavaScript, abre la Consola web en modo multilínea y escribe tu primer código "Hola mundo" en JavaScript:

- -
(function(){
-  "use strict";
-  /* Inicio de tu código */
-  function greetMe(tuNombre) {
-    alert('Hola ' + tuNombre);
-  }
-
-  greetMe('Mundo');
-  /* Fin de tu código */
-})();
- -

Presiona Cmd+Intro o Ctrl+Intro (o haz clic en el botón Ejecutar), ¡para ver cómo se desarrolla en tu navegador!

- -

En las siguientes páginas, esta guía te presenta la sintaxis de JavaScript y las características del lenguaje, de modo que puedas escribir aplicaciones más complejas.

- -

Pero por ahora, recuerda incluir siempre el (function() { "use strict"; antes de tu código, y agrega })(); al final de tu código. Aprenderás {{Glossary("IIFE", "qué significa IIFE")}} , pero por ahora puedes pensar que hacen lo siguiente:

- -
    -
  1. Mejoran enormemente el rendimiento.
  2. -
  3. Evitan la semántica estúpida en JavaScript que hace tropezar a los principiantes.
  4. -
  5. Evitan que los fragmentos de código ejecutados en la consola interactúen entre sí (por ejemplo, que algo creado en una ejecución de consola se utilice para una ejecución de consola diferente).
  6. -
- -

{{PreviousNext("Web/JavaScript/Guide", "Web/JavaScript/Guide/Grammar_and_types")}}

diff --git a/files/es/web/javascript/guide/introduction/index.html b/files/es/web/javascript/guide/introduction/index.html new file mode 100644 index 0000000000..6200c2c7d6 --- /dev/null +++ b/files/es/web/javascript/guide/introduction/index.html @@ -0,0 +1,161 @@ +--- +title: Introducción +slug: Web/JavaScript/Guide/Introducción +tags: + - Guía + - Introducion + - JavaScript + - Novato + - Principiante + - 'l10n:priority' +translation_of: Web/JavaScript/Guide/Introduction +--- +
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide", "Web/JavaScript/Guide/Grammar_and_types")}}
+ +

Este capítulo presenta JavaScript y analiza algunos de sus conceptos fundamentales.

+ +

¿Qué debes conocer previamente?

+ +

Esta guía presume que tienes los siguientes antecedentes básicos:

+ + + +

Dónde encontrar información sobre JavaScript

+ +

La documentación de JavaScript en MDN incluye lo siguiente:

+ + + +

Si eres nuevo en JavaScript, comienza con los artículos en el {{web.link("/es/docs/Learn", "área de aprendizaje")}} y la {{JSxRef("../Guide", "Guía de JavaScript")}}. Una vez que tengas una firme comprensión de los fundamentos, puedes usar la {{JSxRef("../Referencia", "Referencia de JavaScript")}} para obtener más detalles sobre objetos y declaraciones individuales.

+ +

¿Qué es JavaScript?

+ +

JavaScript es un lenguaje de programación multiplataforma orientado a objetos que se utiliza para hacer que las páginas web sean interactivas (p. ej., Que tienen animaciones complejas, botones en los que se puede hacer clic, menús emergentes, etc.). También hay versiones de JavaScript de lado del servidor más avanzadas, como Node.js, que te permiten agregar más funcionalidad a un sitio web que simplemente descargar archivos (como la colaboración en tiempo real entre varias computadoras). Dentro de un entorno (por ejemplo, un navegador web), JavaScript se puede conectar a los objetos de su entorno para proporcionar control programático sobre ellos.

+ +

JavaScript contiene una biblioteca estándar de objetos, como Array, Date y Math, y un conjunto básico de elementos del lenguaje como operadores, estructuras de control y declaraciones. El núcleo de JavaScript se puede extender para una variedad de propósitos completándolo con objetos adicionales; por ejemplo:

+ + + +

Esto significa que en el navegador, JavaScript puede cambiar la apariencia de la página web (DOM). Y, del mismo modo, el JavaScript de Node.js en el servidor puede responder a solicitudes personalizadas desde el código escrito en el navegador.

+ +

JavaScript y Java

+ +

JavaScript y Java son similares en algunos aspectos, pero fundamentalmente diferentes en otros. El lenguaje JavaScript se parece a Java, pero no tiene el tipado estático ni la fuerte verificación de tipos de Java. JavaScript sigue la mayoría de la sintaxis de las expresiones de Java, convenciones de nomenclatura y construcciones de control de flujo básicas, razón por la cual se cambió el nombre de LiveScript a JavaScript.

+ +

A diferencia del sistema de clases en tiempo de compilación de Java creado por declaraciones, JavaScript admite un sistema de tiempo de ejecución basado en una pequeña cantidad de tipos de datos que representan valores numéricos, booleanos y de cadena. JavaScript tiene un modelo de objetos basado en prototipos en lugar del modelo de objetos basado en clases más común. El modelo basado en prototipos proporciona herencia dinámica; es decir, lo que se hereda puede variar en objetos individuales. JavaScript también admite funciones sin requisitos declarativos especiales. Las funciones pueden ser propiedades de objetos, ejecutándose como métodos débilmente tipados.

+ +

JavaScript es un lenguaje de forma muy libre en comparación con Java. No es necesario declarar todas las variables, clases y métodos. No tienes que preocuparte por si los métodos son públicos, privados o protegidos, y no tienes que implementar interfaces. Las variables, los parámetros y los tipos de retorno de función no se tipifican explícitamente.

+ +

Java es un lenguaje de programación basado en clases diseñado para una ejecución rápida y con seguridad de tipos. La seguridad de tipos significa, por ejemplo, que no puedes convertir un entero de Java en una referencia de objeto o acceder a la memoria privada corrompiendo el código de bytes de Java. El modelo basado en clases de Java significa que los programas constan exclusivamente de clases y sus métodos. La herencia de clases de Java y la tipificación fuerte generalmente requieren jerarquías de objetos estrechamente acopladas. Estos requisitos hacen que la programación Java sea más compleja que la programación JavaScript.

+ +

Por el contrario, JavaScript desciende en espíritu de una línea de lenguajes más pequeños de tipado dinámico como HyperTalk y dBASE. Estos lenguajes de «scripting» ofrecen herramientas de programación a una audiencia mucho más amplia debido a su sintaxis más sencilla, funcionalidad especializada incorporada y requisitos mínimos para la creación de objetos.

+ + + + + + + + + + + + + + + + + + + + + + + +
JavaScript comparado con Java
JavaScriptJava
Orientado a objetos. No hay distinción entre tipos de objetos. La herencia se realiza a través del mecanismo de prototipo, y las propiedades y métodos se pueden agregar a cualquier objeto de forma dinámica.Basado en clases. Los objetos se dividen en clases e instancias con toda la herencia a través de la jerarquía de clases. Las clases y las instancias no pueden tener propiedades o métodos agregados dinámicamente.
Los tipos de datos de las variables no se declaran (tipado dinámico, tipado flexible).Los tipos de datos de las variables se deben declarar (tipado estático, fuertemente tipado).
No se puede escribir automáticamente en el disco duro.Puede escribir automáticamente en el disco duro.
+ +

Para obtener más información sobre las diferencias entre JavaScript y Java, consulta el capítulo {{JSxRef("../Guide/Details_of_the_Object_Model", "Detalles del modelo de objetos")}}.

+ +

JavaScript y la especificación ECMAScript

+ +

JavaScript está estandarizado en Ecma International, la asociación europea para estandarizar los sistemas de información y comunicación (ECMA antes era un acrónimo para la Asociación Europea de Fabricantes de Computadoras) para ofrecer un lenguaje de programación internacional estandarizado basado en JavaScript. Esta versión estandarizada de JavaScript, denominada ECMAScript, se comporta de la misma manera en todas las aplicaciones que admiten el estándar. Las empresas pueden utilizar el lenguaje estándar abierto para desarrollar su implementación de JavaScript. El estándar ECMAScript está documentado en la especificación ECMA-262. Consulta {{JSxRef("../Novedades_en_JavaScript", "Novedades en JavaScript")}} para obtener más información sobre las diferentes versiones de JavaScript y las ediciones de especificación ECMAScript.

+ +

El estándar ECMA-262 también está aprobado por ISO (Organización Internacional de Normalización) como ISO-16262. También puedes encontrar la especificación en el sitio web de Ecma International. La especificación ECMAScript no describe el modelo de objetos de documento (DOM), que está estandarizado por el World Wide Web Consortium (W3C) y/o WHATWG (Grupo de trabajo de tecnología de aplicaciones de hipertexto web). El DOM define la forma en que los objetos de documentos HTML se exponen a tu «script». Para tener una mejor idea de las diferentes tecnologías que se utilizan al programar con JavaScript, consulta el artículo {{JSxRef("../Descripción_de_las_tecnologías_JavaScript", "descripción de las tecnologías JavaScript")}}.

+ +

Documentación de JavaScript versus especificación de ECMAScript

+ +

La especificación ECMAScript es un conjunto de requisitos para implementar ECMAScript. Es útil si deseas implementar funciones del lenguaje compatibles con los estándares en tu implementación o motor ECMAScript (como SpiderMonkey en Firefox o V8 en Chrome).

+ +

El documento ECMAScript no está destinado a ayudar a los programadores de scripts. Utiliza la documentación de JavaScript para obtener información al escribir tus scripts.

+ +

La especificación ECMAScript utiliza terminología y sintaxis que puede resultar desconocida para un programador de JavaScript. Aunque la descripción del lenguaje puede diferir en ECMAScript, el lenguaje en sí sigue siendo el mismo. JavaScript admite todas las funciones descritas en la especificación ECMAScript.

+ +

La documentación de JavaScript describe aspectos del lenguaje que son apropiados para un programador de JavaScript.

+ +

Cómo empezar con JavaScript

+ +

Comenzar con JavaScript es fácil: todo lo que necesitas es un navegador web moderno. Esta guía incluye algunas funciones de JavaScript que solo están disponibles actualmente en las últimas versiones de Firefox, por lo que se recomienda utilizar la versión más reciente de Firefox.

+ +

La herramienta Consola web integrada en Firefox es útil para experimentar con JavaScript; Puedes usarla en dos modos: modo de entrada unilínea y modo de entrada multilínea.

+ +

Entrada unilínea en la consola web

+ +

La {{web.link("/es/docs/Tools/Web_Console", "Consola web")}} te muestra información sobre la página web cargada actualmente, y también incluye un intérprete de JavaScript que puedes usar para ejecutar expresiones de JavaScript en la página actual.

+ +

Para abrir la Consola web (Ctrl+Mayús+I en Windows y Linux o Cmd-Opción-K en Mac), abre el menú Herramientas en Firefox y selecciona "Desarrollador ▶ Consola web".

+ +

La consola web aparece en la parte inferior de la ventana del navegador. En la parte inferior de la consola hay una línea de entrada que puedes usar para ingresar JavaScript, y la salida aparece en el panel de arriba:

+ +

Consola web

+ +

La consola funciona exactamente de la misma manera que eval: devuelve la última expresión ingresada. En aras de la simplicidad, te puedes imaginar que cada vez que ingresas algo en la consola, en realidad estás rodeado por console.log alrededor de eval, así:

+ +
function greetMe(tuNombre) {
+  alert("Hola " + tuNombre)
+}
+console.log(eval('3 + 5'))
+
+ +

Entrada multilínea en la consola web

+ +

El modo de entrada unilínea de la consola web es ideal para realizar pruebas rápidas de expresiones JavaScript, pero aunque puedes ejecutar varias líneas, no es muy conveniente para eso. Para JavaScript más complejo, puedes utilizar el modo de entrada multilínea.

+ +

Hola mundo

+ +

Para comenzar a escribir JavaScript, abre la Consola web en modo multilínea y escribe tu primer código "Hola mundo" en JavaScript:

+ +
(function(){
+  "use strict";
+  /* Inicio de tu código */
+  function greetMe(tuNombre) {
+    alert('Hola ' + tuNombre);
+  }
+
+  greetMe('Mundo');
+  /* Fin de tu código */
+})();
+ +

Presiona Cmd+Intro o Ctrl+Intro (o haz clic en el botón Ejecutar), ¡para ver cómo se desarrolla en tu navegador!

+ +

En las siguientes páginas, esta guía te presenta la sintaxis de JavaScript y las características del lenguaje, de modo que puedas escribir aplicaciones más complejas.

+ +

Pero por ahora, recuerda incluir siempre el (function() { "use strict"; antes de tu código, y agrega })(); al final de tu código. Aprenderás {{Glossary("IIFE", "qué significa IIFE")}} , pero por ahora puedes pensar que hacen lo siguiente:

+ +
    +
  1. Mejoran enormemente el rendimiento.
  2. +
  3. Evitan la semántica estúpida en JavaScript que hace tropezar a los principiantes.
  4. +
  5. Evitan que los fragmentos de código ejecutados en la consola interactúen entre sí (por ejemplo, que algo creado en una ejecución de consola se utilice para una ejecución de consola diferente).
  6. +
+ +

{{PreviousNext("Web/JavaScript/Guide", "Web/JavaScript/Guide/Grammar_and_types")}}

diff --git a/files/es/web/javascript/guide/loops_and_iteration/index.html b/files/es/web/javascript/guide/loops_and_iteration/index.html new file mode 100644 index 0000000000..07b7c12e31 --- /dev/null +++ b/files/es/web/javascript/guide/loops_and_iteration/index.html @@ -0,0 +1,334 @@ +--- +title: Bucles e iteración +slug: Web/JavaScript/Guide/Bucles_e_iteración +tags: + - Bucle + - Guia(2) + - Guía + - Iteración + - JavaScript + - Sintaxis +translation_of: Web/JavaScript/Guide/Loops_and_iteration +--- +
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Control_flow_and_error_handling", "Web/JavaScript/Guide/Functions")}}
+ +

Los bucles ofrecen una forma rápida y sencilla de hacer algo repetidamente. Este capítulo de la {{JSxRef("../Guide", "Guía de JavaScript")}} presenta las diferentes declaraciones de iteración disponibles para JavaScript.

+ +

Puedes pensar en un bucle como una versión computarizada del juego en la que le dices a alguien que dé X pasos en una dirección y luego Y pasos en otra. Por ejemplo, la idea "Ve cinco pasos hacia el este" se podría expresar de esta manera como un bucle:

+ +
for (let step = 0; step < 5; step++) {
+  // Se ejecuta 5 veces, con valores del paso 0 al 4.
+  console.log('Camina un paso hacia el este');
+}
+
+ +

Hay muchos diferentes tipos de bucles, pero esencialmente, todos hacen lo mismo: repiten una acción varias veces. (¡Ten en cuenta que es posible que ese número sea cero!).

+ +

Los diversos mecanismos de bucle ofrecen diferentes formas de determinar los puntos de inicio y terminación del bucle. Hay varias situaciones que son fácilmente atendidas por un tipo de bucle que por otros.

+ +

Las declaraciones para bucles proporcionadas en JavaScript son:

+ + + +

Declaración for

+ +

Un ciclo {{JSxRef("Sentencias/for", "for")}} se repite hasta que una condición especificada se evalúe como false. El bucle for de JavaScript es similar al bucle for de Java y C.

+ +

Una declaración for tiene el siguiente aspecto:

+ +
for ([expresiónInicial]; [expresiónCondicional]; [expresiónDeActualización])
+  instrucción
+
+ +

Cuando se ejecuta un bucle for, ocurre lo siguiente:

+ +
    +
  1. Se ejecuta la expresión de iniciación expresiónInicial, si existe. Esta expresión normalmente inicia uno o más contadores de bucle, pero la sintaxis permite una expresión de cualquier grado de complejidad. Esta expresión también puede declarar variables.
  2. +
  3. Se evalúa la expresión expresiónCondicional. Si el valor de expresiónCondicional es verdadero, se ejecutan las instrucciones del bucle. Si el valor de condición es falso, el bucle for termina. (Si la expresión condición se omite por completo, se supone que la condición es verdadera).
  4. +
  5. Se ejecuta la instrucción. Para ejecutar varias instrucciones, usa una declaración de bloque ({ ... }) para agrupar esas declaraciones.
  6. +
  7. Si está presente, se ejecuta la expresión de actualización expresiónDeActualización.
  8. +
  9. El control regresa al paso 2.
  10. +
+ +

Ejemplo

+ +

En el siguiente ejemplo, la función contiene una instrucción for que cuenta el número de opciones seleccionadas en una lista de desplazamiento (el elemento {{HTMLElement("select")}} de HTML representa un control que proporciona un menú de opciones que permite múltiples selecciones). La instrucción for declara la variable i y la inicia a 0. Comprueba que i es menor que el número de opciones en el elemento <select>, realiza la siguiente instrucción if e incrementa i después de cada pasada por el bucle.

+ +
<form name="selectForm">
+  <p>
+    <label for="musicTypes">Elija algunos tipos de música, luego haga clic en el botón de abajo:</label>
+    <select id="musicTypes" name="musicTypes" multiple="multiple">
+      <option selected="selected">R&B</option>
+      <option>Jazz</option>
+      <option>Blues</option>
+      <option>New Age</option>
+      <option>Classical</option>
+      <option>Opera</option>
+    </select>
+  </p>
+  <p><input id="btn" type="button" value="¿Cuántos están seleccionados?" /></p>
+</form>
+
+<script>
+function howMany(selectObject) {
+  let numberSelected = 0;
+  for (let i = 0; i < selectObject.options.length; i++) {
+    if (selectObject.options[i].selected) {
+      numberSelected++;
+    }
+  }
+  return numberSelected;
+}
+
+let btn = document.getElementById('btn');
+btn.addEventListener('click', function() {
+  alert('Número de opciones seleccionadas: ' + howMany(document.selectForm.musicTypes));
+});
+</script>
+
+
+ +

Declaración do...while

+ +

La instrucción {{JSxRef("Sentencias/do...while", "do...while")}} se repite hasta que una condición especificada se evalúe como falsa.

+ +

Una declaración do...while tiene el siguiente aspecto:

+ +
do
+  expresión
+while (condición);
+
+ +

exposición siempre se ejecuta una vez antes de que se verifique la condición. (Para ejecutar varias instrucciones, usa una declaración de bloque ({ ... }) para agrupar esas declaraciones).

+ +

Si condición es true, la declaración se ejecuta de nuevo. Al final de cada ejecución, se comprueba la condición. Cuando la condición es false, la ejecución se detiene y el control pasa a la declaración que sigue a do...while.

+ +

Ejemplo

+ +

En el siguiente ejemplo, el bucle do itera al menos una vez y se repite hasta que i ya no sea menor que 5.

+ +

let i = 0; do { i += 1; console.log(i); } while (i < 5);

+ +

Declaración while

+ +

Una declaración {{JSxRef("Sentencias/while", "while")}} ejecuta sus instrucciones siempre que una condición especificada se evalúe como true. Una instrucción while tiene el siguiente aspecto:

+ +
while (condición)
+  expresión
+
+ +

Si la condición se vuelve false, la instrucción dentro del bucle se deja de ejecutar y el control pasa a la instrucción que sigue al bucle.

+ +

La prueba de condición ocurre antes de que se ejecute la expresión en el bucle. Si la condición devuelve true, se ejecuta la expresión y la condición se prueba de nuevo. Si la condición devuelve false, la ejecución se detiene y el control se pasa a la instrucción que sigue a while.

+ +

Para ejecutar varias instrucciones, usa una declaración de bloque ({ ... }) para agrupar esas declaraciones.

+ +

Ejemplo 1

+ +

El siguiente ciclo del while se repite siempre que n sea menor que 3:

+ +
let n = 0;
+let x = 0;
+while (n < 3) {
+  n++;
+  x += n;
+}
+
+ +

Con cada iteración, el bucle incrementa n y agrega ese valor a x. Por lo tanto, x y n toman los siguientes valores:

+ + + +

Después de completar la tercera pasada, la condición n < 3 ya no es true, por lo que el bucle termina.Ejemplo 2

+ +

Evita los bucles infinitos. Asegúrate de que la condición en un bucle eventualmente se convierta en false; de lo contrario, el bucle nunca terminará. Las declaraciones en el siguiente bucle while se ejecutan indefinidamente porque la condición nunca se vuelve false:

+ +
// ¡Los bucles infinitos son malos!
+while (true) {
+  console.log('¡Hola, mundo!');
+}
+ +

Declaración labeled

+ +

Una {{JSxRef("Sentencias/label", "label")}} proporciona una instrucción con un identificador que te permite hacer referencia a ella en otra parte de tu programa. Por ejemplo, puedes usar una etiqueta para identificar un bucle y luego usar las declaraciones break o continue para indicar si un programa debe interrumpir el bucle o continuar su ejecución.La sintaxis de la instrucción etiquetada es similar a la siguiente:label : instrucción

+ +

El valor de label puede ser cualquier identificador de JavaScript que no sea una palabra reservada. La declaración que identifica a una etiqueta puede ser cualquier enunciado.

+ +

Ejemplo

+ +

En este ejemplo, la etiqueta markLoop identifica un bucle while.

+ +

markLoop: while (theMark === true) { doSomething(); }

+ +

Declaración break

+ +

Usa la instrucción {{JSxRef("Sentencias/break", "break")}} para terminar un bucle, switch o junto con una declaración etiquetada.

+ + + +

La sintaxis de la instrucción break se ve así:

+ +
break;
+break [label];
+
+ +
    +
  1. La primera forma de la sintaxis termina el bucle envolvente más interno o el switch.
  2. +
  3. La segunda forma de la sintaxis termina la instrucción etiquetada específica.
  4. +
+ +

Ejemplo 1

+ +

El siguiente ejemplo recorre en iteración los elementos de un arreglo hasta que encuentra el índice de un elemento cuyo valor es theValue:

+ +
for (let i = 0; i < a.length; i++) {
+  if (a[i] === theValue) {
+    break;
+  }
+}
+ +

Ejemplo 2: romper una etiqueta

+ +
let x = 0;
+let z = 0;
+labelCancelLoops: while (true) {
+  console.log('Bucles externos: ' + x);
+  x += 1;
+  z = 1;
+  while (true) {
+    console.log('Bucles internos: ' + z);
+    z += 1;
+    if (z === 10 && x === 10) {
+      break labelCancelLoops;
+    } else if (z === 10) {
+      break;
+    }
+  }
+}
+
+ +

Declaración continue

+ +

La instrucción {{JSxRef("Sentencias/continue", "continue")}} se puede usar para reiniciar un while, do-while, for, o declaración label.

+ + + +

La sintaxis de la instrucción continue se parece a la siguiente:

+ +
continue [label];
+
+ +

Ejemplo 1

+ +

El siguiente ejemplo muestra un bucle while con una instrucción continue que se ejecuta cuando el valor de i es 3. Por lo tanto, n toma los valores 1, 3, 7 y 12.

+ +
let i = 0;
+let n = 0;
+while (i < 5) {
+  i++;
+  if (i === 3) {
+    continue;
+  }
+  n += i;
+  console.log(n);
+}
+//1,3,7,12
+
+
+let i = 0;
+let n = 0;
+while (i < 5) {
+  i++;
+  if (i === 3) {
+     // continue;
+  }
+  n += i;
+  console.log(n);
+}
+// 1,3,6,10,15
+
+ +

Ejemplo 2

+ +

Una declaración etiquetada checkiandj contiene una declaración etiquetada checkj. Si se encuentra continue, el programa termina la iteración actual de checkj y comienza la siguiente iteración. Cada vez que se encuentra continue, checkj reitera hasta que su condición devuelve false. Cuando se devuelve false, el resto de la instrucción checkiandj se completa y checkiandj reitera hasta que su condición devuelve false. Cuando se devuelve false, el programa continúa en la declaración que sigue a checkiandj.

+ +

Si continue tuviera una etiqueta de checkiandj, el programa continuaría en la parte superior de la declaración checkiandj.

+ +

let i = 0; let j = 10; checkiandj: while (i < 4) { console.log(i); i += 1; checkj: while (j > 4) { console.log(j); j -= 1; if ((j % 2) === 0) { continue checkj; } console.log(j + 'es impar.'); } console.log('i = ' + i); console.log('j = ' + j); }

+ +

Declaración for...in

+ +

La instrucción {{JSxRef("Sentencias/for...in", "for...in")}} itera una variable especificada sobre todas las propiedades enumerables de un objeto. Para cada propiedad distinta, JavaScript ejecuta las instrucciones especificadas. Una declaración for...in tiene el siguiente aspecto:

+ +
for (variable in objeto)
+  instrucción
+
+ +

Ejemplo

+ +

La siguiente función toma como argumento un objeto y el nombre del objeto. Luego itera sobre todas las propiedades del objeto y devuelve una cadena que enumera los nombres de las propiedades y sus valores.

+ +
function dump_props(obj, obj_name) {
+  let result = '';
+  for (let i in obj) {
+    result += obj_name + '.' + i + ' = ' + obj[i] + '<br>';
+  }
+  result += '<hr>';
+  return result;
+}
+
+ +

Para un objeto car con propiedades make y model, result sería:

+ +
car.make = Ford
+car.model = Mustang
+
+ +

Arrays

+ +

Aunque puede ser tentador usar esto como una forma de iterar sobre los elementos {{JSxRef("Array")}}, la instrucción for...in devolverá el nombre de sus propiedades definidas por el usuario además de los índices numéricos.

+ +

Por lo tanto, es mejor usar un bucle {{JSxRef("Sentencias/for", "for")}} tradicional con un índice numérico cuando se itera sobre arreglos, porque la instrucción for...in itera sobre las propiedades definidas por el usuario además de los elementos del arreglo, si modificas el objeto Array (tal como agregar propiedades o métodos personalizados).

+ +

Declaración for...of

+ +

La declaración {{JSxRef("Sentencias/for...of", "for...of")}} crea un bucle que se repite sobre {{JSxRef("../Guide/iterable", "objetos iterables")}} (incluidos {{JSxRef("Array")}}, {{JSxRef("Map")}}, {{JSxRef("Set")}}, objetos {{JSxRef("Funciones/arguments", "arguments")}} y así sucesivamente), invocando un gancho de iteración personalizado con declaraciones que se ejecutarán para el valor de cada distinta propiedad.

+ +
para (variable of objeto)
+  expresión
+
+ +

El siguiente ejemplo muestra la diferencia entre un bucle for...in y un bucle {{JSxRef("Sentencias/for...in", "for...in")}}. Mientras que for...in itera sobre los nombres de propiedad, for...of itera sobre los valores de propiedad:

+ +
const arr = [3, 5, 7];
+arr.foo = 'hola';
+
+for (let i in arr) {
+   console.log(i); // logs "0", "1", "2", "foo"
+}
+
+for (let i of arr) {
+   console.log(i); // logs 3, 5, 7
+}
+
+ +

{{PreviousNext("Web/JavaScript/Guide/Control_flow_and_error_handling", "Web/JavaScript/Guide/Functions")}}

diff --git a/files/es/web/javascript/guide/modules/index.html b/files/es/web/javascript/guide/modules/index.html new file mode 100644 index 0000000000..eacc6835f6 --- /dev/null +++ b/files/es/web/javascript/guide/modules/index.html @@ -0,0 +1,458 @@ +--- +title: Módulos JavaScript +slug: Web/JavaScript/Guide/Módulos +tags: + - Guía + - JavaScript + - Modules + - Módulos + - export + - import +translation_of: Web/JavaScript/Guide/Modules +--- +
{{JSSidebar("Guía de JavaScript")}}{{Previous("Web/JavaScript/Guide/Meta_programming")}}
+ +

Esta guía te brinda todo lo que necesitas para comenzar con la sintaxis de los módulos JavaScript.

+ +

Un antecedente sobre módulos

+ +

Los programas JavaScript comenzaron siendo bastante pequeños — la mayor parte de su uso en los primeros días era para realizar tareas de scripting aisladas, proporcionando un poco de interactividad a tus páginas web donde fuera necesario, por lo que generalmente no se necesitaban grandes scripts. Avancemos unos años y ahora tenemos aplicaciones completas que se ejecutan en navegadores con mucho JavaScript, JavaScript ahora se usa en otros contextos (Node.js, por ejemplo).

+ +

Por lo tanto, en los últimos años se ha comenzado a pensar en proporcionar mecanismos para dividir programas JavaScript en módulos separados que se puedan importar cuando sea necesario. Node.js ha tenido esta capacidad durante mucho tiempo, y hay una serie de bibliotecas y marcos de JavaScript que permiten el uso de módulos (por ejemplo, CommonJS y AMD otros basados en sistemas de módulos como RequireJS, y recientemente Webpack y Babel).

+ +

La buena noticia es que los navegadores modernos han comenzado a admitir la funcionalidad de los módulos de forma nativa, y de esto se trata este artículo. Esto solo puede ser algo bueno — los navegadores pueden optimizar la carga de módulos, haciéndolo más eficiente que tener que usar una biblioteca y hacer todo ese procesamiento adicional de lado del cliente, ahorrando viajes de ida y vuelta adicionales.

+ +

Soporte del navegador

+ +

El uso de módulos JavaScript nativos depende de las declaraciones {{jsxref("Statements/import", "import")}} y {{jsxref("Statements/export", "export")}}; estas son compatibles con los navegadores de la siguiente manera:

+ +

import

+ +

{{Compat("javascript.statements.import")}}

+ +

export

+ +

{{Compat("javascript.statements.export")}}

+ +

Introducción — un ejemplo

+ +

Para demostrar el uso de módulos, hemos creado un sencillo conjunto de ejemplos que puedes encontrar en GitHub. Estos ejemplos demuestran un sencillo conjunto de módulos que crean un elemento <canvas> en una página web, y luego dibujan (y reportan información sobre) diferentes formas en el lienzo.

+ +

Estos son bastante triviales, pero se han mantenido deliberadamente simples para demostrar los módulos con claridad.

+ +
+

Nota: Si deseas descargar los ejemplos y ejecutarlos localmente, deberás ejecutarlos a través de un servidor web local.

+
+ +

Estructura básica de los ejemplos

+ +

En nuestro primer ejemplo (ve basic-modules) tenemos la siguiente estructura de archivos:

+ +
index.html
+main.js
+modules/
+    canvas.js
+    square.js
+ +
+

Nota: Todos los ejemplos de esta guía básicamente tienen la misma estructura; lo anterior debería empezar a resultarte bastante familiar.

+
+ +

Los dos módulos del directorio modules se describen a continuación:

+ + + +

Reflexión — .mjs versus .js

+ +

A través de este artículo, usaremos extensiones .js para nuestros archivos de módulo, pero en otros recursos, puedes ver que en su lugar se usa la extensión .mjs. La documentación de V8 recomienda esto, por ejemplo. Las razones dadas son:

+ + + +

Sin embargo, decidimos seguir usando .js, al menos por el momento. Para que los módulos funcionen correctamente en un navegador, debes asegurarte de que tu servidor los esté sirviendo con un encabezado Content-Type que contenga un tipo MIME de JavaScript como text/javascript. Si no lo haces, obtendrás un estricto error de verificación de tipo MIME como "El servidor respondió con un tipo MIME que no es JavaScript" y el navegador no ejecutará tu JavaScript. La mayoría de los servidores ya configuran el tipo correcto para archivos .js, pero todavía no para archivos .mjs. Los servidores que ya sirven archivos .mjs incluyen GitHub Pages y http-server para Node.js.

+ +

Esto está bien si ya estás utilizando un entorno de este tipo, o si no, pero sabes lo que estás haciendo y tiene acceso (es decir, puedes configurar tu servidor para establecer el Content-Type para archivos .mjs). Sin embargo, podría causar confusión si no controlas el servidor desde el que estás sirviendo archivos, o si estás publicando archivos para uso público, como lo hacemos aquí.

+ +

Por motivos de aprendizaje y portabilidad, decidimos mantenernos en .js.

+ +

Si realmente valoras la claridad de usar .mjs para módulos en lugar de usar .js para archivos JavaScript "normales", pero no quieres encontrarte con el problema descrito anteriormente, siempre puedes usar .mjs durante el desarrollo y convertirlos a .js durante tu paso de compilación.

+ +

También vale la pena señalar que:

+ + + +

Exportar características del módulo

+ +

Lo primero que debes hacer para acceder a las funciones del módulo es exportarlas. Esto se hace usando la declaración {{jsxref("Statements/export", "export")}}.

+ +

La forma más sencilla de utilizarla es colocarla delante de cualquier elemento que desees exportar fuera del módulo, por ejemplo:

+ +
export const name = 'square';
+
+export function draw(ctx, length, x, y, color) {
+  ctx.fillStyle = color;
+  ctx.fillRect(x, y, length, length);
+
+  return {
+    length: length,
+    x: x,
+    y: y,
+    color: color
+  };
+}
+ +

Puedes exportar funciones, var, let, const y, como veremos más adelante — clases. Deben ser elementos de nivel superior; no puedes usar export dentro de una función, por ejemplo.

+ +

Una forma más conveniente de exportar todos los elementos que deseas exportar es usar una sola declaración de exportación al final de tu archivo de módulo, seguida de una lista separada por comas de las características que deseas exportar entre llaves. Por ejemplo:

+ +
export { name, draw, reportArea, reportPerimeter };
+ +

Importación de características en tu script

+ +

Una vez que hayas declarado las funciones y características que deseas exportar de tu módulo, debes importarlas en tu script para poder usarlas. La forma más sencilla de hacerlo es la siguiente:

+ +
import { name, draw, reportArea, reportPerimeter } from './modules/square.js';
+ +

Utiliza la declaración {{jsxref("Statements/import", "import")}}, seguida de una lista separada por comas de las características que deseas importar entre llaves, seguida de la palabra clave from, seguida de la ruta al archivo del módulo — una ruta relativa a la raíz del sitio, que para nuestro ejemplo de basic-modules sería /js-examples/modules/basic-modules.

+ +

Sin embargo, hemos escrito la ruta de manera un poco diferente — estamos usando la sintaxis de punto (.) para significar "la ubicación actual", seguida de la ruta más allá del archivo que estamos tratando de encontrar. Esto es mucho mejor que escribir la ruta relativa completa cada vez, ya que es más corta y hace que la URL sea portátil — el ejemplo seguirá funcionando si lo mueve a una ubicación diferente en la jerarquía del sitio.

+ +

Así por ejemplo:

+ +
/js-examples/modules/basic-modules/modules/square.js
+ +

se convierte en

+ +
./modules/square.js
+ +

Puedes ver estas líneas en acción en main.js.

+ +
+

Nota: En algunos sistemas de módulos, puedes omitir la extensión del archivo y el punto (por ejemplo, '/modules/square'). Esto no funciona en módulos de JavaScript nativos.

+
+ +

Una vez que hayas importado las funciones a tu script, las puedes usar tal como se definieron dentro del mismo archivo. Lo siguiente se encuentra en main.js, debajo de las líneas import:

+ +
let myCanvas = create('myCanvas', document.body, 480, 320);
+let reportList = createReportList(myCanvas.id);
+
+let square1 = draw(myCanvas.ctx, 50, 50, 100, 'blue');
+reportArea(square1.length, reportList);
+reportPerimeter(square1.length, reportList);
+
+ +
+

Nota: Aunque las funciones importadas están disponibles en el archivo, son vistas de solo lectura de la función que se exportó. No puedes cambiar la variable que se importó, pero aún puedes modificar propiedades similares a const. Además, estas características se importan como enlaces activos, lo cual significa que pueden cambiar de valor incluso si no puedes modificar el enlace a diferencia de const.

+
+ +

Aplicar el módulo a tu HTML

+ +

Ahora solo necesitamos aplicar el módulo main.js a nuestra página HTML. Esto es muy similar a cómo aplicamos un script normal a una página, con algunas diferencias notables.

+ +

En primer lugar, debes incluir type="module" en el elemento <script>, para declarar este script como un módulo. Para importar el script main.js, usamos esto:

+ +
<script type="module" src="main.js"></script>
+ +

También puedes incrustar el script del módulo directamente en el archivo HTML colocando el código JavaScript dentro del cuerpo del elemento <script>:

+ +
<script type="module">
+  /* El código del módulo JavaScript va aquí */
+</script>
+ +

El script en el que importas las características del módulo básicamente actúa como el módulo de nivel superior. Si lo omite, Firefox, por ejemplo, te da un error de "SyntaxError: Las declaraciones import solo pueden aparecer en el nivel superior de un módulo".

+ +

Solo puede usar instrucciones import y export dentro de los módulos, no en scripts normales.

+ +

Otras diferencias entre módulos y scripts estándar

+ + + +

Exportaciones predeterminadas vs. exportaciones con nombre

+ +

La funcionalidad que hemos exportado hasta ahora se compone de exportaciones con nombre — cada elemento (ya sea una función, const, etc.) se ha denominado por su nombre en export, y ese nombre también se ha utilizado para referirse a él en import.

+ +

También hay un tipo de exportación llamado exportación predeterminada — está diseñado para facilitar que un módulo proporcione una función predeterminada, y también ayuda a los módulos JavaScript a interoperar con los sistemas de módulos CommonJS y AMD existentes (como se explica muy bien en ES6 en profundidad: módulos de Jason Orendorff; busca "Exportaciones predeterminadas").

+ +

Veamos un ejemplo mientras explicamos cómo funciona. En nuestros ↑basic-modules↓ square.js puedes encontrar una función llamada randomSquare() que crea un cuadrado con un color, tamaño y posición aleatorios. Lo queremos exportar como nuestro predeterminado, por lo que en la parte inferior del archivo escribimos esto:

+ +
export default randomSquare;
+ +

Ten en cuenta la falta de llaves.

+ +

En su lugar, podríamos anteponer export default a la función y definirla como una función anónima, así:

+ +
export default function(ctx) {
+  ...
+}
+ +

En nuestro archivo main.js, importamos la función predeterminada usando esta línea:

+ +
import randomSquare from './modules/square.js';
+ +

Una vez más, ten en cuenta la falta de llaves. Esto se debe a que solo se permite una exportación predeterminada por módulo, y sabemos que randomSquare lo es. La línea anterior es básicamente una abreviatura de:

+ +
import {default as randomSquare} from './modules/square.js';
+ +
+

Nota: La sintaxis as para cambiar el nombre de los elementos exportados se explica a continuación en la sección Renombrar importaciones y exportaciones.

+
+ +

Evitar conflictos de nombres

+ +

Hasta ahora, nuestros módulos de dibujo de formas en el lienzo parecen estar funcionando bien. Pero, ¿qué pasa si intentamos agregar un módulo que se ocupa de dibujar otra forma, como un círculo o un triángulo? Estas formas probablemente también tendrían funciones asociadas como draw(), reportArea(), etc.; si intentáramos importar diferentes funciones del mismo nombre en el mismo archivo de módulo de nivel superior, terminaríamos con conflictos y errores.

+ +

Afortunadamente, hay varias formas de evitar esto. Los veremos en las siguientes secciones.

+ +

Renombrar importaciones y exportaciones

+ +

Dentro de las llaves de tu instrucciones import y export, puedes usar la palabra clave as junto con un nuevo nombre de función, para cambiar el nombre de identificación que utilizará una función dentro del módulo de nivel superior.

+ +

Entonces, por ejemplo, ambos de los siguientes harían el mismo trabajo, aunque de una manera ligeramente diferente:

+ +
// dentro de module.js
+export {
+  function1 as newFunctionName,
+  function2 as anotherNewFunctionName
+};
+
+// dentro de main.js
+import {newFunctionName, anotherNewFunctionName} from './modules/module.js';
+ +
// dentro de module.js
+export {function1, function2};
+
+// dentro de main.js
+import {function1 as newFunctionName,
+         function2 as anotherNewFunctionName } from './modules/module.js';
+ +

Veamos un ejemplo real. En nuestro directorio renaming, verás el mismo sistema de módulos que en el ejemplo anterior, excepto que hemos agregado los módulos circle.js y triangle.js para dibujar e informar sobre círculos y triángulos.

+ +

Dentro de cada uno de estos módulos, tenemos características con los mismos nombres que se exportan y, por lo tanto, cada una tiene la misma instrucción export en la parte inferior:

+ +
export { name, draw, reportArea, reportPerimeter };
+ +

Al importarlos a main.js, si intentamos usar esto:

+ +
import { name, draw, reportArea, reportPerimeter } from './modules/square.js';
+import { name, draw, reportArea, reportPerimeter } from './modules/circle.js';
+import { name, draw, reportArea, reportPerimeter } from './modules/triangle.js';
+ +

El navegador arrojará un error como "SyntaxError: redeclaración de nombre import" (Firefox).

+ +

En su lugar, necesitamos cambiar el nombre de las importaciones para que sean únicas:

+ +
import { name as squareName,
+         draw as drawSquare,
+         reportArea as reportSquareArea,
+         reportPerimeter as reportSquarePerimeter } from './modules/square.js';
+
+import { name as circleName,
+         draw as drawCircle,
+         reportArea as reportCircleArea,
+         reportPerimeter as reportCirclePerimeter } from './modules/circle.js';
+
+import { name as triangleName,
+        draw as drawTriangle,
+        reportArea as reportTriangleArea,
+        reportPerimeter as reportTrianglePerimeter } from './modules/triangle.js';
+ +

Ten en cuenta que podrías resolver el problema en los archivos del módulo, p. ej.

+ +
// en square.js
+export {name as squareName,
+         draw as drawSquare,
+         reportArea as reportSquareArea,
+         reportPerimeter as reportSquarePerimeter };
+ +
// en main.js
+import {squareName, drawSquare, reportSquareArea, reportSquarePerimeter} from './modules/square.js';
+ +

Y funcionaría igual. El estilo que uses depende de ti, sin embargo, podría decirse que tiene más sentido dejar el código de tu módulo tal cual y realizar los cambios en las importaciones. Esto tiene sentido especialmente cuando estás importando desde módulos de terceros sobre los que no tienes ningún control.

+ +

Crear un objeto module

+ +

El método anterior funciona bien, pero es un poco complicado y largo. Una solución aún mejor es importar las características de cada módulo dentro de un objeto module. La siguiente forma de sintaxis hace eso:

+ +
import * as Module from './modules/module.js';
+ +

Esto toma todas las exportaciones disponibles dentro de module.js y las hace disponibles como miembros de un objeto Module, dándole efectivamente su propio espacio de nombres. Así por ejemplo:

+ +
Module.function1()
+Module.function2()
+etc.
+ +

De nuevo, veamos un ejemplo real. Si vas a nuestro directorio module-objects, verás el mismo ejemplo nuevamente, pero reescrito para aprovechar esta nueva sintaxis. En los módulos, las exportaciones están todas en la siguiente forma simple:

+ +
export { name, draw, reportArea, reportPerimeter };
+ +

Las importaciones, por otro lado, se ven así:

+ +
import * as Canvas from './modules/canvas.js';
+
+import * as Square from './modules/square.js';
+import * as Circle from './modules/circle.js';
+import * as Triangle from './modules/triangle.js';
+ +

En cada caso, ahora puedes acceder a las importaciones del módulo debajo del nombre del objeto especificado, por ejemplo:

+ +
let square1 = Square.draw(myCanvas.ctx, 50, 50, 100, 'blue');
+Square.reportArea(square1.length, reportList);
+Square.reportPerimeter(square1.length, reportList);
+ +

Por lo tanto, ahora puedes escribir el código de la misma manera que antes (siempre que incluyas los nombres de los objetos donde sea necesario), y las importaciones son mucho más ordenadas.

+ +

Módulos y clases

+ +

Como dijimos antes, también puedes exportar e importar clases; esta es otra opción para evitar conflictos en tu código, y especialmente es útil si ya tienes el código de tu módulo escrito en un estilo orientado a objetos.

+ +

Puedes ver un ejemplo de nuestro módulo de dibujo de formas reescrito con clases ES en nuestro directorio classes. Como ejemplo, el archivo square.js ahora contiene toda su funcionalidad en una sola clase:

+ +
class Square {
+  constructor(ctx, listId, length, x, y, color) {
+    ...
+  }
+
+  draw() {
+    ...
+  }
+
+  ...
+}
+ +

que luego exportamos:

+ +
export { Square };
+ +

En main.js, lo importamos así:

+ +
import { Square } from './modules/square.js';
+ +

Y luego usas la clase para dibujar nuestro cuadrado:

+ +
let square1 = new Square(myCanvas.ctx, myCanvas.listId, 50, 50, 100, 'blue');
+square1.draw();
+square1.reportArea();
+square1.reportPerimeter();
+ +

Carga estática de módulos

+ +

Habrá ocasiones en las que querrás agregar módulos juntos. Es posible que tengas varios niveles de dependencias, donde desees simplificar las cosas, combinando varios submódulos en un módulo principal. Esto es posible utilizando la sintaxis de exportación de los siguientes formas en el módulo principal:

+ +
export * from 'x.js'
+export { name } from 'x.js'
+ +

Para ver un ejemplo, ve nuestro directorio module-aggregation. En este ejemplo (basado en nuestro ejemplo de clases anterior) tenemos un módulo adicional llamado shapes.js, que reúne toda la funcionalidad de circle.js, square.js y triangle.js. También hemos movido nuestros submódulos dentro de un subdirectorio dentro del directorio modules llamado shapes. Entonces, la estructura del módulo en este ejemplo es:

+ +
modules/
+  canvas.js
+  shapes.js
+  shapes/
+    circle.js
+    square.js
+    triangle.js
+ +

En cada uno de los submódulos, la exportación es de la misma forma, p. ej.

+ +
export { Square };
+ +

Luego viene la parte de agregación. Dentro de shapes.js, incluimos las siguientes líneas:

+ +
export { Square } from './shapes/square.js';
+export { Triangle } from './shapes/triangle.js';
+export { Circle } from './shapes/circle.js';
+ +

Estas toman las exportaciones de los submódulos individuales y las ponen a disposición de manera efectiva desde el módulo shapes.js.

+ +
+

Nota: Las exportaciones a las que se hace referencia en shapes.js básicamente se redirigen a través del archivo y realmente no existen allí, por lo que no podrás escribir ningún código relacionado útil dentro del mismo archivo.

+
+ +

Entonces, ahora en el archivo main.js, podemos obtener acceso a las tres clases de módulos reemplazando

+ +
import { Square } from './modules/square.js';
+import { Circle } from './modules/circle.js';
+import { Triangle } from './modules/triangle.js';
+ +

con la siguiente única línea:

+ +
import { Square, Circle, Triangle } from './modules/shapes.js';
+ +

Carga dinámica de módulos

+ +

La parte más nueva de la funcionalidad de los módulos de JavaScript que estará disponible en los navegadores es la carga dinámica de módulos. Esto te permite cargar módulos dinámicamente solo cuando son necesarios, en lugar de tener que cargar todo por adelantado. Esto tiene algunas obvias ventajas de rendimiento; sigue leyendo y veamos cómo funciona.

+ +

Esta nueva funcionalidad te permite llamar a {{jsxref("Statements/import", "import()", "#Importaciones_Dinámicas")}} como una función, pasándole la ruta al módulo como parámetro. Devuelve una {{jsxref("Promise")}}, que se cumple con un objeto module (consulta Crear un objeto module) que te da acceso a las exportaciones de ese objeto, p. ej.

+ +
import('./modules/myModule.js')
+  .then((module) => {
+    // Haz algo con el módulo.
+  });
+ +

Veamos un ejemplo. En el directorio dynamic-module-import tenemos otro ejemplo basado en nuestro ejemplo de clases. Esta vez, sin embargo, no dibujamos nada en el lienzo cuando se carga el ejemplo. En su lugar, incluimos tres botones — "Círculo", "Cuadrado" y "Triángulo" — que, cuando se presionan, cargan dinámicamente el módulo requerido y luego lo usan para dibujar la forma asociada.

+ +

En este ejemplo, solo hemos realizado cambios en nuestros archivos index.html y main.js — el módulo exports sigue siendo el mismo que antes.

+ +

En main.js hemos tomado una referencia a cada botón usando una llamada a Document.querySelector(), por ejemplo:

+ +
let squareBtn = document.querySelector('.square');
+ +

Luego adjuntamos un escucha de eventos a cada botón para que cuando se presione, el módulo relevante se cargue dinámicamente y se use para dibujar la forma:

+ +
squareBtn.addEventListener('click', () => {
+  import('./modules/square.js').then((Module) => {
+    let square1 = new Module.Square(myCanvas.ctx, myCanvas.listId, 50, 50, 100, 'blue');
+    square1.draw();
+    square1.reportArea();
+    square1.reportPerimeter();
+  })
+});
+ +

Ten en cuenta que, debido a que el cumplimiento de la promesa devuelve un objeto module, la clase se convierte en una subfunción del objeto, por lo que ahora necesitamos acceder al constructor prefijado con Module., p. ej. Module.Square(...).

+ +

Solución de problemas

+ +

Aquí hay algunos consejos que te pueden ayudar si tienes problemas para hacer que tus módulos funcionen. ¡No dude en agregarlos a la lista si descubres más!

+ + + +

Ve también

+ + + +

{{Previous("Web/JavaScript/Guide/Meta_programming")}}

diff --git "a/files/es/web/javascript/guide/m\303\263dulos/index.html" "b/files/es/web/javascript/guide/m\303\263dulos/index.html" deleted file mode 100644 index eacc6835f6..0000000000 --- "a/files/es/web/javascript/guide/m\303\263dulos/index.html" +++ /dev/null @@ -1,458 +0,0 @@ ---- -title: Módulos JavaScript -slug: Web/JavaScript/Guide/Módulos -tags: - - Guía - - JavaScript - - Modules - - Módulos - - export - - import -translation_of: Web/JavaScript/Guide/Modules ---- -
{{JSSidebar("Guía de JavaScript")}}{{Previous("Web/JavaScript/Guide/Meta_programming")}}
- -

Esta guía te brinda todo lo que necesitas para comenzar con la sintaxis de los módulos JavaScript.

- -

Un antecedente sobre módulos

- -

Los programas JavaScript comenzaron siendo bastante pequeños — la mayor parte de su uso en los primeros días era para realizar tareas de scripting aisladas, proporcionando un poco de interactividad a tus páginas web donde fuera necesario, por lo que generalmente no se necesitaban grandes scripts. Avancemos unos años y ahora tenemos aplicaciones completas que se ejecutan en navegadores con mucho JavaScript, JavaScript ahora se usa en otros contextos (Node.js, por ejemplo).

- -

Por lo tanto, en los últimos años se ha comenzado a pensar en proporcionar mecanismos para dividir programas JavaScript en módulos separados que se puedan importar cuando sea necesario. Node.js ha tenido esta capacidad durante mucho tiempo, y hay una serie de bibliotecas y marcos de JavaScript que permiten el uso de módulos (por ejemplo, CommonJS y AMD otros basados en sistemas de módulos como RequireJS, y recientemente Webpack y Babel).

- -

La buena noticia es que los navegadores modernos han comenzado a admitir la funcionalidad de los módulos de forma nativa, y de esto se trata este artículo. Esto solo puede ser algo bueno — los navegadores pueden optimizar la carga de módulos, haciéndolo más eficiente que tener que usar una biblioteca y hacer todo ese procesamiento adicional de lado del cliente, ahorrando viajes de ida y vuelta adicionales.

- -

Soporte del navegador

- -

El uso de módulos JavaScript nativos depende de las declaraciones {{jsxref("Statements/import", "import")}} y {{jsxref("Statements/export", "export")}}; estas son compatibles con los navegadores de la siguiente manera:

- -

import

- -

{{Compat("javascript.statements.import")}}

- -

export

- -

{{Compat("javascript.statements.export")}}

- -

Introducción — un ejemplo

- -

Para demostrar el uso de módulos, hemos creado un sencillo conjunto de ejemplos que puedes encontrar en GitHub. Estos ejemplos demuestran un sencillo conjunto de módulos que crean un elemento <canvas> en una página web, y luego dibujan (y reportan información sobre) diferentes formas en el lienzo.

- -

Estos son bastante triviales, pero se han mantenido deliberadamente simples para demostrar los módulos con claridad.

- -
-

Nota: Si deseas descargar los ejemplos y ejecutarlos localmente, deberás ejecutarlos a través de un servidor web local.

-
- -

Estructura básica de los ejemplos

- -

En nuestro primer ejemplo (ve basic-modules) tenemos la siguiente estructura de archivos:

- -
index.html
-main.js
-modules/
-    canvas.js
-    square.js
- -
-

Nota: Todos los ejemplos de esta guía básicamente tienen la misma estructura; lo anterior debería empezar a resultarte bastante familiar.

-
- -

Los dos módulos del directorio modules se describen a continuación:

- - - -

Reflexión — .mjs versus .js

- -

A través de este artículo, usaremos extensiones .js para nuestros archivos de módulo, pero en otros recursos, puedes ver que en su lugar se usa la extensión .mjs. La documentación de V8 recomienda esto, por ejemplo. Las razones dadas son:

- - - -

Sin embargo, decidimos seguir usando .js, al menos por el momento. Para que los módulos funcionen correctamente en un navegador, debes asegurarte de que tu servidor los esté sirviendo con un encabezado Content-Type que contenga un tipo MIME de JavaScript como text/javascript. Si no lo haces, obtendrás un estricto error de verificación de tipo MIME como "El servidor respondió con un tipo MIME que no es JavaScript" y el navegador no ejecutará tu JavaScript. La mayoría de los servidores ya configuran el tipo correcto para archivos .js, pero todavía no para archivos .mjs. Los servidores que ya sirven archivos .mjs incluyen GitHub Pages y http-server para Node.js.

- -

Esto está bien si ya estás utilizando un entorno de este tipo, o si no, pero sabes lo que estás haciendo y tiene acceso (es decir, puedes configurar tu servidor para establecer el Content-Type para archivos .mjs). Sin embargo, podría causar confusión si no controlas el servidor desde el que estás sirviendo archivos, o si estás publicando archivos para uso público, como lo hacemos aquí.

- -

Por motivos de aprendizaje y portabilidad, decidimos mantenernos en .js.

- -

Si realmente valoras la claridad de usar .mjs para módulos en lugar de usar .js para archivos JavaScript "normales", pero no quieres encontrarte con el problema descrito anteriormente, siempre puedes usar .mjs durante el desarrollo y convertirlos a .js durante tu paso de compilación.

- -

También vale la pena señalar que:

- - - -

Exportar características del módulo

- -

Lo primero que debes hacer para acceder a las funciones del módulo es exportarlas. Esto se hace usando la declaración {{jsxref("Statements/export", "export")}}.

- -

La forma más sencilla de utilizarla es colocarla delante de cualquier elemento que desees exportar fuera del módulo, por ejemplo:

- -
export const name = 'square';
-
-export function draw(ctx, length, x, y, color) {
-  ctx.fillStyle = color;
-  ctx.fillRect(x, y, length, length);
-
-  return {
-    length: length,
-    x: x,
-    y: y,
-    color: color
-  };
-}
- -

Puedes exportar funciones, var, let, const y, como veremos más adelante — clases. Deben ser elementos de nivel superior; no puedes usar export dentro de una función, por ejemplo.

- -

Una forma más conveniente de exportar todos los elementos que deseas exportar es usar una sola declaración de exportación al final de tu archivo de módulo, seguida de una lista separada por comas de las características que deseas exportar entre llaves. Por ejemplo:

- -
export { name, draw, reportArea, reportPerimeter };
- -

Importación de características en tu script

- -

Una vez que hayas declarado las funciones y características que deseas exportar de tu módulo, debes importarlas en tu script para poder usarlas. La forma más sencilla de hacerlo es la siguiente:

- -
import { name, draw, reportArea, reportPerimeter } from './modules/square.js';
- -

Utiliza la declaración {{jsxref("Statements/import", "import")}}, seguida de una lista separada por comas de las características que deseas importar entre llaves, seguida de la palabra clave from, seguida de la ruta al archivo del módulo — una ruta relativa a la raíz del sitio, que para nuestro ejemplo de basic-modules sería /js-examples/modules/basic-modules.

- -

Sin embargo, hemos escrito la ruta de manera un poco diferente — estamos usando la sintaxis de punto (.) para significar "la ubicación actual", seguida de la ruta más allá del archivo que estamos tratando de encontrar. Esto es mucho mejor que escribir la ruta relativa completa cada vez, ya que es más corta y hace que la URL sea portátil — el ejemplo seguirá funcionando si lo mueve a una ubicación diferente en la jerarquía del sitio.

- -

Así por ejemplo:

- -
/js-examples/modules/basic-modules/modules/square.js
- -

se convierte en

- -
./modules/square.js
- -

Puedes ver estas líneas en acción en main.js.

- -
-

Nota: En algunos sistemas de módulos, puedes omitir la extensión del archivo y el punto (por ejemplo, '/modules/square'). Esto no funciona en módulos de JavaScript nativos.

-
- -

Una vez que hayas importado las funciones a tu script, las puedes usar tal como se definieron dentro del mismo archivo. Lo siguiente se encuentra en main.js, debajo de las líneas import:

- -
let myCanvas = create('myCanvas', document.body, 480, 320);
-let reportList = createReportList(myCanvas.id);
-
-let square1 = draw(myCanvas.ctx, 50, 50, 100, 'blue');
-reportArea(square1.length, reportList);
-reportPerimeter(square1.length, reportList);
-
- -
-

Nota: Aunque las funciones importadas están disponibles en el archivo, son vistas de solo lectura de la función que se exportó. No puedes cambiar la variable que se importó, pero aún puedes modificar propiedades similares a const. Además, estas características se importan como enlaces activos, lo cual significa que pueden cambiar de valor incluso si no puedes modificar el enlace a diferencia de const.

-
- -

Aplicar el módulo a tu HTML

- -

Ahora solo necesitamos aplicar el módulo main.js a nuestra página HTML. Esto es muy similar a cómo aplicamos un script normal a una página, con algunas diferencias notables.

- -

En primer lugar, debes incluir type="module" en el elemento <script>, para declarar este script como un módulo. Para importar el script main.js, usamos esto:

- -
<script type="module" src="main.js"></script>
- -

También puedes incrustar el script del módulo directamente en el archivo HTML colocando el código JavaScript dentro del cuerpo del elemento <script>:

- -
<script type="module">
-  /* El código del módulo JavaScript va aquí */
-</script>
- -

El script en el que importas las características del módulo básicamente actúa como el módulo de nivel superior. Si lo omite, Firefox, por ejemplo, te da un error de "SyntaxError: Las declaraciones import solo pueden aparecer en el nivel superior de un módulo".

- -

Solo puede usar instrucciones import y export dentro de los módulos, no en scripts normales.

- -

Otras diferencias entre módulos y scripts estándar

- - - -

Exportaciones predeterminadas vs. exportaciones con nombre

- -

La funcionalidad que hemos exportado hasta ahora se compone de exportaciones con nombre — cada elemento (ya sea una función, const, etc.) se ha denominado por su nombre en export, y ese nombre también se ha utilizado para referirse a él en import.

- -

También hay un tipo de exportación llamado exportación predeterminada — está diseñado para facilitar que un módulo proporcione una función predeterminada, y también ayuda a los módulos JavaScript a interoperar con los sistemas de módulos CommonJS y AMD existentes (como se explica muy bien en ES6 en profundidad: módulos de Jason Orendorff; busca "Exportaciones predeterminadas").

- -

Veamos un ejemplo mientras explicamos cómo funciona. En nuestros ↑basic-modules↓ square.js puedes encontrar una función llamada randomSquare() que crea un cuadrado con un color, tamaño y posición aleatorios. Lo queremos exportar como nuestro predeterminado, por lo que en la parte inferior del archivo escribimos esto:

- -
export default randomSquare;
- -

Ten en cuenta la falta de llaves.

- -

En su lugar, podríamos anteponer export default a la función y definirla como una función anónima, así:

- -
export default function(ctx) {
-  ...
-}
- -

En nuestro archivo main.js, importamos la función predeterminada usando esta línea:

- -
import randomSquare from './modules/square.js';
- -

Una vez más, ten en cuenta la falta de llaves. Esto se debe a que solo se permite una exportación predeterminada por módulo, y sabemos que randomSquare lo es. La línea anterior es básicamente una abreviatura de:

- -
import {default as randomSquare} from './modules/square.js';
- -
-

Nota: La sintaxis as para cambiar el nombre de los elementos exportados se explica a continuación en la sección Renombrar importaciones y exportaciones.

-
- -

Evitar conflictos de nombres

- -

Hasta ahora, nuestros módulos de dibujo de formas en el lienzo parecen estar funcionando bien. Pero, ¿qué pasa si intentamos agregar un módulo que se ocupa de dibujar otra forma, como un círculo o un triángulo? Estas formas probablemente también tendrían funciones asociadas como draw(), reportArea(), etc.; si intentáramos importar diferentes funciones del mismo nombre en el mismo archivo de módulo de nivel superior, terminaríamos con conflictos y errores.

- -

Afortunadamente, hay varias formas de evitar esto. Los veremos en las siguientes secciones.

- -

Renombrar importaciones y exportaciones

- -

Dentro de las llaves de tu instrucciones import y export, puedes usar la palabra clave as junto con un nuevo nombre de función, para cambiar el nombre de identificación que utilizará una función dentro del módulo de nivel superior.

- -

Entonces, por ejemplo, ambos de los siguientes harían el mismo trabajo, aunque de una manera ligeramente diferente:

- -
// dentro de module.js
-export {
-  function1 as newFunctionName,
-  function2 as anotherNewFunctionName
-};
-
-// dentro de main.js
-import {newFunctionName, anotherNewFunctionName} from './modules/module.js';
- -
// dentro de module.js
-export {function1, function2};
-
-// dentro de main.js
-import {function1 as newFunctionName,
-         function2 as anotherNewFunctionName } from './modules/module.js';
- -

Veamos un ejemplo real. En nuestro directorio renaming, verás el mismo sistema de módulos que en el ejemplo anterior, excepto que hemos agregado los módulos circle.js y triangle.js para dibujar e informar sobre círculos y triángulos.

- -

Dentro de cada uno de estos módulos, tenemos características con los mismos nombres que se exportan y, por lo tanto, cada una tiene la misma instrucción export en la parte inferior:

- -
export { name, draw, reportArea, reportPerimeter };
- -

Al importarlos a main.js, si intentamos usar esto:

- -
import { name, draw, reportArea, reportPerimeter } from './modules/square.js';
-import { name, draw, reportArea, reportPerimeter } from './modules/circle.js';
-import { name, draw, reportArea, reportPerimeter } from './modules/triangle.js';
- -

El navegador arrojará un error como "SyntaxError: redeclaración de nombre import" (Firefox).

- -

En su lugar, necesitamos cambiar el nombre de las importaciones para que sean únicas:

- -
import { name as squareName,
-         draw as drawSquare,
-         reportArea as reportSquareArea,
-         reportPerimeter as reportSquarePerimeter } from './modules/square.js';
-
-import { name as circleName,
-         draw as drawCircle,
-         reportArea as reportCircleArea,
-         reportPerimeter as reportCirclePerimeter } from './modules/circle.js';
-
-import { name as triangleName,
-        draw as drawTriangle,
-        reportArea as reportTriangleArea,
-        reportPerimeter as reportTrianglePerimeter } from './modules/triangle.js';
- -

Ten en cuenta que podrías resolver el problema en los archivos del módulo, p. ej.

- -
// en square.js
-export {name as squareName,
-         draw as drawSquare,
-         reportArea as reportSquareArea,
-         reportPerimeter as reportSquarePerimeter };
- -
// en main.js
-import {squareName, drawSquare, reportSquareArea, reportSquarePerimeter} from './modules/square.js';
- -

Y funcionaría igual. El estilo que uses depende de ti, sin embargo, podría decirse que tiene más sentido dejar el código de tu módulo tal cual y realizar los cambios en las importaciones. Esto tiene sentido especialmente cuando estás importando desde módulos de terceros sobre los que no tienes ningún control.

- -

Crear un objeto module

- -

El método anterior funciona bien, pero es un poco complicado y largo. Una solución aún mejor es importar las características de cada módulo dentro de un objeto module. La siguiente forma de sintaxis hace eso:

- -
import * as Module from './modules/module.js';
- -

Esto toma todas las exportaciones disponibles dentro de module.js y las hace disponibles como miembros de un objeto Module, dándole efectivamente su propio espacio de nombres. Así por ejemplo:

- -
Module.function1()
-Module.function2()
-etc.
- -

De nuevo, veamos un ejemplo real. Si vas a nuestro directorio module-objects, verás el mismo ejemplo nuevamente, pero reescrito para aprovechar esta nueva sintaxis. En los módulos, las exportaciones están todas en la siguiente forma simple:

- -
export { name, draw, reportArea, reportPerimeter };
- -

Las importaciones, por otro lado, se ven así:

- -
import * as Canvas from './modules/canvas.js';
-
-import * as Square from './modules/square.js';
-import * as Circle from './modules/circle.js';
-import * as Triangle from './modules/triangle.js';
- -

En cada caso, ahora puedes acceder a las importaciones del módulo debajo del nombre del objeto especificado, por ejemplo:

- -
let square1 = Square.draw(myCanvas.ctx, 50, 50, 100, 'blue');
-Square.reportArea(square1.length, reportList);
-Square.reportPerimeter(square1.length, reportList);
- -

Por lo tanto, ahora puedes escribir el código de la misma manera que antes (siempre que incluyas los nombres de los objetos donde sea necesario), y las importaciones son mucho más ordenadas.

- -

Módulos y clases

- -

Como dijimos antes, también puedes exportar e importar clases; esta es otra opción para evitar conflictos en tu código, y especialmente es útil si ya tienes el código de tu módulo escrito en un estilo orientado a objetos.

- -

Puedes ver un ejemplo de nuestro módulo de dibujo de formas reescrito con clases ES en nuestro directorio classes. Como ejemplo, el archivo square.js ahora contiene toda su funcionalidad en una sola clase:

- -
class Square {
-  constructor(ctx, listId, length, x, y, color) {
-    ...
-  }
-
-  draw() {
-    ...
-  }
-
-  ...
-}
- -

que luego exportamos:

- -
export { Square };
- -

En main.js, lo importamos así:

- -
import { Square } from './modules/square.js';
- -

Y luego usas la clase para dibujar nuestro cuadrado:

- -
let square1 = new Square(myCanvas.ctx, myCanvas.listId, 50, 50, 100, 'blue');
-square1.draw();
-square1.reportArea();
-square1.reportPerimeter();
- -

Carga estática de módulos

- -

Habrá ocasiones en las que querrás agregar módulos juntos. Es posible que tengas varios niveles de dependencias, donde desees simplificar las cosas, combinando varios submódulos en un módulo principal. Esto es posible utilizando la sintaxis de exportación de los siguientes formas en el módulo principal:

- -
export * from 'x.js'
-export { name } from 'x.js'
- -

Para ver un ejemplo, ve nuestro directorio module-aggregation. En este ejemplo (basado en nuestro ejemplo de clases anterior) tenemos un módulo adicional llamado shapes.js, que reúne toda la funcionalidad de circle.js, square.js y triangle.js. También hemos movido nuestros submódulos dentro de un subdirectorio dentro del directorio modules llamado shapes. Entonces, la estructura del módulo en este ejemplo es:

- -
modules/
-  canvas.js
-  shapes.js
-  shapes/
-    circle.js
-    square.js
-    triangle.js
- -

En cada uno de los submódulos, la exportación es de la misma forma, p. ej.

- -
export { Square };
- -

Luego viene la parte de agregación. Dentro de shapes.js, incluimos las siguientes líneas:

- -
export { Square } from './shapes/square.js';
-export { Triangle } from './shapes/triangle.js';
-export { Circle } from './shapes/circle.js';
- -

Estas toman las exportaciones de los submódulos individuales y las ponen a disposición de manera efectiva desde el módulo shapes.js.

- -
-

Nota: Las exportaciones a las que se hace referencia en shapes.js básicamente se redirigen a través del archivo y realmente no existen allí, por lo que no podrás escribir ningún código relacionado útil dentro del mismo archivo.

-
- -

Entonces, ahora en el archivo main.js, podemos obtener acceso a las tres clases de módulos reemplazando

- -
import { Square } from './modules/square.js';
-import { Circle } from './modules/circle.js';
-import { Triangle } from './modules/triangle.js';
- -

con la siguiente única línea:

- -
import { Square, Circle, Triangle } from './modules/shapes.js';
- -

Carga dinámica de módulos

- -

La parte más nueva de la funcionalidad de los módulos de JavaScript que estará disponible en los navegadores es la carga dinámica de módulos. Esto te permite cargar módulos dinámicamente solo cuando son necesarios, en lugar de tener que cargar todo por adelantado. Esto tiene algunas obvias ventajas de rendimiento; sigue leyendo y veamos cómo funciona.

- -

Esta nueva funcionalidad te permite llamar a {{jsxref("Statements/import", "import()", "#Importaciones_Dinámicas")}} como una función, pasándole la ruta al módulo como parámetro. Devuelve una {{jsxref("Promise")}}, que se cumple con un objeto module (consulta Crear un objeto module) que te da acceso a las exportaciones de ese objeto, p. ej.

- -
import('./modules/myModule.js')
-  .then((module) => {
-    // Haz algo con el módulo.
-  });
- -

Veamos un ejemplo. En el directorio dynamic-module-import tenemos otro ejemplo basado en nuestro ejemplo de clases. Esta vez, sin embargo, no dibujamos nada en el lienzo cuando se carga el ejemplo. En su lugar, incluimos tres botones — "Círculo", "Cuadrado" y "Triángulo" — que, cuando se presionan, cargan dinámicamente el módulo requerido y luego lo usan para dibujar la forma asociada.

- -

En este ejemplo, solo hemos realizado cambios en nuestros archivos index.html y main.js — el módulo exports sigue siendo el mismo que antes.

- -

En main.js hemos tomado una referencia a cada botón usando una llamada a Document.querySelector(), por ejemplo:

- -
let squareBtn = document.querySelector('.square');
- -

Luego adjuntamos un escucha de eventos a cada botón para que cuando se presione, el módulo relevante se cargue dinámicamente y se use para dibujar la forma:

- -
squareBtn.addEventListener('click', () => {
-  import('./modules/square.js').then((Module) => {
-    let square1 = new Module.Square(myCanvas.ctx, myCanvas.listId, 50, 50, 100, 'blue');
-    square1.draw();
-    square1.reportArea();
-    square1.reportPerimeter();
-  })
-});
- -

Ten en cuenta que, debido a que el cumplimiento de la promesa devuelve un objeto module, la clase se convierte en una subfunción del objeto, por lo que ahora necesitamos acceder al constructor prefijado con Module., p. ej. Module.Square(...).

- -

Solución de problemas

- -

Aquí hay algunos consejos que te pueden ayudar si tienes problemas para hacer que tus módulos funcionen. ¡No dude en agregarlos a la lista si descubres más!

- - - -

Ve también

- - - -

{{Previous("Web/JavaScript/Guide/Meta_programming")}}

diff --git a/files/es/web/javascript/guide/regular_expressions/aserciones/index.html b/files/es/web/javascript/guide/regular_expressions/aserciones/index.html deleted file mode 100644 index b822cdd2bf..0000000000 --- a/files/es/web/javascript/guide/regular_expressions/aserciones/index.html +++ /dev/null @@ -1,247 +0,0 @@ ---- -title: Aserciones -slug: Web/JavaScript/Guide/Regular_Expressions/Aserciones -tags: - - Aserciones - - Expresiones Regulares - - Guía - - JavaScript - - Referencia - - regex -translation_of: Web/JavaScript/Guide/Regular_Expressions/Assertions ---- -

{{jsSidebar("JavaScript Guide")}}

- -

Las aserciones incluyen límites, que indican el comienzo y el final de líneas y palabras, y otros patrones que indican de alguna manera que el reconocimiento es posible (incluidas las expresiones anticipadas, condicionales e inversas).

- -
{{EmbedInteractiveExample("pages/js/regexp-assertions.html", "taller")}}
- -

Tipos

- - - -

Aserciones de tipo límite

- - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracteresSignificado
^ -

Coincide con el comienzo de la entrada. Si el indicador multilínea se establece en true, también busca inmediatamente después de un caracter de salto de línea. Por ejemplo, /^A/ no coincide con la "A" en "alias A", pero coincide con la primera "A" en "Alias A".

- -
-

Este caracter tiene un significado diferente cuando aparece al comienzo de un {{JSxRef("../Guide/Regular_Expressions/Grupos_y_rangos", "grupo")}}.

-
-
$ -

Coincide con el final de la entrada. Si el indicador multilínea se establece en true, también busca hasta inmediatamente antes de un caracter de salto de línea. Por ejemplo, /r$/ no coincide con la "r" en "espera", pero sí en "esperar".

-
\b -

Marca el límite de una palabra. Esta es la posición en la que un caracter de palabra no va seguido o precedido por otro caracter de palabra, por ejemplo, entre una letra y un espacio. Ten en cuenta que el límite de una palabra encontrada no se incluye en el resultado. En otras palabras, la longitud de un límite de palabra encontrada es cero.

- -

Ejemplos:

- -
    -
  • /\bl/ encuentra la "l" en "luna".
  • -
  • /un\b/ no concuerda con "un" en "luna", porque "un" va seguido de "a", que es un carácter de palabra.
  • -
  • /una\b/ coincide con "una" en "luna", porque "una" es el final de la cadena, por lo tanto no va seguido de un carácter de palabra.
  • -
  • /\w\b\w/ nunca encontrará con nada, porque un caracter de palabra nunca puede ir seguido de un caracter que no sea de palabra y otro de palabra.
  • -
- -

Para hacer coincidir un carácter de retroceso ([\b]), consulta {{JSxRef("../Guide/Regular_Expressions/Clases_de_caracteres", "Clases de caracteres")}}.

-
\B -

Coincide con un límite sin palabra. Esta es una posición en la que el caracter anterior y siguiente son del mismo tipo: ambos deben ser palabras o ambos deben ser no palabras, por ejemplo, entre dos letras o entre dos espacios. El principio y el final de una cadena se consideran no palabras. Igual que el límite de palabras encontradas, el límite sin palabras reconocidas tampoco se incluye en el resultado. Por ejemplo, /\Bme/ coincide con "me" en "al mediodía", y /ay\B/ coincide con "ay" en "posiblemente ayer".

-
- -

Otras aserciones

- -
-

Nota: El caracter ? también se puede utilizar como cuantificador.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracteresSignificado
x(?=y) -

Aserción anticipada: Coincide con "x" solo si "x" va seguida de "y". Por ejemplo, /Jack(?=Sprat)/ coincide con "Jack" solo si va seguido de "Sprat".
- /Jack(?=Sprat|Frost)/ coincide con "Jack" solo si va seguido de "Sprat" o "Frost". Sin embargo, ni "Sprat" ni "Frost" forman parte del resultado.

-
x(?!y) -

Aserción anticipada negativa: Coincide con "x" solo si "x" no está seguida de "y". Por ejemplo, /\d+(?!\.)/ coincide con un número solo si no va seguido de un punto decimal. /\d+(?!\.)/.exec('3.141') coincide con "141" pero no con "3."

-
(?<=y)x -

Aserción de búsqueda inversa: coincide con "x" solo si "x" está precedida por "y". Por ejemplo, /(?<=Jack)Sprat/ coincide con "Sprat" sólo si va precedida de "Jack". /(?<=Jack|Tom)Sprat/ coincide con "Sprat" solo si va precedido de "Jack" o "Tom". Sin embargo, ni "Jack" ni "Tom" forman parte del resultado.

-
(?<!y)x -

Aserción de búsqueda inversa negativa: coincide con "x" solo si "x" no está precedida por "y". Por ejemplo, /(?<!-)\d+/ coincide con un número solo si no está precedido por un signo de menos. /(? coincide con "3". /(?<!-)\d+/.exec('-3') no se encuentra la coincidencia porque el número está precedido por el signo menos.

-
- -

Ejemplos

- -

Ejemplo de descripción de tipo límite

- -
// Usa límites Regex para arreglar cadenas con errores.
-let multilineaIncorrecta = `tey, la brillante manzena vered
-toy cuelga en una rama del arbol vered`;
-
-// 1) Usa ^ para corregir la coincidencia al principio de la cadena y justo después de la nueva línea.
-multilineaIncorrecta = multilineaIncorrecta.replace(/^t/gim,'h');
-console.log(1, multilineaIncorrecta); // corrige 'tey', 'toy' => 'hey', 'hoy'.
-
-// 2) Usa $ para arreglar el reconocimiento al final del texto.
-multilineaIncorrecta = multilineaIncorrecta.replace(/ed$/gim,'de');
-console.log(2, multilineaIncorrecta); // corrige  'vered' => 'verde'.
-
-// 3) Usa \b para encontrar los caracteres justo en el borde entre una palabra y un espacio.
-multilineaIncorrecta = multilineaIncorrecta.replace(/\ba/gim,'á');
-console.log(3, multilineaIncorrecta); // corrige  'arbol' sin tocar nada más.
-
-// 4) Usa \B para encontrar los caracteres dentro de los bordes de una entidad.
-multilineaCorrecta = multilineaIncorrecta.replace(/\Ben/gim,'an');
-console.log(4, multilineaCorrecta); // corrige  'manzena' pero no toca 'en'.
-
- -

Busca al comienzo de la entrada usando un caracter de control ^

- -

Usa ^ para hacer coincidir al comienzo de la entrada. En este ejemplo, podemos obtener las frutas que comienzan con 'A' con una expresión regular /^A/. Para seleccionar las frutas adecuadas, podemos utilizar el método {{JSxRef("Objetos_globales/Array/filter", "filter")}} con un {{JSxRef("Funciones/Arrow_functions", "función flecha")}}.

- -
let frutas = ["Manzana", "Sandía", "Naranja", "Aguacate", "Fresa", "Melón"];
-
-// Selecciona frutas que comiencen con 'M' por la Regex /^M/.
-// Aquí se usa el símbolo de control '^' solo en un rol: Reconocer desde el inicio una entrada.
-
-let frutasEmpiezanConM = frutas.filter(fruta => /^M/.test(fruta));
-console.log(frutasEmpiezanConM); // [ 'Manzana', 'Melón' ]
- -

En el segundo ejemplo, ^ se usa tanto para hacer coincidir al comienzo de la entrada como para crear conjuntos de caracteres negados o complementados cuando se usa dentro de {{JSxRef("../Guide/Regular_Expressions/Grupos_y_rangos", "grupos")}}.

- -
let frutas = ["Manzana", "Sandía", "Naranja", "Aguacate", "Fresa", "Melón"];
-
-// Seleccionar frutas que no comiencen por 'M' con la regexp /^[^M]/.
-// En este ejemplo, se representan dos significados del símbolo de control '^':
-// 1) Inicio coincidente de la entrada
-// 2) Un conjunto de caracteres negado o complementado: [^M]
-// Es decir, coincide con cualquier cosa que no esté encerrado entre los corchetes.
-
-let frutasNoEmpiezanConM = frutas.filter(fruta => /^[^M]/.test(fruta));
-
-console.log(frutasNoEmpiezanConM); // [ "Sandía", "Naranja", "Aguacate", "Fresa" ]
- -

Reconoce el límite de palabra

- -
let frutasConDescripcion = ["Manzana roja", "Piña amarilla", "Aguacate verde"];
-
-// Selecciona descripciones que contengan terminaciones de palabras 'ja' o 'de':
-let deJaSeleccion = frutasConDescripcion.filter(descr => /(de|ja)\b/.test(descr));
-
-console.log(deJaSeleccion); // ["Manzana roja", "Aguacate verde"]
- -

Aserción anticipada

- -
// JS aserción anticipada x(?=Y)
-
-let regex = /Primer(?= prueba)/g;
-
-console.log('Primer prueba'.match(regex)); // [ 'Primer' ]
-console.log('Primer melocotón'.match(regex)); // null
-console.log('Esta es mi Primer prueba en un año.'.match(regex)); // [ 'Primer' ]
-console.log('Este es mi Primer melocotón en un mes.'.match(regex)); // null
-
- -

Aserción anticipada negativa básica

- -

Por ejemplo, /\d+(?!\.)/ coincide con un número solo si no va seguido de un punto decimal. /\d+(?!\.)/.exec('3.141') coincide con "141" pero no con "3."

- -
console.log(/\d+(?!\.)/g.exec('3.141')); // [ '141', index: 2, input: '3.141' ]
-
- -

Diferente significado del uso de la combinación '?!' en aserciones y rangos

- -

Diferente significado del uso de la combinación ?! en {{JSxRef("../Guide/Regular_Expressions/Aserciones", "Aserciones")}} /x(?!y)/ y de [^?!] en {{JSxRef("../Guide/Regular_Expressions/Grupos_y_rangos", "Rangos")}}.

- -
let naranjaNoLimon = "¿Quieres beber jugo de naranja? ¡Sí, no quiero tomar jugo de limón!";
-
-// Diferente significado del uso de la combinación '?!' en Aserciones /x(?!y)/ y [^?!] en Rangos.
-let regexNoSeleccionaLimon = /[^?!]+beber(?! de limón)[^?!]+[?!]/gi
-console.log(naranjaNoLimon.match(regexNoSeleccionaLimon)); // [ '¿Quieres beber jugo de naranja?' ]
-
-let regexNoSeleccionaNaranja = /[^?!]+tomar(?! de naranja)[^?!]+[?!]/gi
-console.log(naranjaNoLimon.match(regexNoSeleccionaNaranja)); // [ ' ¡Sí, no quiero tomar jugo de limón!' ]
-
- -

Aserción inversa

- -
let naranjas = ['naranja madura A', 'naranja verde B', 'naranja madura C',];
-
-let naranjas_maduras = naranjas.filter(fruta => fruta.match(/(?<=naranja) madura/));
-console.log(naranjas_maduras); // [ 'naranja madura A ', 'naranja madura C' ]
-
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-assertion', 'RegExp: Aserciones')}}
- -

Compatibilidad del navegador

- -

Para obtener información sobre la compatibilidad del navegador, consulta la {{JSxRef("../Guide/Regular_Expressions", "tabla principal de compatibilidad de expresiones regulares", "#Compatibilidad_del_navegador")}}.

- -

Ve también

- - diff --git a/files/es/web/javascript/guide/regular_expressions/assertions/index.html b/files/es/web/javascript/guide/regular_expressions/assertions/index.html new file mode 100644 index 0000000000..b822cdd2bf --- /dev/null +++ b/files/es/web/javascript/guide/regular_expressions/assertions/index.html @@ -0,0 +1,247 @@ +--- +title: Aserciones +slug: Web/JavaScript/Guide/Regular_Expressions/Aserciones +tags: + - Aserciones + - Expresiones Regulares + - Guía + - JavaScript + - Referencia + - regex +translation_of: Web/JavaScript/Guide/Regular_Expressions/Assertions +--- +

{{jsSidebar("JavaScript Guide")}}

+ +

Las aserciones incluyen límites, que indican el comienzo y el final de líneas y palabras, y otros patrones que indican de alguna manera que el reconocimiento es posible (incluidas las expresiones anticipadas, condicionales e inversas).

+ +
{{EmbedInteractiveExample("pages/js/regexp-assertions.html", "taller")}}
+ +

Tipos

+ + + +

Aserciones de tipo límite

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracteresSignificado
^ +

Coincide con el comienzo de la entrada. Si el indicador multilínea se establece en true, también busca inmediatamente después de un caracter de salto de línea. Por ejemplo, /^A/ no coincide con la "A" en "alias A", pero coincide con la primera "A" en "Alias A".

+ +
+

Este caracter tiene un significado diferente cuando aparece al comienzo de un {{JSxRef("../Guide/Regular_Expressions/Grupos_y_rangos", "grupo")}}.

+
+
$ +

Coincide con el final de la entrada. Si el indicador multilínea se establece en true, también busca hasta inmediatamente antes de un caracter de salto de línea. Por ejemplo, /r$/ no coincide con la "r" en "espera", pero sí en "esperar".

+
\b +

Marca el límite de una palabra. Esta es la posición en la que un caracter de palabra no va seguido o precedido por otro caracter de palabra, por ejemplo, entre una letra y un espacio. Ten en cuenta que el límite de una palabra encontrada no se incluye en el resultado. En otras palabras, la longitud de un límite de palabra encontrada es cero.

+ +

Ejemplos:

+ +
    +
  • /\bl/ encuentra la "l" en "luna".
  • +
  • /un\b/ no concuerda con "un" en "luna", porque "un" va seguido de "a", que es un carácter de palabra.
  • +
  • /una\b/ coincide con "una" en "luna", porque "una" es el final de la cadena, por lo tanto no va seguido de un carácter de palabra.
  • +
  • /\w\b\w/ nunca encontrará con nada, porque un caracter de palabra nunca puede ir seguido de un caracter que no sea de palabra y otro de palabra.
  • +
+ +

Para hacer coincidir un carácter de retroceso ([\b]), consulta {{JSxRef("../Guide/Regular_Expressions/Clases_de_caracteres", "Clases de caracteres")}}.

+
\B +

Coincide con un límite sin palabra. Esta es una posición en la que el caracter anterior y siguiente son del mismo tipo: ambos deben ser palabras o ambos deben ser no palabras, por ejemplo, entre dos letras o entre dos espacios. El principio y el final de una cadena se consideran no palabras. Igual que el límite de palabras encontradas, el límite sin palabras reconocidas tampoco se incluye en el resultado. Por ejemplo, /\Bme/ coincide con "me" en "al mediodía", y /ay\B/ coincide con "ay" en "posiblemente ayer".

+
+ +

Otras aserciones

+ +
+

Nota: El caracter ? también se puede utilizar como cuantificador.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracteresSignificado
x(?=y) +

Aserción anticipada: Coincide con "x" solo si "x" va seguida de "y". Por ejemplo, /Jack(?=Sprat)/ coincide con "Jack" solo si va seguido de "Sprat".
+ /Jack(?=Sprat|Frost)/ coincide con "Jack" solo si va seguido de "Sprat" o "Frost". Sin embargo, ni "Sprat" ni "Frost" forman parte del resultado.

+
x(?!y) +

Aserción anticipada negativa: Coincide con "x" solo si "x" no está seguida de "y". Por ejemplo, /\d+(?!\.)/ coincide con un número solo si no va seguido de un punto decimal. /\d+(?!\.)/.exec('3.141') coincide con "141" pero no con "3."

+
(?<=y)x +

Aserción de búsqueda inversa: coincide con "x" solo si "x" está precedida por "y". Por ejemplo, /(?<=Jack)Sprat/ coincide con "Sprat" sólo si va precedida de "Jack". /(?<=Jack|Tom)Sprat/ coincide con "Sprat" solo si va precedido de "Jack" o "Tom". Sin embargo, ni "Jack" ni "Tom" forman parte del resultado.

+
(?<!y)x +

Aserción de búsqueda inversa negativa: coincide con "x" solo si "x" no está precedida por "y". Por ejemplo, /(?<!-)\d+/ coincide con un número solo si no está precedido por un signo de menos. /(? coincide con "3". /(?<!-)\d+/.exec('-3') no se encuentra la coincidencia porque el número está precedido por el signo menos.

+
+ +

Ejemplos

+ +

Ejemplo de descripción de tipo límite

+ +
// Usa límites Regex para arreglar cadenas con errores.
+let multilineaIncorrecta = `tey, la brillante manzena vered
+toy cuelga en una rama del arbol vered`;
+
+// 1) Usa ^ para corregir la coincidencia al principio de la cadena y justo después de la nueva línea.
+multilineaIncorrecta = multilineaIncorrecta.replace(/^t/gim,'h');
+console.log(1, multilineaIncorrecta); // corrige 'tey', 'toy' => 'hey', 'hoy'.
+
+// 2) Usa $ para arreglar el reconocimiento al final del texto.
+multilineaIncorrecta = multilineaIncorrecta.replace(/ed$/gim,'de');
+console.log(2, multilineaIncorrecta); // corrige  'vered' => 'verde'.
+
+// 3) Usa \b para encontrar los caracteres justo en el borde entre una palabra y un espacio.
+multilineaIncorrecta = multilineaIncorrecta.replace(/\ba/gim,'á');
+console.log(3, multilineaIncorrecta); // corrige  'arbol' sin tocar nada más.
+
+// 4) Usa \B para encontrar los caracteres dentro de los bordes de una entidad.
+multilineaCorrecta = multilineaIncorrecta.replace(/\Ben/gim,'an');
+console.log(4, multilineaCorrecta); // corrige  'manzena' pero no toca 'en'.
+
+ +

Busca al comienzo de la entrada usando un caracter de control ^

+ +

Usa ^ para hacer coincidir al comienzo de la entrada. En este ejemplo, podemos obtener las frutas que comienzan con 'A' con una expresión regular /^A/. Para seleccionar las frutas adecuadas, podemos utilizar el método {{JSxRef("Objetos_globales/Array/filter", "filter")}} con un {{JSxRef("Funciones/Arrow_functions", "función flecha")}}.

+ +
let frutas = ["Manzana", "Sandía", "Naranja", "Aguacate", "Fresa", "Melón"];
+
+// Selecciona frutas que comiencen con 'M' por la Regex /^M/.
+// Aquí se usa el símbolo de control '^' solo en un rol: Reconocer desde el inicio una entrada.
+
+let frutasEmpiezanConM = frutas.filter(fruta => /^M/.test(fruta));
+console.log(frutasEmpiezanConM); // [ 'Manzana', 'Melón' ]
+ +

En el segundo ejemplo, ^ se usa tanto para hacer coincidir al comienzo de la entrada como para crear conjuntos de caracteres negados o complementados cuando se usa dentro de {{JSxRef("../Guide/Regular_Expressions/Grupos_y_rangos", "grupos")}}.

+ +
let frutas = ["Manzana", "Sandía", "Naranja", "Aguacate", "Fresa", "Melón"];
+
+// Seleccionar frutas que no comiencen por 'M' con la regexp /^[^M]/.
+// En este ejemplo, se representan dos significados del símbolo de control '^':
+// 1) Inicio coincidente de la entrada
+// 2) Un conjunto de caracteres negado o complementado: [^M]
+// Es decir, coincide con cualquier cosa que no esté encerrado entre los corchetes.
+
+let frutasNoEmpiezanConM = frutas.filter(fruta => /^[^M]/.test(fruta));
+
+console.log(frutasNoEmpiezanConM); // [ "Sandía", "Naranja", "Aguacate", "Fresa" ]
+ +

Reconoce el límite de palabra

+ +
let frutasConDescripcion = ["Manzana roja", "Piña amarilla", "Aguacate verde"];
+
+// Selecciona descripciones que contengan terminaciones de palabras 'ja' o 'de':
+let deJaSeleccion = frutasConDescripcion.filter(descr => /(de|ja)\b/.test(descr));
+
+console.log(deJaSeleccion); // ["Manzana roja", "Aguacate verde"]
+ +

Aserción anticipada

+ +
// JS aserción anticipada x(?=Y)
+
+let regex = /Primer(?= prueba)/g;
+
+console.log('Primer prueba'.match(regex)); // [ 'Primer' ]
+console.log('Primer melocotón'.match(regex)); // null
+console.log('Esta es mi Primer prueba en un año.'.match(regex)); // [ 'Primer' ]
+console.log('Este es mi Primer melocotón en un mes.'.match(regex)); // null
+
+ +

Aserción anticipada negativa básica

+ +

Por ejemplo, /\d+(?!\.)/ coincide con un número solo si no va seguido de un punto decimal. /\d+(?!\.)/.exec('3.141') coincide con "141" pero no con "3."

+ +
console.log(/\d+(?!\.)/g.exec('3.141')); // [ '141', index: 2, input: '3.141' ]
+
+ +

Diferente significado del uso de la combinación '?!' en aserciones y rangos

+ +

Diferente significado del uso de la combinación ?! en {{JSxRef("../Guide/Regular_Expressions/Aserciones", "Aserciones")}} /x(?!y)/ y de [^?!] en {{JSxRef("../Guide/Regular_Expressions/Grupos_y_rangos", "Rangos")}}.

+ +
let naranjaNoLimon = "¿Quieres beber jugo de naranja? ¡Sí, no quiero tomar jugo de limón!";
+
+// Diferente significado del uso de la combinación '?!' en Aserciones /x(?!y)/ y [^?!] en Rangos.
+let regexNoSeleccionaLimon = /[^?!]+beber(?! de limón)[^?!]+[?!]/gi
+console.log(naranjaNoLimon.match(regexNoSeleccionaLimon)); // [ '¿Quieres beber jugo de naranja?' ]
+
+let regexNoSeleccionaNaranja = /[^?!]+tomar(?! de naranja)[^?!]+[?!]/gi
+console.log(naranjaNoLimon.match(regexNoSeleccionaNaranja)); // [ ' ¡Sí, no quiero tomar jugo de limón!' ]
+
+ +

Aserción inversa

+ +
let naranjas = ['naranja madura A', 'naranja verde B', 'naranja madura C',];
+
+let naranjas_maduras = naranjas.filter(fruta => fruta.match(/(?<=naranja) madura/));
+console.log(naranjas_maduras); // [ 'naranja madura A ', 'naranja madura C' ]
+
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-assertion', 'RegExp: Aserciones')}}
+ +

Compatibilidad del navegador

+ +

Para obtener información sobre la compatibilidad del navegador, consulta la {{JSxRef("../Guide/Regular_Expressions", "tabla principal de compatibilidad de expresiones regulares", "#Compatibilidad_del_navegador")}}.

+ +

Ve también

+ + diff --git a/files/es/web/javascript/guide/regular_expressions/character_classes/index.html b/files/es/web/javascript/guide/regular_expressions/character_classes/index.html new file mode 100644 index 0000000000..6de027b270 --- /dev/null +++ b/files/es/web/javascript/guide/regular_expressions/character_classes/index.html @@ -0,0 +1,220 @@ +--- +title: Clases de caracteres +slug: Web/JavaScript/Guide/Regular_Expressions/Clases_de_caracteres +tags: + - Expresiones Regulares + - Guía + - JavaScript + - Referencia + - RegExp + - clases de caracteres +translation_of: Web/JavaScript/Guide/Regular_Expressions/Character_Classes +--- +

{{JsSidebar("Guía de JavaScript")}}

+ +

Las clases de caracteres distinguen tipos de caracteres como, por ejemplo, distinguen entre letras y dígitos.

+ +
{{EmbedInteractiveExample("pages/js/regexp-character-classes.html")}}
+ +

Tipos

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracteresSignificado
. +

Tiene uno de los siguientes significados:

+ +
    +
  • Coincide con cualquier carácter único excepto terminadores de línea: \n, \r, \u2028 o \u2029. Por ejemplo, /.i/ coincide con "mi" y "si", pero no con "día", en "si alegra mi día".
  • +
  • Dentro de un juego de caracteres, el punto pierde su significado especial y concuerda con un punto literal.
  • +
+ +

Ten en cuenta que el indicador multilínea m no cambia el comportamiento del punto. Por lo tanto, para hacer coincidir un patrón en varias líneas, se puede utilizar el conjunto de caracteres [^] — coincidirá con cualquier carácter, incluidas las nuevas líneas.

+ +

ES2018 agregó el indicador s "dotAll", el cual permite que el punto también coincida con los terminadores de línea.

+
\d +

Busca cualquier dígito (número arábigo). Equivalente a [0-9]. Por ejemplo, /\d/ o /[0-9]/ coincide con "2" en "B2 es el número de suite".

+
\D +

Busca cualquier caracter que no sea un dígito (número arábigo). Equivalente a [^0-9]. Por ejemplo, /\D/ o /[^0-9]/ coincide con "B" en "B2 es el número de suite".

+
\w +

Busca cualquier caracter alfanumérico del alfabeto latino básico, incluido el caracter de subrayado. Equivalente a [A-Za-z0-9_]. Por ejemplo, /\w/ coincide con "m" en "manzana", "5" en "$5.28", "3" en "3D" y "m" en "Émanuel".

+
\W +

Busca cualquier caracter que no sea un caracter de palabra del alfabeto latino básico. Equivalente a [^A-Za-z0-9_]. Por ejemplo, /\W/ o /[^A-Za-z0-9_]/ coincide con "%" en "50%" y "É" en "Émanuel".

+
\s +

Busca un solo caracter de espacio en blanco, incluido el espacio, tabulación, avance de página, avance de línea y otros espacios Unicode. Equivalente a [ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]. Por ejemplo, /\s\w*/ encuentra " bar" en "foo bar".

+
\S +

Busca un solo caracter que no sea un espacio en blanco. Equivalente a [^ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]. Por ejemplo, /\S\w*/ encuentra "foo" en "foo bar".

+
\tCoincide con una tabulación horizontal.
\rCoincide con un retorno de carro.
\nCoincide con un salto de línea.
\vCoincide con una tabulación vertical.
\fCoincide con un caracter de avance de página.
[\b]Coincide con un caracter de retroceso. Si estás buscando el carácter de límite de palabra (\b), consulta {{JSxRef("../Guide/Regular_Expressions/Boundaries", "Límites")}}.
\0Coincide con un caracter NUL. No sigue a este con otro dígito.
\cX +

Coincide con un caracter de control mediante {{Interwiki("wikipedia", "Caret_notation", "notación de intercalación")}}, donde "X" es una letra de la A a la Z (correspondiente a los puntos de código U+0001-U+001F). Por ejemplo, /\cM/ encuentra "\r" en "\r\n".

+
\xhhCoincide con el carácter con el código hh (dos dígitos hexadecimales).
\uhhhhCoincide con una unidad de código UTF-16 con el valor hhhh (cuatro dígitos hexadecimales).
\u{hhhh} o \u{hhhhh}(Solo cuando se establece el indicador u). Hace coincidir el carácter con el valor Unicode U+hhhh o U+hhhhh (dígitos hexadecimales).
\ +

Indica que el siguiente caracter se debe tratar de manera especial o "escaparse". Se comporta de dos formas.

+ +
    +
  • Para los caracteres que generalmente se tratan literalmente, indica que el siguiente caracter es especial y no se debe interpretar literalmente. Por ejemplo, /b/ coincide con el carácter "b". Al colocar una barra invertida delante de "b", es decir, usando /\b/, el carácter se vuelve especial para significar que coincide con el límite de una palabra.
  • +
  • Para los caracteres que generalmente se tratan de manera especial, indica que el siguiente caracter no es especial y se debe interpretar literalmente. Por ejemplo, "*" es un carácter especial que significa que deben coincidir 0 o más ocurrencias del carácter anterior; por ejemplo, /a*/ significa coincidir con 0 o más "a"es. Para hacer coincidir * literalmente, precede con una barra invertida; por ejemplo, /a\*/ coincide con "a*".
  • +
+ +
+

Para reconocer este caracter literalmente, escápalo consigo mismo. En otras palabras, para buscar \ usa /\\/.

+
+
+ +

Ejemplos

+ +

Buscar una serie de dígitos

+ +
var datosAleatorios = "015 354 8787 687351 3512 8735";
+var regexpCuatroDigitos = /\b\d{4}\b/g;
+// \b indica un límite (es decir, no empieza a coincidir en medio de una palabra)
+// \d{4} indica un dígito, cuatro veces
+// \b indica otro límite (es decir, no termina la coincidencia en medio de una palabra)
+
+
+console.table(datosAleatorios.match(regexpCuatroDigitos));
+// ['8787', '3512', '8735']
+
+ +

Busca una palabra (del alfabeto latino) que comience con A

+ +
var extractoAlicia = "Estoy segura de que no soy Ada, dijo, 'porque su cabello se hace en rizos tan largos, y el mío no se riza en absoluto'.";
+var regexpPalabraEmpiezaConA = /\b[aA]\w+/g;
+// \b indica un límite (es decir, no empieza a coincidir en medio de una palabra)
+// [aA] indica las letras a o A
+// \w+ indica cualquier carácter *del alfabeto latino*, varias veces
+
+console.table(extractoAlicia.match(regexpPalabraEmpiezaConA));
+// ["Ada", "absoluto"]
+
+ +

Busca una palabra (de caracteres Unicode)

+ +

En lugar del alfabeto latino, podemos usar una variedad de caracteres Unicode para identificar una palabra (de modo que podamos tratar con texto en otros idiomas, tal como Ruso o Árabe). El "Plano multilingüe básico" de Unicode contiene la mayoría de los caracteres que se utilizan en todo el mundo y podemos utilizar clases y rangos de caracteres para reconocer las palabras escritas con esos caracteres.

+ +
var textoNoEs = "Приключения Алисы в Стране чудес";
+var regexpPalabraBMP = /([\u0000-\u0019\u0021-\uFFFF])+/gu;
+// BMP pasa por U+0000 a U+FFFF pero el espacio es U+0020
+
+console.table(textoNoEs.match(regexpPalabraBMP));
+[ 'Приключения', 'Алисы', 'в', 'Стране', 'чудес' ]
+
+ + + +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-characterclass', 'RegExp: Clases de caracteres')}}
+ +

Compatibilidad del navegador

+ +

Para obtener información sobre la compatibilidad del navegador, consulta la {{JSxRef("../Guide/Regular_Expressions", "tabla principal de compatibilidad de expresiones regulares", "#Compatibilidad_del_navegador")}}.

+ +

Ve también

+ + diff --git a/files/es/web/javascript/guide/regular_expressions/cheatsheet/index.html b/files/es/web/javascript/guide/regular_expressions/cheatsheet/index.html new file mode 100644 index 0000000000..accc783aff --- /dev/null +++ b/files/es/web/javascript/guide/regular_expressions/cheatsheet/index.html @@ -0,0 +1,451 @@ +--- +title: Hoja de referencia de sintaxis de expresiones regulares +slug: Web/JavaScript/Guide/Regular_Expressions/Hoja_de_referencia +tags: + - Cheatsheet + - Expresiones Regulares + - Guía + - Hoja de referencia + - JavaScript + - RegExp +translation_of: Web/JavaScript/Guide/Regular_Expressions/Cheatsheet +--- +
{{jsSidebar("Guía de JavaScript")}}
+ +

Esta página proporciona una hoja de referencia general de todas las capacidades de la sintaxis de RegExp agregando el contenido de los artículos en la guía RegExp. Si necesitas más información sobre un tema específico, sigue el enlace del título correspondiente para acceder al artículo completo o dirígete a la guía.

+ +

Clases de caracteres

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracteresSignificado
. +

Tiene uno de los siguientes significados:

+ +
    +
  • Encuentra cualquier caracter único excepto terminadores de línea: \n, \r, \u2028 o \u2029. Por ejemplo, /.y/ reconoce "my" y "ay", pero no "yes", en "yes make my day".
  • +
  • Dentro de un juego de caracteres, el punto pierde su significado especial y concuerda con un punto literal.
  • +
+ +

Ten en cuenta que el indicador multilínea m no cambia el comportamiento del punto. Por lo tanto, para buscar en un patrón multilínea, puedes usar el juego de caracteres [^] — este encontrará con cualquier caracter, incluidas las nuevas líneas.

+ +

ES2018 agregó el indicador s "dotAll", que permite que el punto también concuerde con los terminadores de línea.

+
\d +

Busca cualquier dígito (número arábigo). Equivalente a [0-9]. Por ejemplo, /\d/ o /[0-9]/ encuentra el "2" en "B2 es el número de suite".

+
\D +

Busca cualquier caracter que no sea un dígito (número arábigo). Equivalente a [^0-9]. Por ejemplo, /\D/ o /[^0-9]/ encuentra la "B" en "B2 es el número de suite".

+
\w +

Busca cualquier caracter alfanumérico del alfabeto latino básico, incluido el caracter de subrayado. Equivalente a [A-Za-z0-9_]. Por ejemplo, /\w/ encuentra la "m" en "manzana", el "5" en "$5.28" y el "3" en "3D".

+
\W +

Busca cualquier caracter que no sea un caracter de palabra del alfabeto latino básico. Equivalente a [^A-Za-z0-9_]. Por ejemplo, /\W/ o /[^A-Za-z0-9_]/ encuentra el caracter "%" en "50%".

+
\s +

Busca un solo caracter de espacio en blanco, incluido el espacio, tabulación, avance de página, avance de línea y otros espacios Unicode. Equivalente a [ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]. Por ejemplo, /\s\w*/ reconoce " bar" en "foo bar".

+
\S +

Busca un solo caracter que no sea un espacio en blanco. Equivalente a [^ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]. Por ejemplo, /\S\w*/ encuentra "foo" en "foo bar".

+
\tCoincide con una tabulación horizontal.
\rCoincide con un retorno de carro.
\nCoincide con un salto de línea.
\vCoincide con una tabulación vertical.
\fCoincide con un caracter de avance de página.
[\b]Coincide con un caracter de retroceso. Si estás buscando el caracter de límite de palabra (\b), consulta Límites.
\0Coincide con un caracter NUL. No sigue a este con otro dígito.
\cX +

Coincide con un caracter de control usando notación de acento circunflejo, donde "X" es una letra de la A a la Z (correspondiente a los puntos de código U+0001-U+001F). Por ejemplo, /\cM/ reconoce el caracter "\r" en "\r\n".

+
\xhhBusca el caracter con el código hh (dos dígitos hexadecimales).
\uhhhhBusca una unidad de código UTF-16 con el valor hhhh (cuatro dígitos hexadecimales).
\u{hhhh} o \u{hhhhh}(Solo cuando se establece el indicador u). Busca el caracter con el valor Unicode U+hhhh o U+hhhhh (dígitos hexadecimales).
\ +

Indica que el siguiente caracter se debe tratar de manera especial o "escaparse". Se comporta de dos formas.

+ +
    +
  • Para los caracteres que generalmente se tratan literalmente, indica que el siguiente caracter es especial y no se debe interpretar literalmente. Por ejemplo, /b/ reconoce el caracter "b". Al colocar una barra invertida delante de "b", es decir, usando /\b/, el caracter se vuelve especial para significar que concuerda con el límite de una palabra.
  • +
  • Para los caracteres que generalmente se tratan de manera especial, indica que el siguiente caracter no es especial y se debe interpretar literalmente. Por ejemplo, "*" es un caracter especial que significa que deben reconocer 0 o más ocurrencias del caracter anterior; por ejemplo, /a*/ significa reconocer 0 o más "a"s. Para emparejar el * literal, precédelo con una barra invertida; por ejemplo, /a\*/ concuerda con "a*".
  • +
+ +

Ten en cuenta que algunos caracteres como :, -, @, etc. no tienen un significado especial cuando se escapan ni cuando no se escapan. Las secuencias de escape como \:, \-, \@ serán equivalentes a sus equivalentes de caracteres literales sin escapar en expresiones regulares. Sin embargo, en las expresiones regulares con indicador Unicode, esto provocará un error de escape de identidad no válido. Esto se hace para asegurar la compatibilidad con el código existente que usa nuevas secuencias de escape como \p o \k.

+ +
+

Para reconocer este caracter literalmente, escápalo consigo mismo. En otras palabras, para buscar \ usa /\\/.

+
+
+ +

Aserciones

+ + + +

Aserciones de tipo límite

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracteresSignificado
^ +

Coincide con el comienzo de la entrada. Si el indicador multilínea se establece en true, también busca inmediatamente después de un caracter de salto de línea. Por ejemplo, /^A/ no reconoce la "A" en "an A", pero encuentra la primera "A" en "An A".

+ +
+

Este caracter tiene un significado diferente cuando aparece al comienzo de un grupo.

+
+
$ +

Coincide con el final de la entrada. Si el indicador multilínea se establece en true, también busca hasta inmediatamente antes de un caracter de salto de línea. Por ejemplo, /a$/ no reconoce la "t" en "eater", pero sí en "eat".

+
\b +

Marca el límite de una palabra. Esta es la posición en la que un caracter de palabra no va seguido o precedido por otro caracter de palabra, por ejemplo, entre una letra y un espacio. Ten en cuenta que el límite de una palabra encontrada no se incluye en el resultado. En otras palabras, la longitud de un límite de palabra encontrada es cero.

+ +

Ejemplos:

+ +
    +
  • /\bm/ reconoce la "m" en "moon".
  • +
  • /oo\b/ no reconoce "oo" en "moon", porque "oo" va seguido de "n", que es un caracter de palabra.
  • +
  • /oon\b/ encuentra "oon" en "moon", porque "oon" es el final de la cadena, por lo que no va seguido de un caracter de palabra.
  • +
  • /\w\b\w/ nunca encontrará nada, porque un caracter de palabra nunca puede ir seguido de un caracter que no sea de palabra y otro de palabra.
  • +
+ +

Para encontrar un caracter de retroceso ([\b]), consulta Clases de caracteres.

+
\B +

Coincide con un límite sin palabra. Esta es una posición en la que el caracter anterior y siguiente son del mismo tipo: ambos deben ser palabras o ambos deben ser no palabras, por ejemplo, entre dos letras o entre dos espacios. El principio y el final de una cadena se consideran no palabras. Igual que el límite de palabras encontradas, el límite sin palabras reconocidas tampoco se incluye en el resultado. Por ejemplo, /\Bon/ reconoce "on" en "at noon", y /ye\B/ encuentra "ye" en "possibly yesterday".

+
+ +

Otras aserciones

+ +
+

Nota: El caracter ? también se puede utilizar como cuantificador.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracteresSignificado
x(?=y) +

Aserción anticipada: Coincide con "x" solo si "x" va seguida de "y". Por ejemplo, /Jack(?=Sprat)/ reconocerá a "Jack" solo si va seguida de "Sprat".
+ /Jack(?=Sprat|Frost)/ encontrará a "Jack" solo si va seguida de "Sprat" o "Frost". Sin embargo, ni "Sprat" ni "Frost" forman parte del resultado.

+
x(?!y) +

Aserción de búsqueda anticipada negativa: reconoce la "x" solo si la "x" no va seguida de "y". Por ejemplo, /\d+(?!\.)/ reconoce un número solo si no va seguido de un punto decimal. /\d+(?!\.)/.exec('3.141') halla el "141" pero no el "3".

+
(?<=y)x +

Aserción de búsqueda inversa: encontrará "x" solo si "x" está precedida por "y". Por ejemplo, /(?<=Jack)Sprat/ reconoce a "Sprat" solo si está precedido por "Jack". /(?<=Jack|Tom)Sprat/ empareja "Sprat" solo si está precedido por "Jack" o "Tom". Sin embargo, ni "Jack" ni "Tom" forman parte del resultado.

+
(?<!y)x +

Aserción de búsqueda inversa negativa: Reconoce la "x" solo si "x" no está precedida por "y". Por ejemplo, /(?<!-)\d+/ encuentra un número solo si no está precedido por un signo menos. /(?<!-)\d+/.exec('3') encuentra el "3". /(?<!-)\d+/.exec('-3') no lo reconoce porque el número está precedido por el signo menos.

+
+ +

Grupos y rangos

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracteresSignificado
x|y +

Coincide con "x" o "y". Por ejemplo, /verde|roja/ reconoce el "verde" en "manzana verde" y "roja" en "manzana roja".

+
[xyz]
+ [a-c]
+

Un juego de caracteres. Coincide con cualquiera de los caracteres incluidos. Puedes especificar un rango de caracteres mediante el uso de un guión, pero si el guión aparece como el primero o último caracter entre corchetes, se toma como un guión literal para incluirse en el juego de caracteres como un caracter normal. También es posible incluir una clase de caracteres en un juego de caracteres.

+ +

Por ejemplo, [abcd] es lo mismo que [a-d]. Coincide con la "b" en "brisket" y la "c" en "chop".

+ +

Por ejemplo, [abcd-] y [-abcd] reconoce la "b" en "brisket", la "c" en "chop" y el "-" (guión) en "non-profit".

+ +

Por ejemplo, [\w-] es lo mismo que [A-Za-z0-9_-]. Ambos reconocen la "b" en "brisket", la "c" en "chop" y la "n" en "non-profit".

+
+

[^xyz]
+ [^a-c]

+
+

Un juego de caracteres negado o complementado. Es decir, hallan cualquier cosa que no esté encerrada entre corchetes. Puedes especificar un rango de caracteres mediante el uso de un guión, pero si el guión aparece como el primero o último caracter entre corchetes, se toma como un guión literal para incluirse en el juego de caracteres como un caracter normal. Por ejemplo, [^abc] es lo mismo que [^a-c]. Inicialmente halla la "o" en "bacon" y la "h" en "chuleta".

+ +
+

El caracter ^ además puede indicar el comienzo de la entrada.

+
+
(x) +

Grupo de captura: Encuentra la x y la recuerda. Por ejemplo, /(foo)/ encuentra y recuerda "foo" en "foo bar". 

+ +

Una expresión regular puede tener varios grupos de captura. En los resultados, coincide con los grupos capturados normalmente en un arreglo cuyos miembros están en el mismo orden que los paréntesis de la izquierda en el grupo capturado. Este suele ser solo el orden de los propios grupos capturados. Esto se vuelve importante cuando los grupos capturados están anidados. Se accede a las coincidencias utilizando el índice de los elementos del resultado ([1], ..., [n]) o desde las propiedades predefinidas del objeto RegExp ($1, ..., $9).

+ +

Los grupos de captura tienen una penalización de rendimiento. Si no necesitas que se recupere la subcadena coincidente, prefiere los paréntesis que no capturen (ve más abajo).

+ +

String.match() no devolverá grupos si el indicador /.../g está configurado. Sin embargo, aún puedes usar String.matchAll() para obtener todas los encontrados.

+
\n +

Donde "n" es un número entero positivo. Una referencia posterior a la última subcadena que coincide con el paréntesis n en la expresión regular (contando los paréntesis izquierdos). Por ejemplo, /apple(,)\sorange\1/ coincide con "apple, orange" en "apple, orange, cherry, peach".

+
\k<Name> +

Una referencia inversa a la última subcadena encontrada con el grupo de captura Nombrado especificado por <Name>.

+ +

Por ejemplo, /(?<title>\w+), yes \k<title>/ concuerda con "Sir, yes Sir" en "Do you copy? Sir, yes Sir!".

+ +
+

\k aquí se usa literalmente para indicar el comienzo de una referencia a un grupo de captura nombrado.

+
+
(?<Name>x) +

Grupo de captura nombrado: reconoce la "x" y la almacena en la propiedad group del resultado devuelto bajo el nombre especificado por <Name>. Los corchetes angulares (< y >) son obligatorios para el nombre del grupo.

+ +

Por ejemplo, para extraer el código de área de Estados Unidos de un número de teléfono, podríamos usar /\((?<area>\d\d\d)\)/. El número resultante debería aparecer en matches.groups.area.

+
(?:x)Grupo sin captura: reconoce la "x" pero no recuerda el resultado. La subcadena encontrada no se puede recuperar de los elementos del arreglo resultante ([1], ..., [n]) o de las propiedades predefinidas del objeto RegExp ($1, ..., $9).
+ +

Cuantificadores

+ + + +
+

Nota: A continuación, elemento se refiere no solo a caracteres singulares, sino que también incluye clases de caracteres, escapes de propiedad Unicode, grupos y rangos.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracteresSignificado
x* +

Concuerda 0 o más veces con el elemento "x" anterior. Por ejemplo, /bo*/ reconoce a "boooo" en "Un fantasma booooed" y "b" en "A bird warbled", pero nada en "Una cabra gruñó".

+
x+ +

Encuentra 1 o más veces el elemento "x" anterior Equivalente a {1,}. Por ejemplo, /a+/ encuentra la "a" en "candy" y todas las "a"es en "caaaaaaandy".

+
x? +

Halla 0 o 1 vez el elemento "x" anterior. Por ejemplo, /e?Le?/ reconoce a "el" en "ángel" y a "le" en "angle".

+ +

Si se usa inmediatamente después de cualquiera de los cuantificadores *, +, ?o {}, hace que el cuantificador no codicioso (que reconoce el número mínimo de veces), a diferencia del predeterminado, que es codicioso (que reconoce el número máximo de veces).

+
x{n} +

Donde "n" es un número entero positivo, concuerda exactamente con "n" apariciones del elemento "x" anterior. Por ejemplo, /a{2}/ no reconoce la "a" en "candy", pero reconoce todas las "a"s en "caandy" y las dos primeras "a"s en "caaandy ".

+
x{n,} +

Donde "n" es un número entero positivo, concuerda con al menos "n" apariciones del elemento "x". Por ejemplo, /a{2,}/ no reconoce la "a" en "candy", pero reconoce todas las "a" en "caandy" y en "caaaaaaandy".

+
x{n,m} +

Donde "n" es 0 o un número entero positivo, "m" es un número entero positivo y m > n, reconoce por lo menos "n" y como máximo "m" apariciones del elemento "x" anterior. Por ejemplo, /a{1,3}/ no reconoce nada en "cndy", la "a" en "caramelo", las dos "a" en "caandy" y las tres primeras "a" está en "caaaaaaandy". Observa que al comparar "caaaaaaandy", las "aaa" encontradas, aunque la cadena original tenía más "a" s.

+
+

x*?
+ x+?
+ x??
+ x{n}?
+ x{n,}?
+ x{n,m}?

+
+

De manera predeterminada, los cuantificadores como * y + son "codiciosos", lo cual significa que intentan hacer coincidir la mayor cantidad de cadena posible. El carácter ? después del cuantificador hace que este sea "no codicioso": lo cual significa que se detendrá tan pronto como encuentre una concordancia. Por ejemplo, dada una cadena "algo como <foo> <bar> new </bar> </foo>":

+ +
    +
  • /<.*>/ reconocerá "<foo> <bar> nuevo </bar> </foo>"
  • +
  • /<.*?>/ encajará "<foo>"
  • +
+
+ +

Escapa la propiedad Unicode

+ + + +
// Valores no binarios
+\p{UnicodePropertyValue}
+\p{UnicodePropertyName=UnicodePropertyValue}
+
+// Valores binarios y no binarios
+\p{UnicodeBinaryPropertyName}
+
+// Negación: \P is negado \p
+\P{UnicodePropertyValue}
+\P{UnicodeBinaryPropertyName}
+
+ +
+
UnicodeBinaryPropertyName
+
El nombre de una propiedad binaria. Por ejemplo: ASCII, Alpha, Math, Diacrítica, Emoji, Hex_Digit, Math, Espacio_blanco, etc. Consulta Unicode Data PropList.txt para obtener más información.
+
UnicodePropertyName
+
+ +
+
El nombre de una propiedad no binaria:
+
+ + + +

Consulta también PropertyValueAliases.txt

+ +
+
UnicodePropertyValue
+
Uno de los fragmentos enumerados en la sección Valores, más adelante. Muchos valores tienen alias o abreviaturas (por ejemplo, el valor Decimal_Number para la propiedad General_Category se puede escribir cómo Nd, digit, o Decimal_number). Para la mayoría de los valores, la parte UnicodePropertyName y el signo igual se pueden omitir. Si se especifica un UnicodePropertyName, el valor debe corresponder al tipo de propiedad proporcionado.
+
+ +
+

Nota: Puesto que hay muchas propiedades y valores disponibles, no las describiremos exhaustivamente aquí, sino que proporcionaremos varios ejemplos.

+
diff --git a/files/es/web/javascript/guide/regular_expressions/clases_de_caracteres/index.html b/files/es/web/javascript/guide/regular_expressions/clases_de_caracteres/index.html deleted file mode 100644 index 6de027b270..0000000000 --- a/files/es/web/javascript/guide/regular_expressions/clases_de_caracteres/index.html +++ /dev/null @@ -1,220 +0,0 @@ ---- -title: Clases de caracteres -slug: Web/JavaScript/Guide/Regular_Expressions/Clases_de_caracteres -tags: - - Expresiones Regulares - - Guía - - JavaScript - - Referencia - - RegExp - - clases de caracteres -translation_of: Web/JavaScript/Guide/Regular_Expressions/Character_Classes ---- -

{{JsSidebar("Guía de JavaScript")}}

- -

Las clases de caracteres distinguen tipos de caracteres como, por ejemplo, distinguen entre letras y dígitos.

- -
{{EmbedInteractiveExample("pages/js/regexp-character-classes.html")}}
- -

Tipos

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracteresSignificado
. -

Tiene uno de los siguientes significados:

- -
    -
  • Coincide con cualquier carácter único excepto terminadores de línea: \n, \r, \u2028 o \u2029. Por ejemplo, /.i/ coincide con "mi" y "si", pero no con "día", en "si alegra mi día".
  • -
  • Dentro de un juego de caracteres, el punto pierde su significado especial y concuerda con un punto literal.
  • -
- -

Ten en cuenta que el indicador multilínea m no cambia el comportamiento del punto. Por lo tanto, para hacer coincidir un patrón en varias líneas, se puede utilizar el conjunto de caracteres [^] — coincidirá con cualquier carácter, incluidas las nuevas líneas.

- -

ES2018 agregó el indicador s "dotAll", el cual permite que el punto también coincida con los terminadores de línea.

-
\d -

Busca cualquier dígito (número arábigo). Equivalente a [0-9]. Por ejemplo, /\d/ o /[0-9]/ coincide con "2" en "B2 es el número de suite".

-
\D -

Busca cualquier caracter que no sea un dígito (número arábigo). Equivalente a [^0-9]. Por ejemplo, /\D/ o /[^0-9]/ coincide con "B" en "B2 es el número de suite".

-
\w -

Busca cualquier caracter alfanumérico del alfabeto latino básico, incluido el caracter de subrayado. Equivalente a [A-Za-z0-9_]. Por ejemplo, /\w/ coincide con "m" en "manzana", "5" en "$5.28", "3" en "3D" y "m" en "Émanuel".

-
\W -

Busca cualquier caracter que no sea un caracter de palabra del alfabeto latino básico. Equivalente a [^A-Za-z0-9_]. Por ejemplo, /\W/ o /[^A-Za-z0-9_]/ coincide con "%" en "50%" y "É" en "Émanuel".

-
\s -

Busca un solo caracter de espacio en blanco, incluido el espacio, tabulación, avance de página, avance de línea y otros espacios Unicode. Equivalente a [ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]. Por ejemplo, /\s\w*/ encuentra " bar" en "foo bar".

-
\S -

Busca un solo caracter que no sea un espacio en blanco. Equivalente a [^ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]. Por ejemplo, /\S\w*/ encuentra "foo" en "foo bar".

-
\tCoincide con una tabulación horizontal.
\rCoincide con un retorno de carro.
\nCoincide con un salto de línea.
\vCoincide con una tabulación vertical.
\fCoincide con un caracter de avance de página.
[\b]Coincide con un caracter de retroceso. Si estás buscando el carácter de límite de palabra (\b), consulta {{JSxRef("../Guide/Regular_Expressions/Boundaries", "Límites")}}.
\0Coincide con un caracter NUL. No sigue a este con otro dígito.
\cX -

Coincide con un caracter de control mediante {{Interwiki("wikipedia", "Caret_notation", "notación de intercalación")}}, donde "X" es una letra de la A a la Z (correspondiente a los puntos de código U+0001-U+001F). Por ejemplo, /\cM/ encuentra "\r" en "\r\n".

-
\xhhCoincide con el carácter con el código hh (dos dígitos hexadecimales).
\uhhhhCoincide con una unidad de código UTF-16 con el valor hhhh (cuatro dígitos hexadecimales).
\u{hhhh} o \u{hhhhh}(Solo cuando se establece el indicador u). Hace coincidir el carácter con el valor Unicode U+hhhh o U+hhhhh (dígitos hexadecimales).
\ -

Indica que el siguiente caracter se debe tratar de manera especial o "escaparse". Se comporta de dos formas.

- -
    -
  • Para los caracteres que generalmente se tratan literalmente, indica que el siguiente caracter es especial y no se debe interpretar literalmente. Por ejemplo, /b/ coincide con el carácter "b". Al colocar una barra invertida delante de "b", es decir, usando /\b/, el carácter se vuelve especial para significar que coincide con el límite de una palabra.
  • -
  • Para los caracteres que generalmente se tratan de manera especial, indica que el siguiente caracter no es especial y se debe interpretar literalmente. Por ejemplo, "*" es un carácter especial que significa que deben coincidir 0 o más ocurrencias del carácter anterior; por ejemplo, /a*/ significa coincidir con 0 o más "a"es. Para hacer coincidir * literalmente, precede con una barra invertida; por ejemplo, /a\*/ coincide con "a*".
  • -
- -
-

Para reconocer este caracter literalmente, escápalo consigo mismo. En otras palabras, para buscar \ usa /\\/.

-
-
- -

Ejemplos

- -

Buscar una serie de dígitos

- -
var datosAleatorios = "015 354 8787 687351 3512 8735";
-var regexpCuatroDigitos = /\b\d{4}\b/g;
-// \b indica un límite (es decir, no empieza a coincidir en medio de una palabra)
-// \d{4} indica un dígito, cuatro veces
-// \b indica otro límite (es decir, no termina la coincidencia en medio de una palabra)
-
-
-console.table(datosAleatorios.match(regexpCuatroDigitos));
-// ['8787', '3512', '8735']
-
- -

Busca una palabra (del alfabeto latino) que comience con A

- -
var extractoAlicia = "Estoy segura de que no soy Ada, dijo, 'porque su cabello se hace en rizos tan largos, y el mío no se riza en absoluto'.";
-var regexpPalabraEmpiezaConA = /\b[aA]\w+/g;
-// \b indica un límite (es decir, no empieza a coincidir en medio de una palabra)
-// [aA] indica las letras a o A
-// \w+ indica cualquier carácter *del alfabeto latino*, varias veces
-
-console.table(extractoAlicia.match(regexpPalabraEmpiezaConA));
-// ["Ada", "absoluto"]
-
- -

Busca una palabra (de caracteres Unicode)

- -

En lugar del alfabeto latino, podemos usar una variedad de caracteres Unicode para identificar una palabra (de modo que podamos tratar con texto en otros idiomas, tal como Ruso o Árabe). El "Plano multilingüe básico" de Unicode contiene la mayoría de los caracteres que se utilizan en todo el mundo y podemos utilizar clases y rangos de caracteres para reconocer las palabras escritas con esos caracteres.

- -
var textoNoEs = "Приключения Алисы в Стране чудес";
-var regexpPalabraBMP = /([\u0000-\u0019\u0021-\uFFFF])+/gu;
-// BMP pasa por U+0000 a U+FFFF pero el espacio es U+0020
-
-console.table(textoNoEs.match(regexpPalabraBMP));
-[ 'Приключения', 'Алисы', 'в', 'Стране', 'чудес' ]
-
- - - -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-characterclass', 'RegExp: Clases de caracteres')}}
- -

Compatibilidad del navegador

- -

Para obtener información sobre la compatibilidad del navegador, consulta la {{JSxRef("../Guide/Regular_Expressions", "tabla principal de compatibilidad de expresiones regulares", "#Compatibilidad_del_navegador")}}.

- -

Ve también

- - diff --git a/files/es/web/javascript/guide/regular_expressions/cuantificadores/index.html b/files/es/web/javascript/guide/regular_expressions/cuantificadores/index.html deleted file mode 100644 index bc2821219f..0000000000 --- a/files/es/web/javascript/guide/regular_expressions/cuantificadores/index.html +++ /dev/null @@ -1,182 +0,0 @@ ---- -title: Cuantificadores -slug: Web/JavaScript/Guide/Regular_Expressions/Cuantificadores -tags: - - Expresiones Regulares - - Guía - - JavaScript - - Referencia - - cuantificadores - - regex -translation_of: Web/JavaScript/Guide/Regular_Expressions/Quantifiers ---- -

{{jsSidebar("JavaScript Guide")}}

- -

Los cuantificadores indican el número de caracteres o expresiones que deben coincidir.

- -
{{EmbedInteractiveExample("pages/js/regexp-quantifiers.html", "taller")}}
- -

Tipos

- - - -
-

Nota: A continuación, elemento se refiere no solo a caracteres individuales, sino que también incluye {{JSxRef("../Guide/Regular_Expressions/Character_Classes", "clases de caracteres")}}, {{JSxRef("../Guide/Regular_Expressions/Unicode_Property_Escapes", "escapes de propiedades Unicode")}}, {{JSxRef("../Guide/Regular_Expressions/Grupos_y_rangos", "grupos y rangos")}}.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracteresSignificado
x* -

Concuerda 0 o más veces con el elemento "x" anterior. Por ejemplo, /bu*/ coincide con "buuuu" en "Un fantasma abuuuucheado" y "b" en "Un búho gorjeó", pero nada en "Una cabra gruñó".

-
x+ -

Encuentra 1 o más veces el elemento "x" anterior Equivalente a {1,}. Por ejemplo, /a+/ coincide con la "a" en "candy" y todas las "a"es en "caaaaaaandy".

-
x? -

Halla 0 o 1 vez el elemento "x" anterior. Por ejemplo, /e?le?/ coincide con "el" en "ángel" y "ele" en "ángeles".

- -

Si se usa inmediatamente después de cualquiera de los cuantificadores *, +, ?, o {}, hace que el cuantificador no sea codicioso (es decir que coincida con el mínimo número de veces), a diferencia del predeterminado, que es codicioso (que coincide con el máximo número de veces).

-
x{n} -

Donde "n" es un número entero positivo, concuerda exactamente con "n" apariciones del elemento "x" anterior. Por ejemplo, /a{2}/ no coincide con la "a" de "candy", pero coincide con todas las "a"es de "caandy" y las dos primeras "a"es en "caaandy".

-
x{n,} -

Donde "n" es un número entero positivo, concuerda con al menos "n" apariciones del elemento "x". Por ejemplo, /a{2,}/ no coincide con las "a"es en "caramelo", pero coincide con todas las "a"es en "caaraamelo" y en "caaaaaaaraaaamelo".

-
x{n,m} -

Donde "n" es 0 o un número entero positivo, "m" es un número entero positivo y m > n coincide con al menos "n" y como máximo "m" apariciones del elemento "x" anterior. Por ejemplo, /a{1,3}/ no coincide con nada en "crmelo", la "a" en "carmelo", las dos "a"es en "caarmelo" y las tres primeras "a"es en "caaaaaaarmelo". Observa que al comparar "caaaaaaarmelo", encuentra las "aaa", aunque la cadena original tenía más "a"es.

-
-

x*?
- x+?
- x??
- x{n}?
- x{n,}?
- x{n,m}?

-
-

De manera predeterminada, los cuantificadores como * y + son "codiciosos", lo cual significa que intentan hacer coincidir la mayor cantidad posible de la cadena. El caracter ? después del cuantificador hace que el cuantificador "no sea codicioso": lo cual significa que se detendrá tan pronto como encuentre una coincidencia. Por ejemplo, dada una cadena como "algún <foo> <bar> nuevo </bar> </foo>":

- -
    -
  • /<.*>/ coincidirá con "<foo> <bar> nuevo </bar> </foo>"
  • -
  • /<.*?>/ coincidirá con "<foo>"
  • -
-
- -

Ejemplos

- -

Patrón repetido

- -
var palabraTerminadaConAes = /\w+a+\b/;
-var mensajeDelicado = "Esto es Espartaaaaaaa";
-
-console.table(mensajeDelicado.match(palabraTerminadaConAes)); // [ "Espartaaaaaaa" ]
-
- -

Conteo de caracteres

- -
var palabraDeUnaLetra = /\b\w\b/g;
-var palabraNoTanLarga = /\b\w{1,6}\b/g;
-var palabraLaaaaarga = /\b\w{10,}\b/g;
-
-var frase = "¿Por qué me tengo que sentar a estudiar las tablas de multiplicar?";
-
-console.table(frase.match(palabraDeUnaLetra)); // ["a"]
-console.table(frase.match(palabraNoTanLarga));    // ["Por", "qu", "me", "tengo", "que", "sentar", "a", "las", "tablas", "de"]
-console.table(frase.match(palabraLaaaaarga));      // ["multiplicar"]
-
- -

Caracter opcional

- -
var londinText = "He asked his neighbour a favour.";
-var yanquiText = "He asked his neighbor a favor.";
-
-var regexpEnding = /\w+ou?r/g;
-// \w+ Una o varias letras
-// o   seguida de una "o",
-// u?  opcionalmente seguida de una "u"
-// r   seguida de una "r"
-
-console.table(londinText.match(regexpEnding));
-// ["neighbour", "favour"]
-
-console.table(yanquiText.match(regexpEnding));
-// ["neighbor", "favor"]
-
- -

Codicioso versus no codicioso

- -
var texto = "Debo estar muy cerca del centro de la tierra.";
-var regexpCodiciosa = /[\w ]+/;
-// [\w ]      una letra del alfabeto latino o un espacio en blanco
-//      +     una o varias veces
-
-console.log(texto.match(regexpCodiciosa)[0]);
-// "Debo estar muy cerca del centro de la tierra."
-// casi todo el texto coincide (omite el caracter de punto)
-
-var regexpNoCodiciosa = /[\w ]+?/; // Observa el signo de interrogación
-console.log(texto.match(regexpNoCodiciosa));
-// "D"
-// La coincidencia es la más pequeña posible
-
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-quantifier', 'RegExp: Quantifiers')}}
- -

Compatibilidad del navegador

- -

Para obtener información sobre la compatibilidad del navegador, consulta la {{JSxRef("../Guide/Regular_Expressions", "tabla principal de compatibilidad de expresiones regulares", "#Compatibilidad_del_navegador")}}.

- -

Ve también

- - diff --git a/files/es/web/javascript/guide/regular_expressions/escapes_de_propiedades_unicode/index.html b/files/es/web/javascript/guide/regular_expressions/escapes_de_propiedades_unicode/index.html deleted file mode 100644 index 7fc434a0dc..0000000000 --- a/files/es/web/javascript/guide/regular_expressions/escapes_de_propiedades_unicode/index.html +++ /dev/null @@ -1,177 +0,0 @@ ---- -title: Escapes de propiedades Unicode -slug: Web/JavaScript/Guide/Regular_Expressions/Escapes_de_propiedades_Unicode -tags: - - Expresiones Regulares - - Guía - - JavaScript - - Referencia - - escapes de propiedades unicode - - regex -translation_of: Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes ---- -

{{jsSidebar("JavaScript Guide")}}

- -

Los escapes de propiedad Unicode en las {{JSxRef("../Guide/Regular_Expressions", "Expresiones regulares")}} permiten la coincidencia de caracteres según sus propiedades Unicode. Un caracter se describe mediante varias propiedades que, o bien, son binarias ("tipo booleano") o, no binarias. Por ejemplo, puedes usar escapes de propiedades Unicode para reconocer emojis, signos de puntuación, letras (incluso letras de idiomas específicos o scripts), etc.

- -
{{EmbedInteractiveExample("pages/js/regexp-unicode-property-escapes.html", "taller")}}
- -
-

Nota: Para que funcionen los escapes de propiedad Unicode, una expresión regular debe utilizar {{JSxRef("../Guide/Regular_Expressions", "la bandera u", "#Busqueda_avanzada_con_banderas")}} que indica que una cadena se debe considerar como una serie de puntos de código Unicode. Consulta también {{JSxRef("Objetos_globales/RegExp/unicode", "RegExp.prototype.unicode")}}.

-
- -
-

Nota: Algunas propiedades Unicode abarcan muchos más caracteres que algunas {{JSxRef("../Guide/Regular_Expressions/Character_Classes", "clases de caracteres")}} (como \w que coincide solo con letras latinas, desde a hasta z) pero esta última es más compatible con los navegadores (a partir de enero de 2020).

-
- -

Sintaxis

- - - -
// Valores no binarios
-\p{UnicodePropertyValue}
-\p{UnicodePropertyName=UnicodePropertyValue}
-
-// Valores binarios y no binarios
-\p{UnicodeBinaryPropertyName}
-
-// Negación: \P se niega con \p
-\P{UnicodePropertyValue}
-\P{UnicodeBinaryPropertyName}
-
- - - -

Consulta también PropertyValueAliases.txt

- -
-
UnicodeBinaryPropertyName
-
El nombre de una propiedad binaria. Por ejemplo: ASCII, Alfabético, Math, Diacrítico, Emoji, Dígito hexadecimal, Math, Espacio en blanco, etc. Consulta Unicode Data PropList.txt para obtener más información.
-
NombreDePropiedadUnicode
-
El nombre de una propiedad no binaria:
-
ValorDePropiedadUnicode
-
Uno de los fragmentos enumerados en la sección Valores, más adelante. Muchos valores tienen alias o abreviaturas (por ejemplo, el valor Decimal_Number para la propiedad General_Category se puede escribir Nd, digit, o Decimal_Number). Para la mayoría de los valores, la parte NombreDePropiedadUnicode y el signo igual se pueden omitir. Si se especifica un NombreDePropiedadUnicode, el valor debe corresponder al tipo de propiedad proporcionado.
-
- -
-

Nota: Debido a que hay muchas propiedades y valores disponibles, no los describiremos exhaustivamente aquí, en su lugar proporcionaremos varios ejemplos.

-
- -

Justificación

- -

Antes de ES2018, no existía una forma eficiente de hacer coincidir caracteres de diferentes conjuntos basados en scripts (como macedonio, griego, georgiano, etc.) o propertyName (como Emoji, etc.) en JavaScript. Consulta la propuesta tc39 sobre escapes de propiedad Unicode para obtener más información.

- -

Ejemplos

- -

Categorías generales

- -

Las categorías generales se utilizan para clasificar caracteres Unicode, y hay subcategorías disponibles para definir una categorización más precisa. Es posible utilizar formas cortas o largas en los escapes de propiedades Unicode.

- -

Se pueden utilizar para reconocer letras, números, símbolos, signos de puntuación, espacios, etc. Para obtener una lista más exhaustiva de categorías generales, consulta la especificación Unicode.

- -
// encontrar todas las letras de un texto
-let historia = "Es el gato de Cheshire: ahora tendré alguien con quien hablar";
-
-// Forma más explícita
-historia.match(/\p{General_Category=Letter}/gu);
-
-// No es obligatorio utilizar el nombre de la propiedad para las categorías generales
-historia.match(/\p{Letter}/gu);
-
-// Esto es equivalente (alias corto):
-historia.match(/\p{L}/gu);
-
-// Esto también es equivalente (conjunción de todas las subcategorías que utilizan alias cortos)
-historia.match(/\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}/gu);
-
- -

Scripts y extensiones de script

- -

Algunos idiomas usan diferentes signos para su sistema de escritura. Por ejemplo, el Inglés y el Español se escriben con los signos latinos, mientras que el Árabe y el Ruso se escriben con otros signos (Árabe y Cirílico, respectivamente). Las propiedades Unicode Script y Script_Extensions permiten que las expresiones regulares coincidan con los caracteres según el script con el que se utilizan principalmente (Script) o según el conjunto de los scripts a los que pertenecen (Script_Extensions).

- -

Por ejemplo, A pertenece al script Latin y ε al script Greek (Griego).

- -
let caracteresMezclados = "aεЛ";
-
-// Usando el nombre canónico "largo" del script
-caracteresMezclados.match(/\p{Script=Latin}/u); // a
-
-// Usando un alias corto para el script
-caracteresMezclados.match(/\p{Script=Greek}/u); // ε
-
-// Usando el nombre corto Sc para la propiedad Script
-caracteresMezclados.match(/\p{Sc=Cyrillic}/u); // Л
-
- -

Para obtener más detalles, consulta la especificación Unicode y la Tabla de scripts en la especificación ECMAScript.

- -

Si se usa un carácter en un conjunto limitado de scripts, la propiedad Script solo coincidirá con el script "predominante" utilizado. Si quieres hacer coincidir caracteres basados en un script "no predominante", podrías usar la propiedad Script_Extensions (Scx para abreviar).

- -
// ٢ es el dígito 2 en notación Árabe-Índica
-// si bien está escrito en un script predominante en árabe
-// también se puede escribir en el script Thaana
-
-"٢".match(/\p{Script=Thaana}/u);
-// null ya que Thaana no es el script predominante     super()
-
-"٢".match(/\p{Script_Extensions=Thaana}/u);
-// ["٢", index: 0, input: "٢", groups: undefined]
-
- -

Escapes de propiedades Unicode versus Clases de caracteres

- -

Con las expresiones regulares de JavaScript, también es posible utilizar {{JSxRef("../Guide/Regular_Expressions/Clases_de_caracteres", "clases de caracteres")}} y especialmente \w o \d para hacer coincidir letras o dígitos. Sin embargo, estos formularios solo coinciden con caracteres de la escritura latina (en otras palabras, de la a a la z y A a Z para \w y 0 a 9 para \d). Como se muestra en {{JSxRef("../Guide/Regular_Expressions/Clases_de_caracteres", "este ejemplo", "#Busca_una_palabra_de_caracteres_Unicode")}}, puede ser un poco torpe trabajar con textos no latinos.

- -

Las categorías de escape de propiedad Unicode abarcan muchos más caracteres y \p{Letter} o \p{Number} funcionarán para cualquier script.

- -
// Intentando usar rangos para evitar limitaciones de \w:
-
-const textoNoEs = "Приключения Алисы в Стране чудес";
-const regexpPalabraBMP = /([\u0000-\u0019\u0021-\uFFFF])+/gu;
-// BMP pasa por U+0000 a U+FFFF pero el espacio es U+0020
-
-console.table(textoNoEs.match(regexpPalabraBMP));
-
-// El uso de la propiedad Unicode se escapa en su lugar
-const regexpEPU = /\p{L}+/gu;
-console.table(textoNoEs.match(regexpEPU));
-
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-runtime-semantics-unicodematchproperty-p', 'RegExp: Escapes de propiedades Unicode')}}
- -

Compatibilidad del navegador

- -

Para obtener información sobre la compatibilidad del navegador, consulta la {{JSxRef("../Guide/Regular_Expressions", "tabla principal de compatibilidad de expresiones regulares", "#Compatibilidad_del_navegador")}}.

- -

Ve también

- - diff --git a/files/es/web/javascript/guide/regular_expressions/groups_and_ranges/index.html b/files/es/web/javascript/guide/regular_expressions/groups_and_ranges/index.html new file mode 100644 index 0000000000..34eed03589 --- /dev/null +++ b/files/es/web/javascript/guide/regular_expressions/groups_and_ranges/index.html @@ -0,0 +1,176 @@ +--- +title: Grupos y rangos +slug: Web/JavaScript/Guide/Regular_Expressions/Grupos_y_rangos +tags: + - Expresiones Regulares + - Guía + - JavaScript + - Rangos + - Referencia + - grupos + - regex +translation_of: Web/JavaScript/Guide/Regular_Expressions/Groups_and_Ranges +--- +

{{jsSidebar("JavaScript Guide")}}

+ +

Los grupos y rangos indican grupos y rangos de caracteres de expresión.

+ +
{{EmbedInteractiveExample("pages/js/regexp-groups-ranges.html")}}
+ +

Tipos

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracteresSignificado
x|y +

Coincide con "x" o "y". Por ejemplo, /verde|roja/ coincide con "verde" en "manzana verde" y "roja" en "manzana roja".

+
[xyz]
+ [a-c]
+

Un juego de caracteres. Coincide con cualquiera de los caracteres incluidos. Puedes especificar un rango de caracteres mediante el uso de un guión, pero si el guión aparece como el primero o último caracter entre corchetes, se toma como un guión literal para incluirse en el juego de caracteres como un caracter normal. También es posible incluir una clase de caracteres en un juego de caracteres.

+ +

Por ejemplo, [abcd] es lo mismo que [a-d]. Coincide con la "b" en "brisket" y la "c" en "chop".

+ +

Por ejemplo, [abcd-] y [-abcd] coinciden con la "b" en "brisket", la "c" en "chop" y el "-" (guión) en "sin-fin".

+ +

Por ejemplo, [\w-] es lo mismo que [A-Za-z0-9_-]. Ambos reconocen la "b" en "brisket", la "c" en "chop" y la "s" en "sin-fin".

+
+

[^xyz]
+ [^a-c]

+
+

Un juego de caracteres negado o complementado. Es decir, hallan cualquier cosa que no esté encerrada entre corchetes. Puedes especificar un rango de caracteres mediante el uso de un guión, pero si el guión aparece como el primero o último caracter entre corchetes, se toma como un guión literal para incluirse en el juego de caracteres como un caracter normal. Por ejemplo, [^abc] es lo mismo que [^a-c]. Inicialmente halla la "o" en "bacon" y la "h" en "chuleta".

+ +
+

El caracter ^ también puede indicar el {{JSxRef("../Guide/Regular_Expressions/Assertions", "comienzo de la entrada")}}.

+
+
(x) +

Grupo de captura: Coincide con x y recuerda la coincidencia. Por ejemplo, /(foo)/ encuentra y recuerda "foo" en "foo bar".

+ +

Una expresión regular puede tener varios grupos de captura. En los resultados, coincide con los grupos capturados normalmente en un arreglo cuyos miembros están en el mismo orden que los paréntesis de la izquierda en el grupo capturado. Este suele ser solo el orden de los propios grupos capturados. Esto se vuelve importante cuando los grupos capturados están anidados. Se accede a las coincidencias utilizando el índice de los elementos del resultado ([1], ..., [n]) o desde las propiedades predefinidas del objeto RegExp ($1, ..., $9).

+ +

Los grupos de captura tienen una penalización de rendimiento. Si no necesitas que se recupere la subcadena coincidente, prefiere los grupos de no captura (ve {{anch("GpoDeNoCaptura", "más abajo")}}).

+ +

{{JSxRef("Objetos_globales/String/match", "String.match()")}} no devolverá grupos si se establece el indicador /.../g. Sin embargo, aún puedes usar {{JSxRef("Objetos_globales/String/matchAll", "String.matchAll()")}} para obtener todas las coincidencias.

+
\n +

Donde "n" es un número entero positivo. Una referencia inversa a la última subcadena que coincide con el paréntesis n en la expresión regular (contando los paréntesis izquierdos). Por ejemplo, /manzana(,)\snaranja\1/ coincide con "manzana, naranja" en "manzana, naranja, cereza, melocotón".

+
\k<Nombre> +

Una referencia inversa a la última subcadena que coincide con el grupo de captura Nombrado especificado por <Nombre>.

+ +

Por ejemplo, /(?<trato>\w+), si \k<trato>/ coincide con "Sr., sí Sr." en "¿Me copias? ¡Sr., sí Sr.!".

+ +
+

aquí se usa \k literalmente para indicar el comienzo de una referencia inversa a un grupo de captura con nombre.

+
+
(?<Nombre>x) +

Grupo de captura con nombre: Coincide con "x" y la almacena en la propiedad de grupos de las coincidencias devueltas con el nombre especificado por <Nombre>. Los corchetes angulares (< y >) son necesarios para el nombre del grupo.

+ +

Por ejemplo, para extraer el código de área de Estados Unidos de un número de teléfono, podrías usar /\((?<area>\d\d\d)\)/. El número resultante aparecería en matches.groups.area.

+
(?:x)Grupo de no captura: Coincide con "x" pero no recuerda la coincidencia. La subcadena coincidente no se puede recuperar de los elementos del arreglo resultante ([1], ..., [n]) o de las propiedades predefinidas del objeto RegExp ($1, ..., $9).
+ +

Ejemplos

+ +

Conteo de vocales

+ +
var aliceExcerpt = "Hubo un largo silencio después de esto, y Alicia solo podía escuchar susurros de vez en cuando.";
+var regexpVowels = /[aeiouy]/g;
+
+console.log("Número de vocales minúsculas: ", aliceExcerpt.match(regexpVowels).length);
+// Número de vocales: 34
+ +

Uso de grupos

+ +
let personList = `First_Name: John, Last_Name: Doe
+First_Name: Jane, Last_Name: Smith`;
+
+let regexpNames =  /First_Name: (\w+), Last_Name: (\w+)/mg;
+let match = regexpNames.exec(personList);
+do {
+  console.log(`Hola ${match[1]} ${match[2]}`);
+} while((match = regexpNames.exec(personList)) !== null);
+
+ +

Uso de grupos con nombre

+ +
let personList = `First_Name: John, Last_Name: Doe
+First_Name: Jane, Last_Name: Smith`;
+
+let regexpNames =  /First_Name: (?<firstname>\w+), Last_Name: (?<lastname>\w+)/mg;
+let match = regexpNames.exec(personList);
+do {
+  console.log(`Hola ${match.groups.firstname} ${match.groups.lastname}`);
+} while((match = regexpNames.exec(personList)) !== null);
+ +
+

Nota: No todos los navegadores admiten esta función; consulta la {{JSxRef("../Guide/Regular_Expressions", "tabla de compatibilidad", "#Compatibilidad_del_navegador")}}.

+
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-classranges', 'RegExp: Ranges')}}
+ +

Compatibilidad del navegador

+ +

Para obtener información sobre la compatibilidad del navegador, consulta la {{JSxRef("../Guide/Regular_Expressions", "tabla principal de compatibilidad de expresiones regulares", "#Compatibilidad_del_navegador")}}.

+ +

Ve también

+ + diff --git a/files/es/web/javascript/guide/regular_expressions/grupos_y_rangos/index.html b/files/es/web/javascript/guide/regular_expressions/grupos_y_rangos/index.html deleted file mode 100644 index 34eed03589..0000000000 --- a/files/es/web/javascript/guide/regular_expressions/grupos_y_rangos/index.html +++ /dev/null @@ -1,176 +0,0 @@ ---- -title: Grupos y rangos -slug: Web/JavaScript/Guide/Regular_Expressions/Grupos_y_rangos -tags: - - Expresiones Regulares - - Guía - - JavaScript - - Rangos - - Referencia - - grupos - - regex -translation_of: Web/JavaScript/Guide/Regular_Expressions/Groups_and_Ranges ---- -

{{jsSidebar("JavaScript Guide")}}

- -

Los grupos y rangos indican grupos y rangos de caracteres de expresión.

- -
{{EmbedInteractiveExample("pages/js/regexp-groups-ranges.html")}}
- -

Tipos

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracteresSignificado
x|y -

Coincide con "x" o "y". Por ejemplo, /verde|roja/ coincide con "verde" en "manzana verde" y "roja" en "manzana roja".

-
[xyz]
- [a-c]
-

Un juego de caracteres. Coincide con cualquiera de los caracteres incluidos. Puedes especificar un rango de caracteres mediante el uso de un guión, pero si el guión aparece como el primero o último caracter entre corchetes, se toma como un guión literal para incluirse en el juego de caracteres como un caracter normal. También es posible incluir una clase de caracteres en un juego de caracteres.

- -

Por ejemplo, [abcd] es lo mismo que [a-d]. Coincide con la "b" en "brisket" y la "c" en "chop".

- -

Por ejemplo, [abcd-] y [-abcd] coinciden con la "b" en "brisket", la "c" en "chop" y el "-" (guión) en "sin-fin".

- -

Por ejemplo, [\w-] es lo mismo que [A-Za-z0-9_-]. Ambos reconocen la "b" en "brisket", la "c" en "chop" y la "s" en "sin-fin".

-
-

[^xyz]
- [^a-c]

-
-

Un juego de caracteres negado o complementado. Es decir, hallan cualquier cosa que no esté encerrada entre corchetes. Puedes especificar un rango de caracteres mediante el uso de un guión, pero si el guión aparece como el primero o último caracter entre corchetes, se toma como un guión literal para incluirse en el juego de caracteres como un caracter normal. Por ejemplo, [^abc] es lo mismo que [^a-c]. Inicialmente halla la "o" en "bacon" y la "h" en "chuleta".

- -
-

El caracter ^ también puede indicar el {{JSxRef("../Guide/Regular_Expressions/Assertions", "comienzo de la entrada")}}.

-
-
(x) -

Grupo de captura: Coincide con x y recuerda la coincidencia. Por ejemplo, /(foo)/ encuentra y recuerda "foo" en "foo bar".

- -

Una expresión regular puede tener varios grupos de captura. En los resultados, coincide con los grupos capturados normalmente en un arreglo cuyos miembros están en el mismo orden que los paréntesis de la izquierda en el grupo capturado. Este suele ser solo el orden de los propios grupos capturados. Esto se vuelve importante cuando los grupos capturados están anidados. Se accede a las coincidencias utilizando el índice de los elementos del resultado ([1], ..., [n]) o desde las propiedades predefinidas del objeto RegExp ($1, ..., $9).

- -

Los grupos de captura tienen una penalización de rendimiento. Si no necesitas que se recupere la subcadena coincidente, prefiere los grupos de no captura (ve {{anch("GpoDeNoCaptura", "más abajo")}}).

- -

{{JSxRef("Objetos_globales/String/match", "String.match()")}} no devolverá grupos si se establece el indicador /.../g. Sin embargo, aún puedes usar {{JSxRef("Objetos_globales/String/matchAll", "String.matchAll()")}} para obtener todas las coincidencias.

-
\n -

Donde "n" es un número entero positivo. Una referencia inversa a la última subcadena que coincide con el paréntesis n en la expresión regular (contando los paréntesis izquierdos). Por ejemplo, /manzana(,)\snaranja\1/ coincide con "manzana, naranja" en "manzana, naranja, cereza, melocotón".

-
\k<Nombre> -

Una referencia inversa a la última subcadena que coincide con el grupo de captura Nombrado especificado por <Nombre>.

- -

Por ejemplo, /(?<trato>\w+), si \k<trato>/ coincide con "Sr., sí Sr." en "¿Me copias? ¡Sr., sí Sr.!".

- -
-

aquí se usa \k literalmente para indicar el comienzo de una referencia inversa a un grupo de captura con nombre.

-
-
(?<Nombre>x) -

Grupo de captura con nombre: Coincide con "x" y la almacena en la propiedad de grupos de las coincidencias devueltas con el nombre especificado por <Nombre>. Los corchetes angulares (< y >) son necesarios para el nombre del grupo.

- -

Por ejemplo, para extraer el código de área de Estados Unidos de un número de teléfono, podrías usar /\((?<area>\d\d\d)\)/. El número resultante aparecería en matches.groups.area.

-
(?:x)Grupo de no captura: Coincide con "x" pero no recuerda la coincidencia. La subcadena coincidente no se puede recuperar de los elementos del arreglo resultante ([1], ..., [n]) o de las propiedades predefinidas del objeto RegExp ($1, ..., $9).
- -

Ejemplos

- -

Conteo de vocales

- -
var aliceExcerpt = "Hubo un largo silencio después de esto, y Alicia solo podía escuchar susurros de vez en cuando.";
-var regexpVowels = /[aeiouy]/g;
-
-console.log("Número de vocales minúsculas: ", aliceExcerpt.match(regexpVowels).length);
-// Número de vocales: 34
- -

Uso de grupos

- -
let personList = `First_Name: John, Last_Name: Doe
-First_Name: Jane, Last_Name: Smith`;
-
-let regexpNames =  /First_Name: (\w+), Last_Name: (\w+)/mg;
-let match = regexpNames.exec(personList);
-do {
-  console.log(`Hola ${match[1]} ${match[2]}`);
-} while((match = regexpNames.exec(personList)) !== null);
-
- -

Uso de grupos con nombre

- -
let personList = `First_Name: John, Last_Name: Doe
-First_Name: Jane, Last_Name: Smith`;
-
-let regexpNames =  /First_Name: (?<firstname>\w+), Last_Name: (?<lastname>\w+)/mg;
-let match = regexpNames.exec(personList);
-do {
-  console.log(`Hola ${match.groups.firstname} ${match.groups.lastname}`);
-} while((match = regexpNames.exec(personList)) !== null);
- -
-

Nota: No todos los navegadores admiten esta función; consulta la {{JSxRef("../Guide/Regular_Expressions", "tabla de compatibilidad", "#Compatibilidad_del_navegador")}}.

-
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-classranges', 'RegExp: Ranges')}}
- -

Compatibilidad del navegador

- -

Para obtener información sobre la compatibilidad del navegador, consulta la {{JSxRef("../Guide/Regular_Expressions", "tabla principal de compatibilidad de expresiones regulares", "#Compatibilidad_del_navegador")}}.

- -

Ve también

- - diff --git a/files/es/web/javascript/guide/regular_expressions/hoja_de_referencia/index.html b/files/es/web/javascript/guide/regular_expressions/hoja_de_referencia/index.html deleted file mode 100644 index accc783aff..0000000000 --- a/files/es/web/javascript/guide/regular_expressions/hoja_de_referencia/index.html +++ /dev/null @@ -1,451 +0,0 @@ ---- -title: Hoja de referencia de sintaxis de expresiones regulares -slug: Web/JavaScript/Guide/Regular_Expressions/Hoja_de_referencia -tags: - - Cheatsheet - - Expresiones Regulares - - Guía - - Hoja de referencia - - JavaScript - - RegExp -translation_of: Web/JavaScript/Guide/Regular_Expressions/Cheatsheet ---- -
{{jsSidebar("Guía de JavaScript")}}
- -

Esta página proporciona una hoja de referencia general de todas las capacidades de la sintaxis de RegExp agregando el contenido de los artículos en la guía RegExp. Si necesitas más información sobre un tema específico, sigue el enlace del título correspondiente para acceder al artículo completo o dirígete a la guía.

- -

Clases de caracteres

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracteresSignificado
. -

Tiene uno de los siguientes significados:

- -
    -
  • Encuentra cualquier caracter único excepto terminadores de línea: \n, \r, \u2028 o \u2029. Por ejemplo, /.y/ reconoce "my" y "ay", pero no "yes", en "yes make my day".
  • -
  • Dentro de un juego de caracteres, el punto pierde su significado especial y concuerda con un punto literal.
  • -
- -

Ten en cuenta que el indicador multilínea m no cambia el comportamiento del punto. Por lo tanto, para buscar en un patrón multilínea, puedes usar el juego de caracteres [^] — este encontrará con cualquier caracter, incluidas las nuevas líneas.

- -

ES2018 agregó el indicador s "dotAll", que permite que el punto también concuerde con los terminadores de línea.

-
\d -

Busca cualquier dígito (número arábigo). Equivalente a [0-9]. Por ejemplo, /\d/ o /[0-9]/ encuentra el "2" en "B2 es el número de suite".

-
\D -

Busca cualquier caracter que no sea un dígito (número arábigo). Equivalente a [^0-9]. Por ejemplo, /\D/ o /[^0-9]/ encuentra la "B" en "B2 es el número de suite".

-
\w -

Busca cualquier caracter alfanumérico del alfabeto latino básico, incluido el caracter de subrayado. Equivalente a [A-Za-z0-9_]. Por ejemplo, /\w/ encuentra la "m" en "manzana", el "5" en "$5.28" y el "3" en "3D".

-
\W -

Busca cualquier caracter que no sea un caracter de palabra del alfabeto latino básico. Equivalente a [^A-Za-z0-9_]. Por ejemplo, /\W/ o /[^A-Za-z0-9_]/ encuentra el caracter "%" en "50%".

-
\s -

Busca un solo caracter de espacio en blanco, incluido el espacio, tabulación, avance de página, avance de línea y otros espacios Unicode. Equivalente a [ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]. Por ejemplo, /\s\w*/ reconoce " bar" en "foo bar".

-
\S -

Busca un solo caracter que no sea un espacio en blanco. Equivalente a [^ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]. Por ejemplo, /\S\w*/ encuentra "foo" en "foo bar".

-
\tCoincide con una tabulación horizontal.
\rCoincide con un retorno de carro.
\nCoincide con un salto de línea.
\vCoincide con una tabulación vertical.
\fCoincide con un caracter de avance de página.
[\b]Coincide con un caracter de retroceso. Si estás buscando el caracter de límite de palabra (\b), consulta Límites.
\0Coincide con un caracter NUL. No sigue a este con otro dígito.
\cX -

Coincide con un caracter de control usando notación de acento circunflejo, donde "X" es una letra de la A a la Z (correspondiente a los puntos de código U+0001-U+001F). Por ejemplo, /\cM/ reconoce el caracter "\r" en "\r\n".

-
\xhhBusca el caracter con el código hh (dos dígitos hexadecimales).
\uhhhhBusca una unidad de código UTF-16 con el valor hhhh (cuatro dígitos hexadecimales).
\u{hhhh} o \u{hhhhh}(Solo cuando se establece el indicador u). Busca el caracter con el valor Unicode U+hhhh o U+hhhhh (dígitos hexadecimales).
\ -

Indica que el siguiente caracter se debe tratar de manera especial o "escaparse". Se comporta de dos formas.

- -
    -
  • Para los caracteres que generalmente se tratan literalmente, indica que el siguiente caracter es especial y no se debe interpretar literalmente. Por ejemplo, /b/ reconoce el caracter "b". Al colocar una barra invertida delante de "b", es decir, usando /\b/, el caracter se vuelve especial para significar que concuerda con el límite de una palabra.
  • -
  • Para los caracteres que generalmente se tratan de manera especial, indica que el siguiente caracter no es especial y se debe interpretar literalmente. Por ejemplo, "*" es un caracter especial que significa que deben reconocer 0 o más ocurrencias del caracter anterior; por ejemplo, /a*/ significa reconocer 0 o más "a"s. Para emparejar el * literal, precédelo con una barra invertida; por ejemplo, /a\*/ concuerda con "a*".
  • -
- -

Ten en cuenta que algunos caracteres como :, -, @, etc. no tienen un significado especial cuando se escapan ni cuando no se escapan. Las secuencias de escape como \:, \-, \@ serán equivalentes a sus equivalentes de caracteres literales sin escapar en expresiones regulares. Sin embargo, en las expresiones regulares con indicador Unicode, esto provocará un error de escape de identidad no válido. Esto se hace para asegurar la compatibilidad con el código existente que usa nuevas secuencias de escape como \p o \k.

- -
-

Para reconocer este caracter literalmente, escápalo consigo mismo. En otras palabras, para buscar \ usa /\\/.

-
-
- -

Aserciones

- - - -

Aserciones de tipo límite

- - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracteresSignificado
^ -

Coincide con el comienzo de la entrada. Si el indicador multilínea se establece en true, también busca inmediatamente después de un caracter de salto de línea. Por ejemplo, /^A/ no reconoce la "A" en "an A", pero encuentra la primera "A" en "An A".

- -
-

Este caracter tiene un significado diferente cuando aparece al comienzo de un grupo.

-
-
$ -

Coincide con el final de la entrada. Si el indicador multilínea se establece en true, también busca hasta inmediatamente antes de un caracter de salto de línea. Por ejemplo, /a$/ no reconoce la "t" en "eater", pero sí en "eat".

-
\b -

Marca el límite de una palabra. Esta es la posición en la que un caracter de palabra no va seguido o precedido por otro caracter de palabra, por ejemplo, entre una letra y un espacio. Ten en cuenta que el límite de una palabra encontrada no se incluye en el resultado. En otras palabras, la longitud de un límite de palabra encontrada es cero.

- -

Ejemplos:

- -
    -
  • /\bm/ reconoce la "m" en "moon".
  • -
  • /oo\b/ no reconoce "oo" en "moon", porque "oo" va seguido de "n", que es un caracter de palabra.
  • -
  • /oon\b/ encuentra "oon" en "moon", porque "oon" es el final de la cadena, por lo que no va seguido de un caracter de palabra.
  • -
  • /\w\b\w/ nunca encontrará nada, porque un caracter de palabra nunca puede ir seguido de un caracter que no sea de palabra y otro de palabra.
  • -
- -

Para encontrar un caracter de retroceso ([\b]), consulta Clases de caracteres.

-
\B -

Coincide con un límite sin palabra. Esta es una posición en la que el caracter anterior y siguiente son del mismo tipo: ambos deben ser palabras o ambos deben ser no palabras, por ejemplo, entre dos letras o entre dos espacios. El principio y el final de una cadena se consideran no palabras. Igual que el límite de palabras encontradas, el límite sin palabras reconocidas tampoco se incluye en el resultado. Por ejemplo, /\Bon/ reconoce "on" en "at noon", y /ye\B/ encuentra "ye" en "possibly yesterday".

-
- -

Otras aserciones

- -
-

Nota: El caracter ? también se puede utilizar como cuantificador.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracteresSignificado
x(?=y) -

Aserción anticipada: Coincide con "x" solo si "x" va seguida de "y". Por ejemplo, /Jack(?=Sprat)/ reconocerá a "Jack" solo si va seguida de "Sprat".
- /Jack(?=Sprat|Frost)/ encontrará a "Jack" solo si va seguida de "Sprat" o "Frost". Sin embargo, ni "Sprat" ni "Frost" forman parte del resultado.

-
x(?!y) -

Aserción de búsqueda anticipada negativa: reconoce la "x" solo si la "x" no va seguida de "y". Por ejemplo, /\d+(?!\.)/ reconoce un número solo si no va seguido de un punto decimal. /\d+(?!\.)/.exec('3.141') halla el "141" pero no el "3".

-
(?<=y)x -

Aserción de búsqueda inversa: encontrará "x" solo si "x" está precedida por "y". Por ejemplo, /(?<=Jack)Sprat/ reconoce a "Sprat" solo si está precedido por "Jack". /(?<=Jack|Tom)Sprat/ empareja "Sprat" solo si está precedido por "Jack" o "Tom". Sin embargo, ni "Jack" ni "Tom" forman parte del resultado.

-
(?<!y)x -

Aserción de búsqueda inversa negativa: Reconoce la "x" solo si "x" no está precedida por "y". Por ejemplo, /(?<!-)\d+/ encuentra un número solo si no está precedido por un signo menos. /(?<!-)\d+/.exec('3') encuentra el "3". /(?<!-)\d+/.exec('-3') no lo reconoce porque el número está precedido por el signo menos.

-
- -

Grupos y rangos

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracteresSignificado
x|y -

Coincide con "x" o "y". Por ejemplo, /verde|roja/ reconoce el "verde" en "manzana verde" y "roja" en "manzana roja".

-
[xyz]
- [a-c]
-

Un juego de caracteres. Coincide con cualquiera de los caracteres incluidos. Puedes especificar un rango de caracteres mediante el uso de un guión, pero si el guión aparece como el primero o último caracter entre corchetes, se toma como un guión literal para incluirse en el juego de caracteres como un caracter normal. También es posible incluir una clase de caracteres en un juego de caracteres.

- -

Por ejemplo, [abcd] es lo mismo que [a-d]. Coincide con la "b" en "brisket" y la "c" en "chop".

- -

Por ejemplo, [abcd-] y [-abcd] reconoce la "b" en "brisket", la "c" en "chop" y el "-" (guión) en "non-profit".

- -

Por ejemplo, [\w-] es lo mismo que [A-Za-z0-9_-]. Ambos reconocen la "b" en "brisket", la "c" en "chop" y la "n" en "non-profit".

-
-

[^xyz]
- [^a-c]

-
-

Un juego de caracteres negado o complementado. Es decir, hallan cualquier cosa que no esté encerrada entre corchetes. Puedes especificar un rango de caracteres mediante el uso de un guión, pero si el guión aparece como el primero o último caracter entre corchetes, se toma como un guión literal para incluirse en el juego de caracteres como un caracter normal. Por ejemplo, [^abc] es lo mismo que [^a-c]. Inicialmente halla la "o" en "bacon" y la "h" en "chuleta".

- -
-

El caracter ^ además puede indicar el comienzo de la entrada.

-
-
(x) -

Grupo de captura: Encuentra la x y la recuerda. Por ejemplo, /(foo)/ encuentra y recuerda "foo" en "foo bar". 

- -

Una expresión regular puede tener varios grupos de captura. En los resultados, coincide con los grupos capturados normalmente en un arreglo cuyos miembros están en el mismo orden que los paréntesis de la izquierda en el grupo capturado. Este suele ser solo el orden de los propios grupos capturados. Esto se vuelve importante cuando los grupos capturados están anidados. Se accede a las coincidencias utilizando el índice de los elementos del resultado ([1], ..., [n]) o desde las propiedades predefinidas del objeto RegExp ($1, ..., $9).

- -

Los grupos de captura tienen una penalización de rendimiento. Si no necesitas que se recupere la subcadena coincidente, prefiere los paréntesis que no capturen (ve más abajo).

- -

String.match() no devolverá grupos si el indicador /.../g está configurado. Sin embargo, aún puedes usar String.matchAll() para obtener todas los encontrados.

-
\n -

Donde "n" es un número entero positivo. Una referencia posterior a la última subcadena que coincide con el paréntesis n en la expresión regular (contando los paréntesis izquierdos). Por ejemplo, /apple(,)\sorange\1/ coincide con "apple, orange" en "apple, orange, cherry, peach".

-
\k<Name> -

Una referencia inversa a la última subcadena encontrada con el grupo de captura Nombrado especificado por <Name>.

- -

Por ejemplo, /(?<title>\w+), yes \k<title>/ concuerda con "Sir, yes Sir" en "Do you copy? Sir, yes Sir!".

- -
-

\k aquí se usa literalmente para indicar el comienzo de una referencia a un grupo de captura nombrado.

-
-
(?<Name>x) -

Grupo de captura nombrado: reconoce la "x" y la almacena en la propiedad group del resultado devuelto bajo el nombre especificado por <Name>. Los corchetes angulares (< y >) son obligatorios para el nombre del grupo.

- -

Por ejemplo, para extraer el código de área de Estados Unidos de un número de teléfono, podríamos usar /\((?<area>\d\d\d)\)/. El número resultante debería aparecer en matches.groups.area.

-
(?:x)Grupo sin captura: reconoce la "x" pero no recuerda el resultado. La subcadena encontrada no se puede recuperar de los elementos del arreglo resultante ([1], ..., [n]) o de las propiedades predefinidas del objeto RegExp ($1, ..., $9).
- -

Cuantificadores

- - - -
-

Nota: A continuación, elemento se refiere no solo a caracteres singulares, sino que también incluye clases de caracteres, escapes de propiedad Unicode, grupos y rangos.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracteresSignificado
x* -

Concuerda 0 o más veces con el elemento "x" anterior. Por ejemplo, /bo*/ reconoce a "boooo" en "Un fantasma booooed" y "b" en "A bird warbled", pero nada en "Una cabra gruñó".

-
x+ -

Encuentra 1 o más veces el elemento "x" anterior Equivalente a {1,}. Por ejemplo, /a+/ encuentra la "a" en "candy" y todas las "a"es en "caaaaaaandy".

-
x? -

Halla 0 o 1 vez el elemento "x" anterior. Por ejemplo, /e?Le?/ reconoce a "el" en "ángel" y a "le" en "angle".

- -

Si se usa inmediatamente después de cualquiera de los cuantificadores *, +, ?o {}, hace que el cuantificador no codicioso (que reconoce el número mínimo de veces), a diferencia del predeterminado, que es codicioso (que reconoce el número máximo de veces).

-
x{n} -

Donde "n" es un número entero positivo, concuerda exactamente con "n" apariciones del elemento "x" anterior. Por ejemplo, /a{2}/ no reconoce la "a" en "candy", pero reconoce todas las "a"s en "caandy" y las dos primeras "a"s en "caaandy ".

-
x{n,} -

Donde "n" es un número entero positivo, concuerda con al menos "n" apariciones del elemento "x". Por ejemplo, /a{2,}/ no reconoce la "a" en "candy", pero reconoce todas las "a" en "caandy" y en "caaaaaaandy".

-
x{n,m} -

Donde "n" es 0 o un número entero positivo, "m" es un número entero positivo y m > n, reconoce por lo menos "n" y como máximo "m" apariciones del elemento "x" anterior. Por ejemplo, /a{1,3}/ no reconoce nada en "cndy", la "a" en "caramelo", las dos "a" en "caandy" y las tres primeras "a" está en "caaaaaaandy". Observa que al comparar "caaaaaaandy", las "aaa" encontradas, aunque la cadena original tenía más "a" s.

-
-

x*?
- x+?
- x??
- x{n}?
- x{n,}?
- x{n,m}?

-
-

De manera predeterminada, los cuantificadores como * y + son "codiciosos", lo cual significa que intentan hacer coincidir la mayor cantidad de cadena posible. El carácter ? después del cuantificador hace que este sea "no codicioso": lo cual significa que se detendrá tan pronto como encuentre una concordancia. Por ejemplo, dada una cadena "algo como <foo> <bar> new </bar> </foo>":

- -
    -
  • /<.*>/ reconocerá "<foo> <bar> nuevo </bar> </foo>"
  • -
  • /<.*?>/ encajará "<foo>"
  • -
-
- -

Escapa la propiedad Unicode

- - - -
// Valores no binarios
-\p{UnicodePropertyValue}
-\p{UnicodePropertyName=UnicodePropertyValue}
-
-// Valores binarios y no binarios
-\p{UnicodeBinaryPropertyName}
-
-// Negación: \P is negado \p
-\P{UnicodePropertyValue}
-\P{UnicodeBinaryPropertyName}
-
- -
-
UnicodeBinaryPropertyName
-
El nombre de una propiedad binaria. Por ejemplo: ASCII, Alpha, Math, Diacrítica, Emoji, Hex_Digit, Math, Espacio_blanco, etc. Consulta Unicode Data PropList.txt para obtener más información.
-
UnicodePropertyName
-
- -
-
El nombre de una propiedad no binaria:
-
- - - -

Consulta también PropertyValueAliases.txt

- -
-
UnicodePropertyValue
-
Uno de los fragmentos enumerados en la sección Valores, más adelante. Muchos valores tienen alias o abreviaturas (por ejemplo, el valor Decimal_Number para la propiedad General_Category se puede escribir cómo Nd, digit, o Decimal_number). Para la mayoría de los valores, la parte UnicodePropertyName y el signo igual se pueden omitir. Si se especifica un UnicodePropertyName, el valor debe corresponder al tipo de propiedad proporcionado.
-
- -
-

Nota: Puesto que hay muchas propiedades y valores disponibles, no las describiremos exhaustivamente aquí, sino que proporcionaremos varios ejemplos.

-
diff --git a/files/es/web/javascript/guide/regular_expressions/quantifiers/index.html b/files/es/web/javascript/guide/regular_expressions/quantifiers/index.html new file mode 100644 index 0000000000..bc2821219f --- /dev/null +++ b/files/es/web/javascript/guide/regular_expressions/quantifiers/index.html @@ -0,0 +1,182 @@ +--- +title: Cuantificadores +slug: Web/JavaScript/Guide/Regular_Expressions/Cuantificadores +tags: + - Expresiones Regulares + - Guía + - JavaScript + - Referencia + - cuantificadores + - regex +translation_of: Web/JavaScript/Guide/Regular_Expressions/Quantifiers +--- +

{{jsSidebar("JavaScript Guide")}}

+ +

Los cuantificadores indican el número de caracteres o expresiones que deben coincidir.

+ +
{{EmbedInteractiveExample("pages/js/regexp-quantifiers.html", "taller")}}
+ +

Tipos

+ + + +
+

Nota: A continuación, elemento se refiere no solo a caracteres individuales, sino que también incluye {{JSxRef("../Guide/Regular_Expressions/Character_Classes", "clases de caracteres")}}, {{JSxRef("../Guide/Regular_Expressions/Unicode_Property_Escapes", "escapes de propiedades Unicode")}}, {{JSxRef("../Guide/Regular_Expressions/Grupos_y_rangos", "grupos y rangos")}}.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracteresSignificado
x* +

Concuerda 0 o más veces con el elemento "x" anterior. Por ejemplo, /bu*/ coincide con "buuuu" en "Un fantasma abuuuucheado" y "b" en "Un búho gorjeó", pero nada en "Una cabra gruñó".

+
x+ +

Encuentra 1 o más veces el elemento "x" anterior Equivalente a {1,}. Por ejemplo, /a+/ coincide con la "a" en "candy" y todas las "a"es en "caaaaaaandy".

+
x? +

Halla 0 o 1 vez el elemento "x" anterior. Por ejemplo, /e?le?/ coincide con "el" en "ángel" y "ele" en "ángeles".

+ +

Si se usa inmediatamente después de cualquiera de los cuantificadores *, +, ?, o {}, hace que el cuantificador no sea codicioso (es decir que coincida con el mínimo número de veces), a diferencia del predeterminado, que es codicioso (que coincide con el máximo número de veces).

+
x{n} +

Donde "n" es un número entero positivo, concuerda exactamente con "n" apariciones del elemento "x" anterior. Por ejemplo, /a{2}/ no coincide con la "a" de "candy", pero coincide con todas las "a"es de "caandy" y las dos primeras "a"es en "caaandy".

+
x{n,} +

Donde "n" es un número entero positivo, concuerda con al menos "n" apariciones del elemento "x". Por ejemplo, /a{2,}/ no coincide con las "a"es en "caramelo", pero coincide con todas las "a"es en "caaraamelo" y en "caaaaaaaraaaamelo".

+
x{n,m} +

Donde "n" es 0 o un número entero positivo, "m" es un número entero positivo y m > n coincide con al menos "n" y como máximo "m" apariciones del elemento "x" anterior. Por ejemplo, /a{1,3}/ no coincide con nada en "crmelo", la "a" en "carmelo", las dos "a"es en "caarmelo" y las tres primeras "a"es en "caaaaaaarmelo". Observa que al comparar "caaaaaaarmelo", encuentra las "aaa", aunque la cadena original tenía más "a"es.

+
+

x*?
+ x+?
+ x??
+ x{n}?
+ x{n,}?
+ x{n,m}?

+
+

De manera predeterminada, los cuantificadores como * y + son "codiciosos", lo cual significa que intentan hacer coincidir la mayor cantidad posible de la cadena. El caracter ? después del cuantificador hace que el cuantificador "no sea codicioso": lo cual significa que se detendrá tan pronto como encuentre una coincidencia. Por ejemplo, dada una cadena como "algún <foo> <bar> nuevo </bar> </foo>":

+ +
    +
  • /<.*>/ coincidirá con "<foo> <bar> nuevo </bar> </foo>"
  • +
  • /<.*?>/ coincidirá con "<foo>"
  • +
+
+ +

Ejemplos

+ +

Patrón repetido

+ +
var palabraTerminadaConAes = /\w+a+\b/;
+var mensajeDelicado = "Esto es Espartaaaaaaa";
+
+console.table(mensajeDelicado.match(palabraTerminadaConAes)); // [ "Espartaaaaaaa" ]
+
+ +

Conteo de caracteres

+ +
var palabraDeUnaLetra = /\b\w\b/g;
+var palabraNoTanLarga = /\b\w{1,6}\b/g;
+var palabraLaaaaarga = /\b\w{10,}\b/g;
+
+var frase = "¿Por qué me tengo que sentar a estudiar las tablas de multiplicar?";
+
+console.table(frase.match(palabraDeUnaLetra)); // ["a"]
+console.table(frase.match(palabraNoTanLarga));    // ["Por", "qu", "me", "tengo", "que", "sentar", "a", "las", "tablas", "de"]
+console.table(frase.match(palabraLaaaaarga));      // ["multiplicar"]
+
+ +

Caracter opcional

+ +
var londinText = "He asked his neighbour a favour.";
+var yanquiText = "He asked his neighbor a favor.";
+
+var regexpEnding = /\w+ou?r/g;
+// \w+ Una o varias letras
+// o   seguida de una "o",
+// u?  opcionalmente seguida de una "u"
+// r   seguida de una "r"
+
+console.table(londinText.match(regexpEnding));
+// ["neighbour", "favour"]
+
+console.table(yanquiText.match(regexpEnding));
+// ["neighbor", "favor"]
+
+ +

Codicioso versus no codicioso

+ +
var texto = "Debo estar muy cerca del centro de la tierra.";
+var regexpCodiciosa = /[\w ]+/;
+// [\w ]      una letra del alfabeto latino o un espacio en blanco
+//      +     una o varias veces
+
+console.log(texto.match(regexpCodiciosa)[0]);
+// "Debo estar muy cerca del centro de la tierra."
+// casi todo el texto coincide (omite el caracter de punto)
+
+var regexpNoCodiciosa = /[\w ]+?/; // Observa el signo de interrogación
+console.log(texto.match(regexpNoCodiciosa));
+// "D"
+// La coincidencia es la más pequeña posible
+
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-quantifier', 'RegExp: Quantifiers')}}
+ +

Compatibilidad del navegador

+ +

Para obtener información sobre la compatibilidad del navegador, consulta la {{JSxRef("../Guide/Regular_Expressions", "tabla principal de compatibilidad de expresiones regulares", "#Compatibilidad_del_navegador")}}.

+ +

Ve también

+ + diff --git a/files/es/web/javascript/guide/regular_expressions/unicode_property_escapes/index.html b/files/es/web/javascript/guide/regular_expressions/unicode_property_escapes/index.html new file mode 100644 index 0000000000..7fc434a0dc --- /dev/null +++ b/files/es/web/javascript/guide/regular_expressions/unicode_property_escapes/index.html @@ -0,0 +1,177 @@ +--- +title: Escapes de propiedades Unicode +slug: Web/JavaScript/Guide/Regular_Expressions/Escapes_de_propiedades_Unicode +tags: + - Expresiones Regulares + - Guía + - JavaScript + - Referencia + - escapes de propiedades unicode + - regex +translation_of: Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes +--- +

{{jsSidebar("JavaScript Guide")}}

+ +

Los escapes de propiedad Unicode en las {{JSxRef("../Guide/Regular_Expressions", "Expresiones regulares")}} permiten la coincidencia de caracteres según sus propiedades Unicode. Un caracter se describe mediante varias propiedades que, o bien, son binarias ("tipo booleano") o, no binarias. Por ejemplo, puedes usar escapes de propiedades Unicode para reconocer emojis, signos de puntuación, letras (incluso letras de idiomas específicos o scripts), etc.

+ +
{{EmbedInteractiveExample("pages/js/regexp-unicode-property-escapes.html", "taller")}}
+ +
+

Nota: Para que funcionen los escapes de propiedad Unicode, una expresión regular debe utilizar {{JSxRef("../Guide/Regular_Expressions", "la bandera u", "#Busqueda_avanzada_con_banderas")}} que indica que una cadena se debe considerar como una serie de puntos de código Unicode. Consulta también {{JSxRef("Objetos_globales/RegExp/unicode", "RegExp.prototype.unicode")}}.

+
+ +
+

Nota: Algunas propiedades Unicode abarcan muchos más caracteres que algunas {{JSxRef("../Guide/Regular_Expressions/Character_Classes", "clases de caracteres")}} (como \w que coincide solo con letras latinas, desde a hasta z) pero esta última es más compatible con los navegadores (a partir de enero de 2020).

+
+ +

Sintaxis

+ + + +
// Valores no binarios
+\p{UnicodePropertyValue}
+\p{UnicodePropertyName=UnicodePropertyValue}
+
+// Valores binarios y no binarios
+\p{UnicodeBinaryPropertyName}
+
+// Negación: \P se niega con \p
+\P{UnicodePropertyValue}
+\P{UnicodeBinaryPropertyName}
+
+ + + +

Consulta también PropertyValueAliases.txt

+ +
+
UnicodeBinaryPropertyName
+
El nombre de una propiedad binaria. Por ejemplo: ASCII, Alfabético, Math, Diacrítico, Emoji, Dígito hexadecimal, Math, Espacio en blanco, etc. Consulta Unicode Data PropList.txt para obtener más información.
+
NombreDePropiedadUnicode
+
El nombre de una propiedad no binaria:
+
ValorDePropiedadUnicode
+
Uno de los fragmentos enumerados en la sección Valores, más adelante. Muchos valores tienen alias o abreviaturas (por ejemplo, el valor Decimal_Number para la propiedad General_Category se puede escribir Nd, digit, o Decimal_Number). Para la mayoría de los valores, la parte NombreDePropiedadUnicode y el signo igual se pueden omitir. Si se especifica un NombreDePropiedadUnicode, el valor debe corresponder al tipo de propiedad proporcionado.
+
+ +
+

Nota: Debido a que hay muchas propiedades y valores disponibles, no los describiremos exhaustivamente aquí, en su lugar proporcionaremos varios ejemplos.

+
+ +

Justificación

+ +

Antes de ES2018, no existía una forma eficiente de hacer coincidir caracteres de diferentes conjuntos basados en scripts (como macedonio, griego, georgiano, etc.) o propertyName (como Emoji, etc.) en JavaScript. Consulta la propuesta tc39 sobre escapes de propiedad Unicode para obtener más información.

+ +

Ejemplos

+ +

Categorías generales

+ +

Las categorías generales se utilizan para clasificar caracteres Unicode, y hay subcategorías disponibles para definir una categorización más precisa. Es posible utilizar formas cortas o largas en los escapes de propiedades Unicode.

+ +

Se pueden utilizar para reconocer letras, números, símbolos, signos de puntuación, espacios, etc. Para obtener una lista más exhaustiva de categorías generales, consulta la especificación Unicode.

+ +
// encontrar todas las letras de un texto
+let historia = "Es el gato de Cheshire: ahora tendré alguien con quien hablar";
+
+// Forma más explícita
+historia.match(/\p{General_Category=Letter}/gu);
+
+// No es obligatorio utilizar el nombre de la propiedad para las categorías generales
+historia.match(/\p{Letter}/gu);
+
+// Esto es equivalente (alias corto):
+historia.match(/\p{L}/gu);
+
+// Esto también es equivalente (conjunción de todas las subcategorías que utilizan alias cortos)
+historia.match(/\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}/gu);
+
+ +

Scripts y extensiones de script

+ +

Algunos idiomas usan diferentes signos para su sistema de escritura. Por ejemplo, el Inglés y el Español se escriben con los signos latinos, mientras que el Árabe y el Ruso se escriben con otros signos (Árabe y Cirílico, respectivamente). Las propiedades Unicode Script y Script_Extensions permiten que las expresiones regulares coincidan con los caracteres según el script con el que se utilizan principalmente (Script) o según el conjunto de los scripts a los que pertenecen (Script_Extensions).

+ +

Por ejemplo, A pertenece al script Latin y ε al script Greek (Griego).

+ +
let caracteresMezclados = "aεЛ";
+
+// Usando el nombre canónico "largo" del script
+caracteresMezclados.match(/\p{Script=Latin}/u); // a
+
+// Usando un alias corto para el script
+caracteresMezclados.match(/\p{Script=Greek}/u); // ε
+
+// Usando el nombre corto Sc para la propiedad Script
+caracteresMezclados.match(/\p{Sc=Cyrillic}/u); // Л
+
+ +

Para obtener más detalles, consulta la especificación Unicode y la Tabla de scripts en la especificación ECMAScript.

+ +

Si se usa un carácter en un conjunto limitado de scripts, la propiedad Script solo coincidirá con el script "predominante" utilizado. Si quieres hacer coincidir caracteres basados en un script "no predominante", podrías usar la propiedad Script_Extensions (Scx para abreviar).

+ +
// ٢ es el dígito 2 en notación Árabe-Índica
+// si bien está escrito en un script predominante en árabe
+// también se puede escribir en el script Thaana
+
+"٢".match(/\p{Script=Thaana}/u);
+// null ya que Thaana no es el script predominante     super()
+
+"٢".match(/\p{Script_Extensions=Thaana}/u);
+// ["٢", index: 0, input: "٢", groups: undefined]
+
+ +

Escapes de propiedades Unicode versus Clases de caracteres

+ +

Con las expresiones regulares de JavaScript, también es posible utilizar {{JSxRef("../Guide/Regular_Expressions/Clases_de_caracteres", "clases de caracteres")}} y especialmente \w o \d para hacer coincidir letras o dígitos. Sin embargo, estos formularios solo coinciden con caracteres de la escritura latina (en otras palabras, de la a a la z y A a Z para \w y 0 a 9 para \d). Como se muestra en {{JSxRef("../Guide/Regular_Expressions/Clases_de_caracteres", "este ejemplo", "#Busca_una_palabra_de_caracteres_Unicode")}}, puede ser un poco torpe trabajar con textos no latinos.

+ +

Las categorías de escape de propiedad Unicode abarcan muchos más caracteres y \p{Letter} o \p{Number} funcionarán para cualquier script.

+ +
// Intentando usar rangos para evitar limitaciones de \w:
+
+const textoNoEs = "Приключения Алисы в Стране чудес";
+const regexpPalabraBMP = /([\u0000-\u0019\u0021-\uFFFF])+/gu;
+// BMP pasa por U+0000 a U+FFFF pero el espacio es U+0020
+
+console.table(textoNoEs.match(regexpPalabraBMP));
+
+// El uso de la propiedad Unicode se escapa en su lugar
+const regexpEPU = /\p{L}+/gu;
+console.table(textoNoEs.match(regexpEPU));
+
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-runtime-semantics-unicodematchproperty-p', 'RegExp: Escapes de propiedades Unicode')}}
+ +

Compatibilidad del navegador

+ +

Para obtener información sobre la compatibilidad del navegador, consulta la {{JSxRef("../Guide/Regular_Expressions", "tabla principal de compatibilidad de expresiones regulares", "#Compatibilidad_del_navegador")}}.

+ +

Ve también

+ + diff --git a/files/es/web/javascript/guide/trabajando_con_objectos/index.html b/files/es/web/javascript/guide/trabajando_con_objectos/index.html deleted file mode 100644 index 84a9854d9a..0000000000 --- a/files/es/web/javascript/guide/trabajando_con_objectos/index.html +++ /dev/null @@ -1,493 +0,0 @@ ---- -title: Trabajando con objetos -slug: Web/JavaScript/Guide/Trabajando_con_objectos -tags: - - Comparación de objetos - - Constructor - - Documento - - Guía - - JavaScript - - Objeto - - Principiante -translation_of: Web/JavaScript/Guide/Working_with_Objects ---- -
{{jsSidebar("Guía de JavaScript")}} {{PreviousNext("Web/JavaScript/Guide/Keyed_collections", "Web/JavaScript/Guide/Details_of_the_Object_Model")}}
- -

JavaScript está diseñado en un paradigma simple basado en objetos. Un objeto es una colección de propiedades, y una propiedad es una asociación entre un nombre (o clave) y un valor. El valor de una propiedad puede ser una función, en cuyo caso la propiedad es conocida como un método. Además de los objetos que están predefinidos en el navegador, puedes definir tus propios objetos. Este capítulo describe cómo usar objetos, propiedades, funciones y métodos; y cómo crear tus propios objectos.

- -

Visión general sobre Objetos

- -

Los objetos en JavaScript, como en tantos otros lenguajes de programación, se pueden comparar con objetos de la vida real. El concepto de Objetos en JavaScript se puede entender con objetos tangibles de la vida real.

- -

En JavaScript, un objeto es un entidad independiente con propiedades y tipos. Compáralo con una taza, por ejemplo. Una taza es un objeto con propiedades. Una taza tiene un color, un diseño, un peso, un material del que está hecha, etc. Del mismo modo, los objetos de JavaScript pueden tener propiedades que definan sus características.

- -

Objetos y propiedades

- -

Un objeto de JavaScript tiene propiedades asociadas a él. Una propiedad de un objeto se puede explicar como una variable adjunta al objeto. Las propiedades de un objeto básicamente son lo mismo que las variables comunes de JavaScript, excepto por el nexo con el objeto. Las propiedades de un objeto definen las características del objeto. Accedes a las propiedades de un objeto con una simple notación de puntos:

- -
objectName.propertyName
-
- -

Como todas las variables de JavaScript, tanto el nombre del objeto (que puede ser una variable normal) como el nombre de la propiedad son sensibles a mayúsculas y minúsculas. Puedes definir propiedades asignándoles un valor. Por ejemplo, vamos a crear un objeto llamado myCar y le vamos a asignar propiedades denominadas make, model, y year de la siguiente manera:

- -
var myCar = new Object();
-myCar.make = 'Ford';
-myCar.model = 'Mustang';
-myCar.year = 1969;
-
- -

El ejemplo anterior también se podría escribir usando un iniciador de objeto, que es una lista delimitada por comas de cero o más pares de nombres de propiedad y valores asociados de un objeto, encerrados entre llaves ({}):

- -
var myCar = {
-    make: 'Ford',
-    model: 'Mustang',
-    year: 1969
-};
-
- -

Las propiedades no asignadas de un objeto son {{jsxref("undefined")}} (y​no {{jsxref("null")}}).

- -
myCar.color; // undefined
- -

También puedes acceder o establecer las propiedades de los objetos en JavaScript mediante la notación de corchetes ↑[]↓ (Para más detalle ve Accesores de propiedades). Los objetos, a veces son llamados arreglos asociativos, debido a que cada propiedad está asociada con un valor de cadena que se puede utilizar para acceder a ella. Por lo tanto, por ejemplo, puedes acceder a las propiedades del objeto myCar de la siguiente manera:

- -
myCar['make']  = 'Ford';
-myCar['model'] = 'Mustang';
-myCar['year']  = 1969;
-
- -

El nombre de la propiedad de un objeto puede ser cualquier cadena válida de JavaScript, o cualquier cosa que se pueda convertir en una cadena, incluyendo una cadena vacía. Sin embargo, cualquier nombre de propiedad que no sea un identificador válido de JavaScript (por ejemplo, el nombre de alguna propiedad que tenga un espacio o un guión, o comience con un número) solo se puede acceder utilizando la notación de corchetes. Esta notación es muy útil también cuando los nombres de propiedades son determinados dinámicamente (cuando el nombre de la propiedad no se determina hasta el tiempo de ejecución). Ejemplos de esto se muestran a continuación:

- -
// Se crean y asignan cuatro variables de una sola vez,
-// separadas por comas
-var myObj = new Object(),
-    str = 'myString',
-    rand = Math.random(),
-    obj = new Object();
-
-myObj.type                 = 'Sintaxis de puntos';
-myObj['fecha de creación'] = 'Cadena con espacios';
-myObj[str]                 = 'Valor de cadena';
-myObj[rand]                = 'Número aleatorio';
-myObj[obj]                 = 'Object';
-myObj['']                  = 'Incluso una cadena vacía';
-
-console.log(myObj);
-
- -

Por favor, ten en cuenta que todas las claves con notación en corchetes se convierten a cadenas a menos que estas sean símbolos, ya que los nombres de las propiedades (claves) en Javascript pueden solo pueden ser cadenas o símbolos (en algún momento, los nombres privados también serán agregados a medida que progrese la propuesta de los campos de clase, pero no las usarás con el formato []). Por ejemplo, en el código anterior, cuando la clave obj se añadió a myObj, Javascript llamará al método {{jsxref("Object.toString", "obj.toString()")}}, y usará la cadena resultante de esta llamada como la nueva clave.

- -

También puedes acceder a las propiedades mediante el uso de un valor de cadena que se almacena en una variable:

- -
var propertyName = 'make';
-myCar[propertyName] = 'Ford';
-
-propertyName = 'model';
-myCar[propertyName] = 'Mustang';
-
- -

Puedes usar la notación de corchetes con for...in para iterar sobre todas las propiedades enumerables de un objeto. Para ilustrar cómo funciona esto, la siguiente función muestra las propiedades del objeto cuando pasas el objeto y el nombre del objeto como argumentos a la función:

- -
function showProps(obj, objName) {
-  var result = ``;
-  for (var i in obj) {
-    // obj.hasOwnProperty() se usa para filtrar propiedades de la cadena de prototipos del objeto
-    if (obj.hasOwnProperty(i)) {
-      result += `${objName}.${i} = ${obj[i]}\n`;
-    }
-  }
-  return result;
-}
-
- -

Por lo tanto, la llamada a la función showProps(myCar, "myCar") devolverá lo siguiente:

- -
myCar.make = Ford
-myCar.model = Mustang
-myCar.year = 1969
- -

Enumerar las propiedades de un objeto

- -

A partir de ECMAScript 5, hay tres formas nativas para enumerar/recorrer las propiedades de objetos:

- - - -

Antes de ECMAScript 5, no existía una manera nativa para enumerar todas las propiedades de un objeto. Sin embargo, esto se puede lograr con la siguiente función:

- -
function listAllProperties(o) {
-       var objectToInspect;
-       var result = [];
-
-       for(objectToInspect = o; objectToInspect !== null;
-           objectToInspect = Object.getPrototypeOf(objectToInspect)) {
-        result = result.concat(
-            Object.getOwnPropertyNames(objectToInspect)
-        );
-    }
-
-        return result;
-}
-
- -

Esto puede ser útil para revelar propiedades "ocultas" (propiedades de la cadena de prototipos a las que no se puede acceder a través del objeto, porque otra propiedad tiene el mismo nombre en la cadena de prototipos). Enumerar las propiedades accesibles solo es posible eliminando los duplicados en el arreglo.

- -

Creación de nuevos objetos

- -

JavaScript tiene una colección de objetos predefinidos. Además, puedes crear tus propios objetos. En JavaScript 1.2 y versiones posteriores, puedes crear un objeto usando un iniciador de objeto. Como alternativa, puedes crear primero una función constructora y luego crear una instancia de un objeto invocando esa función con el operador new.

- -

Uso de iniciadores de objeto

- -

Además de la creación de objetos utilizando una función constructora, puedes crear objetos utilizando un iniciador de objeto. El uso de iniciadores de objetos a veces se denomina crear objetos con notación literal. "Iniciador de objeto" es consistente con la terminología utilizada por C++.

- -

La sintaxis para un objeto usando un iniciador de objeto es:

- -
var obj = { property_1:   value_1,   // property_# puede ser un identificador...
-            2:            value_2,   // o un número...
-            // ...,
-            'property n': value_n }; // o una cadena
-
- -

donde obj es el nombre del nuevo objeto, cada property_i es un identificador (ya sea un nombre, un número o una cadena literal), y cada value_i es una expresión cuyo valor se asigna a la property_i. El obj y la asignación es opcional; si no necesitas hacer referencia a este objeto desde otro lugar, no necesitas asignarlo a una variable. (Ten en cuenta que tal vez necesites envolver el objeto literal entre paréntesis si el objeto aparece donde se espera una declaración, a fin de no confundir el literal con una declaración de bloque).

- -

Los iniciadores de objetos son expresiones, y cada iniciador de objeto da como resultado un nuevo objeto donde la instrucción de creación sea ejecutada. Los iniciadores de objetos idénticos crean objetos distintos que no se compararán entre sí como iguales. Los objetos se crean como si se hiciera una llamada a new Object(); es decir, los objetos hechos a partir de expresiones literales de objeto son instancias de Object.

- -

La siguiente declaración crea un objeto y lo asigna a la variable x si y solo si la expresión cond es true.

- -
if (cond) var x = {greeting: '¡Hola!'};
-
- -

El siguiente ejemplo crea myHonda con tres propiedades. Observa que la propiedad engine también es un objeto con sus propias propiedades.

- -
var myHonda = {color: 'red', wheels: 4, engine: {cylinders: 4, size: 2.2}};
-
- -

También puedes utilizar iniciadores de objetos para crear arreglos. Consulta arreglos literales.

- -

Usar una función constructora

- -

Como alternativa, puedes crear un objeto con estos dos pasos:

- -
    -
  1. Definir el tipo de objeto escribiendo una función constructora. Existe una fuerte convención, con buena razón, para utilizar en mayúscula la letra inicial.
  2. -
  3. Crear una instancia del objeto con el operador new.
  4. -
- -

Para definir un tipo de objeto, crea una función para el objeto que especifique su nombre, propiedades y métodos. Por ejemplo, supongamos que deseas crear un tipo de objeto para coches. Quieres llamar Car a este tipo de objeto, y deseas que tenga las siguientes propiedades: make, model y year. Para ello, podrías escribir la siguiente función:

- -
function Car(make, model, year) {
-  this.make = make;
-  this.model = model;
-  this.year = year;
-}
-
- -

Observa el uso de this para asignar valores a las propiedades del objeto en función de los valores pasados a la función.

- -

Ahora puedes crear un objeto llamado myCar de la siguiente manera:

- -
var mycar = new Car('Eagle', 'Talon TSi', 1993);
-
- -

Esta declaración crea myCar y le asigna los valores especificados a sus propiedades. Entonces el valor de myCar.make es la cadena "Eagle", para myCar.year es el número entero 1993, y así sucesivamente.

- -

Puedes crear cualquier número de objetos Car con las llamadas a new. Por ejemplo,

- -
var kenscar = new Car('Nissan', '300ZX', 1992);
-var vpgscar = new Car('Mazda', 'Miata', 1990);
-
- -

<s0>Un objeto puede tener una propiedad que en sí misma es otro objeto. Por ejemplo, supongamos que defines un objeto llamado person de la siguiente manera:

- -
function Person(name, age, sex) {
-  this.name = name;
-  this.age = age;
-  this.sex = sex;
-}
-
- -

y luego instancias dos nuevos objetos person de la siguiente manera:

- -
var rand = new Person('Rand McKinnon', 33, 'M');
-var ken = new Person('Ken Jones', 39, 'M');
-
- -

Entonces, puedes volver a escribir la definición de Car para incluir una propiedad owner que tomará el objeto person, de la siguiente manera:

- -
function Car(make, model, year, owner) {
-  this.make = make;
-  this.model = model;
-  this.year = year;
-  this.owner = owner;
-}
-
- -

Para crear instancias de los nuevos objetos, utiliza lo siguiente:

- -
var car1 = new Car('Eagle', 'Talon TSi', 1993, rand);
-var car2 = new Car('Nissan', '300ZX', 1992, ken);
-
- -

Nota que en lugar de pasar un valor de cadena o entero cuando se crean los nuevos objetos, las declaraciones anteriores pasan al objetos rand y ken como argumentos para los owners. Si luego quieres averigüar el nombre del propietario del car2, puedes acceder a la propiedad de la siguiente manera:

- -
car2.owner.name
-
- -

Ten en cuenta que siempre se puede añadir una propiedad a un objeto previamente definido. Por ejemplo, la declaración

- -
car1.color = 'black';
-
- -

agrega la propiedad color a car1, y le asigna el valor "black". Sin embargo, esto no afecta a ningún otro objeto. Para agregar la nueva propiedad a todos los objetos del mismo tipo, tienes que añadir la propiedad a la definición del tipo de objeto Car.

- -

Usar el método Object.create

- -

Los objetos también se pueden crear por medio del método {{jsxref("Object.create()")}}. Este método puede ser muy útil, ya que te permite elegir el prototipo del objeto que deseas crear, sin tener que definir una función constructora.

- -
// Propiedades y método de encapsulación para Animal
-var Animal = {
-  type: 'Invertebrates', // Valor predeterminado de las propiedades
-  displayType: function() {  // Método que mostrará el tipo de Animal
-    console.log(this.type);
-  }
-};
-
-// Crea un nuevo tipo de animal llamado animal1
-var animal1 = Object.create(Animal);
-animal1.displayType(); // Muestra: Invertebrates
-
-// Crea un nuevo tipo de animal llamado Fishes
-var fish = Object.create(Animal);
-fish.type = 'Fishes';
-fish.displayType();    // Muestra: Fishes
- -

Herencia

- -

Todos los objetos en JavaScript heredan de al menos otro objeto. El objeto del que se hereda se conoce como el prototipo, y las propiedades heredadas se pueden encontrar en el objeto prototype del constructor. Para más información consulta Herencia y cadena prototipos.

- -

Propiedades del objeto indexado

- -

En <s0>JavaScript 1.0</s0>, puedes hacer referencia a una propiedad de un objeto, ya sea por el nombre de la propiedad o por su índice ordinal. Si inicialmente defines una propiedad por su nombre, siempre debes referirte a ella por su nombre, y si inicialmente defines una propiedad por un índice, siempre debes referirte a ella por su índice.

- -

Esta restricción se aplica cuando creas un objeto y sus propiedades con una función constructora (como hicimos anteriormente con el tipo de objeto Car) y cuando defines propiedades individuales explícitamente (por ejemplo, myCar.color = "red"). Si inicialmente defines una propiedad de objeto con un índice, como myCar[5] = "25 mpg", posteriormente te refiere a la propiedad solo como myCar[5].

- -

La excepción a esta regla son los objetos HTML, como por ejemplo los objetos contenidos en formularios. Siempre puedes hacer referencia a los objetos en estos objetos en forma de arreglo por su número ordinal (según el lugar en el que aparecen en el documento) o por su nombre (si está definido). Por ejemplo, si la segunda etiqueta <FORM> en un documento tiene un atributo NAME con valor "myForm", puedes hacer referencia al formulario como document.forms[1] o document.forms["myForm"] o document.forms.myForm.

- -

Definición de las propiedades de un tipo de objeto

- -

Puedes agregar una propiedad a un tipo de objeto definido previamente mediante el uso de la propiedad prototype. Esto define una propiedad que es compartida por todos los objetos del tipo especificado, en lugar de por una sola instancia del objeto. El siguiente código agrega una propiedad color a todos los objetos del tipo Car, y luego asigna un valor a la propiedad color del objeto car1.

- -
Car.prototype.color = null;
-car1.color = 'black';
-
- -

Para más información, consulta la propiedad prototype del objeto Function en la Referencia de JavaScript.

- -

Definición de métodos

- -

Un método es una función asociada a un objeto, o, simplemente, un método es una propiedad de un objeto que es una función. Los métodos se definen normalmente como una función, con excepción de que tienen que ser asignados como la propiedad de un objeto. Consulte también definiciones de métodos para obtener más detalles. Un ejemplo puede ser:

- -
objectName.methodname = functionName;
-
-var myObj = {
-  myMethod: function(params) {
-    // ...hacer algo
-  }
-
-  // O ESTO TAMBIÉN FUNCIONA
-
-  myOtherMethod(params) {
-    // ...hacer algo más
-  }
-};
-
- -

<s0>donde objectName es un objeto existente, methodname es el nombre que se le va a asignar al método, y functionName es el nombre de la función.

- -

Entonces puedes llamar al método en el contexto del objeto de la siguiente manera:

- -
object.methodname(params);
-
- -

Puedes definir métodos para un tipo de objeto incluyendo una definición del método en la función constructora del objeto. Podrías definir una función que formateé y muestre las propiedades de los objetos del tipo Car previamente definidas; por ejemplo:

- -
function displayCar() {
-  var result = `Un hermoso ${this.year} ${this.make} ${this.model}`;
-  pretty_print(result);
-}
-
- -

donde pretty_print es una función para mostrar una línea horizontal y una cadena. Observa el uso de this para referirse al objeto al que pertenece el método.

- -

Puedes hacer de esta función un método de Car agregando la declaración

- -
this.displayCar = displayCar;
-
- -

a la definición del objeto. Por lo tanto, la definición completa de Car ahora se verá así:

- -
function Car(make, model, year, owner) {
-  this.make = make;
-  this.model = model;
-  this.year = year;
-  this.owner = owner;
-  this.displayCar = displayCar;
-}
-
- -

Entonces puedes llamar al método displayCar para cada uno de los objetos de la siguiente manera:

- -
car1.displayCar();
-car2.displayCar();
-
- -

Usar this para referencias a objetos

- -

JavaScript tiene una palabra clave especial, this, que puedes usar dentro de un método para referirte al objeto actual. Por ejemplo, supongamos que tienes 2 objetos,Manager e Intern. Cada objeto tiene su propio name,age y job. En la función sayHi(), observa que hay this.name. Cuando se agregan a los 2 objetos, se pueden llamar y devuelve el 'Hola, mi nombre es' y luego agrega el valor name de ese objeto específico. Como se muestra abajo. 

- -
const Manager = {
-  name: "John",
-  age: 27,
-  job: "Software Engineer"
-}
-
-const Intern= {
-  name: "Ben",
-  age: 21,
-  job: "Software Engineer Intern"
-}
-
-function sayHi() {
-    console.log('Hola, mi nombre es ', this.name)
-}
-
-// agrega la función sayHi a ambos objetos
-Manager.sayHi = sayHi;
-Intern.sayHi = sayHi;
-
-Manager.sayHi() // Hola, mi nombre es John'
-Intern.sayHi() // Hola, mi nombre es Ben'
-
- -

this se refiere al objeto en el que se encuentra. Puedes crear una nueva función llamada howOldAmI() que registra una oración que dice cuántos años tiene la persona. 

- -
function howOldAmI() {
-  console.log('Tengo ' + this.age + ' años.')
-}
-Manager.howOldAmI = howOldAmI;
-Manager.howOldAmI() // Tengo 27 años.
-
- -

Definición de captadores (getters) y establecedores (setters)

- -

Un captador (getter) es un método que obtiene el valor de una propiedad específica. Un establecedor (setter) es un método que establece el valor de una propiedad específica. Puedes definir captadores y establecedores en cualquier objeto principal predefinido o en un objeto definido por el usuario que admita la adición de nuevas propiedades. 

- -

En principio, los captadores y establecedores pueden ser

- - - -

Al definir captadores y establecedores usando iniciadores de objeto, todo lo que necesitas hacer es prefijar un método captador con get y un método establecedor con set. Por supuesto, el método captador no debe esperar un parámetro, mientras que el método establecedor espera exactamente un parámetro (el nuevo valor a establecer). Por ejemplo:

- -
var o = {
-  a: 7,
-  get b() {
-    return this.a + 1;
-  },
-  set c(x) {
-    this.a = x / 2;
-  }
-};
-
-console.log (o.a); // 7
-console.log (o.b); // 8 <-- En este punto se inicia el método get b().
-o.c = 50;         // <-- En este punto se inicia el método set c(x)
-console.log(o.a); // 25
-
- -

var o = {

- - - -

Ten en cuenta que los nombres de función de los captadores y establecedores definidos en un objeto literal usando "[gs]et propiedad()" (en contraposición a __define [GS]etter__) no son los nombres de los captadores en sí, aunque la sintaxis [gs]et propertyName() {} te puede inducir a pensar lo contrario.

- -

Los captadores y establecedores también se pueden agregar a un objeto en cualquier momento después de la creación usando el método Object.defineProperties. El primer parámetro de este método es el objeto sobre el que se quiere definir el captador o establecedor. El segundo parámetro es un objeto cuyo nombre de propiedad son los nombres getter o setter, y cuyos valores de propiedad son objetos para la definición de las funciones getter o setter. Aquí hay un ejemplo que define el mismo getter y setter utilizado en el ejemplo anterior:

- -
var o = { a: 0 };
-
-Object.defineProperties(o, {
-    'b': { get: function() { return this.a + 1; } },
-    'c': { set: function(x) { this.a = x / 2; } }
-});
-
-o.c = 10; // Ejecuta el establecedor, que asigna 10/2 (5) a la propiedad 'a'
-console.log(o.b); // Ejecuta el captador, que produce un + 1 o 6
-
- -

¿Cuál de las dos formas elegir? depende de tu estilo de programación y de la tarea que te ocupa. Si ya utilizas el iniciador de objeto al definir un prototipo probablemente escojas la primer forma la mayoría de las veces. Esta forma es más compacta y natural. Sin embargo, si más tarde necesitas agregar captadores y establecedores — porque no lo escribiste en el objeto prototipo o particular — entonces la segunda forma es la única forma posible. La segunda forma, probablemente representa mejor la naturaleza dinámica de JavaScript — pero puede hacer que el código sea difícil de leer y entender.</s6>

- -

Eliminar propiedades

- -

Puedes eliminar una propiedad no heredada mediante el operador delete. El siguiente código muestra cómo eliminar una propiedad.

- -
//Crea un nuevo objeto, myobj, con dos propiedades, a y b.
-var myobj = new Object;
-myobj.a = 5;
-myobj.b = 12;
-
-// Elimina la propiedad a, dejando a myobj solo con la propiedad b.
-delete myobj.a;
-console.log ('a' in myobj); // muestra: "false"
-
- -

También puedes utilizar delete para eliminar una variable global siempre y cuando no se haya utilizado la palabra clave var para declarar la variable:

- -
g = 17;
-delete g;
-
- -

Comparar objetos

- -

Como sabemos los objetos son de tipo referencia en JavaScript. Dos distintos objetos nunca son iguales, incluso aunque tengan las mismas propiedades. Solo comparar la misma referencia de objeto consigo misma arroja verdadero.

- -
// Dos variables, dos distintos objetos con las mismas propiedades
-var fruit = { name: 'apple' };
-var fruitbear = { name: 'apple' };
-
-fruit == fruitbear; // devuelve false
-fruit === fruitbear; // devuelve false
- -
// Dos variables, un solo objeto
-var fruit = { name: 'apple' };
-var fruitbear = fruit; // Asigna la referencia del objeto fruit a fruitbear
-
-// Aquí fruit y fruitbear apuntan al mismo objeto
-fruit == fruitbear; // devuelve true
-fruit === fruitbear; // devuelve true
-
-fruit.name = 'grape';
-console.log(fruitbear); // Produce: { name: "grape" }, en lugar de { name: "apple" }
-
- -

Para obtener más información sobre los operadores de comparación, consulta Operadores de comparación.

- -

Ve también

- - - -

{{PreviousNext("Web/JavaScript/Guide/Regular_Expressions", "Web/JavaScript/Guide/Details_of_the_Object_Model")}}

diff --git a/files/es/web/javascript/guide/usar_promesas/index.html b/files/es/web/javascript/guide/usar_promesas/index.html deleted file mode 100644 index 4b84166fe6..0000000000 --- a/files/es/web/javascript/guide/usar_promesas/index.html +++ /dev/null @@ -1,344 +0,0 @@ ---- -title: Usar promesas -slug: Web/JavaScript/Guide/Usar_promesas -tags: - - Asíncrono - - Guía - - Intermedio - - Promesa - - Promesas -translation_of: Web/JavaScript/Guide/Using_promises ---- -
{{jsSidebar("JavaScript Guide")}}
- -

Una {{jsxref("Promise")}} (promesa en castellano) es un objeto que representa la terminación o el fracaso de una operación asíncrona. Dado que la mayoría de las personas consumen promises ya creadas, esta guía explicará primero cómo consumirlas, y luego cómo crearlas.

- -

Esencialmente, una promesa es un objeto devuelto al cuál se adjuntan funciones callback, en lugar de pasar callbacks a una función.

- -

Considera la función crearArchivoAudioAsync(), el cuál genera de manera asíncrona un archivo de sonido de acuerdo a un archivo de configuración, y dos funciones callback, una que es llamada si el archivo de audio es creado satisfactoriamente, y la otra que es llamada si ocurre un error. El código podría verse de la siguiente forma:

- -
function exitoCallback(resultado) {
-  console.log("Archivo de audio disponible en la URL " + resultado);
-}
-
-function falloCallback(error) {
-  console.log("Error generando archivo de audio " + error);
-}
-
-crearArchivoAudioAsync(audioConfig, exitoCallback, falloCallback);
-
- -

... las funciones modernas devuelven un objeto promise al que puedes adjuntar funciones de retorno (callbacks). Si crearArchivoAudioAsync fuera escrita de manera tal que devuelva un objeto promise, usarla sería tan simple como esto:

- -
crearArchivoAudioAsync(audioConfig).then(exitoCallback, falloCallback);
- -

Lo cuál es la versión corta de:

- -
const promesa = crearArchivoAudioAsync(audioConfig);
-promesa.then(exitoCallback, falloCallback);
- -

Llamamos a esto una llamada a función asíncrona. Esta convención tiene varias ventajas. Exploraremos cada una de ellas.

- -

Garantías

- -

A diferencia de las funciones callback pasadas al "viejo estilo", una promesa viene con algunas garantías:

- - - -

Una de las grandes ventajas de usar promises es el encadenamiento, explicado a continuación.

- -

Encadenamiento

- -

Una necesidad común es el ejecutar dos o más operaciones asíncronas seguidas, donde cada operación posterior se inicia cuando la operación previa tiene éxito, con el resultado del paso previo. Logramos esto creando una cadena de objetos promises.

- -

Aquí está la magia: la función then() devuelve una promesa nueva, diferente de la original:

- -
const promesa = hazAlgo();
-const promesa2 = promesa.then(exitoCallback, falloCallback);
-
- -

o

- -
let promesa2 = hazAlgo().then(exitoCallback, falloCallback);
-
- -

Esta segunda promesa (promesa2) representa no sólo la terminación de hazAlgo(), sino también de exitoCallback o falloCallback que pasaste, las cuales pueden ser otras funciones asíncronas devolviendo una promesa. Cuando ese es el caso, cualquier función callback añadida a promesa2 se queda en cola detrás de la promesa devuelta por exitoCallback o falloCallback.

- -

Básicamente, cada promesa representa la terminación de otro paso (asíncrono on no) en la cadena.

- -

En el pasado, hacer varias operaciones asíncronas en fila conduciría a la clásica pirámide de funciones callback:

- -
hazAlgo(function(resultado) {
-  hazAlgoMas(resultado, function(nuevoResultado) {
-    hazLaTerceraCosa(nuevoResultado, function(resultadoFinal) {
-      console.log('Obtenido el resultado final: ' + resultadoFinal
-    }, falloCallback);
-  }, falloCallback);
-}, falloCallback);
-
- -

Con las funciones modernas, adjuntamos nuestras functiones callback a las promesas devueltas, formando una cadena de promesa:

- -
hazAlgo().then(function(resultado) {
-  return hazAlgoMas(resultado);
-})
-.then(function(nuevoResultado) {
-  return hazLaTerceraCosa(nuevoResultado);
-})
-.then(function(resultadoFinal) {
-  console.log('Obtenido el resultado final: ' + resultadoFinal);
-})
-.catch(falloCallback);
-
- -

Los argumentos a then son opcionales, y catch(falloCallBack) es un atajo para then(null, falloCallBack). Es posible que veas esto expresado con funciones de flecha :

- -
hazAlgo()
-.then(resultado => hazAlgoMas(resultado))
-.then(nuevoResultado => hazLaTerceraCosa(nuevoResultado))
-.then(resultadoFinal => {
-  console.log(`Obtenido el resultado final: ${resultadoFinal}`);
-})
-.catch(falloCallback);
-
- -

Importante: Devuelve siempre resultados, de otra forma las funciones callback no se encadenarán, y los errores no serán capturados.

- -

Encadenar después de una captura

- -

Es posible encadenar después de un fallo - por ejemplo: un catch- lo que es útil para lograr nuevas acciones incluso después de una acción fallida en la cadena. Lea el siguiente ejemplo:

- -
new Promise((resolver, rechazar) => {
-    console.log('Inicial');
-
-    resolver();
-})
-.then(() => {
-    throw new Error('Algo falló');
-
-    console.log('Haz esto');
-})
-.catch(() => {
-    console.log('Haz aquello');
-})
-.then(() => {
-    console.log('Haz esto sin que importe lo que sucedió antes');
-});
-
- -

Esto devolverá el siguiente texto:

- -
Inicial
-Haz aquello
-Haz esto sin que importe lo que sucedió antes
-
- -

Note que el texto "Haz esto" no es escrito porque el error "Algo falló" causó un rechazo.

- -

Propagación de errores

- -

Tal vez recuerdes haber visto falloCallback tres veces en la pirámide en un ejemplo anterior, en comparación con sólo una vez al final de la cadena de promesas:

- -
hazAlgo()
-.then(resultado => hazAlgoMas(valor))
-.then(nuevoResultado => hazLaTerceraCosa(nuevoResultado))
-.then(resultadoFinal => console.log(`Obtenido el resultado final: ${resultadoFinal}`))
-.catch(falloCallback);
-
- -

Básicamente, una cadena de promesas se detiene si hay una excepción, y recorre la cadena buscando manejadores de captura. Lo siguiente está mucho más adaptado a la forma de trabajo del código síncrono:

- -
try {
-  let resultado = syncHazAlgo();
-  let nuevoResultado = syncHazAlgoMas(resultado);
-  let resultadoFinal = syncHazLaTerceraCosa(nuevoResultado);
-  console.log(`Obtenido el resultado final: ${resultadoFinal}`);
-} catch(error) {
-  falloCallback(error);
-}
-
- -

Esta simetría con el código síncrono culmina con la mejora sintáctica async/await en ECMASCript 2017:

- -
async function foo() {
-  try {
-    let resultado = await hazAlgo();
-    let nuevoResultado = await hazAlgoMas(resultado);
-    let resultadoFinal = await hazLaTerceraCosa(nuevoResultado);
-    console.log(`Obtenido el resultado final: ${resultadoFinal}`);
-  } catch(error) {
-    falloCallback(error);
-  }
-}
-
- -

Se construye sobre promesas, por ejemplo, hazAlgo() es la misma función que antes. Puedes leer más sobre la sintaxis aquí.

- -

Las promesas resuelven un fallo fundamental de la pirámide de funciones callback, capturando todos los errores, incluso excepciones lanzadas y errores de programación. Esto es esencial para la composición funcional de operaciones asíncronas.

- -

Eventos de rechazo de Promesas

- -

Cuando una promesa es rechazada, uno de los dos eventos se envía al ámbito global (generalmente, éste es el {{domxref("window")}}, o, si se utiliza en un trabajador web, es el  {{domxref("Worker")}} u otra interfaz basada en un trabajador). Los dos eventos son:

- -

{{domxref("Window.rejectionhandled_event", "rejectionhandled")}}

- -

Se envía cuando se rechaza una promesa, una vez que el rechazo ha sido manejado por la función reject del ejecutor.

- -

{{domxref("Window.unhandledrejection_event", "unhandledrejection")}}

- -

Se envía cuando se rechaza una promesa pero no hay un controlador de rechazo disponible.

- -

En ambos casos, el evento (del tipo {{domxref("PromiseRejectionEvent")}}) tiene como miembros una propiedad {{domxref("PromiseRejectionEvent.promise", "promise")}} que indica que la promesa fue rechazada, y una propiedad {{domxref("PromiseRejectionEvent.reason", "reason")}} que proporciona el motivo por el cuál se rechaza la promesa.

- -

Esto hace posible ofrecer el manejo de errores de promesas, y también ayuda a depurarlos. Estos controladores son globales, por lo tanto, todos los errores serán manejados por éstos independientemente de la fuente.

- -

Un caso de especial utilidad: al escribir código para {{Glossary("Node.js")}}, es común que los módulos que incluyas en tu proyecto no cuenten con un controlador de evento para promesas rechazadas. Estos se registran en la consola en tiempo de ejecución de Node. Puedes capturarlos para analizarlos y manejarlos en tu código - o solo evitar que abarroten tu salida - agregando un controlador para el evento {{domxref("Window.unhandledrejection_event", "unhandledrejection")}}, como se muestra a continuación:

- -
window.addEventListener("unhandledrejection", event => {
-  /* Podrías comenzar agregando código para examinar
-     la promesa específica analizando event.promise
-     y la razón del rechazo, accediendo a event.reason */
-
-  event.preventDefault();
-}, false);
- -

Llamando al método {{domxref("Event.preventDefault", "preventDefault()")}} del evento, le dices a Javascript en tiempo de ejecución que no realice su acción predeterminada cuando las promesas rechazadas no cuenten con manejadores. En el caso de Node, esa acción predeterminada usualmente registra el error en la consola.

- -

Lo ideal, por supuesto, sería examinar las promesas rechazadas para asegurarte que ninguna de ellas tienen errores de código reales antes de descartar esos eventos.

- -

Crear una promesa alrededor de una vieja API de callbacks

- -

Una {{jsxref("Promise")}} puede ser creada desde cero usando su constructor. Esto debería ser sólo necesario para envolver viejas APIs.

- -

En un mundo ideal, todas las funciones asíncronas devolverían promesas. Desafortunadamente, algunas APIs aún esperan que se les pase callbacks con resultado fallido/exitoso a la forma antigua. El ejemplo más obvio es la función {{domxref("WindowTimers.setTimeout", "setTimeout()")}}:

- -
setTimeout(() => diAlgo("pasaron 10 segundos"), 10000);
-
- -

Combinar callbacks del viejo estilo con promesas es problemático. Si diAlgo falla o contiene un error de programación, nada lo captura. La función setTimeout es culpable de esto.

- -

Afortunadamente podemos envolverlas en una promesa. La mejor práctica es envolver las funciones problemáticas en el nivel más bajo posible, y después nunca llamarlas de nuevo  directamente:

- -
const espera = ms => new Promise(resuelve => setTimeout(resuelve, ms));
-
-espera(10000).then(() => diAlgo("10 segundos")).catch(falloCallback);
-
- -

Básicamente, el constructor de la promesa toma una función ejecutora que nos permite resolver o rechazar manualmente una promesa. Dado que setTimeout no falla realmente, descartamos el rechazo en este caso.

- -

Composición

- -

{{jsxref("Promise.resolve()")}} y {{jsxref("Promise.reject()")}} son atajos para crear manualmente una promesa resuelta o rechazada respectivamente. Esto puede ser útil a veces.

- -

{{jsxref("Promise.all()")}} son {{jsxref("Promise.race()")}} son dos herramientas de composición para ejecutar operaciones asíncronas en paralelo.

- -

Podemos comenzar operaciones en paralelo y esperar que finalicen todas ellas de la siguiente manera:

- -
Promise.all([func1(), func2(), func3()])
-.then(([resultado1, resultado2, resultado3]) => { /* usa resultado1, resultado2 y resultado3 */ });
- -

La composición secuencial es posible usando Javascript inteligente:

- -
[func1, func2, func3].reduce((p, f) => p.then(f), Promise.resolve())
-.then(result3 => { /* use result3 */ });
- -

Básicamente, reducimos un conjunto de funciones asíncronas a una cadena de promesas equivalente a: Promise.resolve().then(func1).then(func2).then(func3);

- -

Esto se puede convertir en una función de composición reutilizable, que es común en la programación funcional:

- -
const aplicarAsync = (acc,val) => acc.then(val);
-const componerAsync = (...funcs) => x => funcs.reduce(aplicarAsync, Promise.resolve(x));
- -

La función componerAsync() aceptará cualquier número de funciones como argumentos, y devolverá una nueva función que acepta un valor inicial que es pasado a través del conducto de composición. Esto es beneficioso porque cualquiera o todas las funciones pueden ser o asíncronas o síncronas y se garantiza que serán ejecutadas en el orden correcto:

- -
const transformData = componerAsync(func1, asyncFunc1, asyncFunc2, func2);
-const resultado3 = transformData(data);
-
- -

En ECMAScript 2017, la composición secuencial puede ser realizada usando simplemente async/await:

- -
let resultado;
-for (const f of [func1, func2, func3]) {
-  resultado = await f(resultado);
-}
-
- -

Sincronización

- -

Para evitar sorpresas, las funciones pasadas a then() nunca serán llamadas sincrónicamente, incluso con una promesa ya resuelta:

- -
Promise.resolve().then(() => console.log(2));
-console.log(1); // 1, 2
-
- -

En lugar de ejecutarse inmediatamente, la función pasada es colocada en una cola de microtareas, lo que significa que se ejecuta más tarde cuando la cola es vaciada al final del actual ciclo de eventos de JavaScript:

- -
const espera = ms => new Promise(resuelve => setTimeout(resuelve, ms));
-
-espera().then(() => console.log(4));
-Promise.resuelve().then(() => console.log(2)).then(() => console.log(3));
-console.log(1); // 1, 2, 3, 4
-
- -

Anidamiento

- -

Las cadenas de promesas simples se mantienen planas sin anidar, ya que el anidamiento puede ser el resultado de una composición descuidada. Vea errores comunes.

- -

El anidamiento es una estructura de control para limitar el alcance de las sentencias catch. Específicamente, un catch anidado sólo captura fallos dentro de su contexto y por debajo, no captura errores que están más arriba en la cadena fuera del alcance del anidamiento. Cuando se usa correctamente, da mayor precisión en la recuperación de errores:

- -
hacerAlgoCritico()
-.then(resultado => hacerAlgoOpcional()
-  .then(resultadoOpcional => hacerAlgoSuper(resultadoOpcional))
-  .catch(e => {})) // Ignorar si hacerAlgoOpcional falla.
-.then(() => masAsuntosCriticos())
-.catch(e => console.log("Acción crítica fallida: " + e.message));
-
- -

Nota que aquí los pasos opcionales están anidados, por la precaria colocación de lo externo (y) alrededor de ellos.

- -

La declaración interna catch solo detecta errores de hacerAlgoOpcional() y hacerAlgoSuper(), después de lo cuál el código se reanuda con masAsuntosCriticos(). Es importante destacar que si hacerAlgoCritico() falla, el error es capturado únicamente por el catch final.

- -

Errores comunes

- -

Aquí hay algunos errores comunes que deben tenerse en cuenta al componer cadenas de promesas. Varios de estos errores se manifiestan en el siguiente ejemplo:

- -
// ¡Mal ejemplo!
-hacerlAlgo().then(function(resultado) {
-  hacerOtraCosa(resultado) // Olvida devolver una promesa desde el interior de la cadena + anidamiento innecesario
-  .then(nuevoResultado => hacerUnaTerceraCosa(nuevoResultado));
-}).then(() => hacerUnaCuartaCosa());
-// Olvida terminar la cadena con un catch!
- -

El primer error es no encadenar las acciones adecuadamente. Esto sucede cuando creamos una promesa y olvidamos devolverla. Como consecuencia, la cadena se rompe, o mejor dicho, tenemos dos cadenas independientes que compiten. Esto significa que hacerUnaCuartaCosa() no esperará a que finalicen hacerOtraCosa() o hacerUnaTerceraCosa(), y se ejecutará paralelamente a ellas. Las cadenas separadas también tienen un manejador de errores separado, lo que provoca errores no detectados.

- -

El segundo error es el anidamiento innecesario, que da lugar al primer error. La anidación también limita el alcance de los manejadores de errores internos, que - si no son deseados - pueden llevar a errores no detectados. Una variante de esto es el constructor anti-patrón de promesas, el cuál combina el anidamiento con el uso redundante del constructor de promesa para envolver el código que ya usa promesas. 

- -

El tercer error es olvidar cerrar las cadenas con catch.Las cadenas de promesas no terminadas conducen a errores no capturados en la mayoría de los navegadores.

- -

Una buena regla es devolver o terminar siempre las cadenas de promesas, y tan pronto como obtenga una nueva promesa, devolverla de inmediato, para aplanar las cosas:

- -
hacerAlgo()
-.then(function(resultado) {
-  return hacerOtraCosa(resultado);
-})
-.then(nuevoResultado => hacerUnaTerceraCosa(nuevoResultado))
-.then(() => hacerUnaCuartaCosa())
-.catch(error => console.log(error));
- -

Nota que () => x es un atajo para () => { return x; }.

- -

Ahora tenemos una cadena determinística simple con un manejador de error adecuado.

- -

El uso de async / await aborda la mayoría, si no todos estos problemas, la desventaja es que el error más común con esa sintaxis es olvidar la palabra clave await.

- -

Vea también

- - diff --git a/files/es/web/javascript/guide/using_promises/index.html b/files/es/web/javascript/guide/using_promises/index.html new file mode 100644 index 0000000000..4b84166fe6 --- /dev/null +++ b/files/es/web/javascript/guide/using_promises/index.html @@ -0,0 +1,344 @@ +--- +title: Usar promesas +slug: Web/JavaScript/Guide/Usar_promesas +tags: + - Asíncrono + - Guía + - Intermedio + - Promesa + - Promesas +translation_of: Web/JavaScript/Guide/Using_promises +--- +
{{jsSidebar("JavaScript Guide")}}
+ +

Una {{jsxref("Promise")}} (promesa en castellano) es un objeto que representa la terminación o el fracaso de una operación asíncrona. Dado que la mayoría de las personas consumen promises ya creadas, esta guía explicará primero cómo consumirlas, y luego cómo crearlas.

+ +

Esencialmente, una promesa es un objeto devuelto al cuál se adjuntan funciones callback, en lugar de pasar callbacks a una función.

+ +

Considera la función crearArchivoAudioAsync(), el cuál genera de manera asíncrona un archivo de sonido de acuerdo a un archivo de configuración, y dos funciones callback, una que es llamada si el archivo de audio es creado satisfactoriamente, y la otra que es llamada si ocurre un error. El código podría verse de la siguiente forma:

+ +
function exitoCallback(resultado) {
+  console.log("Archivo de audio disponible en la URL " + resultado);
+}
+
+function falloCallback(error) {
+  console.log("Error generando archivo de audio " + error);
+}
+
+crearArchivoAudioAsync(audioConfig, exitoCallback, falloCallback);
+
+ +

... las funciones modernas devuelven un objeto promise al que puedes adjuntar funciones de retorno (callbacks). Si crearArchivoAudioAsync fuera escrita de manera tal que devuelva un objeto promise, usarla sería tan simple como esto:

+ +
crearArchivoAudioAsync(audioConfig).then(exitoCallback, falloCallback);
+ +

Lo cuál es la versión corta de:

+ +
const promesa = crearArchivoAudioAsync(audioConfig);
+promesa.then(exitoCallback, falloCallback);
+ +

Llamamos a esto una llamada a función asíncrona. Esta convención tiene varias ventajas. Exploraremos cada una de ellas.

+ +

Garantías

+ +

A diferencia de las funciones callback pasadas al "viejo estilo", una promesa viene con algunas garantías:

+ + + +

Una de las grandes ventajas de usar promises es el encadenamiento, explicado a continuación.

+ +

Encadenamiento

+ +

Una necesidad común es el ejecutar dos o más operaciones asíncronas seguidas, donde cada operación posterior se inicia cuando la operación previa tiene éxito, con el resultado del paso previo. Logramos esto creando una cadena de objetos promises.

+ +

Aquí está la magia: la función then() devuelve una promesa nueva, diferente de la original:

+ +
const promesa = hazAlgo();
+const promesa2 = promesa.then(exitoCallback, falloCallback);
+
+ +

o

+ +
let promesa2 = hazAlgo().then(exitoCallback, falloCallback);
+
+ +

Esta segunda promesa (promesa2) representa no sólo la terminación de hazAlgo(), sino también de exitoCallback o falloCallback que pasaste, las cuales pueden ser otras funciones asíncronas devolviendo una promesa. Cuando ese es el caso, cualquier función callback añadida a promesa2 se queda en cola detrás de la promesa devuelta por exitoCallback o falloCallback.

+ +

Básicamente, cada promesa representa la terminación de otro paso (asíncrono on no) en la cadena.

+ +

En el pasado, hacer varias operaciones asíncronas en fila conduciría a la clásica pirámide de funciones callback:

+ +
hazAlgo(function(resultado) {
+  hazAlgoMas(resultado, function(nuevoResultado) {
+    hazLaTerceraCosa(nuevoResultado, function(resultadoFinal) {
+      console.log('Obtenido el resultado final: ' + resultadoFinal
+    }, falloCallback);
+  }, falloCallback);
+}, falloCallback);
+
+ +

Con las funciones modernas, adjuntamos nuestras functiones callback a las promesas devueltas, formando una cadena de promesa:

+ +
hazAlgo().then(function(resultado) {
+  return hazAlgoMas(resultado);
+})
+.then(function(nuevoResultado) {
+  return hazLaTerceraCosa(nuevoResultado);
+})
+.then(function(resultadoFinal) {
+  console.log('Obtenido el resultado final: ' + resultadoFinal);
+})
+.catch(falloCallback);
+
+ +

Los argumentos a then son opcionales, y catch(falloCallBack) es un atajo para then(null, falloCallBack). Es posible que veas esto expresado con funciones de flecha :

+ +
hazAlgo()
+.then(resultado => hazAlgoMas(resultado))
+.then(nuevoResultado => hazLaTerceraCosa(nuevoResultado))
+.then(resultadoFinal => {
+  console.log(`Obtenido el resultado final: ${resultadoFinal}`);
+})
+.catch(falloCallback);
+
+ +

Importante: Devuelve siempre resultados, de otra forma las funciones callback no se encadenarán, y los errores no serán capturados.

+ +

Encadenar después de una captura

+ +

Es posible encadenar después de un fallo - por ejemplo: un catch- lo que es útil para lograr nuevas acciones incluso después de una acción fallida en la cadena. Lea el siguiente ejemplo:

+ +
new Promise((resolver, rechazar) => {
+    console.log('Inicial');
+
+    resolver();
+})
+.then(() => {
+    throw new Error('Algo falló');
+
+    console.log('Haz esto');
+})
+.catch(() => {
+    console.log('Haz aquello');
+})
+.then(() => {
+    console.log('Haz esto sin que importe lo que sucedió antes');
+});
+
+ +

Esto devolverá el siguiente texto:

+ +
Inicial
+Haz aquello
+Haz esto sin que importe lo que sucedió antes
+
+ +

Note que el texto "Haz esto" no es escrito porque el error "Algo falló" causó un rechazo.

+ +

Propagación de errores

+ +

Tal vez recuerdes haber visto falloCallback tres veces en la pirámide en un ejemplo anterior, en comparación con sólo una vez al final de la cadena de promesas:

+ +
hazAlgo()
+.then(resultado => hazAlgoMas(valor))
+.then(nuevoResultado => hazLaTerceraCosa(nuevoResultado))
+.then(resultadoFinal => console.log(`Obtenido el resultado final: ${resultadoFinal}`))
+.catch(falloCallback);
+
+ +

Básicamente, una cadena de promesas se detiene si hay una excepción, y recorre la cadena buscando manejadores de captura. Lo siguiente está mucho más adaptado a la forma de trabajo del código síncrono:

+ +
try {
+  let resultado = syncHazAlgo();
+  let nuevoResultado = syncHazAlgoMas(resultado);
+  let resultadoFinal = syncHazLaTerceraCosa(nuevoResultado);
+  console.log(`Obtenido el resultado final: ${resultadoFinal}`);
+} catch(error) {
+  falloCallback(error);
+}
+
+ +

Esta simetría con el código síncrono culmina con la mejora sintáctica async/await en ECMASCript 2017:

+ +
async function foo() {
+  try {
+    let resultado = await hazAlgo();
+    let nuevoResultado = await hazAlgoMas(resultado);
+    let resultadoFinal = await hazLaTerceraCosa(nuevoResultado);
+    console.log(`Obtenido el resultado final: ${resultadoFinal}`);
+  } catch(error) {
+    falloCallback(error);
+  }
+}
+
+ +

Se construye sobre promesas, por ejemplo, hazAlgo() es la misma función que antes. Puedes leer más sobre la sintaxis aquí.

+ +

Las promesas resuelven un fallo fundamental de la pirámide de funciones callback, capturando todos los errores, incluso excepciones lanzadas y errores de programación. Esto es esencial para la composición funcional de operaciones asíncronas.

+ +

Eventos de rechazo de Promesas

+ +

Cuando una promesa es rechazada, uno de los dos eventos se envía al ámbito global (generalmente, éste es el {{domxref("window")}}, o, si se utiliza en un trabajador web, es el  {{domxref("Worker")}} u otra interfaz basada en un trabajador). Los dos eventos son:

+ +

{{domxref("Window.rejectionhandled_event", "rejectionhandled")}}

+ +

Se envía cuando se rechaza una promesa, una vez que el rechazo ha sido manejado por la función reject del ejecutor.

+ +

{{domxref("Window.unhandledrejection_event", "unhandledrejection")}}

+ +

Se envía cuando se rechaza una promesa pero no hay un controlador de rechazo disponible.

+ +

En ambos casos, el evento (del tipo {{domxref("PromiseRejectionEvent")}}) tiene como miembros una propiedad {{domxref("PromiseRejectionEvent.promise", "promise")}} que indica que la promesa fue rechazada, y una propiedad {{domxref("PromiseRejectionEvent.reason", "reason")}} que proporciona el motivo por el cuál se rechaza la promesa.

+ +

Esto hace posible ofrecer el manejo de errores de promesas, y también ayuda a depurarlos. Estos controladores son globales, por lo tanto, todos los errores serán manejados por éstos independientemente de la fuente.

+ +

Un caso de especial utilidad: al escribir código para {{Glossary("Node.js")}}, es común que los módulos que incluyas en tu proyecto no cuenten con un controlador de evento para promesas rechazadas. Estos se registran en la consola en tiempo de ejecución de Node. Puedes capturarlos para analizarlos y manejarlos en tu código - o solo evitar que abarroten tu salida - agregando un controlador para el evento {{domxref("Window.unhandledrejection_event", "unhandledrejection")}}, como se muestra a continuación:

+ +
window.addEventListener("unhandledrejection", event => {
+  /* Podrías comenzar agregando código para examinar
+     la promesa específica analizando event.promise
+     y la razón del rechazo, accediendo a event.reason */
+
+  event.preventDefault();
+}, false);
+ +

Llamando al método {{domxref("Event.preventDefault", "preventDefault()")}} del evento, le dices a Javascript en tiempo de ejecución que no realice su acción predeterminada cuando las promesas rechazadas no cuenten con manejadores. En el caso de Node, esa acción predeterminada usualmente registra el error en la consola.

+ +

Lo ideal, por supuesto, sería examinar las promesas rechazadas para asegurarte que ninguna de ellas tienen errores de código reales antes de descartar esos eventos.

+ +

Crear una promesa alrededor de una vieja API de callbacks

+ +

Una {{jsxref("Promise")}} puede ser creada desde cero usando su constructor. Esto debería ser sólo necesario para envolver viejas APIs.

+ +

En un mundo ideal, todas las funciones asíncronas devolverían promesas. Desafortunadamente, algunas APIs aún esperan que se les pase callbacks con resultado fallido/exitoso a la forma antigua. El ejemplo más obvio es la función {{domxref("WindowTimers.setTimeout", "setTimeout()")}}:

+ +
setTimeout(() => diAlgo("pasaron 10 segundos"), 10000);
+
+ +

Combinar callbacks del viejo estilo con promesas es problemático. Si diAlgo falla o contiene un error de programación, nada lo captura. La función setTimeout es culpable de esto.

+ +

Afortunadamente podemos envolverlas en una promesa. La mejor práctica es envolver las funciones problemáticas en el nivel más bajo posible, y después nunca llamarlas de nuevo  directamente:

+ +
const espera = ms => new Promise(resuelve => setTimeout(resuelve, ms));
+
+espera(10000).then(() => diAlgo("10 segundos")).catch(falloCallback);
+
+ +

Básicamente, el constructor de la promesa toma una función ejecutora que nos permite resolver o rechazar manualmente una promesa. Dado que setTimeout no falla realmente, descartamos el rechazo en este caso.

+ +

Composición

+ +

{{jsxref("Promise.resolve()")}} y {{jsxref("Promise.reject()")}} son atajos para crear manualmente una promesa resuelta o rechazada respectivamente. Esto puede ser útil a veces.

+ +

{{jsxref("Promise.all()")}} son {{jsxref("Promise.race()")}} son dos herramientas de composición para ejecutar operaciones asíncronas en paralelo.

+ +

Podemos comenzar operaciones en paralelo y esperar que finalicen todas ellas de la siguiente manera:

+ +
Promise.all([func1(), func2(), func3()])
+.then(([resultado1, resultado2, resultado3]) => { /* usa resultado1, resultado2 y resultado3 */ });
+ +

La composición secuencial es posible usando Javascript inteligente:

+ +
[func1, func2, func3].reduce((p, f) => p.then(f), Promise.resolve())
+.then(result3 => { /* use result3 */ });
+ +

Básicamente, reducimos un conjunto de funciones asíncronas a una cadena de promesas equivalente a: Promise.resolve().then(func1).then(func2).then(func3);

+ +

Esto se puede convertir en una función de composición reutilizable, que es común en la programación funcional:

+ +
const aplicarAsync = (acc,val) => acc.then(val);
+const componerAsync = (...funcs) => x => funcs.reduce(aplicarAsync, Promise.resolve(x));
+ +

La función componerAsync() aceptará cualquier número de funciones como argumentos, y devolverá una nueva función que acepta un valor inicial que es pasado a través del conducto de composición. Esto es beneficioso porque cualquiera o todas las funciones pueden ser o asíncronas o síncronas y se garantiza que serán ejecutadas en el orden correcto:

+ +
const transformData = componerAsync(func1, asyncFunc1, asyncFunc2, func2);
+const resultado3 = transformData(data);
+
+ +

En ECMAScript 2017, la composición secuencial puede ser realizada usando simplemente async/await:

+ +
let resultado;
+for (const f of [func1, func2, func3]) {
+  resultado = await f(resultado);
+}
+
+ +

Sincronización

+ +

Para evitar sorpresas, las funciones pasadas a then() nunca serán llamadas sincrónicamente, incluso con una promesa ya resuelta:

+ +
Promise.resolve().then(() => console.log(2));
+console.log(1); // 1, 2
+
+ +

En lugar de ejecutarse inmediatamente, la función pasada es colocada en una cola de microtareas, lo que significa que se ejecuta más tarde cuando la cola es vaciada al final del actual ciclo de eventos de JavaScript:

+ +
const espera = ms => new Promise(resuelve => setTimeout(resuelve, ms));
+
+espera().then(() => console.log(4));
+Promise.resuelve().then(() => console.log(2)).then(() => console.log(3));
+console.log(1); // 1, 2, 3, 4
+
+ +

Anidamiento

+ +

Las cadenas de promesas simples se mantienen planas sin anidar, ya que el anidamiento puede ser el resultado de una composición descuidada. Vea errores comunes.

+ +

El anidamiento es una estructura de control para limitar el alcance de las sentencias catch. Específicamente, un catch anidado sólo captura fallos dentro de su contexto y por debajo, no captura errores que están más arriba en la cadena fuera del alcance del anidamiento. Cuando se usa correctamente, da mayor precisión en la recuperación de errores:

+ +
hacerAlgoCritico()
+.then(resultado => hacerAlgoOpcional()
+  .then(resultadoOpcional => hacerAlgoSuper(resultadoOpcional))
+  .catch(e => {})) // Ignorar si hacerAlgoOpcional falla.
+.then(() => masAsuntosCriticos())
+.catch(e => console.log("Acción crítica fallida: " + e.message));
+
+ +

Nota que aquí los pasos opcionales están anidados, por la precaria colocación de lo externo (y) alrededor de ellos.

+ +

La declaración interna catch solo detecta errores de hacerAlgoOpcional() y hacerAlgoSuper(), después de lo cuál el código se reanuda con masAsuntosCriticos(). Es importante destacar que si hacerAlgoCritico() falla, el error es capturado únicamente por el catch final.

+ +

Errores comunes

+ +

Aquí hay algunos errores comunes que deben tenerse en cuenta al componer cadenas de promesas. Varios de estos errores se manifiestan en el siguiente ejemplo:

+ +
// ¡Mal ejemplo!
+hacerlAlgo().then(function(resultado) {
+  hacerOtraCosa(resultado) // Olvida devolver una promesa desde el interior de la cadena + anidamiento innecesario
+  .then(nuevoResultado => hacerUnaTerceraCosa(nuevoResultado));
+}).then(() => hacerUnaCuartaCosa());
+// Olvida terminar la cadena con un catch!
+ +

El primer error es no encadenar las acciones adecuadamente. Esto sucede cuando creamos una promesa y olvidamos devolverla. Como consecuencia, la cadena se rompe, o mejor dicho, tenemos dos cadenas independientes que compiten. Esto significa que hacerUnaCuartaCosa() no esperará a que finalicen hacerOtraCosa() o hacerUnaTerceraCosa(), y se ejecutará paralelamente a ellas. Las cadenas separadas también tienen un manejador de errores separado, lo que provoca errores no detectados.

+ +

El segundo error es el anidamiento innecesario, que da lugar al primer error. La anidación también limita el alcance de los manejadores de errores internos, que - si no son deseados - pueden llevar a errores no detectados. Una variante de esto es el constructor anti-patrón de promesas, el cuál combina el anidamiento con el uso redundante del constructor de promesa para envolver el código que ya usa promesas. 

+ +

El tercer error es olvidar cerrar las cadenas con catch.Las cadenas de promesas no terminadas conducen a errores no capturados en la mayoría de los navegadores.

+ +

Una buena regla es devolver o terminar siempre las cadenas de promesas, y tan pronto como obtenga una nueva promesa, devolverla de inmediato, para aplanar las cosas:

+ +
hacerAlgo()
+.then(function(resultado) {
+  return hacerOtraCosa(resultado);
+})
+.then(nuevoResultado => hacerUnaTerceraCosa(nuevoResultado))
+.then(() => hacerUnaCuartaCosa())
+.catch(error => console.log(error));
+ +

Nota que () => x es un atajo para () => { return x; }.

+ +

Ahora tenemos una cadena determinística simple con un manejador de error adecuado.

+ +

El uso de async / await aborda la mayoría, si no todos estos problemas, la desventaja es que el error más común con esa sintaxis es olvidar la palabra clave await.

+ +

Vea también

+ + diff --git a/files/es/web/javascript/guide/working_with_objects/index.html b/files/es/web/javascript/guide/working_with_objects/index.html new file mode 100644 index 0000000000..84a9854d9a --- /dev/null +++ b/files/es/web/javascript/guide/working_with_objects/index.html @@ -0,0 +1,493 @@ +--- +title: Trabajando con objetos +slug: Web/JavaScript/Guide/Trabajando_con_objectos +tags: + - Comparación de objetos + - Constructor + - Documento + - Guía + - JavaScript + - Objeto + - Principiante +translation_of: Web/JavaScript/Guide/Working_with_Objects +--- +
{{jsSidebar("Guía de JavaScript")}} {{PreviousNext("Web/JavaScript/Guide/Keyed_collections", "Web/JavaScript/Guide/Details_of_the_Object_Model")}}
+ +

JavaScript está diseñado en un paradigma simple basado en objetos. Un objeto es una colección de propiedades, y una propiedad es una asociación entre un nombre (o clave) y un valor. El valor de una propiedad puede ser una función, en cuyo caso la propiedad es conocida como un método. Además de los objetos que están predefinidos en el navegador, puedes definir tus propios objetos. Este capítulo describe cómo usar objetos, propiedades, funciones y métodos; y cómo crear tus propios objectos.

+ +

Visión general sobre Objetos

+ +

Los objetos en JavaScript, como en tantos otros lenguajes de programación, se pueden comparar con objetos de la vida real. El concepto de Objetos en JavaScript se puede entender con objetos tangibles de la vida real.

+ +

En JavaScript, un objeto es un entidad independiente con propiedades y tipos. Compáralo con una taza, por ejemplo. Una taza es un objeto con propiedades. Una taza tiene un color, un diseño, un peso, un material del que está hecha, etc. Del mismo modo, los objetos de JavaScript pueden tener propiedades que definan sus características.

+ +

Objetos y propiedades

+ +

Un objeto de JavaScript tiene propiedades asociadas a él. Una propiedad de un objeto se puede explicar como una variable adjunta al objeto. Las propiedades de un objeto básicamente son lo mismo que las variables comunes de JavaScript, excepto por el nexo con el objeto. Las propiedades de un objeto definen las características del objeto. Accedes a las propiedades de un objeto con una simple notación de puntos:

+ +
objectName.propertyName
+
+ +

Como todas las variables de JavaScript, tanto el nombre del objeto (que puede ser una variable normal) como el nombre de la propiedad son sensibles a mayúsculas y minúsculas. Puedes definir propiedades asignándoles un valor. Por ejemplo, vamos a crear un objeto llamado myCar y le vamos a asignar propiedades denominadas make, model, y year de la siguiente manera:

+ +
var myCar = new Object();
+myCar.make = 'Ford';
+myCar.model = 'Mustang';
+myCar.year = 1969;
+
+ +

El ejemplo anterior también se podría escribir usando un iniciador de objeto, que es una lista delimitada por comas de cero o más pares de nombres de propiedad y valores asociados de un objeto, encerrados entre llaves ({}):

+ +
var myCar = {
+    make: 'Ford',
+    model: 'Mustang',
+    year: 1969
+};
+
+ +

Las propiedades no asignadas de un objeto son {{jsxref("undefined")}} (y​no {{jsxref("null")}}).

+ +
myCar.color; // undefined
+ +

También puedes acceder o establecer las propiedades de los objetos en JavaScript mediante la notación de corchetes ↑[]↓ (Para más detalle ve Accesores de propiedades). Los objetos, a veces son llamados arreglos asociativos, debido a que cada propiedad está asociada con un valor de cadena que se puede utilizar para acceder a ella. Por lo tanto, por ejemplo, puedes acceder a las propiedades del objeto myCar de la siguiente manera:

+ +
myCar['make']  = 'Ford';
+myCar['model'] = 'Mustang';
+myCar['year']  = 1969;
+
+ +

El nombre de la propiedad de un objeto puede ser cualquier cadena válida de JavaScript, o cualquier cosa que se pueda convertir en una cadena, incluyendo una cadena vacía. Sin embargo, cualquier nombre de propiedad que no sea un identificador válido de JavaScript (por ejemplo, el nombre de alguna propiedad que tenga un espacio o un guión, o comience con un número) solo se puede acceder utilizando la notación de corchetes. Esta notación es muy útil también cuando los nombres de propiedades son determinados dinámicamente (cuando el nombre de la propiedad no se determina hasta el tiempo de ejecución). Ejemplos de esto se muestran a continuación:

+ +
// Se crean y asignan cuatro variables de una sola vez,
+// separadas por comas
+var myObj = new Object(),
+    str = 'myString',
+    rand = Math.random(),
+    obj = new Object();
+
+myObj.type                 = 'Sintaxis de puntos';
+myObj['fecha de creación'] = 'Cadena con espacios';
+myObj[str]                 = 'Valor de cadena';
+myObj[rand]                = 'Número aleatorio';
+myObj[obj]                 = 'Object';
+myObj['']                  = 'Incluso una cadena vacía';
+
+console.log(myObj);
+
+ +

Por favor, ten en cuenta que todas las claves con notación en corchetes se convierten a cadenas a menos que estas sean símbolos, ya que los nombres de las propiedades (claves) en Javascript pueden solo pueden ser cadenas o símbolos (en algún momento, los nombres privados también serán agregados a medida que progrese la propuesta de los campos de clase, pero no las usarás con el formato []). Por ejemplo, en el código anterior, cuando la clave obj se añadió a myObj, Javascript llamará al método {{jsxref("Object.toString", "obj.toString()")}}, y usará la cadena resultante de esta llamada como la nueva clave.

+ +

También puedes acceder a las propiedades mediante el uso de un valor de cadena que se almacena en una variable:

+ +
var propertyName = 'make';
+myCar[propertyName] = 'Ford';
+
+propertyName = 'model';
+myCar[propertyName] = 'Mustang';
+
+ +

Puedes usar la notación de corchetes con for...in para iterar sobre todas las propiedades enumerables de un objeto. Para ilustrar cómo funciona esto, la siguiente función muestra las propiedades del objeto cuando pasas el objeto y el nombre del objeto como argumentos a la función:

+ +
function showProps(obj, objName) {
+  var result = ``;
+  for (var i in obj) {
+    // obj.hasOwnProperty() se usa para filtrar propiedades de la cadena de prototipos del objeto
+    if (obj.hasOwnProperty(i)) {
+      result += `${objName}.${i} = ${obj[i]}\n`;
+    }
+  }
+  return result;
+}
+
+ +

Por lo tanto, la llamada a la función showProps(myCar, "myCar") devolverá lo siguiente:

+ +
myCar.make = Ford
+myCar.model = Mustang
+myCar.year = 1969
+ +

Enumerar las propiedades de un objeto

+ +

A partir de ECMAScript 5, hay tres formas nativas para enumerar/recorrer las propiedades de objetos:

+ + + +

Antes de ECMAScript 5, no existía una manera nativa para enumerar todas las propiedades de un objeto. Sin embargo, esto se puede lograr con la siguiente función:

+ +
function listAllProperties(o) {
+       var objectToInspect;
+       var result = [];
+
+       for(objectToInspect = o; objectToInspect !== null;
+           objectToInspect = Object.getPrototypeOf(objectToInspect)) {
+        result = result.concat(
+            Object.getOwnPropertyNames(objectToInspect)
+        );
+    }
+
+        return result;
+}
+
+ +

Esto puede ser útil para revelar propiedades "ocultas" (propiedades de la cadena de prototipos a las que no se puede acceder a través del objeto, porque otra propiedad tiene el mismo nombre en la cadena de prototipos). Enumerar las propiedades accesibles solo es posible eliminando los duplicados en el arreglo.

+ +

Creación de nuevos objetos

+ +

JavaScript tiene una colección de objetos predefinidos. Además, puedes crear tus propios objetos. En JavaScript 1.2 y versiones posteriores, puedes crear un objeto usando un iniciador de objeto. Como alternativa, puedes crear primero una función constructora y luego crear una instancia de un objeto invocando esa función con el operador new.

+ +

Uso de iniciadores de objeto

+ +

Además de la creación de objetos utilizando una función constructora, puedes crear objetos utilizando un iniciador de objeto. El uso de iniciadores de objetos a veces se denomina crear objetos con notación literal. "Iniciador de objeto" es consistente con la terminología utilizada por C++.

+ +

La sintaxis para un objeto usando un iniciador de objeto es:

+ +
var obj = { property_1:   value_1,   // property_# puede ser un identificador...
+            2:            value_2,   // o un número...
+            // ...,
+            'property n': value_n }; // o una cadena
+
+ +

donde obj es el nombre del nuevo objeto, cada property_i es un identificador (ya sea un nombre, un número o una cadena literal), y cada value_i es una expresión cuyo valor se asigna a la property_i. El obj y la asignación es opcional; si no necesitas hacer referencia a este objeto desde otro lugar, no necesitas asignarlo a una variable. (Ten en cuenta que tal vez necesites envolver el objeto literal entre paréntesis si el objeto aparece donde se espera una declaración, a fin de no confundir el literal con una declaración de bloque).

+ +

Los iniciadores de objetos son expresiones, y cada iniciador de objeto da como resultado un nuevo objeto donde la instrucción de creación sea ejecutada. Los iniciadores de objetos idénticos crean objetos distintos que no se compararán entre sí como iguales. Los objetos se crean como si se hiciera una llamada a new Object(); es decir, los objetos hechos a partir de expresiones literales de objeto son instancias de Object.

+ +

La siguiente declaración crea un objeto y lo asigna a la variable x si y solo si la expresión cond es true.

+ +
if (cond) var x = {greeting: '¡Hola!'};
+
+ +

El siguiente ejemplo crea myHonda con tres propiedades. Observa que la propiedad engine también es un objeto con sus propias propiedades.

+ +
var myHonda = {color: 'red', wheels: 4, engine: {cylinders: 4, size: 2.2}};
+
+ +

También puedes utilizar iniciadores de objetos para crear arreglos. Consulta arreglos literales.

+ +

Usar una función constructora

+ +

Como alternativa, puedes crear un objeto con estos dos pasos:

+ +
    +
  1. Definir el tipo de objeto escribiendo una función constructora. Existe una fuerte convención, con buena razón, para utilizar en mayúscula la letra inicial.
  2. +
  3. Crear una instancia del objeto con el operador new.
  4. +
+ +

Para definir un tipo de objeto, crea una función para el objeto que especifique su nombre, propiedades y métodos. Por ejemplo, supongamos que deseas crear un tipo de objeto para coches. Quieres llamar Car a este tipo de objeto, y deseas que tenga las siguientes propiedades: make, model y year. Para ello, podrías escribir la siguiente función:

+ +
function Car(make, model, year) {
+  this.make = make;
+  this.model = model;
+  this.year = year;
+}
+
+ +

Observa el uso de this para asignar valores a las propiedades del objeto en función de los valores pasados a la función.

+ +

Ahora puedes crear un objeto llamado myCar de la siguiente manera:

+ +
var mycar = new Car('Eagle', 'Talon TSi', 1993);
+
+ +

Esta declaración crea myCar y le asigna los valores especificados a sus propiedades. Entonces el valor de myCar.make es la cadena "Eagle", para myCar.year es el número entero 1993, y así sucesivamente.

+ +

Puedes crear cualquier número de objetos Car con las llamadas a new. Por ejemplo,

+ +
var kenscar = new Car('Nissan', '300ZX', 1992);
+var vpgscar = new Car('Mazda', 'Miata', 1990);
+
+ +

<s0>Un objeto puede tener una propiedad que en sí misma es otro objeto. Por ejemplo, supongamos que defines un objeto llamado person de la siguiente manera:

+ +
function Person(name, age, sex) {
+  this.name = name;
+  this.age = age;
+  this.sex = sex;
+}
+
+ +

y luego instancias dos nuevos objetos person de la siguiente manera:

+ +
var rand = new Person('Rand McKinnon', 33, 'M');
+var ken = new Person('Ken Jones', 39, 'M');
+
+ +

Entonces, puedes volver a escribir la definición de Car para incluir una propiedad owner que tomará el objeto person, de la siguiente manera:

+ +
function Car(make, model, year, owner) {
+  this.make = make;
+  this.model = model;
+  this.year = year;
+  this.owner = owner;
+}
+
+ +

Para crear instancias de los nuevos objetos, utiliza lo siguiente:

+ +
var car1 = new Car('Eagle', 'Talon TSi', 1993, rand);
+var car2 = new Car('Nissan', '300ZX', 1992, ken);
+
+ +

Nota que en lugar de pasar un valor de cadena o entero cuando se crean los nuevos objetos, las declaraciones anteriores pasan al objetos rand y ken como argumentos para los owners. Si luego quieres averigüar el nombre del propietario del car2, puedes acceder a la propiedad de la siguiente manera:

+ +
car2.owner.name
+
+ +

Ten en cuenta que siempre se puede añadir una propiedad a un objeto previamente definido. Por ejemplo, la declaración

+ +
car1.color = 'black';
+
+ +

agrega la propiedad color a car1, y le asigna el valor "black". Sin embargo, esto no afecta a ningún otro objeto. Para agregar la nueva propiedad a todos los objetos del mismo tipo, tienes que añadir la propiedad a la definición del tipo de objeto Car.

+ +

Usar el método Object.create

+ +

Los objetos también se pueden crear por medio del método {{jsxref("Object.create()")}}. Este método puede ser muy útil, ya que te permite elegir el prototipo del objeto que deseas crear, sin tener que definir una función constructora.

+ +
// Propiedades y método de encapsulación para Animal
+var Animal = {
+  type: 'Invertebrates', // Valor predeterminado de las propiedades
+  displayType: function() {  // Método que mostrará el tipo de Animal
+    console.log(this.type);
+  }
+};
+
+// Crea un nuevo tipo de animal llamado animal1
+var animal1 = Object.create(Animal);
+animal1.displayType(); // Muestra: Invertebrates
+
+// Crea un nuevo tipo de animal llamado Fishes
+var fish = Object.create(Animal);
+fish.type = 'Fishes';
+fish.displayType();    // Muestra: Fishes
+ +

Herencia

+ +

Todos los objetos en JavaScript heredan de al menos otro objeto. El objeto del que se hereda se conoce como el prototipo, y las propiedades heredadas se pueden encontrar en el objeto prototype del constructor. Para más información consulta Herencia y cadena prototipos.

+ +

Propiedades del objeto indexado

+ +

En <s0>JavaScript 1.0</s0>, puedes hacer referencia a una propiedad de un objeto, ya sea por el nombre de la propiedad o por su índice ordinal. Si inicialmente defines una propiedad por su nombre, siempre debes referirte a ella por su nombre, y si inicialmente defines una propiedad por un índice, siempre debes referirte a ella por su índice.

+ +

Esta restricción se aplica cuando creas un objeto y sus propiedades con una función constructora (como hicimos anteriormente con el tipo de objeto Car) y cuando defines propiedades individuales explícitamente (por ejemplo, myCar.color = "red"). Si inicialmente defines una propiedad de objeto con un índice, como myCar[5] = "25 mpg", posteriormente te refiere a la propiedad solo como myCar[5].

+ +

La excepción a esta regla son los objetos HTML, como por ejemplo los objetos contenidos en formularios. Siempre puedes hacer referencia a los objetos en estos objetos en forma de arreglo por su número ordinal (según el lugar en el que aparecen en el documento) o por su nombre (si está definido). Por ejemplo, si la segunda etiqueta <FORM> en un documento tiene un atributo NAME con valor "myForm", puedes hacer referencia al formulario como document.forms[1] o document.forms["myForm"] o document.forms.myForm.

+ +

Definición de las propiedades de un tipo de objeto

+ +

Puedes agregar una propiedad a un tipo de objeto definido previamente mediante el uso de la propiedad prototype. Esto define una propiedad que es compartida por todos los objetos del tipo especificado, en lugar de por una sola instancia del objeto. El siguiente código agrega una propiedad color a todos los objetos del tipo Car, y luego asigna un valor a la propiedad color del objeto car1.

+ +
Car.prototype.color = null;
+car1.color = 'black';
+
+ +

Para más información, consulta la propiedad prototype del objeto Function en la Referencia de JavaScript.

+ +

Definición de métodos

+ +

Un método es una función asociada a un objeto, o, simplemente, un método es una propiedad de un objeto que es una función. Los métodos se definen normalmente como una función, con excepción de que tienen que ser asignados como la propiedad de un objeto. Consulte también definiciones de métodos para obtener más detalles. Un ejemplo puede ser:

+ +
objectName.methodname = functionName;
+
+var myObj = {
+  myMethod: function(params) {
+    // ...hacer algo
+  }
+
+  // O ESTO TAMBIÉN FUNCIONA
+
+  myOtherMethod(params) {
+    // ...hacer algo más
+  }
+};
+
+ +

<s0>donde objectName es un objeto existente, methodname es el nombre que se le va a asignar al método, y functionName es el nombre de la función.

+ +

Entonces puedes llamar al método en el contexto del objeto de la siguiente manera:

+ +
object.methodname(params);
+
+ +

Puedes definir métodos para un tipo de objeto incluyendo una definición del método en la función constructora del objeto. Podrías definir una función que formateé y muestre las propiedades de los objetos del tipo Car previamente definidas; por ejemplo:

+ +
function displayCar() {
+  var result = `Un hermoso ${this.year} ${this.make} ${this.model}`;
+  pretty_print(result);
+}
+
+ +

donde pretty_print es una función para mostrar una línea horizontal y una cadena. Observa el uso de this para referirse al objeto al que pertenece el método.

+ +

Puedes hacer de esta función un método de Car agregando la declaración

+ +
this.displayCar = displayCar;
+
+ +

a la definición del objeto. Por lo tanto, la definición completa de Car ahora se verá así:

+ +
function Car(make, model, year, owner) {
+  this.make = make;
+  this.model = model;
+  this.year = year;
+  this.owner = owner;
+  this.displayCar = displayCar;
+}
+
+ +

Entonces puedes llamar al método displayCar para cada uno de los objetos de la siguiente manera:

+ +
car1.displayCar();
+car2.displayCar();
+
+ +

Usar this para referencias a objetos

+ +

JavaScript tiene una palabra clave especial, this, que puedes usar dentro de un método para referirte al objeto actual. Por ejemplo, supongamos que tienes 2 objetos,Manager e Intern. Cada objeto tiene su propio name,age y job. En la función sayHi(), observa que hay this.name. Cuando se agregan a los 2 objetos, se pueden llamar y devuelve el 'Hola, mi nombre es' y luego agrega el valor name de ese objeto específico. Como se muestra abajo. 

+ +
const Manager = {
+  name: "John",
+  age: 27,
+  job: "Software Engineer"
+}
+
+const Intern= {
+  name: "Ben",
+  age: 21,
+  job: "Software Engineer Intern"
+}
+
+function sayHi() {
+    console.log('Hola, mi nombre es ', this.name)
+}
+
+// agrega la función sayHi a ambos objetos
+Manager.sayHi = sayHi;
+Intern.sayHi = sayHi;
+
+Manager.sayHi() // Hola, mi nombre es John'
+Intern.sayHi() // Hola, mi nombre es Ben'
+
+ +

this se refiere al objeto en el que se encuentra. Puedes crear una nueva función llamada howOldAmI() que registra una oración que dice cuántos años tiene la persona. 

+ +
function howOldAmI() {
+  console.log('Tengo ' + this.age + ' años.')
+}
+Manager.howOldAmI = howOldAmI;
+Manager.howOldAmI() // Tengo 27 años.
+
+ +

Definición de captadores (getters) y establecedores (setters)

+ +

Un captador (getter) es un método que obtiene el valor de una propiedad específica. Un establecedor (setter) es un método que establece el valor de una propiedad específica. Puedes definir captadores y establecedores en cualquier objeto principal predefinido o en un objeto definido por el usuario que admita la adición de nuevas propiedades. 

+ +

En principio, los captadores y establecedores pueden ser

+ + + +

Al definir captadores y establecedores usando iniciadores de objeto, todo lo que necesitas hacer es prefijar un método captador con get y un método establecedor con set. Por supuesto, el método captador no debe esperar un parámetro, mientras que el método establecedor espera exactamente un parámetro (el nuevo valor a establecer). Por ejemplo:

+ +
var o = {
+  a: 7,
+  get b() {
+    return this.a + 1;
+  },
+  set c(x) {
+    this.a = x / 2;
+  }
+};
+
+console.log (o.a); // 7
+console.log (o.b); // 8 <-- En este punto se inicia el método get b().
+o.c = 50;         // <-- En este punto se inicia el método set c(x)
+console.log(o.a); // 25
+
+ +

var o = {

+ + + +

Ten en cuenta que los nombres de función de los captadores y establecedores definidos en un objeto literal usando "[gs]et propiedad()" (en contraposición a __define [GS]etter__) no son los nombres de los captadores en sí, aunque la sintaxis [gs]et propertyName() {} te puede inducir a pensar lo contrario.

+ +

Los captadores y establecedores también se pueden agregar a un objeto en cualquier momento después de la creación usando el método Object.defineProperties. El primer parámetro de este método es el objeto sobre el que se quiere definir el captador o establecedor. El segundo parámetro es un objeto cuyo nombre de propiedad son los nombres getter o setter, y cuyos valores de propiedad son objetos para la definición de las funciones getter o setter. Aquí hay un ejemplo que define el mismo getter y setter utilizado en el ejemplo anterior:

+ +
var o = { a: 0 };
+
+Object.defineProperties(o, {
+    'b': { get: function() { return this.a + 1; } },
+    'c': { set: function(x) { this.a = x / 2; } }
+});
+
+o.c = 10; // Ejecuta el establecedor, que asigna 10/2 (5) a la propiedad 'a'
+console.log(o.b); // Ejecuta el captador, que produce un + 1 o 6
+
+ +

¿Cuál de las dos formas elegir? depende de tu estilo de programación y de la tarea que te ocupa. Si ya utilizas el iniciador de objeto al definir un prototipo probablemente escojas la primer forma la mayoría de las veces. Esta forma es más compacta y natural. Sin embargo, si más tarde necesitas agregar captadores y establecedores — porque no lo escribiste en el objeto prototipo o particular — entonces la segunda forma es la única forma posible. La segunda forma, probablemente representa mejor la naturaleza dinámica de JavaScript — pero puede hacer que el código sea difícil de leer y entender.</s6>

+ +

Eliminar propiedades

+ +

Puedes eliminar una propiedad no heredada mediante el operador delete. El siguiente código muestra cómo eliminar una propiedad.

+ +
//Crea un nuevo objeto, myobj, con dos propiedades, a y b.
+var myobj = new Object;
+myobj.a = 5;
+myobj.b = 12;
+
+// Elimina la propiedad a, dejando a myobj solo con la propiedad b.
+delete myobj.a;
+console.log ('a' in myobj); // muestra: "false"
+
+ +

También puedes utilizar delete para eliminar una variable global siempre y cuando no se haya utilizado la palabra clave var para declarar la variable:

+ +
g = 17;
+delete g;
+
+ +

Comparar objetos

+ +

Como sabemos los objetos son de tipo referencia en JavaScript. Dos distintos objetos nunca son iguales, incluso aunque tengan las mismas propiedades. Solo comparar la misma referencia de objeto consigo misma arroja verdadero.

+ +
// Dos variables, dos distintos objetos con las mismas propiedades
+var fruit = { name: 'apple' };
+var fruitbear = { name: 'apple' };
+
+fruit == fruitbear; // devuelve false
+fruit === fruitbear; // devuelve false
+ +
// Dos variables, un solo objeto
+var fruit = { name: 'apple' };
+var fruitbear = fruit; // Asigna la referencia del objeto fruit a fruitbear
+
+// Aquí fruit y fruitbear apuntan al mismo objeto
+fruit == fruitbear; // devuelve true
+fruit === fruitbear; // devuelve true
+
+fruit.name = 'grape';
+console.log(fruitbear); // Produce: { name: "grape" }, en lugar de { name: "apple" }
+
+ +

Para obtener más información sobre los operadores de comparación, consulta Operadores de comparación.

+ +

Ve también

+ + + +

{{PreviousNext("Web/JavaScript/Guide/Regular_Expressions", "Web/JavaScript/Guide/Details_of_the_Object_Model")}}

diff --git a/files/es/web/javascript/herencia_y_la_cadena_de_protipos/index.html b/files/es/web/javascript/herencia_y_la_cadena_de_protipos/index.html deleted file mode 100644 index f237f7c5fa..0000000000 --- a/files/es/web/javascript/herencia_y_la_cadena_de_protipos/index.html +++ /dev/null @@ -1,410 +0,0 @@ ---- -title: Herencia y la cadena de prototipos -slug: Web/JavaScript/Herencia_y_la_cadena_de_protipos -tags: - - Herencia - - Intermedio - - JavaScript - - Programación orientada a objetos -translation_of: Web/JavaScript/Inheritance_and_the_prototype_chain ---- -
{{jsSidebar("Advanced")}}
- -

JavaScript provoca cierta confusión en desarrolladores con experiencia en lenguajes basados en clases (como Java o C++), por ser dinámico y no proporcionar una implementación de clases en sí mismo (la palabra clave class se introdujo en ES2015, pero sólo para endulzar la sintaxis, ya que JavaScript sigue estando basado en prototipos).

- -

En lo que a herencia se refiere, JavaScript sólo tiene una estructura: objetos. Cada objeto tiene una propiedad privada (referida como su [[Prototype]]) que mantiene un enlace a otro objeto llamado su prototipo. Ese objeto prototipo tiene su propio prototipo, y así sucesivamente hasta que se alcanza un objeto cuyo prototipo es null. Por definición, null no tiene prototipo, y actúa como el enlace final de esta cadena de prototipos.

- -

Casi todos los objetos en JavaScript son instancias de {{jsxref("Object")}} que se sitúa a la cabeza de la cadena de prototipos.

- -

A pesar de que a menudo esto se considera como una de las principales debilidades de JavaScript, el modelo de herencia de prototipos es de hecho más potente que el modelo clásico. Por ejemplo, es bastante simple construir un modelo clásico a partir de un modelo de prototipos.

- -

Herencia con la cadena de prototipos

- -

Heredando propiedades

- -

Los objetos en JavaScript son "contenedores" dinámicos de propiedades (referidas como sus propiedades particulares).  Los objetos en JavaScript poseen un enlace a un objeto prototipo. Cuando intentamos acceder a una propiedad de un objeto, la propiedad no sólo se busca en el propio objeto sino también en el prototipo del objeto, en el prototipo del prototipo, y así sucesivamente hasta que se encuentre una propiedad que coincida con el nombre o se alcance el final de la cadena de prototipos.

- -
-

Siguiendo el estándar ECMAScript, la notación algunObjeto.[[Prototype]] se usa para designar el prototipo de algunObjeto. A partir de ECMAScript 2015, se accede al [[Prototype]] utilizando los accesores  {{jsxref("Object.getPrototypeOf()")}} y {{jsxref("Object.setPrototypeOf()")}}. Esto es equivalente a la propiedad JavaScript __proto__ que no es estándar pero es el de-facto implementado por los navegadores.

- -

No debe confundirse con la propiedad de las funciones func.prototype, que en cambio especifican el [[Prototype]] a asignar a todas las instancias de los objetos creados por la función dada cuando se utiliza como un constructor. La propiedad Object.prototype representa el prototipo del objeto {{jsxref("Object")}}.

-
- -

Esto es lo que ocurre cuando intentamos acceder a una propiedad:

- -
// Supongamos que tenemos un objeto o, con propiedades a y b:
-// {a: 1, b: 2}
-// o.[[Prototype]] tiene propiedades b y c:
-// {b: 3, c: 4}
-// Finalmente, o.[[Prototype]].[[Prototype]] es null.
-// Este es el final de la cadena de prototipos, ya que null,
-// por definición, no tiene [[Prototype]].
-// Por tanto, la cadena completa de prototipos se vería como:
-// {a:1, b:2} ---> {b:3, c:4} ---> null
-
-console.log(o.a); // 1
-// ¿Hay una propiedad 'a' en o? Sí, y su valor es 1.
-
-console.log(o.b); // 2
-// ¿Hay una propiedad 'b' en o? Sí, y su valor es 2.
-// El prototipo también tiene una propiedad 'b', pero no se ha visitado.
-// Esto se llama "solapamiento de propiedades"
-
-console.log(o.c); // 4
-// ¿Hay una propiedad 'c' en o? No, comprobamos su prototipo.
-// ¿Hay una propiedad 'c' en o.[[Prototype]]? Sí, y su valor es 4.
-
-console.log(o.d); // undefined
-// ¿Hay una propiedad 'd' en o? No, comprobamos su prototipo.
-//  ¿Hay una propiedad 'd' en o.[[Prototype]]? No, comprobamos su prototipo.
-// o.[[Prototype]].[[Prototype]] es null, paramos de buscar.
-// No se encontró la propiedad, se devuelve undefined
-
- -

Dar valor a una propiedad de un objeto crea una propiedad. La única excepción a las reglas de funcionamiento de obtener y dar valores ocurre cuando hay una propiedad heredada con un getter o un setter.

- -

Heredando "métodos"

- -

JavaScript no tiene "métodos" en la forma que los lenguajes basados en clases los define. En JavaScript, cualquier función puede añadirse a un objeto como una propiedad. Una función heredada se comporta como cualquier otra propiedad, viéndose afectada por el solapamiento de propiedades como se muestra anteriormente (siendo, en este caso, una especie de redefinición de métodos).

- -

Cuando una función heredada se ejecuta, el valor de this apunta al objeto que hereda, no al prototipo en el que la función es una propiedad.

- -
var o = {
-  a: 2,
-  m: function(b){
-    return this.a + 1;
-  }
-};
-
-console.log(o.m()); // 3
-// Cuando en este caso se llama a o.m, 'this' se refiere a o
-
-var p = Object.create(o);
-// p es un objeto que hereda de o
-
-p.a = 12; // crea una propiedad 'a' en p
-console.log(p.m()); // 13
-// cuando se llama a p.m, 'this' se refiere a p.
-// De esta manera, cuando p hereda la función m de o,
-// 'this.a' significa p.a, la propiedad 'a' de p
-
- -

Usando prototipos en JavaScript

- -

Veamos lo que sucede detrás de escena detalladamente.

- -

En JavaScript, como se mencionó anteriormente, las funciones pueden tener propiedades. Todas las funciones tienen una propiedad especial llamada prototype. Por favor ten en cuenta que el siguiente código es autónomo (es seguro asumir que no hay otro JavaScript en la página web mas que el siguiente). Para la mejor experiencia de aprendizaje, es altamente recomendable que abras una consola (la cual, en Chrome y Firefox, se puede abrir presionando Ctrl+Shift+I), navegando hasta la pestaña "console", copiando y pegando el siguiente código JavaScript, y ejecutándolo presionando la tecla Enter/Return.

- -
function hacerAlgo(){}
-console.log( hacerAlgo.prototype );
-// No importa cómo declares la función, una
-// función en JavaScript siempre tendrá una
-// propiedad prototype predeterminada.
-var hacerAlgo = function(){};
-console.log( hacerAlgo.prototype );
- -

Como acabamos de ver, hacerAlgo() tiene una propiedad prototype predeterminada, como lo demuestra la consola. Después de ejecutar este código, la consola debería haber mostrado un parecido a esto.

- -
{
-    constructor: ƒ hacerAlgo(),
-    __proto__: {
-        constructor: ƒ Object(),
-        hasOwnProperty: ƒ hasOwnProperty(),
-        isPrototypeOf: ƒ isPrototypeOf(),
-        propertyIsEnumerable: ƒ propertyIsEnumerable(),
-        toLocaleString: ƒ toLocaleString(),
-        toString: ƒ toString(),
-        valueOf: ƒ valueOf()
-    }
-}
- -

Podemos añadir propiedades al prototipo de hacerAlgo(), como se muestra a continuación.

- -
function hacerAlgo(){}
-hacerAlgo.prototype.foo = "bar";
-console.log( hacerAlgo.prototype );
- -

El resultado:

- -
{
-    foo: "bar",
-    constructor: ƒ hacerAlgo(),
-    __proto__: {
-        constructor: ƒ Object(),
-        hasOwnProperty: ƒ hasOwnProperty(),
-        isPrototypeOf: ƒ isPrototypeOf(),
-        propertyIsEnumerable: ƒ propertyIsEnumerable(),
-        toLocaleString: ƒ toLocaleString(),
-        toString: ƒ toString(),
-        valueOf: ƒ valueOf()
-    }
-}
- -

Ahora podemos usar el operador new para crear una instancia de hacerAlgo() basado en este prototipo. Para usar el operador new, llama la función normalmente pero añadiendo el prefijo new. Llamar a la función con el operador new devuelve un objeto que es una instancia de la función. Entonces las propiedades pueden ser añadidas a este objeto.

- -

Intenta el siguiente código:

- -
function hacerAlgo(){}
-hacerAlgo.prototype.foo = "bar"; // añadir una propiedad al prototipo
-var hacerUnaInstancia = new hacerAlgo();
-hacerUnaInstancia.prop = "un valor"; // añadir una propiedad al objeto
-console.log( hacerUnaInstancia );
- -

El resultado es similar a lo siguiente:

- -
{
-    prop: "un valor",
-    __proto__: {
-        foo: "bar",
-        constructor: ƒ hacerAlgo(),
-        __proto__: {
-            constructor: ƒ Object(),
-            hasOwnProperty: ƒ hasOwnProperty(),
-            isPrototypeOf: ƒ isPrototypeOf(),
-            propertyIsEnumerable: ƒ propertyIsEnumerable(),
-            toLocaleString: ƒ toLocaleString(),
-            toString: ƒ toString(),
-            valueOf: ƒ valueOf()
-        }
-    }
-}
- -

Como acabamos de ver, el __proto__ de hacerUnaInstancia es hacerAlgo.prototype. Pero, ¿qué hace esto? Cuando accedes a la propiedad de hacerUnaInstancia, el navegador primero revisa si hacerUnaInstancia tiene esa propiedad.

- -

Si hacerUnaInstancia no tiene la propiedad, entonces el navegador busca por la propiedad en el __proto__ de hacerUnaInstancia (también conocido como hacerAlgo.prototype). Si el __proto__ de hacerUnaInstancia tiene la propiedad buscada, entonces la propiedad en el __proto__ de hacerUnaInstancia es usada.

- -

De otra manera, si el __proto__ de hacerUnaInstancia no tiene la propiedad, entonces el __proto__ de __proto__ de hacerUnaInstancia es revisado para la propiedad. Por defecto, el __proto__ de la propieda prototype de cualquier función es  window.Object.prototype. Entonces, el __proto__ de el __proto__ de hacerUnaInstancia (conocido como el __proto__ de hacerAlgo.prototype (conocido como Object.prototype)) es entonces revisado por la propiedad que se está buscando.

- -

Si la propiedad no es encontrada en el __proto__ de el __proto__ de hacerUnaInstancia, entonces el __proto__ de el __proto__ de el __proto__ de hacerUnaInstancia es revisado. Sin embargo, hay un problema: el __proto__ de el __proto__ de el __proto__ de el __proto__ de hacerUnaInstancia no existe. Entonces y sólo entonces, despues de que toda la cadena de prototipos de __proto__'s es revisada, y no haya mas __proto__s el navegador afirma que la propiedad no existe y concluye que el valor de la propiedad es undefined.

- -

Vamos a intentar introduciendo más código en la consola:

- -
function hacerAlgo(){}
-hacerAlgo.prototype.foo = "bar";
-var hacerUnaInstancia = new hacerAlgo();
-hacerUnaInstancia.prop = "un valor";
-console.log("hacerUnaInstancia.prop:      " + hacerUnaInstancia.prop);
-console.log("hacerUnaInstancia.foo:       " + hacerUnaInstancia.foo);
-console.log("hacerAlgo.prop:           " + hacerAlgo.prop);
-console.log("hacerAlgo.foo:            " + hacerAlgo.foo);
-console.log("hacerAlgo.prototype.prop: " + hacerAlgo.prototype.prop);
-console.log("hacerAlgo.prototype.foo:  " + hacerAlgo.prototype.foo);
- -

El resultado es el siguiente:

- -
hacerUnaInstancia.prop:      un valor
-hacerUnaInstancia.foo:       bar
-hacerAlgo.prop:              undefined
-hacerAlgo.foo:               undefined
-hacerAlgo.prototype.prop:    undefined
-hacerAlgo.prototype.foo:     bar
- -

Maneras diferentes de crear objetos y la cadena de prototipos resultante

- -

Objetos creados mediante estructuras sintácticas

- -
var o = {a: 1};
-
-// El objeto recién creado o tiene Object.prototype como su [[Prototype]]
-// o no tiene ninguna propiedad llamada 'hasOwnProperty'
-// hasOwnProperty es una propiedad propia de Object.prototype.
-// Entonces o hereda hasOwnProperty de Object.prototype
-// Object.prototype es null como su prototype.
-// o ---> Object.prototype ---> null
-
-var a = ["yo", "whadup", "?"];
-
-// Arrays hereda de Array.prototype
-// (que tiene métodos como indexOf, forEach, etc.)
-// La cadena de prototipados sería:
-// a ---> Array.prototype ---> Object.prototype ---> null
-
-function f(){
-  return 2;
-}
-
-// Las funciones heredan de Function.prototype
-// (que tiene métodos como call, bind, etc.)
-// f ---> Function.prototype ---> Object.prototype ---> null
-
- -

Con un constructor

- -

Un "constructor" en JavaScript es "solo" una función que pasa a ser llamada con el operador new.

- -
function Graph() {
-  this.vertices = [];
-  this.edges = [];
-}
-
-Graph.prototype = {
-  addVertex: function(v){
-    this.vertices.push(v);
-  }
-};
-
-var g = new Graph();
-// g es un objeto con las propiedades 'vértices' y 'edges'.
-// g.[[Prototype]] es el valor de Graph.prototype cuando new Graph() es ejecutado.
-
- -

Con Object.create

- -

ECMAScript 5 Introdujo un nuevo método: {{jsxref("Object.create()")}}. Llamando este método creas un nuevo objeto. El prototype de este objeto es el primer argumento de la función:

- -
var a = {a: 1};
-// a ---> Object.prototype ---> null
-
-var b = Object.create(a);
-// b ---> a ---> Object.prototype ---> null
-console.log(b.a); // 1 (heredado)
-
-var c = Object.create(b);
-// c ---> b ---> a ---> Object.prototype ---> null
-
-var d = Object.create(null);
-// d ---> null
-console.log(d.hasOwnProperty);
-// undefined, por que d no hereda de Object.prototype
-
- -
-

Con la palabra reservada class

- -

ECMAScript 2015 introduce un nuevo set de palabras reservadas que implementan clases. Aunque estos constructores lucen más familiares para los desarrolladores de lenguajes basados en clases, aun así no son clases. JavaScript sigue estando basado en prototipos. Los nuevos keywords incluyen {{jsxref("Statements/class", "class")}}, {{jsxref("Classes/constructor", "constructor")}}, {{jsxref("Classes/static", "static")}}, {{jsxref("Classes/extends", "extends")}}, and {{jsxref("Operators/super", "super")}}.

- -
"use strict";
-
-class Polygon {
-  constructor(height, width) {
-    this.height = height;
-    this.width = width;
-  }
-}
-
-class Square extends Polygon {
-  constructor(sideLength) {
-    super(sideLength, sideLength);
-  }
-  get area() {
-    return this.height * this.width;
-  }
-  set sideLength(newLength) {
-    this.height = newLength;
-    this.width = newLength;
-  }
-}
-
-var square = new Square(2);
-
- -

Rendimiento

- -

El tiempo de búsqueda para las propiedades que están en lo alto de la cadena de prototipo puede tener un impacto negativo en el rendimiento, y esto puede ser significativo en el código donde el rendimiento es crítico. Además, tratar de acceder a las propiedades inexistentes siempre atravesara la cadena de prototipos completamente.

- -

También, cuando iteramos sobre las propiedades de un objeto, cada propiedad enumerable que se encuentra en la cadena de prototipo será enumerada.

- -

Para comprobar si un objeto tiene una propiedad definida en sí mismo y no en alguna parte de su cadena de prototipo, Es necesario usar para esto el método  hasOwnProperty que todos los objetos heredan de Object.prototype.

- -

hasOwnProperty es la única cosa en JavaScript que se ocupa de las propiedades y no atraviesa la cadena de prototipos.

- -

Nota: Esto no es suficiente para chequear si una propiedad esta undefined. la propiedad podría existir, pero el valor justamente sucede que esta seteado como undefined.

-
- -

Malas practicas: Extensión de prototipos nativos

- -

Una mala característica que a menudo se usa, es extender Object.prototype o uno de los otros pre-incorporados prototypes.

- -

Esta técnica se llama monkey patching y rompe la encapsulación. Si bien, es utilizado por librerías como Prototype.js, no hay una buena razón para saturar los tipos pre-incorporados con funcionalidades adicionales no estándar.

- -

La única buena razón para extender los pre-incorporados prototipos es modificar las funcionalidades nuevas de los motores de JavaScript; por ejemplo:

- -

Array.forEach, etc.

- -

Ejemplo

- -

B heredará de A:

- -
function A(a){
-  this.varA = a;
-}
-
-// Cual es el propósito de incluir varA en el prototipo si A.prototype.varA siempre va a ser la sombra de
-// this.varA, dada la definición de la función A arriba?
-A.prototype = {
-  varA : null,  // No deberíamos atacar varA desde el prototipo como haciendo nada?
-      // Tal vez intentando una optimización al asignar espacios ocultos en las clases?
-      // https://developers.google.com/speed/articles/optimizing-javascript#Initializing instanciar variables
-      // podría ser válido si varA no fuera inicializado únicamente por cada instancia.
-  doSomething : function(){
-    // ...
-  }
-}
-
-function B(a, b){
-  A.call(this, a);
-  this.varB = b;
-}
-B.prototype = Object.create(A.prototype, {
-  varB : {
-    value: null,
-    enumerable: true,
-    configurable: true,
-    writable: true
-  },
-  doSomething : {
-    value: function(){ // override
-      A.prototype.doSomething.apply(this, arguments); // call super
-      // ...
-    },
-    enumerable: true,
-    configurable: true,
-    writable: true
-  }
-});
-B.prototype.constructor = B;
-
-var b = new B();
-b.doSomething();
-
- -

Las partes importantes son:

- - - -

prototype y Object.getPrototypeOf

- -

JavaScript es un poco confuso para desarrolladores que vienen de lenguajes como Java o C++, ya que todo es dinámico, en todo momento de la ejecución, y no tiene clases en lo absoluto. Todo es solamente instancias (objetos). Incluso las "clases" que creamos, son solo funciones (objetos).

- -

Probablemente notaste que nuestra función A tiene una propiedad especial llamada prototype. Esta propiedad especial funciona con el operador de JavaScript new. La referencia al prototipo objeto es copiada al interno [[Prototype]] propiedad de la instancia new. Por ejemplo, cuando creas una variable var a1 = new A(), JavaScript (después de haber creado el objeto en memoria y antes de correr function A() con this definido a él) setea a1.[[Prototype]] = A.prototype. Cuando a continuación accedes a las propiedades de la instancia, JavaScript primero chequea si existen en el objeto directamente, y si no, mira en el [[Prototype]]. Esto significa que todo lo que definas en el prototipo es efectivamente compartido a todas las instancias, e incluso después puedes cambiar partes del prototipo y que todos los cambios se hagan en todas las instancias.

- -

Si, en el ejemplo de arriba, pones var a1 = new A(); var a2 = new A(); entonces a1.doSomething se referiría a Object.getPrototypeOf(a1).doSomething, que seria lo mismo que A.prototype.doSomething que definiste, i.e. Object.getPrototypeOf(a1).doSomething == Object.getPrototypeOf(a2).doSomething == A.prototype.doSomething.

- -

resumiendo, prototype es para tipos, mientras que Object.getPrototypeOf() es lo mismo para instancias.

- -

[[Prototype]] es visto como recursivo, i.e. a1.doSomething, Object.getPrototypeOf(a1).doSomething, Object.getPrototypeOf(Object.getPrototypeOf(a1)).doSomething etc., hasta que se encuentra o Object.getPrototypeOf retornará null.

- -

Entonces, cuando llamas

- -
var o = new Foo();
- -

JavaScript en realidad hace

- -
var o = new Object();
-o.[[Prototype]] = Foo.prototype;
-Foo.call(o);
- -

(o algo similar) y cuando después haces

- -
o.someProp;
- -

chequea si o tiene una propiedad someProp. Si no, busca en Object.getPrototypeOf(o).someProp y si ahí no existe, busca en Object.getPrototypeOf(Object.getPrototypeOf(o)).someProp y así sucesivamente.

- -
-

En conclusión

- -

Es esencial entender el modelo de prototipado por instancias antes de escribir código complejo que hace uso de esto. También, sé consciente del largo de la cadena de prototipado en tu código y romperlo si es necesario para evitar posibles problemas de rendimiento. Adicionalmente, el prototipo nativo nunca debería ser extendido a menos que esto sea por motivo de compatibilidad con nuevas versiones de JavaScript.

-
diff --git a/files/es/web/javascript/inheritance_and_the_prototype_chain/index.html b/files/es/web/javascript/inheritance_and_the_prototype_chain/index.html new file mode 100644 index 0000000000..f237f7c5fa --- /dev/null +++ b/files/es/web/javascript/inheritance_and_the_prototype_chain/index.html @@ -0,0 +1,410 @@ +--- +title: Herencia y la cadena de prototipos +slug: Web/JavaScript/Herencia_y_la_cadena_de_protipos +tags: + - Herencia + - Intermedio + - JavaScript + - Programación orientada a objetos +translation_of: Web/JavaScript/Inheritance_and_the_prototype_chain +--- +
{{jsSidebar("Advanced")}}
+ +

JavaScript provoca cierta confusión en desarrolladores con experiencia en lenguajes basados en clases (como Java o C++), por ser dinámico y no proporcionar una implementación de clases en sí mismo (la palabra clave class se introdujo en ES2015, pero sólo para endulzar la sintaxis, ya que JavaScript sigue estando basado en prototipos).

+ +

En lo que a herencia se refiere, JavaScript sólo tiene una estructura: objetos. Cada objeto tiene una propiedad privada (referida como su [[Prototype]]) que mantiene un enlace a otro objeto llamado su prototipo. Ese objeto prototipo tiene su propio prototipo, y así sucesivamente hasta que se alcanza un objeto cuyo prototipo es null. Por definición, null no tiene prototipo, y actúa como el enlace final de esta cadena de prototipos.

+ +

Casi todos los objetos en JavaScript son instancias de {{jsxref("Object")}} que se sitúa a la cabeza de la cadena de prototipos.

+ +

A pesar de que a menudo esto se considera como una de las principales debilidades de JavaScript, el modelo de herencia de prototipos es de hecho más potente que el modelo clásico. Por ejemplo, es bastante simple construir un modelo clásico a partir de un modelo de prototipos.

+ +

Herencia con la cadena de prototipos

+ +

Heredando propiedades

+ +

Los objetos en JavaScript son "contenedores" dinámicos de propiedades (referidas como sus propiedades particulares).  Los objetos en JavaScript poseen un enlace a un objeto prototipo. Cuando intentamos acceder a una propiedad de un objeto, la propiedad no sólo se busca en el propio objeto sino también en el prototipo del objeto, en el prototipo del prototipo, y así sucesivamente hasta que se encuentre una propiedad que coincida con el nombre o se alcance el final de la cadena de prototipos.

+ +
+

Siguiendo el estándar ECMAScript, la notación algunObjeto.[[Prototype]] se usa para designar el prototipo de algunObjeto. A partir de ECMAScript 2015, se accede al [[Prototype]] utilizando los accesores  {{jsxref("Object.getPrototypeOf()")}} y {{jsxref("Object.setPrototypeOf()")}}. Esto es equivalente a la propiedad JavaScript __proto__ que no es estándar pero es el de-facto implementado por los navegadores.

+ +

No debe confundirse con la propiedad de las funciones func.prototype, que en cambio especifican el [[Prototype]] a asignar a todas las instancias de los objetos creados por la función dada cuando se utiliza como un constructor. La propiedad Object.prototype representa el prototipo del objeto {{jsxref("Object")}}.

+
+ +

Esto es lo que ocurre cuando intentamos acceder a una propiedad:

+ +
// Supongamos que tenemos un objeto o, con propiedades a y b:
+// {a: 1, b: 2}
+// o.[[Prototype]] tiene propiedades b y c:
+// {b: 3, c: 4}
+// Finalmente, o.[[Prototype]].[[Prototype]] es null.
+// Este es el final de la cadena de prototipos, ya que null,
+// por definición, no tiene [[Prototype]].
+// Por tanto, la cadena completa de prototipos se vería como:
+// {a:1, b:2} ---> {b:3, c:4} ---> null
+
+console.log(o.a); // 1
+// ¿Hay una propiedad 'a' en o? Sí, y su valor es 1.
+
+console.log(o.b); // 2
+// ¿Hay una propiedad 'b' en o? Sí, y su valor es 2.
+// El prototipo también tiene una propiedad 'b', pero no se ha visitado.
+// Esto se llama "solapamiento de propiedades"
+
+console.log(o.c); // 4
+// ¿Hay una propiedad 'c' en o? No, comprobamos su prototipo.
+// ¿Hay una propiedad 'c' en o.[[Prototype]]? Sí, y su valor es 4.
+
+console.log(o.d); // undefined
+// ¿Hay una propiedad 'd' en o? No, comprobamos su prototipo.
+//  ¿Hay una propiedad 'd' en o.[[Prototype]]? No, comprobamos su prototipo.
+// o.[[Prototype]].[[Prototype]] es null, paramos de buscar.
+// No se encontró la propiedad, se devuelve undefined
+
+ +

Dar valor a una propiedad de un objeto crea una propiedad. La única excepción a las reglas de funcionamiento de obtener y dar valores ocurre cuando hay una propiedad heredada con un getter o un setter.

+ +

Heredando "métodos"

+ +

JavaScript no tiene "métodos" en la forma que los lenguajes basados en clases los define. En JavaScript, cualquier función puede añadirse a un objeto como una propiedad. Una función heredada se comporta como cualquier otra propiedad, viéndose afectada por el solapamiento de propiedades como se muestra anteriormente (siendo, en este caso, una especie de redefinición de métodos).

+ +

Cuando una función heredada se ejecuta, el valor de this apunta al objeto que hereda, no al prototipo en el que la función es una propiedad.

+ +
var o = {
+  a: 2,
+  m: function(b){
+    return this.a + 1;
+  }
+};
+
+console.log(o.m()); // 3
+// Cuando en este caso se llama a o.m, 'this' se refiere a o
+
+var p = Object.create(o);
+// p es un objeto que hereda de o
+
+p.a = 12; // crea una propiedad 'a' en p
+console.log(p.m()); // 13
+// cuando se llama a p.m, 'this' se refiere a p.
+// De esta manera, cuando p hereda la función m de o,
+// 'this.a' significa p.a, la propiedad 'a' de p
+
+ +

Usando prototipos en JavaScript

+ +

Veamos lo que sucede detrás de escena detalladamente.

+ +

En JavaScript, como se mencionó anteriormente, las funciones pueden tener propiedades. Todas las funciones tienen una propiedad especial llamada prototype. Por favor ten en cuenta que el siguiente código es autónomo (es seguro asumir que no hay otro JavaScript en la página web mas que el siguiente). Para la mejor experiencia de aprendizaje, es altamente recomendable que abras una consola (la cual, en Chrome y Firefox, se puede abrir presionando Ctrl+Shift+I), navegando hasta la pestaña "console", copiando y pegando el siguiente código JavaScript, y ejecutándolo presionando la tecla Enter/Return.

+ +
function hacerAlgo(){}
+console.log( hacerAlgo.prototype );
+// No importa cómo declares la función, una
+// función en JavaScript siempre tendrá una
+// propiedad prototype predeterminada.
+var hacerAlgo = function(){};
+console.log( hacerAlgo.prototype );
+ +

Como acabamos de ver, hacerAlgo() tiene una propiedad prototype predeterminada, como lo demuestra la consola. Después de ejecutar este código, la consola debería haber mostrado un parecido a esto.

+ +
{
+    constructor: ƒ hacerAlgo(),
+    __proto__: {
+        constructor: ƒ Object(),
+        hasOwnProperty: ƒ hasOwnProperty(),
+        isPrototypeOf: ƒ isPrototypeOf(),
+        propertyIsEnumerable: ƒ propertyIsEnumerable(),
+        toLocaleString: ƒ toLocaleString(),
+        toString: ƒ toString(),
+        valueOf: ƒ valueOf()
+    }
+}
+ +

Podemos añadir propiedades al prototipo de hacerAlgo(), como se muestra a continuación.

+ +
function hacerAlgo(){}
+hacerAlgo.prototype.foo = "bar";
+console.log( hacerAlgo.prototype );
+ +

El resultado:

+ +
{
+    foo: "bar",
+    constructor: ƒ hacerAlgo(),
+    __proto__: {
+        constructor: ƒ Object(),
+        hasOwnProperty: ƒ hasOwnProperty(),
+        isPrototypeOf: ƒ isPrototypeOf(),
+        propertyIsEnumerable: ƒ propertyIsEnumerable(),
+        toLocaleString: ƒ toLocaleString(),
+        toString: ƒ toString(),
+        valueOf: ƒ valueOf()
+    }
+}
+ +

Ahora podemos usar el operador new para crear una instancia de hacerAlgo() basado en este prototipo. Para usar el operador new, llama la función normalmente pero añadiendo el prefijo new. Llamar a la función con el operador new devuelve un objeto que es una instancia de la función. Entonces las propiedades pueden ser añadidas a este objeto.

+ +

Intenta el siguiente código:

+ +
function hacerAlgo(){}
+hacerAlgo.prototype.foo = "bar"; // añadir una propiedad al prototipo
+var hacerUnaInstancia = new hacerAlgo();
+hacerUnaInstancia.prop = "un valor"; // añadir una propiedad al objeto
+console.log( hacerUnaInstancia );
+ +

El resultado es similar a lo siguiente:

+ +
{
+    prop: "un valor",
+    __proto__: {
+        foo: "bar",
+        constructor: ƒ hacerAlgo(),
+        __proto__: {
+            constructor: ƒ Object(),
+            hasOwnProperty: ƒ hasOwnProperty(),
+            isPrototypeOf: ƒ isPrototypeOf(),
+            propertyIsEnumerable: ƒ propertyIsEnumerable(),
+            toLocaleString: ƒ toLocaleString(),
+            toString: ƒ toString(),
+            valueOf: ƒ valueOf()
+        }
+    }
+}
+ +

Como acabamos de ver, el __proto__ de hacerUnaInstancia es hacerAlgo.prototype. Pero, ¿qué hace esto? Cuando accedes a la propiedad de hacerUnaInstancia, el navegador primero revisa si hacerUnaInstancia tiene esa propiedad.

+ +

Si hacerUnaInstancia no tiene la propiedad, entonces el navegador busca por la propiedad en el __proto__ de hacerUnaInstancia (también conocido como hacerAlgo.prototype). Si el __proto__ de hacerUnaInstancia tiene la propiedad buscada, entonces la propiedad en el __proto__ de hacerUnaInstancia es usada.

+ +

De otra manera, si el __proto__ de hacerUnaInstancia no tiene la propiedad, entonces el __proto__ de __proto__ de hacerUnaInstancia es revisado para la propiedad. Por defecto, el __proto__ de la propieda prototype de cualquier función es  window.Object.prototype. Entonces, el __proto__ de el __proto__ de hacerUnaInstancia (conocido como el __proto__ de hacerAlgo.prototype (conocido como Object.prototype)) es entonces revisado por la propiedad que se está buscando.

+ +

Si la propiedad no es encontrada en el __proto__ de el __proto__ de hacerUnaInstancia, entonces el __proto__ de el __proto__ de el __proto__ de hacerUnaInstancia es revisado. Sin embargo, hay un problema: el __proto__ de el __proto__ de el __proto__ de el __proto__ de hacerUnaInstancia no existe. Entonces y sólo entonces, despues de que toda la cadena de prototipos de __proto__'s es revisada, y no haya mas __proto__s el navegador afirma que la propiedad no existe y concluye que el valor de la propiedad es undefined.

+ +

Vamos a intentar introduciendo más código en la consola:

+ +
function hacerAlgo(){}
+hacerAlgo.prototype.foo = "bar";
+var hacerUnaInstancia = new hacerAlgo();
+hacerUnaInstancia.prop = "un valor";
+console.log("hacerUnaInstancia.prop:      " + hacerUnaInstancia.prop);
+console.log("hacerUnaInstancia.foo:       " + hacerUnaInstancia.foo);
+console.log("hacerAlgo.prop:           " + hacerAlgo.prop);
+console.log("hacerAlgo.foo:            " + hacerAlgo.foo);
+console.log("hacerAlgo.prototype.prop: " + hacerAlgo.prototype.prop);
+console.log("hacerAlgo.prototype.foo:  " + hacerAlgo.prototype.foo);
+ +

El resultado es el siguiente:

+ +
hacerUnaInstancia.prop:      un valor
+hacerUnaInstancia.foo:       bar
+hacerAlgo.prop:              undefined
+hacerAlgo.foo:               undefined
+hacerAlgo.prototype.prop:    undefined
+hacerAlgo.prototype.foo:     bar
+ +

Maneras diferentes de crear objetos y la cadena de prototipos resultante

+ +

Objetos creados mediante estructuras sintácticas

+ +
var o = {a: 1};
+
+// El objeto recién creado o tiene Object.prototype como su [[Prototype]]
+// o no tiene ninguna propiedad llamada 'hasOwnProperty'
+// hasOwnProperty es una propiedad propia de Object.prototype.
+// Entonces o hereda hasOwnProperty de Object.prototype
+// Object.prototype es null como su prototype.
+// o ---> Object.prototype ---> null
+
+var a = ["yo", "whadup", "?"];
+
+// Arrays hereda de Array.prototype
+// (que tiene métodos como indexOf, forEach, etc.)
+// La cadena de prototipados sería:
+// a ---> Array.prototype ---> Object.prototype ---> null
+
+function f(){
+  return 2;
+}
+
+// Las funciones heredan de Function.prototype
+// (que tiene métodos como call, bind, etc.)
+// f ---> Function.prototype ---> Object.prototype ---> null
+
+ +

Con un constructor

+ +

Un "constructor" en JavaScript es "solo" una función que pasa a ser llamada con el operador new.

+ +
function Graph() {
+  this.vertices = [];
+  this.edges = [];
+}
+
+Graph.prototype = {
+  addVertex: function(v){
+    this.vertices.push(v);
+  }
+};
+
+var g = new Graph();
+// g es un objeto con las propiedades 'vértices' y 'edges'.
+// g.[[Prototype]] es el valor de Graph.prototype cuando new Graph() es ejecutado.
+
+ +

Con Object.create

+ +

ECMAScript 5 Introdujo un nuevo método: {{jsxref("Object.create()")}}. Llamando este método creas un nuevo objeto. El prototype de este objeto es el primer argumento de la función:

+ +
var a = {a: 1};
+// a ---> Object.prototype ---> null
+
+var b = Object.create(a);
+// b ---> a ---> Object.prototype ---> null
+console.log(b.a); // 1 (heredado)
+
+var c = Object.create(b);
+// c ---> b ---> a ---> Object.prototype ---> null
+
+var d = Object.create(null);
+// d ---> null
+console.log(d.hasOwnProperty);
+// undefined, por que d no hereda de Object.prototype
+
+ +
+

Con la palabra reservada class

+ +

ECMAScript 2015 introduce un nuevo set de palabras reservadas que implementan clases. Aunque estos constructores lucen más familiares para los desarrolladores de lenguajes basados en clases, aun así no son clases. JavaScript sigue estando basado en prototipos. Los nuevos keywords incluyen {{jsxref("Statements/class", "class")}}, {{jsxref("Classes/constructor", "constructor")}}, {{jsxref("Classes/static", "static")}}, {{jsxref("Classes/extends", "extends")}}, and {{jsxref("Operators/super", "super")}}.

+ +
"use strict";
+
+class Polygon {
+  constructor(height, width) {
+    this.height = height;
+    this.width = width;
+  }
+}
+
+class Square extends Polygon {
+  constructor(sideLength) {
+    super(sideLength, sideLength);
+  }
+  get area() {
+    return this.height * this.width;
+  }
+  set sideLength(newLength) {
+    this.height = newLength;
+    this.width = newLength;
+  }
+}
+
+var square = new Square(2);
+
+ +

Rendimiento

+ +

El tiempo de búsqueda para las propiedades que están en lo alto de la cadena de prototipo puede tener un impacto negativo en el rendimiento, y esto puede ser significativo en el código donde el rendimiento es crítico. Además, tratar de acceder a las propiedades inexistentes siempre atravesara la cadena de prototipos completamente.

+ +

También, cuando iteramos sobre las propiedades de un objeto, cada propiedad enumerable que se encuentra en la cadena de prototipo será enumerada.

+ +

Para comprobar si un objeto tiene una propiedad definida en sí mismo y no en alguna parte de su cadena de prototipo, Es necesario usar para esto el método  hasOwnProperty que todos los objetos heredan de Object.prototype.

+ +

hasOwnProperty es la única cosa en JavaScript que se ocupa de las propiedades y no atraviesa la cadena de prototipos.

+ +

Nota: Esto no es suficiente para chequear si una propiedad esta undefined. la propiedad podría existir, pero el valor justamente sucede que esta seteado como undefined.

+
+ +

Malas practicas: Extensión de prototipos nativos

+ +

Una mala característica que a menudo se usa, es extender Object.prototype o uno de los otros pre-incorporados prototypes.

+ +

Esta técnica se llama monkey patching y rompe la encapsulación. Si bien, es utilizado por librerías como Prototype.js, no hay una buena razón para saturar los tipos pre-incorporados con funcionalidades adicionales no estándar.

+ +

La única buena razón para extender los pre-incorporados prototipos es modificar las funcionalidades nuevas de los motores de JavaScript; por ejemplo:

+ +

Array.forEach, etc.

+ +

Ejemplo

+ +

B heredará de A:

+ +
function A(a){
+  this.varA = a;
+}
+
+// Cual es el propósito de incluir varA en el prototipo si A.prototype.varA siempre va a ser la sombra de
+// this.varA, dada la definición de la función A arriba?
+A.prototype = {
+  varA : null,  // No deberíamos atacar varA desde el prototipo como haciendo nada?
+      // Tal vez intentando una optimización al asignar espacios ocultos en las clases?
+      // https://developers.google.com/speed/articles/optimizing-javascript#Initializing instanciar variables
+      // podría ser válido si varA no fuera inicializado únicamente por cada instancia.
+  doSomething : function(){
+    // ...
+  }
+}
+
+function B(a, b){
+  A.call(this, a);
+  this.varB = b;
+}
+B.prototype = Object.create(A.prototype, {
+  varB : {
+    value: null,
+    enumerable: true,
+    configurable: true,
+    writable: true
+  },
+  doSomething : {
+    value: function(){ // override
+      A.prototype.doSomething.apply(this, arguments); // call super
+      // ...
+    },
+    enumerable: true,
+    configurable: true,
+    writable: true
+  }
+});
+B.prototype.constructor = B;
+
+var b = new B();
+b.doSomething();
+
+ +

Las partes importantes son:

+ + + +

prototype y Object.getPrototypeOf

+ +

JavaScript es un poco confuso para desarrolladores que vienen de lenguajes como Java o C++, ya que todo es dinámico, en todo momento de la ejecución, y no tiene clases en lo absoluto. Todo es solamente instancias (objetos). Incluso las "clases" que creamos, son solo funciones (objetos).

+ +

Probablemente notaste que nuestra función A tiene una propiedad especial llamada prototype. Esta propiedad especial funciona con el operador de JavaScript new. La referencia al prototipo objeto es copiada al interno [[Prototype]] propiedad de la instancia new. Por ejemplo, cuando creas una variable var a1 = new A(), JavaScript (después de haber creado el objeto en memoria y antes de correr function A() con this definido a él) setea a1.[[Prototype]] = A.prototype. Cuando a continuación accedes a las propiedades de la instancia, JavaScript primero chequea si existen en el objeto directamente, y si no, mira en el [[Prototype]]. Esto significa que todo lo que definas en el prototipo es efectivamente compartido a todas las instancias, e incluso después puedes cambiar partes del prototipo y que todos los cambios se hagan en todas las instancias.

+ +

Si, en el ejemplo de arriba, pones var a1 = new A(); var a2 = new A(); entonces a1.doSomething se referiría a Object.getPrototypeOf(a1).doSomething, que seria lo mismo que A.prototype.doSomething que definiste, i.e. Object.getPrototypeOf(a1).doSomething == Object.getPrototypeOf(a2).doSomething == A.prototype.doSomething.

+ +

resumiendo, prototype es para tipos, mientras que Object.getPrototypeOf() es lo mismo para instancias.

+ +

[[Prototype]] es visto como recursivo, i.e. a1.doSomething, Object.getPrototypeOf(a1).doSomething, Object.getPrototypeOf(Object.getPrototypeOf(a1)).doSomething etc., hasta que se encuentra o Object.getPrototypeOf retornará null.

+ +

Entonces, cuando llamas

+ +
var o = new Foo();
+ +

JavaScript en realidad hace

+ +
var o = new Object();
+o.[[Prototype]] = Foo.prototype;
+Foo.call(o);
+ +

(o algo similar) y cuando después haces

+ +
o.someProp;
+ +

chequea si o tiene una propiedad someProp. Si no, busca en Object.getPrototypeOf(o).someProp y si ahí no existe, busca en Object.getPrototypeOf(Object.getPrototypeOf(o)).someProp y así sucesivamente.

+ +
+

En conclusión

+ +

Es esencial entender el modelo de prototipado por instancias antes de escribir código complejo que hace uso de esto. También, sé consciente del largo de la cadena de prototipado en tu código y romperlo si es necesario para evitar posibles problemas de rendimiento. Adicionalmente, el prototipo nativo nunca debería ser extendido a menos que esto sea por motivo de compatibilidad con nuevas versiones de JavaScript.

+
diff --git "a/files/es/web/javascript/introducci\303\263n_a_javascript_orientado_a_objetos/index.html" "b/files/es/web/javascript/introducci\303\263n_a_javascript_orientado_a_objetos/index.html" deleted file mode 100644 index 83c8f0a7c9..0000000000 --- "a/files/es/web/javascript/introducci\303\263n_a_javascript_orientado_a_objetos/index.html" +++ /dev/null @@ -1,385 +0,0 @@ ---- -title: Introducción a JavaScript orientado a objetos -slug: Web/JavaScript/Introducción_a_JavaScript_orientado_a_objetos -tags: - - Constructor - - Herencia - - JavaScript - - Objetos - - Orientado a objetos - - POO - - espacio de nombres -translation_of: Learn/JavaScript/Objects -translation_of_original: Web/JavaScript/Introduction_to_Object-Oriented_JavaScript ---- -

{{jsSidebar("Introductory")}}

- -

JavaScript dispone de fuertes capacidades de programación orientada a objetos, a pesar de que han tenido lugar algunos debates respecto a las diferencias de sus capacidades en comparación con otros lenguajes.

- -

Este artículo comienza con una Introducción a la programación orientada a objetos, luego examina el modelo de objetos de JavaScript, y finalmente, muestra los conceptos de programación orientada a objetos en JavaScript.

- -

Revisión de JavaScript

- -

Si no te sientes seguro acerca de los conceptos de JavaScript tales como variables, tipos, funciones y el ámbito de aplicación, puedes leer sobre estos temas en: Una nueva introducción a JavaScript . También puedes consultar la Guía de JavaScript 1.5.

- -

Programación orientada a objetos

- -

La programación orientada a objetos es un paradigma de programación que utiliza la abstracción para crear modelos basados ​​en el mundo real. Utiliza diversas técnicas de paradigmas previamente establecidas, incluyendo la modularidad, polimorfismo y encapsulamiento. Hoy en día, muchos lenguajes de programación (como Java, JavaScript, C#, C++, Python, PHP, Ruby y Objective-C) soportan programación orientada a objetos (POO).

- -

La programación orientada a objetos puede considerarse como el diseño de software a través de un conjunto de objetos que cooperan, a diferencia de un punto de vista tradicional en el que un programa puede considerarse como un conjunto de funciones, o simplemente como una lista de instrucciones para la computadora. En la programación orientada a objetos, cada objeto es capaz de recibir mensajes, procesar datos y enviar mensajes a otros objetos. Cada objeto puede verse como una pequeña máquina independiente con un papel o responsabilidad definida.

- -

POO pretende promover una mayor flexibilidad y facilidad de mantenimiento en la programación y es muy popular en la ingeniería de software a gran escala. Gracias a su fuerte énfasis en la modularidad, el código orientado a objetos está concebido para ser más fácil de desarrollar y más fácil de entender posteriormente, prestándose a un análisis más directo, a una mayor codificación y comprensión de situaciones y procedimientos complejos que otros métodos de programación menos modulares. 2

- -

Terminología

- -
-
Clase
-
Define las características del Objeto.
-
Objeto
-
Una instancia de una Clase.
-
Propiedad
-
Una característica del Objeto, como el color.
-
Método
-
Una capacidad del Objeto, como caminar.
-
- -
-
Constructor
-
Es un método llamado en el momento de la creación de instancias.
-
Herencia
-
Una Clase puede heredar características de otra Clase.
-
- -
-
Encapsulamiento
-
Una Clase sólo define las características del Objeto, un Método sólo define cómo se ejecuta el Método.
-
Abstracción
-
La conjunción de herencia compleja, métodos y propiedades que un objeto debe ser capaz de simular en un modelo de la realidad.
-
Polimorfismo
-
Diferentes Clases podrían definir el mismo método o propiedad.
-
- -

Para una descripción más extensa de programación orientada a objetos, consulta Programación orientada a objetos en Wikipedia.

- -

Programación basada ​​en prototipos

- -

La programación basada ​​en prototipos es un estilo de programación orientada a objetos en la que las clases no están presentes y la reutilización de comportamiento (conocido como herencia en lenguajes basados ​​en clases) se lleva a cabo a través de un proceso de decoración de objetos existentes que sirven de prototipos. Este modelo también se conoce como programación sin clases, orientada a prototipos o basada en ejemplos.

- -

El ejemplo original (y más canónico) de un lenguaje basado en prototipos es el lenguaje de programación Self desarrollado por David Ungar y Randall Smith. Sin embargo, el estilo de programación sin clases se ha hecho cada vez más popular y ha sido adoptado para lenguajes de programación como JavaScript, Cecil, NewtonScript, Io, MOO, REBOL, Kevo, Squeak (cuando se utiliza el Viewer framework para manipular los componentes Morphic) y varios otros. 2

- -

Programación orientada a objetos de JavaScript

- -

Namespace

- -

Un espacio de nombres es un contenedor que permite asociar toda la funcionalidad de un determinado objeto con un nombre único. En JavaScript un espacio de nombres es un objeto que permite a métodos, propiedades y objetos asociarse. La idea de crear espacios de nombres en JavaScript es simple: Crear un único objeto global para las variables, métodos, funciones convirtiendolos en propiedades de ese objeto. El uso de los namespace permite minimizar el conflicto de nombres con otros objetos haciéndolos únicos dentro de nuestra aplicación.

- -
Un espacio de nombres es un objeto: 
- -

-Vamos a crear un objeto global llamado MIAPLICACION
- -
 
- -
// namespace global
-
-var MIAPLICACION = MIAPLICACION || {};
- -
 
- -
-

Nota: Para continuar con las mejores prácticas vamos a utilizar mayúsculas para los namespace.

-
- -
-
En el código de ejemplo anterior comprobamos si MIAPLICACION ya se encuentra definida. Si es así utilizamos el objeto global MIAPLICACION que existe; si este no existe creamos un objeto vacío llamado MIAPLICACION que encapsulará métodos, funciones, variables y otros objetos que vayamos a crear.
- -
 
- -
También podemos crear Sub-espacios de nombres:
- -
 
- -
// Sub-namespace
-
-MIAPLICACION.event = {} ;
-
- -
A continuación se muestra el código para la creación de un espacio de nombre y cómo agregar variables, funciones y métodos:
- -
 
- -
// Creación del contenedor llamado MIAPLICACION.metodoComun de método y propiedades comunes.
-MIAPLICACION.metodoComun = {
-  regExParaNombre: "", // define regex para la validación del nombre
-  regExParaTelefono: "", // define regex para validación del teléfono
-  validaNombre: function(nombre){
-    // Hace algo con el nombre que usted ingresa a la variable reExParaNombre
-    // usando "this.regExParaNombre"
-  },
-
-  validaNroTelefono: function (numTelefono){
-    // Hace algo con el número de teléfono
-  }
-}
-
-// Objeto junto a la declaración del método
-MIAPLICACION.event = {
-  addListener: function(el, type, fn){
-    // código de relleno
-  },
-  removeListener: function(el, type, fn){
-    // código de relleno
-  },
-  getEvent: function(e) {
-    // código de relleno
-  }
-
-  // Puedes agregar otras propiedades y métodos
-}
-
-// Sintaxis de utilización del método addListener:
-MIAPLICACION.event.addListener("turel", "tipo", callback);
-
-
-
- -
-

Objetos básicos

-
- -

JavaScript tiene varios objetos incluidos en su núcleo, como Math, Object, Array y String. El siguiente ejemplo muestra cómo utilizar el objeto Math para obtener un número al azar mediante el uso de su método random().

- -
alert (Math.random ());
-
- -
Nota: este y todos los demás ejemplos suponen que una función llamada alert (como el que se incluye en los navegadores web) se define de forma global. La función alert no es realmente parte de JavaScript.
- -

Consulta Core JavaScript 1.5 Reference:Global Objects para obtener una lista de los objetos básicos en JavaScript.

- -

Cada objeto en JavaScript es una instancia del objeto Object, por lo tanto, hereda todas sus propiedades y métodos.

- -

Objetos personalizados

- -

La clase

- -

JavaScript es un lenguaje basado en prototipos que no contiene ninguna declaración de clase, como se encuentra, por ejemplo, en C + + o Java. Esto es a veces confuso para los programadores acostumbrados a los lenguajes con una declaración de clase. En su lugar, JavaScript utiliza funciones como clases. Definir una clase es tan fácil como definir una función. En el ejemplo siguiente se define una nueva clase llamada Persona.

- -
function Persona() { }
-
- -

El objeto (ejemplo de clase)

- -

Para crear un nuevo ejemplo de un objeto obj utilizamos la declaración new obj , asignando el resultado (que es de tipo obj ) a una variable para tener acceso más tarde.

- -

En el siguiente ejemplo se define una clase llamada Persona y creamos dos instancias ( persona1 y persona2 ).

- -
function Persona() {
-}
-
-var persona1 = new Persona();
-var persona2 = new Persona();
- -
Por favor, consulta también Object.create para ver un método nuevo y alternativo de creación de ejemplos.
- -

El constructor

- -

El constructor es llamado en el momento de la creación de la instancia (el momento en que se crea la instancia del objeto). El constructor es un método de la clase. En JavaScript, la función sirve como el constructor del objeto, por lo tanto, no hay necesidad de definir explícitamente un método constructor. Cada acción declarada en la clase es ejecutada en el momento de la creación de la instancia.

- -

El constructor se usa para establecer las propiedades del objeto o para llamar a los métodos para preparar el objeto para su uso. Más adelante describiremos como agregar métodos a clase y sus definiciones ya que se realiza utilizando una sintaxis diferente.

- -

En el siguiente ejemplo, el constructor de la clase Persona muestra un alerta que dice (Una instancia de persona) cuando se crea la instancia de la clase Persona.

- -
function Persona() {
-  alert('Una instancia de Persona');
-}
-
-var persona1 = new Persona();
-var persona2 = new Persona();
- -

La propiedad (atributo del objeto)

- -

Las propiedades son variables contenidas en la clase, cada instancia del objeto tiene dichas propiedades. Las propiedades deben establecerse a la propiedad prototipo de la clase (función), para que la herencia funcione correctamente.

- -

Para trabajar con propiedades dentro de la clase se utiliza la palabra reservada this , que se refiere al objeto actual. El acceso (lectura o escritura) a una propiedad desde fuera de la clase se hace con la sintaxis: NombreDeLaInstancia.Propiedad. Es la misma sintaxis utilizada por C++, Java y algunos lenguajes más. (Desde dentro de la clase la sintaxis es this.Propiedad que se utiliza para obtener o establecer el valor de la propiedad).

- -

En el siguiente ejemplo definimos la propiedad primerNombre de la clase Persona y la definimos en la creación de la instancia.

- -
function Persona(primerNombre) {
-  this.primerNombre = primerNombre;
-  alert('Una instancia de Persona');
-}
-
-var persona1 = new Persona("Alicia");
-var persona2 = new Persona("Sebastian");
-
-// Muestra el primer nombre de persona1
-alert ('persona1 es ' + persona1.primerNombre); // muestra "persona1 es Alicia"
-alert ('persona2 es ' + persona2.primerNombre); // muestra "persona2 es Sebastian"
- -

Los métodos

- -

Los métodos siguen la misma lógica que las propiedades, la diferencia es que son funciones y se definen como funciones. Llamar a un método es similar a acceder a una propiedad, pero se agrega () al final del nombre del método, posiblemente con argumentos.

- -

En el siguiente ejemplo se define y utiliza el método diHola() para la clase Persona.

- -
function Persona(primerNombre) {
-  this.primerNombre = primerNombre;
-}
-
-Persona.prototype.diHola = function() {
-  alert ('Hola, Soy ' + this.primerNombre);
-};
-
-var persona1 = new Persona("Alicia");
-var persona2 = new Persona("Sebastian");
-
-// Llamadas al método diHola de la clase Persona.
-persona1.diHola(); // muestra "Hola, Soy Alicia"
-persona2.diHola(); // muestra "Hola, Soy Sebastian"
- -

En JavaScript los métodos son objetos como lo es una función normal y se vinculan a un objeto como lo hace una propiedad, lo que significa que se pueden invocar desde "fuera de su contexto". Considera el siguiente código de ejemplo:

- -
function Persona(primerNombre) {
-  this.primerNombre = primerNombre;
-}
-
-Persona.prototype.diHola = function() {
-  alert ("Hola, Soy " + this.primerNombre);
-};
-
-var persona1 = new Persona("Alicia");
-var persona2 = new Persona("Sebastian");
-var funcionSaludar = persona1.diHola;
-
-persona1.diHola();                            // muestra "Hola, Soy Alicia"
-persona2.diHola();                            // muestra "Hola, Soy Sebastian"
-funcionSaludar();                             // muestra "Hola, Soy undefined (ó da un error con el
-                                              // TypeError en modo estricto
-
-alert(funcionSaludar === persona1.diHola);            // muestra true (verdadero)
-alert(funcionSaludar === Persona.prototype.diHola);   // muestra true (verdadero)
-funcionSaludar.call(persona1);                        // muestra "Hola, Soy Alicia"
- -
En el ejemplo se muestran todas las referencias que tenemos de la función diHola — una de ellas es persona1, otra en Persona.prototype, en la variable funcionSaludar, etc. — todas se refieren a la misma función. El valor durante una llamada a la función depende de como realizamos esa llamada. En el común de los casos cuando la llamamos desde una expresión donde tenemos a la función desde la propiedad del objeto — persona1.diHola().— Se establece en el objeto que tenemos en la función (persona1), razón por la cual persona1.diHola() utiliza el nombre "Alicia" y persona2.diHola() utiliza el nombre "Sebastian". Pero si realizamos la llamada de otra manera, se establecerá de forma diferente: Llamándola desde una variable  —funcionSaludar() — Este establece al objeto global (windows, en los navegadores). Desde este objeto (probablemente) no tiene a la propiedad primerNombre, por lo que finalizará con "Hola, Soy indefinido". (El cual se incluye en modo de código suelto, sino sería diferente [un error] en modo estricto, pero para evitar confusiones ahora no vamos a entra en detalles.) O podemos establecerla de forma explicita utilizando  Function.call (ó Function.apply), como se muestra al final del ejemplo funcionSaludar.call(persona1).
- -
 
- -
Consulta más información al respecto en Function.call y Function.apply
- -

Herencia

- -
La herencia es una manera de crear una clase como una versión especializada de una o más clases (JavaScript sólo permite herencia simple). La clase especializada comúnmente se llama hija o secundaria, y la otra clase se le llama padre o primaria. En JavaScript la herencia se logra mediante la asignación de una instancia de la clase primaria a  la clase secundaria, y luego se hace la especialización. 
- -
 
- -
-

JavaScript no detecta la clase hija prototype.constructor (vea las propiedades del Core JavaScript 1.5 Reference:Global Objects:Object:prototype) así que debemos decírselo de forma manual.

-
- -

En el siguiente ejemplo definimos la clase Estudiante como una clase secundaria de Persona . Luego redefinimos el método diHola() y agregamos el método diAdios().

- -
// Definimos el constructor Persona
-function Persona(primerNombre) {
-  this.primerNombre = primerNombre;
-}
-
-// Agregamos un par de métodos a Persona.prototype
-Persona.prototype.caminar = function() {
-  alert("Estoy caminando!");
-};
-Persona.prototype.diHola = function(){
-  alert("Hola, Soy" + this.primerNombre);
-};
-
-// Definimos el constructor Estudiante
-function Estudiante(primerNombre, asignatura) {
-  // Llamamos al constructor padre, nos aseguramos (utilizando Function#call) que "this" se
-  // ha establecido correctamente durante la llamada
-  Persona.call(this, primerNombre);
-
-  //Inicializamos las propiedades específicas de Estudiante
-  this.asignatura = asignatura;
-};
-
-// Creamos el objeto Estudiante.prototype que hereda desde Persona.prototype
-// Nota: Un error común es utilizar "new Persona()" para crear Estudiante.prototype
-// Esto es incorrecto por varias razones, y no menos importante que no le estamos pasando nada
-// a Persona desde el argumento "primerNombre". El lugar correcto para llamar a Persona
-// es arriba, donde llamamos a Estudiante.
-Estudiante.prototype = Object.create(Persona.prototype);    // Vea las siguientes notas
-
-// Establecer la propiedad "constructor" para referencias a Estudiante
-Estudiante.prototype.constructor = Estudiante;
-
-// Reemplazar el método "diHola"
-Estudiante.prototype.diHola = function(){
-  alert("Hola, Soy " + this.primerNombre + ". Estoy estudiando " + this.asignatura + ".");
-};
-
-// Agregamos el método "diAdios"
-Estudiante.prototype.diAdios = function() {
-  alert("¡ Adios !");
-};
-
-// Ejemplos de uso
-var estudiante1 = new Estudiante("Carolina", "Física Aplicada");
-estudiante1.diHola();    // muestra "Hola, Soy Carolina. Estoy estudianto Física Aplicada."
-estudiante1.caminar();   // muestra "Estoy caminando!"
-estudiante1.diAdios();   // muestra "¡ Adios !"
-
-// Comprobamos que las instancias funcionan correctamente
-alert(estudiante1 instanceof Persona);      // devuelve true
-alert(estudiante1 instanceof Estudiante);   // devuelve true
-
- -

Con respecto a la línea Estudiante.prototype = Object.create(Persona.prototype); : Sobre los motores antiguos de JavaScript sin Object.create, se puede utilizar un "polyfill" (aka "shim", vea el enlace del artículo), o se puede utilizar una función que obtiene el mismo resultado, como por ejemplo:

- -
function crearObjeto(proto) {
-  function ctor() { }
-  ctor.prototype = proto;
-  return new ctor();
-}
-
-// uso:
-Estudiante.prototype = crearObjeto(Persona.prototype); 
- -
-

Ver Object.create para conocer más sobre lo que hace, y complementar con los motores antiguos.

-
- -

Encapsulación

- -

En el ejemplo anterior, Estudiante no tiene que saber cómo se aplica el método caminar() de la clase Persona, pero, sin embargo, puede utilizar ese método. La clase Estudiante no tiene que definir explícitamente ese método, a menos que queramos cambiarlo. Esto se denomina la encapsulación, por medio de la cual cada clase hereda los métodos de su elemento primario y sólo tiene que definir las cosas que desea cambiar.

- -

Abstracción

- -

Un mecanismo que permite modelar la parte actual del problema de trabajo. Esto se puede lograr por herencia (especialización) o por composición. JavaScript logra la especialización por herencia y por composición al permitir que las instancias de clases sean los valores de los atributos de otros objetos.

- -

La clase Function de JavaScript hereda de la clase de Object (esto demuestra la especialización del modelo) y la propiedad Function.prototype es un ejemplo de Objeto (esto demuestra la composición)

- -

 

- -
var foo = function() {};
-alert( 'foo es una Función: ' + (foo instanceof Function) );
-alert( 'foo.prototype es un Objeto: ' + (foo.prototype instanceof Object) );
-
- -

Polimorfismo

- -

Al igual que todos los métodos y propiedades están definidas dentro de la propiedad prototipo, las diferentes clases pueden definir métodos con el mismo nombre. Los métodos están en el ámbito de la clase en que están definidos. Esto sólo es verdadero cuando las dos clases no tienen una relación primario-secundario (cuando uno no hereda del otro en una cadena de herencia).

- -

Notas

- -

Las técnicas presentadas en este artículo para aplicar la programación orientada a objetos no son las únicas que se pueden utilizar en JavaScript, que es muy flexible en términos de cómo se puede realizar la programación orientada a objetos.

- -

Del mismo modo, las técnicas presentadas aquí no utilizan ninguna modificación o hack de lenguaje ni imitan las implementaciones de teorías de objetos de otros lenguajes.

- -

Hay otras técnicas que hacen incluso programación orientado a objetos más avanzada en JavaScript, pero que están fuera del alcance de este artículo introductorio.

- -

Referencias

- -
    -
  1. Mozilla. "Core JavaScript 1.5 Guide", http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide.
  2. -
  3. Wikipedia. "Programación orientada a objetos", http://es.wikipedia.org/wiki/Program...tada_a_objetos.
  4. -
  5. Descripción general de POO en JavaScript por Kyle Simpson.
  6. -
diff --git a/files/es/web/javascript/introduction_to_using_xpath_in_javascript/index.html b/files/es/web/javascript/introduction_to_using_xpath_in_javascript/index.html deleted file mode 100644 index 9b480576af..0000000000 --- a/files/es/web/javascript/introduction_to_using_xpath_in_javascript/index.html +++ /dev/null @@ -1,416 +0,0 @@ ---- -title: Introducción al uso de XPath en Javascript -slug: Web/JavaScript/Introduction_to_using_XPath_in_JavaScript -translation_of: Web/XPath/Introduction_to_using_XPath_in_JavaScript ---- -

Este documento describe la interfaz para usar XPath internamente en JavaScript,  en extensiones y desde sitios web. Mozilla implementa una gran parte del DOM 3 XPath. Esto significa que las expresiones XPath pueden correrse en documentos HTML y XML.

- -

La interfaz principal a usar con XPath es la función evaluate del objeto document.

- -

document.evaluate

- -

Este método evalúa expresiones XPath contra un documento basado en XML  (incluyendo documentos HTML), y regresa un objeto XPathResult, el cual puede ser un solo nodo o un conjunto de nodos. La documentación existente para este método se encuentra en document.evaluate, pero de momento es más bien escasa para nuestras necesidades; una examinación más abarcativa será dada a continuación.

- -
var xpathResult = document.evaluate( xpathExpression, contextNode, namespaceResolver, resultType, result );
-
- -

Parámetros

- -

La función evaluate toma un total de 5 parámetros:

- - - -

Valor regresado

- -

Regresa xpathResult, que es un objeto XPathResult del tipo especificado en el parámetro resultType. La interfaz XPathResult está definida en{{ Source("dom/interfaces/xpath/nsIDOMXPathResult.idl", "here") }}.

- -

Implementando un Solucionador de Namespace predefinido

- -

Nosotros creamos un solucionador de namespace usando el método createNSResolver del objeto document.

- -
var nsResolver = document.createNSResolver( contextNode.ownerDocument == null ? contextNode.documentElement : contextNode.ownerDocument.documentElement );
-
- -

O alternativamente, usar el método createNSResolver de un objeto XPathEvaluator.

- -
var xpEvaluator = new XPathEvaluator();
-var nsResolver = xpEvaluator.createNSResolver( contextNode.ownerDocument == null ? contextNode.documentElement : contextNode.ownerDocument.documentElement ); 
- -

Y entonces pasar a document.evaluate la variable nsResolver, como el parámetro namespaceResolver.

- -

Nota: XPath define QNames sin un prefijo sólo al igualar elementos en el namespace null. No hay manera en XPath de tomar el namespace predefinido tal como se aplica a un elemento de referencia regular (e.g., p[@id='_myid'] for xmlns='http://www.w3.org/1999/xhtml'). Para igualar elementos predefinidos en un namespace no-nulo, , se tiene que hacer refencia a un elemento en particular usando una forma como ['namespace-uri()='http://www.w3.org/1999/xhtml' and name()='p' and @id='_myid'] (este enfoque funciona bien para expresiones XPath dinámicas donde el namespace puede ser dessconocido) o usar un nombre de prueba prefijado, y crear un solucionador de namespace mapeando el prefijo al namespace. Lee más sobre como crear un solucionador de namespace definido por el usuario, si deseas tomar el último enfoque.

- -

Notas

- -

Se adapta cualquier nodo DOM a resolver namespaces, así que una expresión XPath puede ser fácilmente evaluada relativa al contexto del nodo donde este aparece dentro del documento. Este adaptador funciona como el método de DOM Nivel 3 lookupNamespaceURI en nodos a resolver el namespaceURI desde un prefijo dado, usando la información actual disponible en la jerarquía del nodo en el momento en que lookupNamespaceURI es llamado. También resuelve correctamente el prefijo implícito de XML.

- -

Especificando el tipo de valor regresado

- -

La variable regresado xpathResult desde document.evaluate puede estar compuesto de nodos individuales (tipos simples), o una colección de nodos (tipo de conjunto de nodos)

- -

Tipos simples

- -

Cuando el tipo de resultado deseado especificado en resultType es uno de los siguientes :

- - - -

Obtenemos el valor regresado por la expresión accediendo a las siguientes propiedades, respectivamente, del objeto XPathResult.

- - - -
Ejemplo
- -

El siguiente código usa la expresión XPath count(//p) para obtener el número de elementos <p> en un  documento HTML:

- -
var paragraphCount = document.evaluate( 'count(//p)', document, null, XPathResult.ANY_TYPE, null );
-
-alert( 'This document contains ' + paragraphCount.numberValue + ' paragraph elements' );
- -

Aunque JavaScript nos permite convertir el número a una cadena para desplegarlo, la interfaz XPath no convertirá el resultado numérico si la propiedad stringValue es solicitada, así que el siguiente código no funcionará:

- -
var paragraphCount = document.evaluate('count(//p)', document, null, XPathResult.ANY_TYPE, null );
-
-alert( 'This document contains ' + paragraphCount.stringValue + ' paragraph elements' );
-
- -

A su vez, regresará una excepción con el código NS_DOM_TYPE_ERROR.

- -

Tipos de conjuntos de Nodos

- -

El objeto XPathResult permite a los conjuntos de nodos ser regresados en 3 diferentes tipos principales:

- - - -
Iteradores
- -

Cuando el tipo de resultado especificado en el resultType es uno de los siguientes:

- - - -

El objeto XPathResult regresado es un conjunto de nodos de los nodos coincidentes los cuales se comportarán como un iterador, perimitiendo el acceso individual a los nodos mediante el uso de método iterateNext() del XPathResult.

- -

Una vez que hemos iterado sobre todos los nodos individuales coincidentes, iterateNext() regresará null.

- -

Es importante señalar que si el documento se ha transformado (el arbol del documento se ha modificado) entre iteraciones 

- -
Iterator Example
- -
var iterator = document.evaluate('//phoneNumber', documentNode, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null );
-
-try {
-  var thisNode = iterator.iterateNext();
-
-  while (thisNode) {
-    alert( thisNode.textContent );
-    thisNode = iterator.iterateNext();
-  }
-}
-catch (e) {
-  dump( 'Error: Document tree modified during iteration ' + e );
-}
-
- -
Snapshots
- -

When the specified result type in the resultType parameter is either:

- - - -

The XPathResult object returned is a static node-set of matched nodes, which allows us to access each node through the snapshotItem(itemNumber) method of the XPathResult object, where itemNumber is the index of the node to be retrieved. The total number of nodes contained can be accessed through the snapshotLength property.

- -

Snapshots do not change with document mutations, so unlike the iterators the snapshot does not become invalid, but it may not correspond to the current document, for example the nodes may have been moved, it might contain nodes that no longer exist, or new nodes could have been added.

- -
Snapshot Example
- -
var nodesSnapshot = document.evaluate('//phoneNumber', documentNode, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
-
-for ( var i=0 ; i < nodesSnapshot.snapshotLength; i++ )
-{
-  dump( nodesSnapshot.snapshotItem(i).textContent );
-}
-
- -
First Node
- -

When the specified result type in the resultType parameter is either:

- - - -

The XPathResult object returned is only the first found node that matched the XPath expression. This can be accessed through the singleNodeValue property of the XPathResult object. This will be null if the node set is empty.

- -

Note that, for the unordered subtype the single node returned might not be the first in document order, but for the ordered subtype you are guaranteed to get the first matched node in the document order.

- -
First Node Example
- -
var firstPhoneNumber = document.evaluate('//phoneNumber', documentNode, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null );
-
-dump( 'The first phone number found is ' + firstPhoneNumber.singleNodeValue.textContent );
-
- -

The ANY_TYPE Constant

- -

When the result type in the resultType parameter is specified as ANY_TYPE, the XPathResult object returned, will be whatever type that naturally results from the evaluation of the expression.

- -

It could be any of the simple types (NUMBER_TYPE, STRING_TYPE, BOOLEAN_TYPE), but, if the returned result type is a node-set then it will only be an UNORDERED_NODE_ITERATOR_TYPE.

- -

To determine that type after evaluation, we use the resultType property of the XPathResult object. The constant values of this property are defined in the appendix. None Yet =====Any_Type Example===== <pre> </pre>

- -

Examples

- -

Within an HTML Document

- -

The following code is intended to be placed in any JavaScript fragment within or linked to the HTML document against which the XPath expression is to be evaluated.

- -

To extract all the <h2> heading elements in an HTML document using XPath, the xpathExpression is simply '//h2'. Where, // is the Recursive Descent Operator that matches elements with the nodeName h2 anywhere in the document tree. The full code for this is: link to introductory xpath doc

- -
var headings = document.evaluate('//h2', document, null, XPathResult.ANY_TYPE, null );
-
- -

Notice that, since HTML does not have namespaces, we have passed null for the namespaceResolver parameter.

- -

Since we wish to search over the entire document for the headings, we have used the document object itself as the contextNode.

- -

The result of this expression is an XPathResult object. If we wish to know the type of result returned, we may evaluate the resultType property of the returned object. In this case, that will evaluate to 4, an UNORDERED_NODE_ITERATOR_TYPE. This is the default return type when the result of the XPath expression is a node set. It provides access to a single node at a time and may not return nodes in a particular order. To access the returned nodes, we use the iterateNext() method of the returned object:

- -
var thisHeading = headings.iterateNext();
-
-var alertText = 'Level 2 headings in this document are:\n'
-
-while (thisHeading) {
-  alertText += thisHeading.textContent + '\n';
-  thisHeading = headings.iterateNext();
-}
-
- -

Once we iterate to a node, we have access to all the standard DOM interfaces on that node. After iterating through all the h2 elements returned from our expression, any further calls to iterateNext() will return null.

- -

Evaluating against an XML document within an Extension

- -

The following uses an XML document located at chrome://yourextension/content/peopleDB.xml as an example.

- -
<?xml version="1.0"?>
-<people xmlns:xul = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" >
-  <person>
-	<name first="george" last="bush" />
-	<address street="1600 pennsylvania avenue" city="washington" country="usa"/>
-	<phoneNumber>202-456-1111</phoneNumber>
-  </person>
-  <person>
-	<name first="tony" last="blair" />
-	<address street="10 downing street" city="london" country="uk"/>
-	<phoneNumber>020 7925 0918</phoneNumber>
-  </person>
-</people>
-
- -

To make the contents of the XML document available within the extension, we create an XMLHttpRequest object to load the document synchronously, the variable xmlDoc will contain the document as an XMLDocument object against which we can use the evaluate method

- -

JavaScript used in the extensions xul/js documents.

- -
var req = new XMLHttpRequest();
-
-req.open("GET", "chrome://yourextension/content/peopleDB.xml", false);
-req.send(null);
-
-var xmlDoc = req.responseXML;
-
-var nsResolver = xmlDoc.createNSResolver( xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement);
-
-var personIterator = xmlDoc.evaluate('//person', xmlDoc, nsResolver, XPathResult.ANY_TYPE, null );
-
- -

Note

- -

When the XPathResult object is not defined, the constants can be retreived in privileged code using Components.interfaces.nsIDOMXPathResult.ANY_TYPE (CI.nsIDOMXPathResult). Similarly, an XPathEvaluator can be created using:

- -
Components.classes["@mozilla.org/dom/xpath-evaluator;1"].createInstance(Components.interfaces.nsIDOMXPathEvaluator)
- -

Appendix

- -

Implementing a User Defined Namespace Resolver

- -

This is an example for illustration only. This function will need to take namespace prefixes from the xpathExpression and return the URI that corresponds to that prefix. For example, the expression:

- -
'//xhtml:td/mathml:math'
-
- -

will select all MathML expressions that are the children of (X)HTML table data cell elements.

- -

In order to associate the 'mathml:' prefix with the namespace URI 'http://www.w3.org/1998/Math/MathML' and 'xhtml:' with the URI 'http://www.w3.org/1999/xhtml' we provide a function:

- -
function nsResolver(prefix) {
-  var ns = {
-    'xhtml' : 'http://www.w3.org/1999/xhtml',
-    'mathml': 'http://www.w3.org/1998/Math/MathML'
-  };
-  return ns[prefix] || null;
-}
-
- -

Our call to document.evaluate would then looks like:

- -
document.evaluate( '//xhtml:td/mathml:math', document, nsResolver, XPathResult.ANY_TYPE, null );
-
- -

Implementing a default namespace for XML documents

- -

As noted in the Implementing a Default Namespace Resolver previously, the default resolver does not handle the default namespace for XML documents. For example with this document:

- -
<?xml version="1.0" encoding="UTF-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom">
-    <entry />
-    <entry />
-    <entry />
-</feed>
-
- -

doc.evaluate('//entry', doc, nsResolver, XPathResult.ANY_TYPE, null) will return an empty set, where nsResolver is the resolver returned by createNSResolver. Passing a null resolver doesn't work any better, either.

- -

One possible workaround is to create a custom resolver that returns the correct default namespace (the Atom namespace in this case). Note that you still have to use some namespace prefix in your XPath expression, so that the resolver function will be able to change it to your required namespace. E.g.:

- -
function resolver() {
-    return 'http://www.w3.org/2005/Atom';
-}
-doc.evaluate('//myns:entry', doc, resolver, XPathResult.ANY_TYPE, null)
-
- -

Note that a more complex resolver will be required if the document uses multiple namespaces.

- -

An approach which might work better (and allow namespaces not to be known ahead of time) is described in the next section.

- -

Using XPath functions to reference elements with a default namespace

- -

Another approach to match default elements in a non-null namespace (and one which works well for dynamic XPath expressions where the namespaces might not be known), involves referring to a particular element using a form such as [namespace-uri()='http://www.w3.org/1999/xhtml' and name()='p' and @id='_myid']. This circumvents the problem of an XPath query not being able to detect the default namespace on a regularly labeled element.

- -

Getting specifically namespaced elements and attributes regardless of prefix

- -

If one wishes to provide flexibility in namespaces (as they are intended) by not necessarily requiring a particular prefix to be used when finding a namespaced element or attribute, one must use special techniques.

- -

While one can adapt the approach in the above section to test for namespaced elements regardless of the prefix chosen (using local-name() in combination with namespace-uri() instead of name()), a more challenging situation occurs, however, if one wishes to grab an element with a particular namespaced attribute in a predicate (given the absence of implementation-independent variables in XPath 1.0).

- -

For example, one might try (incorrectly) to grab an element with a namespaced attribute as follows: var xpathlink = someElements[local-name(@*)="href" and namespace-uri(@*)='http://www.w3.org/1999/xlink'];

- -

This could inadvertently grab some elements if one of its attributes existed that had a local name of "href", but it was a different attribute which had the targeted (XLink) namespace (instead of @href).

- -

In order to accurately grab elements with the XLink @href attribute (without also being confined to predefined prefixes in a namespace resolver), one could obtain them as follows:

- -
var xpathEls = 'someElements[@*[local-name() = "href" and namespace-uri() = "http://www.w3.org/1999/xlink"]]'; // Grabs elements with any single attribute that has both the local name 'href' and the XLink namespace
-var thislevel = xml.evaluate(xpathEls, xml, null, XPathResult.ANY_TYPE, null);
-var thisitemEl = thislevel.iterateNext();
-
- -

XPathResult Defined Constants

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Result Type Defined ConstantValueDescription
ANY_TYPE0A result set containing whatever type naturally results from evaluation of the expression. Note that if the result is a node-set then UNORDERED_NODE_ITERATOR_TYPE is always the resulting type.
NUMBER_TYPE1A result containing a single number. This is useful for example, in an XPath expression using the count() function.
STRING_TYPE2A result containing a single string.
BOOLEAN_TYPE3A result containing a single boolean value. This is useful for example, in an XPath expression using the not() function.
UNORDERED_NODE_ITERATOR_TYPE4A result node-set containing all the nodes matching the expression. The nodes may not necessarily be in the same order that they appear in the document.
ORDERED_NODE_ITERATOR_TYPE5A result node-set containing all the nodes matching the expression. The nodes in the result set are in the same order that they appear in the document.
UNORDERED_NODE_SNAPSHOT_TYPE6A result node-set containing snapshots of all the nodes matching the expression. The nodes may not necessarily be in the same order that they appear in the document.
ORDERED_NODE_SNAPSHOT_TYPE7A result node-set containing snapshots of all the nodes matching the expression. The nodes in the result set are in the same order that they appear in the document.
ANY_UNORDERED_NODE_TYPE8A result node-set containing any single node that matches the expression. The node is not necessarily the first node in the document that matches the expression.
FIRST_ORDERED_NODE_TYPE9A result node-set containing the first node in the document that matches the expression.
- -

See also

- - - -
-

Original Document Information

- - -
- -

 

diff --git a/files/es/web/javascript/javascript_technologies_overview/index.html b/files/es/web/javascript/javascript_technologies_overview/index.html new file mode 100644 index 0000000000..b61a56c1e5 --- /dev/null +++ b/files/es/web/javascript/javascript_technologies_overview/index.html @@ -0,0 +1,87 @@ +--- +title: Descripción de las tecnologías JavaScript +slug: Web/JavaScript/Descripción_de_las_tecnologías_JavaScript +translation_of: Web/JavaScript/JavaScript_technologies_overview +--- +
{{JsSidebar("Introductory")}}
+ +

Introducción

+ +

Mientras que HTML define la estructura y el contenido de una página web y el CSS define el formato y la apariencia, JavaScript agrega interactividad a una página web y crea aplicaciones web enriquecidas.

+ +

Sin embargo, el término paraguas "JavaScript", tal como se entiende en un contexto de navegador web, contiene varios elementos muy diferentes. Uno de ellos es el lenguaje principal (ECMAScript), otro es la colección de las APIs Web, incluyendo el DOM (Document Object Model).

+ +

JavaScript, el núcleo del lenguaje (ECMAScript)

+ +

EL núcleo del lenguaje JavaScript está estandarizado por el Comité ECMA TC39 como un lenguaje llamado ECMAScript. La última versión de la especificación es ECMAScript 6.0.

+ +

Éste núcleo del lenguaje es también usado en ambientes No-Navegadores, por ejemplo en node.js.

+ +

Qué considera ECMAScript scope?

+ +

Entre otras cosas, ECMAScript define:

+ + + + + +

A partir de Octubre del 2016, la gran mayoria de los navegadores soportan ECMAScript 5.1 y ECMAScript 2015 aka ES6, pero versiones antiguas (aún en uso) implementan ECMAScript 5 solamente.

+ +

Futuro

+ +

La 6ta edición principal de ECMAScript fue oficialmente aprobada y publicada como un estándar el 17 de Junio del 2015 por la ECMA General Assembly. Desde entonces las ediciones de ECMAScript son publicadas anualmente.

+ +

Internacionalización de la API

+ +

La ECMAScript Internationalization API Specification es una adición para la especificación del lenguaje ECMAScript, también estandarizada por Ecma TC39. La internacionalización de la API provee intercalación --collation-- (comparación de string), formateo de números, y fomateo de fechas/tiempo para aplicaciones JavaScript, permitiendo que las aplicaciones elijan el idioma y adapten la funcionalidad a sus necesidades. El estandar inicial fue aprobado en Diciembre del 2012; el estado de la implementación en navegadores es rastreado en la documentación de la Intl object. Las especificaciones de la internacionalización son actualmente ratificadas cada año y los navegadores constantemente mejoran su implementación.

+ +

DOM APIs

+ +

WebIDL

+ +

Las especificaciones de la WebIDL proporcionan el vínculo de las tecnologías DOM y ECMAScript.

+ +

El núcleo del DOM

+ +

El Document Object Model (DOM) es una convención multiplataforma e independiente del lenguaje para representar e interactuar con objetos en documentos HTML, XHTML y XML. Los objetos en el árbol DOM se pueden abordar y manipular mediante el uso de métodos en los objetos de otras tecnologías. El {{Glossary("W3C")}} estandariza el Modelo de Objetos del Documento Central, que define interfaces independientes del lenguaje que abstraen documentos HTML y XML como objetos, y también define mecanismos para manipular esta abstracción. Entre las cosas definidas por el DOM, podemos encontrar:

+ + + +

Desde el punto de vista ECMAScript, los objetos definidos en la especificación DOM se denominan "objetos host".

+ +

HTML DOM

+ +

HTML, el lenguaje de marcado de la Web, se especifica en términos del DOM. Por encima de los conceptos abstractos definidos en DOM Core, HTML también define el significado de los elementos. El DOM HTML incluye cosas como el className propiedad en elementos HTML o API como {{domxref ("document.body")}}.

+ +

La especificación HTML también define restricciones en los documentos; por ejemplo, requiere que todos los elementos secundarios de un elemento ul que representa una lista desordenada, sean elementos li, ya que representan elementos de la lista. En general, también prohíbe el uso de elementos y atributos que no están definidos en un estándar.

+ +

¿Busca Document object, Window object, y los otros elementos DOM? ? Lee la documentación DOM documentation.

+ +

Otras API notables

+ + + +

Soporte del navegador

+ +

Como todos los desarrolladores web han experimentadoel DOM es un desastre. La uniformidad del soporte del navegador varía mucho de una característica a otra, principalmente porque muchas características DOM importantes tienen especificaciones muy poco claras (si las hay), y diferentes navegadores web agregan características incompatibles para casos de uso superpuestos (como el modelo de evento de Internet Explorer). A partir de junio de 2011, el W3C y particularmente el WHATWG están definiendo características antiguas en detalle para mejorar la interoperabilidad, y los navegadores a su vez pueden mejorar sus implementaciones basadas en estas especificaciones.

+ +

Un enfoque común, aunque quizás no el más confiable, para la compatibilidad entre navegadores es usar bibliotecas de JavaScript, que resumen las funciones DOM y mantienen sus API funcionando igual en diferentes navegadores. Algunos de los frameworks más utilizados son jQuery, prototype, y YUI.

diff --git a/files/es/web/javascript/memory_management/index.html b/files/es/web/javascript/memory_management/index.html new file mode 100644 index 0000000000..3e2a47287f --- /dev/null +++ b/files/es/web/javascript/memory_management/index.html @@ -0,0 +1,204 @@ +--- +title: Gestión de Memoria +slug: Web/JavaScript/Gestion_de_Memoria +tags: + - Advanced + - JavaScript + - Performance + - Reference + - Referencia + - Rendimiento + - memoria +translation_of: Web/JavaScript/Memory_Management +--- +
{{JsSidebar("Advanced")}}
+ +

Introducción

+ +

Los lenguajes de bajo nivel, como C, tienen primitivos de bajo nivel como malloc() y free() para la gestión de memoria. Por otro lado, para los valores en JavaScript se reserva memoria cuando"cosas" (objetos, strings, etc.) son creados y "automáticamente" liberados cuando ya no son utilizados. El proceso anterior es conocido como Recolección de basura (garbage collection). Su forma "automática" es fuente de confusión, y da la impresión a los desarrolladores de JavaScript (y de otros lenguajes de alto nivel) de poder ignorar el proceso de gestión de memoria. Esto es erróneo. 

+ +

Ciclo de vida de memoria

+ +

Sin importar el lenguaje de programación, el ciclo de memoria es casi siempre parecido al siguiente:

+ +
    +
  1. Reservar la memoria necesaria
  2. +
  3. Utilizarla (lectura, escritura)
  4. +
  5. Liberar la memoria una vez ya no es necesaria.
  6. +
+ +

El primer y el segundo paso son explícitos en todos los lenguajes. El último paso es explícito en lenguajes de bajo nivel, pero es mayormente implícito en lenguajes de alto nivel como JavaScript

+ +

Reserva de memoria en JavaScript

+ +

Inicialización de valores

+ +

Para no agobiar al programador con reservas de memoria, JavaScript las realiza al mismo tiempo que la declaración de los valores.

+ +
var n = 123; // reserva memoria para un número
+var s = "azerty"; // reserva memoria para un string
+
+var o = {
+  a: 1,
+  b: null
+}; // reserva memoria para un objeto y los valores que
+   // contiene
+
+// (similar a objeto) reserva memoria para el arreglo y
+// los valores que contiene
+var a = [1, null, "abra"];
+
+function f(a){
+  return a + 2;
+} // reserva memoria para una funcion (la cual es un objeto)
+
+// las expresiones de función tambien reservan memoria para un objeto
+someElement.addEventListener('click', function(){
+  someElement.style.backgroundColor = 'blue';
+}, false);
+
+ +

Reserva de memoria al llamar una función

+ +

En ocasiones al llamar a una función se reserva memoria para un objeto.

+ +
var d = new Date();
+// reserva memoria para un elemento del DOM
+var e = document.createElement('div');
+
+ +

Algunos métodos reservan memoria para nuevos valores u objetos:

+ +
var s = "azerty";
+var s2 = s.substr(0, 3); // s2 es un nuevo string
+// Como los strings son valores inmutables,
+// JavaScript puede NO reservar memoria para este,
+// y solo almacenar el rango [0, 3].
+
+var a = ["ouais ouais", "nan nan"];
+var a2 = ["generation", "nan nan"];
+var a3 = a.concat(a2);
+// nuevo arreglo con 4 elementos resultado de
+// concatenar los elementos de a y a2
+
+ +

Usando valores

+ +

Usar un valor es simplemente leerlo o escribirlo en memoria reservada. Esto puede ocurrir al leer o escribir el valor de una variable o de una propiedad de un objeto, inclusive pasando un argumento a una función.

+ +

Liberar la memoria cuando ya no es necesaria

+ +

En este punto ocurren la mayoria de los inconvenientes con la gestión de memoria. Lo más díficil es encontrar el cuándo la "memoria ya no es necesaria". En algunas ocasiones, es necesario que el desarrollador determine en qué parte de un programa esa parte de memoria ya no es necesaria y la libere.

+ +

Los lenguajes de alto nivel incluyen una herramienta de software conocida como "recolector de basura" (garbage collector), cuya función es rastrear las reservas de memoria y su utilización, para así encontrar cuándo cierta parte de la memoria ya no es necesaria, y en su momento liberarla automáticamente.  Este proceso es sólo una aproximación al problema general de saber cuándo una parte de la memoria ya no es necesaria, ya que éste es indecidible (no puede ser resuelto por un algoritmo).

+ +

Recolección de basura (Garbage collection)

+ +

Como antes se mencionaba el problema general de encontrar automáticamente cuando la memoria "ya no es necesaria" es indecidible. Como consecuencia, las recolecciones de basura implementan sólo una restricción a la solución del problema general. En esta sección se explicarán las nociones necesarias para entender los principales algoritmos de recolección de basura y sus limitaciones.

+ +

Referencias

+ +

La noción principal de los algoritmos de recolección se basan en la noción de referencia. Dentro del contexto de gestión de memoria, se dice que un objeto hace referencia a otro si el primero tiene acceso al segundo (ya sea de forma implícita o explícita). Por ejemplo, un objeto de JavaScript guarda una referencia a su prototipo (referencia implícita) y a cualquiera de los valores de sus propiedades (referencia explícita)

+ +

Hay que mencionar que en este contexto la noción de "objeto" se refiere a algo más amplio que los objetos normales de JavaScript y que también incluye al ámbito de la función (o ámbito de léxico global).

+ +

Recolección de basura a través de conteo de referencias

+ +

Éste es el algoritmo de recolección más simple. Este algoritmo reduce la definición de "un objejo ya no es necesario" a "un objeto ya no tiene ningún otro objeto que lo referencíe". Un objeto es considerado recolectable si existen cero referencias hacia él.

+ +

Ejemplo

+ +
var o = {
+  a: {
+    b:2
+  }
+};
+// Se crean dos objetos. Uno es referenciado por el otro como
+// una de sus propiedades.
+// El otro es referenciado al ser asignado a la variable "o"
+// Ninguno puede ser recolectado.
+
+
+var o2 = o; // la variable "o2" es lo segundo en tener una
+            // referencia al objeto.
+o = 1;      // ahora el objeto solo tiene una referencia mediante
+            // la variable "o2"
+
+var oa = o2.a; // referencia a la propiedad "a" del objeto.
+               // ahora el objeto posee dos referencias, una como propiedad
+               // la otra como la variable "oa"
+
+o2 = "yo"; // el objeto original "o" ahora ya no tiene
+           // referencias a él. Podría ser recolectado.
+           // Sin embargo lo que había en la propiedad "a" aún
+           // esta refernciado en la variable "oa";
+           // no puede ser recolectado aún
+
+oa = null; // lo que estaba en la propiedad "a" del objeto original "o"
+           // ahora ya no tiene ninguna referencia.Puede ser recolectado.
+
+ +

Limitación : ciclos

+ +

Existe una limitación cuando se trata de ciclos.  En el siguiente ejemplo dos objetos son creados y se referencían entre ellos -por lo que se crea un ciclo. Ellos no saldrán del ámbito de la función después del llamado de la función, con lo que serían efectivamente "ya no son necesarios" y por lo cual ser liberados. Sin embargo, el algoritmo de conteo de referencias considera que ya que cada uno de los dos objetos está referenciado por lo menos una vez, ninguno podra ser recolectado. Este simple algoritmo tiene la limitación de que si un grupo de objetos se referencian a sí mismos (y forman un ciclo), nunca pasarán a "ya no ser necesitados" y no podrán ser recolectados nunca.

+ +
function f(){
+  var o = {};
+  var o2 = {};
+  o.a = o2; // o referencía o2
+  o2.a = o; // o2 referencía o
+
+  return "azerty";
+}
+
+f();
+// Dos objetos son creados y se referencían uno al otro creando un ciclo
+// Estan atrapados en el scope de la funcion después de la llamada
+// por lo que son inútiles fuera de la función y podrían ser recolectados.
+// Sin embargo, el algoritmo de conteo de referencias considera que como
+// ambos objetos estan referenciados (aunque sean a si mismos) ambos
+// siguen en uso y por lo tanto no pueden ser recolectados.
+
+
+ +

Ejemplo real aplicado

+ +

Internet Explorer 6 y 7 son conocidos por tener recolectores de basura por conteo de referencias para los objetos del DOM. Los Ciclos son un error común que pueden generar fugas de memoria (memory leaks) (art. en inglés):

+ +
var div;
+window.onload = function(){
+  div = document.getElementById("miDiv");
+  div.referenciaCircular = div;
+  div.muchosDatos = new Array(10000).join("*");
+};
+
+ +

En el ejemplo anterior, el elemento del DOM "miDiv" posée una referencia circular a sí mismo en la propiedad "referenciaCircular". Si la propiedad no es explícitamente removida o asignada con el valor null,  un algoritmo de conteo de referencias siempre va a dejar por lo menos una referencia intacta y va a mantener el elemento del DOM activo en memoria incluso cuando es removido del DOM. Si el objeto del DOM contiene una gran cantidad de datos (ejemplificado en la propiedad "muchosDatos"), la memoria consumida por estos datos nunca será liberada.

+ +

Algoritmo Mark-and-sweep (Marcado y barrido)

+ +

Este algoritmo reduce la definición de "un objeto ya no es necesitado" a "un objeto es inalcanzable"

+ +

Este algoritmo asume la noción de un grupo de objetos llamados objetos raíz (en JavaScript la raíz es el objeto global). Periódicamente el recolector empieza por estas raíces, encuentra todos los objetos que están referenciados por estas raíces, y luego todos los objetos referenciados de estos, etc. Empezando por las raíces, el recolector de esta forma encontrará todos los objetos que son alcanzables y recolectará los objetos inalcanzables.

+ +

Este algoritmo es mejor que el anterior ya que "un objeto tiene cero referencias" equivale al "objeto es inalcanzable". Esto no sucedía asi en el algoritmo anterior cuando se trataba de un ciclo.

+ +

Desde el 2012, todos los navegadores incluyen un recolector de basura basado en mark-and-sweep. Todas las mejoras realizadas en el campo de Recolección de basura en JavaScript (recolección generacional/incremental/concurrida/paralela) en los ultimos años son mejoras a la implementación del algoritmo, pero no mejoras sobre el algoritmo de recolección ni a la reducción de la definicion de cuando"un objeto ya no es necesario".

+ +

Los ciclos son problema del pasado

+ +

En el primer ejemplo, después de que la llamada a una función termina, los dos objetos ya no son referenciados por nada alcanzable desde el objeto global. De esta forma serán identificados como inalcanzables por el recolector de basura.

+ +

Lo mismo ocurre en el segundo ejemplo. Una vez que el elemento div y sus métodos se hacen inalcanzable desde los objetos raíz, ambos pueden ser recolectados a pesar de que estén referenciados los unos de los otros.

+ +

Limitación: los objetos necesarios se hacen inalcanzables de forma explícita.

+ +

Aunque esto está marcado como una limitación, se puede encontrar muy poco en la práctica. Ésta es la razón por la cuál la recolección de basura es poco tomada en cuenta.

+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/about/index.html b/files/es/web/javascript/reference/about/index.html new file mode 100644 index 0000000000..3382ea7dca --- /dev/null +++ b/files/es/web/javascript/reference/about/index.html @@ -0,0 +1,158 @@ +--- +title: Acerca de +slug: Web/JavaScript/Referencia/Acerca_de +tags: + - JavaScript +translation_of: Web/JavaScript/Reference/About +--- +
{{JsSidebar}}
+ +

Nuevas características en esta versión

+ +

JavaScript versión 1.5 provee las siguientes nuevas características y extensiones:

+ +

Errores en tiempo de ejecución
+ Los errores en tiempo de ejecución son ahora reportados como excepciones.

+ +

Extensiones para el formato de números
+ El formato de números ha sido extendido para incluir los métodos Number.prototype.toExponential, Number.prototype.toFixed y Number.prototype.toPrecision.

+ +

Extensiones de expresiones regulares
+ Las siguientes extensiones para expresiones regulares han sido añadidas:

+ + + +

Declaraciones condicionales de funciones
+ Las funciones ahora pueden ser declaradas al interior de una cláusula if.

+ +

Expresiones funcionales
+ Las funciones ahora pueden ser declaradas al interior de una expresión.

+ +

Cláusulas Catch múltiples
+ Las cláusulas Catch múltiples en una sentencia try...catch son soportadas.

+ +

Constantes
+ Constantes nominadas como sólo de lectura son soportadas. Esta característica está disponible únicamente en la implementación C de JavaScript.

+ +

Obtenedores y Modificadores (Getters and Setters)
+ Los editores de JavaScript ahora pueden añadir obtenedores {{ mediawiki.external('getters') }} y modificadores {{ mediawiki.external('setters') }} a sus objetos. Esta característica está disponible únicamente en la implementación C de JavaScript.

+ +

Qué debería saberse ya

+ +

Esta referencia asume que usted tiene a su respaldo el siguiente conocimiento básico:

+ + + +

Es beneficioso alguna experiencia en programación en lenguajes como C o Visual Basic, pero no es requerido.

+ +

Versiones de JavaScript

+ +

Cada versión del servidor Netscape Enterprise también soporta una versión diferente de JavaScript. Para ayudarle a escribir sus scripts para que sean compatibles con múltiples versiones de un servidor Enterprise, este manual lista la versión de JavaScript en la cual cada característica fue implementada.

+ +

La siguiente tabla lista las veriones de JavaScript soportadas por las diferentes versiones de Navegadores. Versiones de Navegadores anteriores a la 2.0 no soportan JavaScript.

+ +

JavaScript y Versiones de Navegadores

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Versión de JavaScriptVersión del Navegador
JavaScript 1.0Navegador 2.0
JavaScript 1.1Navegador 3.0
JavaScript 1.2Navegador 4.0-4.05
JavaScript 1.3Navegador 4.06-4.7x
JavaScript 1.4n/a
JavaScript 1.5Navegador 6.0 +

Mozilla 0.6x-0.9x
+ (navegador de código abierto)

+
JavaScript 1.6Mozilla Firefox 1.5
JavaScript 1.7Mozilla Firefox 2
+ +

Cada versión del servidor Netscape Enterprise también soporta una versión diferente de JavaScript. Para ayudarle a escribir sus scripts para que sean compatibles con múltiples versiones de un servidor Enterprise, este manual usa una abreviación para indicar la versión del servidor en el cual cada característica fue implementada.

+ +

JavaScript and Netscape Enterprise Server Versions

+ + + + + + + + + + + + + + + + +
AbbreviationEnterprise Server Version
NES 2.0Netscape Enterprise Server 2.0
NES 3.0Netscape Enterprise Server 3.0
+ +

Dónde encontrar información de JavaScript

+ +

La documentación de JavaScript incluye los siguientes libros:

+ + + +

Si usted es principiante con JavaScript, comience por la Guía de JavaScript y una vez que haya obtenido firmes entendimientos de sus fundamentos, debe seguir con la Referencia de JavaScript 1.5 para conseguir más detalles individuales acerca de los objetos y las sentencias.

+ +

Convenciones en el documento

+ +

Las aplicaciones JavaScript se ejecutan en muchos sistemas operativos; la información en este libro se aplica a todas las versiones. Las rutas {{ mediawiki.external('paths') }} para archivos y directorios están dadas en un formato Windows (con backslashes separando los nombres de directorios). Para las versiones Unix, la ruta de los directorios son las mismas, excepto que deben usarse slashes en vez de backslashes para separar los directorios.

+ +

Esta guía utiliza los localizadores uniformes de recursos {{ mediawiki.external('uniform resource locators') }} (URLs) de la siguiente forma:

+ +

http://servidor.dominio/path/file.html

+ +

En estos URLs, "servidor" representa el nombre del servidor en el cual puede ejecutar su aplicación (p.e., busqueda1, www), "dominio" representa un nombre de dominio de Internet (p.e., netscape.com, uiuc.edu), "path" representa la estructura de directorios en el servidor y "file.html" representa un nombre individual de archivo. En general, los items en italica en un URLs se mantienen en su lugar y los items en un tipo normal de fuente monospace son literales. Si su servidor tiene habilitada la capa de sockets seguros {{ mediawiki.external('Secure Sockets Layer') }} (SSL), deberá usar https en lugar de http en el URL.

+ +

Esta guía utiliza las siguientes convenciones de tipo de fuente:

+ + + +

 

diff --git a/files/es/web/javascript/reference/classes/constructor/index.html b/files/es/web/javascript/reference/classes/constructor/index.html new file mode 100644 index 0000000000..9ad7ec8de9 --- /dev/null +++ b/files/es/web/javascript/reference/classes/constructor/index.html @@ -0,0 +1,102 @@ +--- +title: constructor +slug: Web/JavaScript/Referencia/Classes/constructor +tags: + - Clases + - ECMAScript6 + - JavaScript +translation_of: Web/JavaScript/Reference/Classes/constructor +--- +
{{jsSidebar("Classes")}}
+ +

El método constructor es un metodo especial para crear e inicializar un objeto creado a partir de una clase.

+ +

El código fuente para este ejemplo interactivo se encuentra almacenado en un repositorio de Github. Si quieres contribuir al proyecto de ejemplos interactivos, por favor clona https://github.com/mdn/interactive-examples y envíanos una solicitud para extraer el código (pull request).

+ +

Sintaxis

+ +
constructor([argumentos]) { ... }
+ +

Descripción

+ +

Sólo puede haber un método especial con el nombre de "constructor" en una clase. Un error de sintaxis será lanzado, si la clase contiene más de una ocurrencia de un método constructor.

+ +

Un constructor puede utilizar la palabra clave super para llamar al constructor de una clase padre.

+ +

Si no especifica un método constructor, se utiliza un constructor predeterminado.

+ +

Ejemplos

+ +

Usando el método constructor

+ +

Este fragmento de código se toma de la classes sample (live demo).

+ +
class Square extends Polygon {
+  constructor(length) {
+    // Aquí, llama al constructor de la clase padre con sus longitudes
+    // contemplando la anchura y la altura del Polígono
+    super(length, length);
+    // Nota: En las clases derivadas, super() se debe llamar primero
+    // Se puede utilizar "this". Dejando esto causará un error de
+    //referencia.
+    this.name = 'Square';
+  }
+
+  get area() {
+    return this.height * this.width;
+  }
+
+  set area(value) {
+    this.area = value;
+  }
+}
+ +

Constructores por defecto

+ +

Si no especifica un método constructor, se utiliza un constructor predeterminado. Para las clases base, el constructor por defecto es:

+ +
constructor() {}
+
+ +

Para las clases derivadas, el constructor por defecto es:

+ +
constructor(...args) {
+  super(...args);
+}
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-static-semantics-constructormethod', 'Constructor Method')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-static-semantics-constructormethod', 'Constructor Method')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad del navegador

+ +

{{Compat("javascript.classes.constructor")}}

+ +

La tabla de compatibilidad de esta pagina está generada a partir de data estructurada. Si quieres contribuir a la data, por favor dirígete a https://github.com/mdn/browser-compat-data y envíanos una solicitud de extracción

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/classes/extends/index.html b/files/es/web/javascript/reference/classes/extends/index.html new file mode 100644 index 0000000000..6781c3801e --- /dev/null +++ b/files/es/web/javascript/reference/classes/extends/index.html @@ -0,0 +1,167 @@ +--- +title: extends +slug: Web/JavaScript/Referencia/Classes/extends +translation_of: Web/JavaScript/Reference/Classes/extends +--- +
{{jsSidebar("Classes")}}
+ +

La palabra clave extends es usada en la declaración o expresión de clases, para crear una clase hija de otra.

+ +

Sintaxis

+ +
class ChildClass extends ParentClass { ... }
+ +

Descripción

+ +

La palabra clave extends se puede usar para crear una subclase a partir de clases personalizadas, así como sus objetos incorporados.

+ +

La propiedad .prototype de la nueva subclase debe ser un {{jsxref("Object")}} o {{jsxref("null")}}.

+ +

Ejemplos

+ +

Como usar extends

+ +

El primer ejemplo crea una clase con el nombre Square a partir de una clase llamada Polygon. Este ejemplo ha sido extraido del siguiente live demo (código fuente).

+ +
class Square extends Polygon {
+  constructor(length) {
+    // Aquí se invoca el constructor de la clase padre con longitud
+    // proporcionada por el ancho y alto de Polygon
+    super(length, length);
+    // Nota: En las clases extendidas, se debe llamar a super()
+    // antes de poder usar 'this'. El no hacerlo provocará un reference error.
+    this.name = 'Square';
+  }
+
+  get area() {
+    return this.height * this.width;
+  }
+
+  set area(value) {
+    this.area = value;
+  }
+}
+ +

Como usar extends con objetos incorporados

+ +

Este ejemplo extiende el objeto incorporado {{jsxref("Date")}}. Este ejemplo ha sido extraido del siguiente live demo (código fuente).

+ +
class myDate extends Date {
+  constructor() {
+    super();
+  }
+
+  getFormattedDate() {
+    var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
+    return this.getDate() + "-" + months[this.getMonth()] + "-" + this.getFullYear();
+  }
+}
+ +

Extendiendo de null

+ +

Extender de {{jsxref("null")}} es como hacerlo de una clase normal, excepto que el objeto prototype no hereda de {{jsxref("Object.prototype")}}.

+ +
class nullExtends extends null {
+  constructor() {}
+}
+
+Object.getPrototypeOf(nullExtends); // Function.prototype
+Object.getPrototypeOf(nullExtends.prototype) // null
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
{{SpecName('ES6', '#sec-class-definitions', 'extends')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-class-definitions', 'extends')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad en navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(42.0)}}{{CompatGeckoDesktop(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Array subclassing{{CompatChrome(43.0)}}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}{{CompatGeckoMobile(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(42.0)}}
Array subclassing{{CompatNo}}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(43.0)}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/classes/index.html b/files/es/web/javascript/reference/classes/index.html new file mode 100644 index 0000000000..0f108dda68 --- /dev/null +++ b/files/es/web/javascript/reference/classes/index.html @@ -0,0 +1,372 @@ +--- +title: Clases +slug: Web/JavaScript/Referencia/Classes +tags: + - Classes + - ECMAScript 2015 + - Herencia + - Intermedio + - JavaScript + - NeedsContent + - NeedsTranslation + - Reference + - TopicStub +translation_of: Web/JavaScript/Reference/Classes +--- +
{{JsSidebar("Classes")}}
+ +

Las clases de javascript, introducidas en ECMAScript 2015, son una mejora sintáctica sobre la herencia basada en prototipos de JavaScript. La sintaxis de las clases no introduce un nuevo modelo de herencia orientada a objetos en JavaScript. Las clases de JavaScript proveen una sintaxis mucho más clara y simple para crear objetos y lidiar con la herencia.

+ +

Definiendo clases

+ +

Las clases son "funciones especiales", como las expresiones de funciones y declaraciones de funciones, la sintaxis de una clase tiene dos componentes: expresiones de clases y declaraciones de clases.

+ +

Declaración de clases

+ +

Una manera de definir una clase es mediante una declaración de clase. Para declarar una clase, se utiliza la palabra reservada class y un nombre para la clase "Rectangulo".

+ +
class Rectangulo {
+  constructor(alto, ancho) {
+    this.alto = alto;
+    this.ancho = ancho;
+  }
+}
+ +

Alojamiento

+ +

Una importante diferencia entre las declaraciones de funciones y las declaraciones de clases es que las declaraciones de funciones son alojadas y las declaraciones de clases no lo son. En primer lugar necesitas declarar tu clase y luego acceder a ella, de otro modo el ejemplo de código siguiente arrojará un {{jsxref("ReferenceError")}}:

+ +
const p = new Rectangle(); // ReferenceError
+
+class Rectangle {}
+
+ +

Expresiones de clases

+ +

Una expresión de clase es otra manera de definir una clase. Las expresiones de clase pueden ser nombradas o anónimas. El nombre dado a la expresión de clase nombrada es local dentro del cuerpo de la misma.

+ +
// Anonima
+let Rectangulo = class {
+  constructor(alto, ancho) {
+    this.alto = alto;
+    this.ancho = ancho;
+  }
+};
+
+console.log(Rectangulo.name);
+// output: "Rectangulo"
+
+// Nombrada
+let Rectangulo = class Rectangulo2 {
+  constructor(alto, ancho) {
+    this.alto = alto;
+    this.ancho = ancho;
+  }
+};
+console.log(Rectangulo.name);
+// output: "Rectangulo2"
+
+ +
+

Nota: Las expresiones de clase están sujetas a las mismas restricciones de elevación que se describen en la sección {{anch("Class declarations")}}.

+
+ +

Cuerpo de la clase y definición de métodos

+ +

El contenido de una clase es la parte que se encuentra entre las llaves {}. Este es el lugar se definen los miembros de clase, como los métodos o constructores.

+ +

Modo estricto

+ +

El cuerpo de las declaraciones de clase y las expresiones de clase son ejecutadas en modo estricto. En otras palabras, el código escrito aquí está sujeto a una sintaxis más estricta para aumentar el rendimiento, se arrojarán algunos errores silenciosos y algunas palabras clave están reservadas para versiones futuras de ECMAScript.

+ +

Constructor

+ +

El método constructor es un método especial para crear e inicializar un objeto creado con una clase. Solo puede haber un método especial con el nombre "constructor" en una clase. Si esta contiene mas de una ocurrencia del método constructor, se arrojará un Error {{jsxref("SyntaxError")}}

+ +

Un constructor puede usar la palabra reservada super para llamar al constructor de una superclase

+ +

Métodos prototipo

+ +

Vea también métodos definidos.

+ +
class Rectangulo {
+  constructor (alto, ancho) {
+    this.alto = alto;
+    this.ancho = ancho;
+  }
+  // Getter
+  get area() {
+     return this.calcArea();
+   }
+  // Método
+  calcArea () {
+    return this.alto * this.ancho;
+  }
+}
+
+const cuadrado = new Rectangulo(10, 10);
+
+console.log(cuadrado.area); // 100
+ +
+ +

Métodos estáticos

+ +

La palabra clave static define un método estático para una clase. Los métodos estáticos son llamados sin instanciar su clase y no pueden ser llamados mediante una instancia de clase. Los métodos estáticos son a menudo usados para crear funciones de utilidad para una aplicación.

+ +
class Punto {
+  constructor ( x , y ){
+    this.x = x;
+    this.y = y;
+  }
+
+  static distancia ( a , b) {
+    const dx = a.x - b.x;
+    const dy = a.y - b.y;
+
+    return Math.sqrt ( dx * dx + dy * dy );
+  }
+}
+
+const p1 = new Punto(5, 5);
+const p2 = new Punto(10, 10);
+
+console.log (Punto.distancia(p1, p2)); // 7.0710678118654755
+ +

"Boxing" con prototipos y métodos estáticos

+ +

Cuando un método estático o método del prototipo es llamado sin un valor para "this" (o con "this" como booleano, cadena, número, undefined o null), entonces el valor de "this" será undefined dentro de la funciona llamada. Autoboxing no ocurrirá. El comportamiento será igual inclusive si se escribe el código en modo no estricto.

+ +
class Animal {
+  hablar() {
+    return this;
+  }
+  static comer() {
+    return this;
+  }
+}
+
+let obj = new Animal();
+obj.hablar(); // Animal {}
+let hablar = obj.hablar;
+hablar(); // undefined
+
+Animal.comer() // class Animal
+let comer = Animal.comer;
+comer(); // undefined
+ +

Si se escribe el código del cuadro superior usando clases función tradicionales, entonces autoboxing ocurrirara porque tomará valor de "this" sobre la función que es llamada.

+ +
function Animal() { }
+
+Animal.prototype.hablar = function(){
+  return this;
+}
+
+Animal.comer = function() {
+  return this;
+}
+
+let obj = new Animal();
+let hablar = obj.hablar;
+hablar(); // global object
+
+let hablar = Animal.hablar;
+hablar(); // global object
+ +

Subclases con extends

+ +

La palabra clave extends es usada en declaraciones de clase o expresiones de clase para crear una clase hija.

+ +
class Animal {
+  constructor(nombre) {
+    this.nombre = nombre;
+  }
+
+  hablar() {
+    console.log(this.nombre + ' hace un ruido.');
+  }
+}
+
+class Perro extends Animal {
+  hablar() {
+    console.log(this.nombre + ' ladra.');
+  }
+}
+ +

También se pueden extender las clases tradicionales basadas en funciones:

+ +
function Animal (nombre) {
+  this.nombre = nombre;
+}
+Animal.prototype.hablar = function () {
+  console.log(this.nombre + 'hace un ruido.');
+}
+
+class Perro extends Animal {
+  hablar() {
+    super.hablar();
+    console.log(this.nombre + ' ladra.');
+  }
+}
+
+var p = new Perro('Mitzie');
+p.hablar();
+ +

Fijarse que las clases no pueden extender objectos regulares (literales). Si se quiere heredar de un objecto regular, se debe user {{jsxref("Object.setPrototypeOf()")}}::

+ +
var Animal = {
+  hablar() {
+    console.log(this.nombre + 'hace ruido.');
+  }
+};
+
+class Perro {
+  constructor(nombre) {
+    this.nombre = nombre;
+  }
+  hablar() {
+    console.log(this.nombre + ' ladra.');
+  }
+}
+
+Object.setPrototypeOf(Perro.prototype, Animal);
+
+var d = new Perro('Mitzie');
+d.hablar();
+ +

Especies

+ +

Quizás se quiera devolver objetos {{jsxref("Array")}} derivados de la clase array MyArray. El patron species permite sobreescribir constructores por defecto.

+ +

Por ejemplo, cuando se usan metodos del tipo {{jsxref("Array.map", "map()")}} que devuelven el constructor por defecto, se quiere que esos métodos devuelvan un objeto padre Array, en vez de MyArray. El símbolo {{jsxref("Symbol.species")}} permite hacer:

+ +
class MyArray extends Array {
+  // Sobre escribe species sobre el constructor padre Array
+  static get [Symbol.species]() { return Array; }
+}
+
+var a = new MyArray(1,2,3);
+var mapped = a.map(x => x * x);
+
+console.log(mapped instanceof MyArray); // false
+console.log(mapped instanceof Array);   // true
+
+ +

Llamadas a súperclases con super

+ +

La palabra clave super es usada para llamar funciones del objeto padre.

+ +
class Gato {
+  constructor(nombre) {
+    this.nombre = nombre;
+  }
+
+  hablar() {
+    console.log(this.nombre + ' hace ruido.');
+  }
+}
+
+class Leon extends Gato {
+  hablar() {
+    super.hablar();
+    console.log(this.nombre + ' maulla.');
+  }
+}
+ +

Mix-ins

+ +

Subclases abstractas or mix-ins son plantillas de clases. Una clase ECMAScript solo puede tener una clase padre, con lo cual la herencia multiple no es posible. La funcionalidad debe ser proporcionada por la clase padre.

+ +

Una función con una clase padre como entrada y una subclase extendiendo la clase padre como salida puede ser usado para implementar mix-ins en EMCAScript:

+ +
var calculatorMixin = Base => class extends Base {
+  calc() { }
+};
+
+var randomizerMixin = Base => class extends Base {
+  randomize() { }
+};
+ +

Una clase que use este método puede ser escrita tal que así:

+ +
class Foo { }
+class Bar extends calculatorMixin(randomizerMixin(Foo)) { }
+ +

Especificaciones

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES2015')}}Initial definition.
+ +

Compatibilidad entre navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(42.0)}}Available in the Nightly channel only (since February 2015){{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}Available in the Nightly channel only (since February 2015){{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(42.0)}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/classes/private_class_fields/index.html b/files/es/web/javascript/reference/classes/private_class_fields/index.html new file mode 100644 index 0000000000..5826cc125b --- /dev/null +++ b/files/es/web/javascript/reference/classes/private_class_fields/index.html @@ -0,0 +1,201 @@ +--- +title: Private class fields +slug: Web/JavaScript/Referencia/Classes/Private_class_fields +translation_of: Web/JavaScript/Reference/Classes/Private_class_fields +--- +
+

Las propiedades de la clase son públicas de forma predeterminada y se pueden examinar o modificar fuera de la clase. Sin embargo, existe una propuesta experimental  para permitir la definición de campos de clase privados utilizando un #prefijo hash .

+
+ +

Syntax

+ +
class ClassWithPrivateField {
+  #privateField
+}
+
+class ClassWithPrivateMethod {
+  #privateMethod() {
+    return 'hello world'
+ }
+}
+
+class ClassWithPrivateStaticField {
+  static #PRIVATE_STATIC_FIELD
+}
+
+ +

Campos estáticos privados 

+ +

Los campos privados son accesibles en el constructor de clases desde dentro de la propia declaración de clases.

+ +

La limitación de las variables estáticas que se llaman solo por métodos estáticos aún se mantiene

+ +
class ClassWithPrivateStaticField {
+  static #PRIVATE_STATIC_FIELD
+
+  static publicStaticMethod() {
+    ClassWithPrivateStaticField.#PRIVATE_STATIC_FIELD = 42
+    return ClassWithPrivateStaticField.#PRIVATE_STATIC_FIELD
+  }
+}
+
+console.assert(ClassWithPrivateStaticField.publicStaticMethod() === 42)
+ +

Los campos estáticos privados se agregan al constructor de la clase en el momento de la evaluación de la clase.

+ +

Existe una restricción de procedencia en los campos estáticos privados. Solo la clase que define el campo estático privado puede acceder al campo.

+ +

Esto puede conducir a un comportamiento inesperado al usar this.

+ +
class BaseClassWithPrivateStaticField {
+  static #PRIVATE_STATIC_FIELD
+
+  static basePublicStaticMethod() {
+    this.#PRIVATE_STATIC_FIELD = 42
+    return this.#PRIVATE_STATIC_FIELD
+  }
+}
+
+class SubClass extends BaseClassWithPrivateStaticField { }
+
+let error = null
+
+try {
+  SubClass.basePublicStaticMethod()
+} catch(e) { error = e}
+
+console.assert(error instanceof TypeError)
+
+ +

Campos de instancia privados

+ +

Los campos de instancia privados se declaran con # nombres  (pronunciados " nombres hash "), que son identificadores con el prefijo #. El #es una parte del nombre propio. También se utiliza para la declaración y el acceso.

+ +

La encapsulación es impuesta por el lenguaje. Es un error de sintaxis referirse a #nombres que están fuera del alcance.

+ +
class ClassWithPrivateField {
+  #privateField
+
+  constructor() {
+    this.#privateField = 42
+    this.#randomField = 666 // Syntax error
+  }
+}
+
+const instance = new ClassWithPrivateField()
+instance.#privateField === 42 // Syntax error
+
+ +

Métodos privados

+ +

Métodos estáticos privados

+ +

Al igual que su equivalente público, los métodos estáticos privados se invocan en la propia clase, no en instancias de la clase. Al igual que los campos estáticos privados, solo se puede acceder a ellos desde dentro de la declaración de clase.

+ +

Los métodos estáticos privados pueden ser funciones generadoras, asíncronas y asíncronas.

+ +
class ClassWithPrivateStaticMethod {
+    static #privateStaticMethod() {
+        return 42
+    }
+
+    static publicStaticMethod1() {
+        return ClassWithPrivateStaticMethod.#privateStaticMethod();
+    }
+
+    static publicStaticMethod2() {
+        return this.#privateStaticMethod();
+    }
+}
+
+console.assert(ClassWithPrivateStaticMethod.publicStaticMethod1() === 42);
+console.assert(ClassWithPrivateStaticMethod.publicStaticMethod2() === 42);
+
+ +

Esto puede conducir a un comportamiento inesperado al usar this. En el siguiente ejemplo se thishace referencia a la Derivedclase (no a la Baseclase) cuando intentamos llamar Derived.publicStaticMethod2(), y por lo tanto exhibe la misma "restricción de procedencia" que se mencionó anteriormente:

+ +
class Base {
+    static #privateStaticMethod() {
+        return 42;
+    }
+    static publicStaticMethod1() {
+        return Base.#privateStaticMethod();
+    }
+    static publicStaticMethod2() {
+        return this.#privateStaticMethod();
+    }
+}
+
+class Derived extends Base {}
+
+console.log(Derived.publicStaticMethod1()); // 42
+console.log(Derived.publicStaticMethod2()); // TypeError
+
+ +

Métodos de instancia privada

+ +

Los métodos de instancia privada son métodos disponibles en instancias de clase cuyo acceso está restringido de la misma manera que los campos de instancia privada.

+ +
class ClassWithPrivateMethod {
+  #privateMethod() {
+    return 'hello world'
+  }
+
+  getPrivateMessage() {
+      return this.#privateMethod()
+  }
+}
+
+const instance = new ClassWithPrivateMethod()
+console.log(instance.getPrivateMessage())
+// expected output: "hello worl​d"
+ +

Los métodos de instancia privada pueden ser funciones generadoras, asíncronas o asíncronas. Los getters y setters privados también son posibles:

+ +
class ClassWithPrivateAccessor {
+  #message
+
+  get #decoratedMessage() {
+    return `✨${this.#message}✨`
+  }
+  set #decoratedMessage(msg) {
+    this.#message = msg
+  }
+
+  constructor() {
+    this.#decoratedMessage = 'hello world'
+    console.log(this.#decoratedMessage)
+  }
+}
+
+new ClassWithPrivateAccessor();
+// expected output: "✨hello worl​d✨"
+
+ +

Specifications

+ + + + + + + + + + + + +
Specification
{{SpecName('Public and private instance fields', '#prod-FieldDefinition', 'FieldDefinition')}}
+ +

Browser compatibility

+ + + +

{{Compat("javascript.classes.private_class_fields")}}

+ +

See also

+ + diff --git a/files/es/web/javascript/reference/classes/public_class_fields/index.html b/files/es/web/javascript/reference/classes/public_class_fields/index.html new file mode 100644 index 0000000000..446c63c001 --- /dev/null +++ b/files/es/web/javascript/reference/classes/public_class_fields/index.html @@ -0,0 +1,386 @@ +--- +title: Class fields +slug: Web/JavaScript/Referencia/Classes/Class_fields +tags: + - Clases + - JavaScript +translation_of: Web/JavaScript/Reference/Classes/Public_class_fields +--- +
{{JsSidebar("Classes")}}
+ +
Las declaraciones de campos públicos y privados son una característica experimental (en estado 3) propuesta por el TC39, el comite de estandares de JavaScript. El soporte y funcionamiento en navegadores es limitado, pero la funcionalidad puede ser usada a través de un paso durante el proceso del build por medio de sistemas como Babel. Revise compat information mas abajo.
+ +

Los campos públicos y estáticos son propieades editables, enumerables, y configurables. A diferencia de su contraparte privada, estos participan en la herencia de prototipo.

+ +

Sintaxis

+ +
class ClassWithInstanceField {
+  instanceField = 'instance field'
+}
+
+class ClassWithStaticField {
+  static staticField = 'static field'
+}
+
+class ClassWithPublicInstanceMethod {
+  publicMethod() {
+    return 'hello world'
+  }
+}
+
+ +

Ejemplos

+ +

Campos públicos estáticos

+ +

Los campos estáticos públicos son útiles cuando desea que exista un campo solo una vez por clase, no en cada instancia de clase que cree. Esto es útil para cachés, configuración fija o cualquier otro dato que no necesite replicarse en todas las instancias.

+ +

Los campos estáticos públicos se declaran utilizando la palabra clave static. Se agregan al constructor de la clase en el momento de la evaluación de la clase utilizando {{jsxref("Global_Objects/Object/defineProperty", "Object.defineProperty()")}}. Se accede nuevamente desde el constructor de la clase.

+ +
class ClassWithStaticField {
+  static staticField = 'static field';
+}
+
+console.log(ClassWithStaticField.staticField);
+// expected output: "static field"​
+
+ +

Campos sin inicializadores son inicializados como undefined.

+ +
class ClassWithStaticField {
+  static staticField;
+}
+
+console.assert(ClassWithStaticField.hasOwnProperty('staticField'));
+console.log(ClassWithStaticField.staticField);
+// expected output: "undefined"
+ +

Los campos estáticos públicos no se reinicializan en las subclases, pero se puede acceder a ellos a través de la cadena de prototipo.

+ +
class ClassWithStaticField {
+  static baseStaticField = 'base field';
+}
+
+class SubClassWithStaticField extends ClassWithStaticField {
+  static subStaticField = 'sub class field';
+}
+
+console.log(SubClassWithStaticField.subStaticField);
+// expected output: "sub class field"
+
+console.log(SubClassWithStaticField.baseStaticField);
+// expected output: "base field"
+ +

Cuando se inicializasn campos this se refiere al constuctor de clase. Tambien puede ser referenciado por nombre, y se puede usar super para obtener el constructor de la superclase si lo tiene.

+ +
class ClassWithStaticField {
+  static baseStaticField = 'base static field';
+  static anotherBaseStaticField = this.baseStaticField;
+
+  static baseStaticMethod() { return 'base static method output'; }
+}
+
+class SubClassWithStaticField extends ClassWithStaticField {
+  static subStaticField = super.baseStaticMethod();
+}
+
+console.log(ClassWithStaticField.anotherBaseStaticField);
+// expected output: "base static field"
+
+console.log(SubClassWithStaticField.subStaticField);
+// expected output: "base static method output"
+
+ +

Campos de instancia públicos

+ +

Los campos de instancia públicos existen en cada instancia de la clase que se ha creado. Al declarar un campo publico podemos asegurarnos que dicho campo siempre esta presente, y la definicion de la clase esta auto-documentada.

+ +

Los campos de instancia públicos son agregados with Object.defineProperty ya sea a la hora de ser construido en la clase base (antes que el metodo constructor corra), o justo despues que  super() returne en una subclase.

+ +
class ClassWithInstanceField {
+  instanceField = 'instance field';
+}
+
+const instance = new ClassWithInstanceField();
+console.log(instance.instanceField);
+// expected output: "instance field"
+ +

Campos sin inicializadores son inicilizados en undefined.

+ +
class ClassWithInstanceField {
+  instanceField;
+}
+
+const instance = new ClassWithInstanceField();
+console.assert(instance.hasOwnProperty('instanceField'));
+console.log(instance.instanceField);
+// expected output: "undefined"
+ +

Al igual que las propiedades, los nombres de campos pueden ser calculados (computed)

+ +
const PREFIX = 'prefix';
+
+class ClassWithComputedFieldName {
+    [`${PREFIX}Field`] = 'prefixed field';
+}
+
+const instance = new ClassWithComputedFieldName();
+console.log(instance.prefixField);
+// expected output: "prefixed field"
+ +

Cuando se inicializan campos this se refiere a la instancia de clase que esta siendo construida. Al igual que con los metodos publicos de instancia, si usted esta en una subclase puede acceder a al prototypo de la superclase usando super.

+ +
class ClassWithInstanceField {
+  baseInstanceField = 'base field';
+  anotherBaseInstanceField = this.baseInstanceField;
+  baseInstanceMethod() { return 'base method output'; }
+}
+
+class SubClassWithInstanceField extends ClassWithInstanceField {
+  subInstanceField = super.baseInstanceMethod();
+}
+
+const base = new ClassWithInstanceField();
+const sub = new SubClassWithInstanceField();
+
+console.log(base.anotherBaseInstanceField);
+// expected output: "base field"
+
+console.log(sub.subInstanceField);
+// expected output: "base method output"
+ +

Métodos públicos

+ +

Métodos públicos estáticos

+ +

La palabra reservada static define un metodo estático para una clase. Los métodos estáticos no son llamads usando una instancia de la clase. En lugar de eso son llamados sobre la clase como tal. Estos metodos estáticos son frecuentemente funciones utilitarias que permiten por ejemplo la creación y clonacion de objetos.

+ +
class ClassWithStaticMethod {
+  static staticMethod() {
+    return 'static method has been called.';
+  }
+}
+
+console.log(ClassWithStaticMethod.staticMethod());
+// expected output: "static method has been called."
+ +

Los métodos estáticos son agregados al constructor de la clase usando Object.defineProperty duranten el evaluación de la clase. Estos metodos son "escribibles" (writable), no-enumerables y configurables.

+ +

Métodos públicos de instancia

+ +

Como su nombre lo indica, los métodos publicos de instancia son metodos que estan disponibles para cualquier instancia de una clase.

+ +
class ClassWithPublicInstanceMethod {
+  publicMethod() {
+    return 'hello world';
+  }
+}
+
+const instance = new ClassWithPublicInstanceMethod();
+console.log(instance.publicMethod());
+// expected output: "hello worl​d"
+ +

Los métodos públicos de instancia son agregeados al prototipo de clase durante la evaluacón de la clase usando Object.defineProperty. Estos metodos son "escribibles" (writable), no-enumerables y configurables.

+ +

Usted puede usar un generador, async y funciones generadoras asincronas

+ +
class ClassWithFancyMethods {
+  *generatorMethod() { }
+  async asyncMethod() { }
+  async *asyncGeneratorMethod() { }
+}
+ +

Dentro de un metodo de instancia, this se referie a la instancia como tal. En las subclases, super le permite acceder el prototipo de la superclase, permitiendo así llamar métodos de la superclase.

+ +
class BaseClass {
+  msg = 'hello world';
+  basePublicMethod() {
+    return this.msg;
+  }
+}
+
+class SubClass extends BaseClass {
+  subPublicMethod() {
+    return super.basePublicMethod();
+  }
+}
+
+const instance = new SubClass();
+console.log(instance.subPublicMethod());
+// expected output: "hello worl​d"
+
+ +

Existen metodos especiales llamados "Getters" y "Setters" que se vinculan a una propiedad de una clase, y que son ejecutados o llamados cuando esa propiedad es consultada o moditficada. Puede usar las palabras reservaddas get y set para declarar una instancia pública de "getter" or "setter". [N.T. preferí decir Getter/Setter que decir Consultadores/Mofificadores]

+ +
class ClassWithGetSet {
+  #msg = 'hello world';
+  get msg() {
+    return this.#msg;
+  }
+  set msg(x) {
+    this.#msg = `hello ${x}`;
+  }
+}
+
+const instance = new ClassWithGetSet();
+console.log(instance.msg);
+// expected output: "hello worl​d"
+
+instance.msg = 'cake';
+console.log(instance.msg);
+// expected output: "hello cake"
+
+ +

Campos privados

+ +

Campos privados estáticos

+ +

Private fields are accessible on the class constructor from inside the class declaration itself.

+ +

The limitation of static variables being called by only static methods still holds.

+ +
class ClassWithPrivateStaticField {
+  static #PRIVATE_STATIC_FIELD;
+
+  static publicStaticMethod() {
+    ClassWithPrivateStaticField.#PRIVATE_STATIC_FIELD = 42;
+    return ClassWithPrivateStaticField.#PRIVATE_STATIC_FIELD;
+  }
+}
+
+assert(ClassWithPrivateStaticField.publicStaticMethod() === 42);
+ +

Private static fields are added to the class constructor at class evaluation time.

+ +

There is a provenance restriction on private static fields. Only the class which defines the private static field can access the field. This can lead to unexpected behaviour when using this

+ +
class BaseClassWithPrivateStaticField {
+  static #PRIVATE_STATIC_FIELD;
+
+  static basePublicStaticMethod() {
+    this.#PRIVATE_STATIC_FIELD = 42;
+    return this.#PRIVATE_STATIC_FIELD;
+  }
+}
+
+class SubClass extends BaseClassWithPrivateStaticField { }
+
+assertThrows(() => SubClass.basePublicStaticMethod(), TypeError);
+
+ +

Campos privados de instancia

+ +

Private instance fields are declared with # names ( pronounced "hash names"), which are identifiers prefixed with #. The # is a part of the name itself and is used for declaration and accessing as well.

+ +

The encapsulation is enforced by the language. It is a syntax error to refer to # names not in scope.

+ +
class ClassWithPrivateField {
+  #privateField;
+
+  constructor() {
+    this.#privateField = 42;
+    this.#randomField = 666; # Syntax error
+  }
+}
+
+const instance = new ClassWithPrivateField();
+instance.#privateField === 42; // Syntax error
+
+ +

Métodos privados

+ +

Métodos privados estáticos

+ +

Like their public equivalent, private static methods are called on the class, not instances of the class. Like private static fields, they are only accessible from inside the class declaration.

+ +

Private static methods may be generator, async and async generator functions.

+ +
class ClassWithPrivateStaticMethod {
+    static #privateStaticMethod() {
+        return 42;
+    }
+
+    static publicStaticMethod() {
+        return ClassWithPrivateStaticMethod.#privateStaticMethod();
+    }
+}
+
+assert(ClassWithPrivateStaticField.publicStaticMethod() === 42);
+
+ +

Métodos privados de instancia

+ +

Private instance methods are methods available on class instances whose access is restricted in the same manner as private instance fields.

+ +
class ClassWithPrivateMethod {
+  #privateMethod() {
+    return 'hello world';
+  }
+
+  getPrivateMessage() {
+      return #privateMethod();
+  }
+}
+
+const instance = new ClassWithPrivateMethod();
+console.log(instance.getPrivateMessage());
+// expected output: "hello worl​d"
+ +

Private instance methods may be generator, async or async generator functions. Private getters and setters are also possible:

+ +
class ClassWithPrivateAccessor {
+  #message;
+
+  get #decoratedMessage() {
+    return `✨${this.#message}✨`;
+  }
+  set #decoratedMessage(msg) {
+    this.#message = msg;
+  }
+
+  constructor() {
+    this.#decoratedMessage = 'hello world';
+    console.log(this.#decoratedMessage);
+  }
+}
+
+new ClassWithPrivateAccessor();
+// expected output: "✨hello worl​d✨"
+
+ +

Especificaciones

+ + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
FieldDefinition productionStage 3
+ +

Compatibilidad de navegadores

+ +

Campos públicos de clse

+ + + +

{{Compat("javascript.classes.public_class_fields")}}

+ +

Campos privados de clase

+ + + +

{{Compat("javascript.classes.private_class_fields")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/classes/static/index.html b/files/es/web/javascript/reference/classes/static/index.html new file mode 100644 index 0000000000..92f972f171 --- /dev/null +++ b/files/es/web/javascript/reference/classes/static/index.html @@ -0,0 +1,118 @@ +--- +title: static +slug: Web/JavaScript/Referencia/Classes/static +translation_of: Web/JavaScript/Reference/Classes/static +--- +
{{jsSidebar("Classes")}}
+ +

La palabra clave static define un método estático para una clase.

+ +

Sintaxis

+ +
static methodName() { ... }
+ +

Descripción

+ +

Los métodos estáticos son llamados sin instanciar su clase. Son habitualmente utilizados para crear funciones para una aplicación.

+ +

Ejemplos

+ +

El siguiente ejemplo demuestra varias cosas. Una de ellas es cómo un método estático es implementado en una clase, otra es que una clase con un miembro estático puede ser sub-claseada. Finalmente demuestra cómo un método estático puede (y cómo no) ser llamado.

+ +
class Tripple {
+  static tripple(n) {
+    n = n || 1;
+    return n * 3;
+  }
+}
+
+class BiggerTripple extends Tripple {
+  static tripple(n) {
+    return super.tripple(n) * super.tripple(n);
+  }
+}
+
+console.log(Tripple.tripple());
+console.log(Tripple.tripple(6));
+console.log(BiggerTripple.tripple(3));
+var tp = new Tripple();
+console.log(tp.tripple()); //Logs 'tp.tripple is not a function'.
+ +

Especificaciones

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES6')}}Initial definition.
+ +

Compatibilidad de navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(42.0)}}Available in the Nightly channel only (since February 2015){{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatChrome(42.0)}}Available in the Nightly channel only (since February 2015){{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

 

+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/deprecated_and_obsolete_features/index.html b/files/es/web/javascript/reference/deprecated_and_obsolete_features/index.html new file mode 100644 index 0000000000..f0f18cfbd7 --- /dev/null +++ b/files/es/web/javascript/reference/deprecated_and_obsolete_features/index.html @@ -0,0 +1,292 @@ +--- +title: Características en desuso y obsoletas +slug: Web/JavaScript/Referencia/Características_Desaprobadas +tags: + - Deprecated + - JavaScript + - Obsolete +translation_of: Web/JavaScript/Reference/Deprecated_and_obsolete_features +--- +

{{JsSidebar("More")}}

+ + +

Esta página enumera las características de JavaScript que están en desuso (es decir, todavía están disponibles pero se planea eliminarlas) y obsoletas (es decir, que ya no se pueden usar).

+ +

Características en desuso

+ +

Estas características desaconsejadas aún se pueden usar, pero se deben usar con precaución porque se espera que se eliminen por completo en el futuro. Deberías trabajar para sustituirlas con las versiones recomendadas en tu código.

+ +

Propiedades de RegExp

+ +

las siguientes propiedades están en desuso. Esto no afecta su uso en el {{jsxref("String.replace", "reemplazo de cadenas", "", 1)}}:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropiedadDescripción
{{jsxref("RegExp.n", "$1-$9")}} +

Coincidencias de subcadenas entre paréntesis, si las hay.
+ Precaución: El uso de estas propiedades puede generar problemas, ya que las extensiones del navegador pueden modificarlas. ¡Evítalas!

+
{{jsxref("RegExp.input", "$_")}}Consulta entrada.
{{jsxref("RegExp.multiline", "$*")}}Consulta multiline.
{{jsxref("RegExp.lastMatch", "$&")}}Consulta lastMatch.
{{jsxref("RegExp.lastParen", "$+")}}Consulta lastParen.
{{jsxref("RegExp.leftContext", "$`")}}Consulta leftContext.
{{jsxref("RegExp.rightContext", "$'")}}Consulta rightContext.
{{jsxref("RegExp.input", "input")}}La cadena contra la que se compara una expresión regular.
{{jsxref("RegExp.lastMatch", "lastMatch")}}Los últimos caracteres coincidentes.
{{jsxref("RegExp.lastParen", "lastParen")}}La última coincidencia de subcadena entre paréntesis, si la hubiera.
{{jsxref("RegExp.leftContext", "leftContext")}}La subcadena que precede a la coincidencia más reciente.
{{jsxref("RegExp.rightContext", "rightContext")}}La subcadena que sigue a la coincidencia más reciente.
+ +

Las siguientes ahora son propiedades de instancias de RegExp, ya no del objeto RegExp:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropiedadDescripción
{{jsxref("RegExp.global", "global")}}Si se debe probar o no la expresión regular con todas las posibles coincidencias en una cadena, o solo con la primera.
{{jsxref("RegExp.ignoreCase", "ignoreCase")}}Si se deben o no ignorar las mayúsculas/minúsculas al intentar una coincidencia en una cadena.
{{jsxref("RegExp.lastIndex", "lastIndex")}}El índice en el que comenzará la siguiente coincidencia.
{{jsxref("RegExp.multiline", "multiline")}}Si buscar o no en cadenas de varias líneas.
{{jsxref("RegExp.source", "source")}}El texto del patrón.
+ +

Métodos RegExp

+ + + +

Propiedades de función

+ + + +

Generador heredado

+ + + +

Iterador

+ + + +

Métodos de objeto

+ + + +

Métodos de Date

+ + + +

Funciones

+ + + +

Proxy

+ + + +

Secuencias de escape

+ + + +

Métodos de cadena

+ + + +

Características obsoletas

+ +

Estas características obsoletas se han eliminado por completo de JavaScript y ya no se pueden utilizar a partir de la versión indicada de JavaScript.

+ +

Objeto

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropiedadDescripción
{{jsxref("Global_Objects/Object/count", "__count__")}}Devuelve el número de propiedades enumerables directamente en un objeto definido por el usuario.
{{jsxref("Global_Objects/Object/Parent", "__parent__")}}Apunta al contexto de un objeto.
{{jsxref("Global_Objects/Object/eval", "Object.prototype.eval()")}}Evalúa una cadena de código JavaScript en el contexto del objeto especificado.
{{jsxref("Object.observe()")}}Observar de forma asincrónica los cambios en un objeto.
{{jsxref("Object.unobserve()")}}Elimina observadores.
{{jsxref("Object.getNotifier()")}}Crea un objeto que permite desencadenar sintéticamente un cambio.
+ +

Función

+ + + + + + + + + + + + +
PropiedadDescripción
{{jsxref("Global_Objects/Function/arity", "arity")}}Número de argumentos formales.
+ +

Array

+ + + + + + + + + + + + + + + + +
PropiedadDescripción
{{jsxref("Array.observe()")}}Observación asincrónica de cambios en los arreglos.
{{jsxref("Array.unobserve()")}}Elimina observadores.
+ +

Número

+ + + +

ParallelArray

+ + + +

Declaraciones

+ + + +

E4X

+ +

Consulta E4X para obtener más información.

+ +

Variables nítidas

+ +

Consulta Variables nítidas en JavaScript para obtener más información.

diff --git a/files/es/web/javascript/reference/deprecated_and_obsolete_features/the_legacy_iterator_protocol/index.html b/files/es/web/javascript/reference/deprecated_and_obsolete_features/the_legacy_iterator_protocol/index.html new file mode 100644 index 0000000000..5ef865f0bb --- /dev/null +++ b/files/es/web/javascript/reference/deprecated_and_obsolete_features/the_legacy_iterator_protocol/index.html @@ -0,0 +1,72 @@ +--- +title: The legacy Iterator protocol +slug: >- + Web/JavaScript/Referencia/Características_Desaprobadas/The_legacy_Iterator_protocol +translation_of: >- + Web/JavaScript/Reference/Deprecated_and_obsolete_features/The_legacy_Iterator_protocol +--- +
{{jsSidebar("More")}}
+ +
Non-standard. The legacy iterator protocol is a SpiderMonkey-specific feature, and will be removed at some point. For future-facing usages, consider using for..of loops and the iterator protocol.
+ +

The deprecated Firefox-only iterator protocol

+ +

Firefox, prior to version 26 implemented another iterator protocol that is similar to the standard ES6 Iterator protocol.

+ +

An object is an legacy iterator when it implements a next() method with the following semantics, and throws {{jsxref("Global_Objects/StopIteration", "StopIteration")}} at the end of iteration.

+ + + + + + + + + + + + +
PropertyValue
nextA zero arguments function that returns an value.
+ +

Difference between legacy and ES6 iterator protocols

+ + + +

Simple example with the old protocol

+ +
function makeIterator(array){
+    var nextIndex = 0;
+
+    return {
+       next: function(){
+           if(nextIndex < array.length){
+               return array[nextIndex++];
+           else
+               throw new StopIteration();
+       }
+    }
+}
+
+var it = makeIterator(['yo', 'ya']);
+
+console.log(it.next()); // 'yo'
+console.log(it.next()); // 'ya'
+try{
+    console.log(it.next());
+}
+catch(e){
+    if(e instanceof StopIteration){
+         // iteration over
+    }
+}
+
+ +

Mira también

+ + diff --git a/files/es/web/javascript/reference/errors/bad_regexp_flag/index.html b/files/es/web/javascript/reference/errors/bad_regexp_flag/index.html new file mode 100644 index 0000000000..3bb05d9b89 --- /dev/null +++ b/files/es/web/javascript/reference/errors/bad_regexp_flag/index.html @@ -0,0 +1,113 @@ +--- +title: 'SyntaxError: indicador de expresión regular no válido "x"' +slug: Web/JavaScript/Reference/Errors/Indicador_regexp_no-val +tags: + - Error + - Error de sintaxis + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Errors/Bad_regexp_flag +--- +
{{jsSidebar("Errors", "Errores")}}
+ +

La excepción de JavaScript "indicador de expresión regular no válido" se produce cuando las indicadores, definidas después de la segunda barra en la expresión regular literal, no son de g, i, m, s, u o y.

+ +

Mensaje

+ +
SyntaxError: error de sintaxis en la expresión regular (Edge)
+SyntaxError: marca de expresión regular no válida "x" (Firefox)
+SyntaxError: indicadores de expresión regular no válidos (Chrome)
+
+ +

Tipo Error

+ +

{{jsxref("SyntaxError")}}

+ +

¿Qué salió mal?

+ +

Hay indicadores de expresión regular no válidos en el código. En una expresión regular literal, que consiste en un patrón encerrado entre barras, los indicadores se definen después de la segunda barra. También se pueden definir en la función constructora del objeto {{jsxref("RegExp")}} (segundo parámetro). Los indicadores de expresión regular se pueden usar por separado o juntos en cualquier orden, pero solo hay seis de ellos en ECMAScript.

+ +

Para incluir una bandera con la expresión regular, usa esta sintaxis:

+ +
var re = /patrón/indicadores;
+
+ +

o

+ +
var re = new RegExp('patrón', 'indicadores');
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Indicadores de expresión regular
BanderaDescripción
gBúsqueda global.
iBúsqueda que no distingue entre mayúsculas y minúsculas.
mBúsqueda multilínea.
sPermite que el punto (.) coincida con las nuevas líneas (agregado en ECMAScript 2018)
uUnicode; trata el patrón como una secuencia de puntos de código Unicode
yRealiza una búsqueda "pegajosa" que coincida a partir de la posición actual en la cadena de destino. Consulta {{jsxref("RegExp.sticky", "sticky")}}
+ +

Ejemplos

+ +

Solo hay seis indicadores de expresión regular válidos.

+ +
/foo/bar;
+
+// SyntaxError: indicador de expresión regular no válido "b"
+
+ +

¿Tenías la intención de crear una expresión regular? Una expresión que contiene dos barras se interpreta como una expresión regular literal.

+ +
let obj = {
+  url: /docs/Web
+};
+
+// SyntaxError: indicador de expresión regular no válido "W"
+
+ +

¿O pretendías crear una cadena en su lugar? Agrega comillas simples o dobles para crear una cadena literal.

+ +
let obj = {
+  url: '/docs/Web'
+};
+ +

Indicadores de expresión regular válidos

+ +

Consulta la tabla anterior para ver las seis marcas de expresiones regulares válidas que están permitidas en JavaScript.

+ +
/foo/g;
+/foo/gims;
+/foo/uy;
+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/errors/caracter_ilegal/index.html b/files/es/web/javascript/reference/errors/caracter_ilegal/index.html deleted file mode 100644 index cc9422a21d..0000000000 --- a/files/es/web/javascript/reference/errors/caracter_ilegal/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: 'ErrorDeSintaxis: Caracter ilegal' -slug: Web/JavaScript/Reference/Errors/caracter_ilegal -tags: - - Error - - Error de sintaxis - - JavaScript - - SyntaxError - - errores -translation_of: Web/JavaScript/Reference/Errors/Illegal_character ---- -
{{jsSidebar("Errors")}}
- -

Mensaje

- -
SyntaxError: illegal character (Firefox)
-SyntaxError: Invalid or unexpected token (Chrome)
- -
ErrorDeSintasix: Carácter ilegal (Firefox)
-ErrorDeSintasix: Componente léxico inválido o inesperado (Chrome)
-
- -

Tipo de error

- -

{{jsxref("SyntaxError")}}  {{jsxref("ErrorDeSintaxis")}}

- -

¿Qué salió mal?

- -

Hay un componente léxico inválido o inesperado que no pertenece a su posición en el código. Utilice un editor que soporte el resaltado de sintaxis y que revise cuidadosamente su código contra discrepancias como un signo menos ( - ) contra un guion () o comillas simples ( " ) contra comillas no estándar ().

- -

Ejemplos

- -

Caracteres no coincidentes

- -

Algunos caracteres parecen iguales, pero hará que el analizador falle al interpretar su código.

- -
“Esto parece una cadena de caracteres”;
-// SyntaxError: illegal character
-// ErrorDeSintaxis: Carácter ilegal
-
-42 – 13;
-// SyntaxError: illegal character
-// ErrorDeSintaxis: Carácter ilegal
-
- -

Esto debería funcionar:

- -
"Esto en realidad es una cadena de caracteres";
-
-42 - 13;
-
- -

Caracteres olvidados

- -

Es fácil olvidar caracteres aquí o allí.

- -
var colors = ['#000', #333', '#666'];
-// SyntaxError: illegal character
-// ErrorDeSintaxis: Carácter ilegal
-
- -

Agregue la comilla olvidada para '#333'.

- -
var colors = ['#000', '#333', '#666'];
- -

Caracteres escondidos

- -

Cuando copia y pega un código de una fuente externa, puede haber caracteres inválidos. ¡Cuidado!

- -
var foo = 'bar';​
-// SyntaxError: illegal character
-// ErrorDeSintaxis: Carácter ilegal
-
- -

Al inspeccionar este código en un editor como Vim, puede ver que en realidad hay un carácter de espacio de ancho cero (ZWSP) (U+200B).

- -
var foo = 'bar';​<200b>
- -

Vea también

- - diff --git a/files/es/web/javascript/reference/errors/falta_puntoycoma_antes_de_declaracion/index.html b/files/es/web/javascript/reference/errors/falta_puntoycoma_antes_de_declaracion/index.html deleted file mode 100644 index c03cb15dd2..0000000000 --- a/files/es/web/javascript/reference/errors/falta_puntoycoma_antes_de_declaracion/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: 'ErrordeSintaxis: Punto y coma ; faltante antes de la declaracion' -slug: Web/JavaScript/Reference/Errors/Falta_puntoycoma_antes_de_declaracion -tags: - - JavaScript - - errores - - errorsintaxis - - puntoycoma -translation_of: Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement ---- -
{{jsSidebar("Errores")}}
- -

Mensaje

- -
Error de Sintaxis: Punto y coma ; faltante antes de la declaración
-
- -

Tipo de Error

- -

{{jsxref("SyntaxError")}}.

- -

¿Qué salio mal?

- -

Hay un punto y coma (;) faltando en alguna parte. Las declaraciones Javascript deben terminar con punto y coma. Algunas de ellas son afectadas por la inserción automática (ASI), pero en este caso necesitas colocar un punto y coma, de esta forma Javascript puede analizar el código fuente de forma correcta.

- -

Sin embargo, algunas veces, este error es solo una consecuencia de otro error, como no separar las cadenas de texto correctamente, o usar var incorrectamente. Tal vez tengas muchos paréntesis en algún lugar. Revisa cuidadosamente la sintaxis cuando este error es lanzado.

- -

Ejemplo

- -

Cadenas de texto (strings) sin terminar

- -

Este error puede pasar fácilmente cuando no se colocan las comillas correctamente y el motor de JavaScript esta esperando el final de la cadena. por ejemplo:

- -
var foo = 'El bar de Tom's';
-// Error de Sintaxis: Punto y coma ; faltante antes de la declaración
- -

En este caso se pueden usar comillas dobles para escapar del apóstrofe:

- -
var foo = "El bar de Tom's";
-var foo = 'El bar de Tom\'s';
-
- -
-

Nota: Este error suele pasar frecuentemene con cadenas del idioma Inglés

-
- -

Declarar propiedades con var

- -

No se pueden declarar propiedades de un objeto o arreglo con una declaración var

- -
var obj = {};
-var obj.foo = 'hola'; // Error de Sintaxis: Punto y coma ; faltante antes de la declaración
-
-var array = [];
-var array[0] = 'mundo'; // Error de Sintaxis: Punto y coma ; faltante antes de la declaración
-
- -

En vez de esto. omitamos la palabra  var:

- -
var obj = {};
-obj.foo = 'hola';
-
-var array = [];
-array[0] = 'mundo';
-
- -

Ver también:

- - diff --git a/files/es/web/javascript/reference/errors/illegal_character/index.html b/files/es/web/javascript/reference/errors/illegal_character/index.html new file mode 100644 index 0000000000..cc9422a21d --- /dev/null +++ b/files/es/web/javascript/reference/errors/illegal_character/index.html @@ -0,0 +1,83 @@ +--- +title: 'ErrorDeSintaxis: Caracter ilegal' +slug: Web/JavaScript/Reference/Errors/caracter_ilegal +tags: + - Error + - Error de sintaxis + - JavaScript + - SyntaxError + - errores +translation_of: Web/JavaScript/Reference/Errors/Illegal_character +--- +
{{jsSidebar("Errors")}}
+ +

Mensaje

+ +
SyntaxError: illegal character (Firefox)
+SyntaxError: Invalid or unexpected token (Chrome)
+ +
ErrorDeSintasix: Carácter ilegal (Firefox)
+ErrorDeSintasix: Componente léxico inválido o inesperado (Chrome)
+
+ +

Tipo de error

+ +

{{jsxref("SyntaxError")}}  {{jsxref("ErrorDeSintaxis")}}

+ +

¿Qué salió mal?

+ +

Hay un componente léxico inválido o inesperado que no pertenece a su posición en el código. Utilice un editor que soporte el resaltado de sintaxis y que revise cuidadosamente su código contra discrepancias como un signo menos ( - ) contra un guion () o comillas simples ( " ) contra comillas no estándar ().

+ +

Ejemplos

+ +

Caracteres no coincidentes

+ +

Algunos caracteres parecen iguales, pero hará que el analizador falle al interpretar su código.

+ +
“Esto parece una cadena de caracteres”;
+// SyntaxError: illegal character
+// ErrorDeSintaxis: Carácter ilegal
+
+42 – 13;
+// SyntaxError: illegal character
+// ErrorDeSintaxis: Carácter ilegal
+
+ +

Esto debería funcionar:

+ +
"Esto en realidad es una cadena de caracteres";
+
+42 - 13;
+
+ +

Caracteres olvidados

+ +

Es fácil olvidar caracteres aquí o allí.

+ +
var colors = ['#000', #333', '#666'];
+// SyntaxError: illegal character
+// ErrorDeSintaxis: Carácter ilegal
+
+ +

Agregue la comilla olvidada para '#333'.

+ +
var colors = ['#000', '#333', '#666'];
+ +

Caracteres escondidos

+ +

Cuando copia y pega un código de una fuente externa, puede haber caracteres inválidos. ¡Cuidado!

+ +
var foo = 'bar';​
+// SyntaxError: illegal character
+// ErrorDeSintaxis: Carácter ilegal
+
+ +

Al inspeccionar este código en un editor como Vim, puede ver que en realidad hay un carácter de espacio de ancho cero (ZWSP) (U+200B).

+ +
var foo = 'bar';​<200b>
+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/errors/indicador_regexp_no-val/index.html b/files/es/web/javascript/reference/errors/indicador_regexp_no-val/index.html deleted file mode 100644 index 3bb05d9b89..0000000000 --- a/files/es/web/javascript/reference/errors/indicador_regexp_no-val/index.html +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: 'SyntaxError: indicador de expresión regular no válido "x"' -slug: Web/JavaScript/Reference/Errors/Indicador_regexp_no-val -tags: - - Error - - Error de sintaxis - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Errors/Bad_regexp_flag ---- -
{{jsSidebar("Errors", "Errores")}}
- -

La excepción de JavaScript "indicador de expresión regular no válido" se produce cuando las indicadores, definidas después de la segunda barra en la expresión regular literal, no son de g, i, m, s, u o y.

- -

Mensaje

- -
SyntaxError: error de sintaxis en la expresión regular (Edge)
-SyntaxError: marca de expresión regular no válida "x" (Firefox)
-SyntaxError: indicadores de expresión regular no válidos (Chrome)
-
- -

Tipo Error

- -

{{jsxref("SyntaxError")}}

- -

¿Qué salió mal?

- -

Hay indicadores de expresión regular no válidos en el código. En una expresión regular literal, que consiste en un patrón encerrado entre barras, los indicadores se definen después de la segunda barra. También se pueden definir en la función constructora del objeto {{jsxref("RegExp")}} (segundo parámetro). Los indicadores de expresión regular se pueden usar por separado o juntos en cualquier orden, pero solo hay seis de ellos en ECMAScript.

- -

Para incluir una bandera con la expresión regular, usa esta sintaxis:

- -
var re = /patrón/indicadores;
-
- -

o

- -
var re = new RegExp('patrón', 'indicadores');
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Indicadores de expresión regular
BanderaDescripción
gBúsqueda global.
iBúsqueda que no distingue entre mayúsculas y minúsculas.
mBúsqueda multilínea.
sPermite que el punto (.) coincida con las nuevas líneas (agregado en ECMAScript 2018)
uUnicode; trata el patrón como una secuencia de puntos de código Unicode
yRealiza una búsqueda "pegajosa" que coincida a partir de la posición actual en la cadena de destino. Consulta {{jsxref("RegExp.sticky", "sticky")}}
- -

Ejemplos

- -

Solo hay seis indicadores de expresión regular válidos.

- -
/foo/bar;
-
-// SyntaxError: indicador de expresión regular no válido "b"
-
- -

¿Tenías la intención de crear una expresión regular? Una expresión que contiene dos barras se interpreta como una expresión regular literal.

- -
let obj = {
-  url: /docs/Web
-};
-
-// SyntaxError: indicador de expresión regular no válido "W"
-
- -

¿O pretendías crear una cadena en su lugar? Agrega comillas simples o dobles para crear una cadena literal.

- -
let obj = {
-  url: '/docs/Web'
-};
- -

Indicadores de expresión regular válidos

- -

Consulta la tabla anterior para ver las seis marcas de expresiones regulares válidas que están permitidas en JavaScript.

- -
/foo/g;
-/foo/gims;
-/foo/uy;
-
- -

Ve también

- - diff --git a/files/es/web/javascript/reference/errors/missing_semicolon_before_statement/index.html b/files/es/web/javascript/reference/errors/missing_semicolon_before_statement/index.html new file mode 100644 index 0000000000..c03cb15dd2 --- /dev/null +++ b/files/es/web/javascript/reference/errors/missing_semicolon_before_statement/index.html @@ -0,0 +1,72 @@ +--- +title: 'ErrordeSintaxis: Punto y coma ; faltante antes de la declaracion' +slug: Web/JavaScript/Reference/Errors/Falta_puntoycoma_antes_de_declaracion +tags: + - JavaScript + - errores + - errorsintaxis + - puntoycoma +translation_of: Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement +--- +
{{jsSidebar("Errores")}}
+ +

Mensaje

+ +
Error de Sintaxis: Punto y coma ; faltante antes de la declaración
+
+ +

Tipo de Error

+ +

{{jsxref("SyntaxError")}}.

+ +

¿Qué salio mal?

+ +

Hay un punto y coma (;) faltando en alguna parte. Las declaraciones Javascript deben terminar con punto y coma. Algunas de ellas son afectadas por la inserción automática (ASI), pero en este caso necesitas colocar un punto y coma, de esta forma Javascript puede analizar el código fuente de forma correcta.

+ +

Sin embargo, algunas veces, este error es solo una consecuencia de otro error, como no separar las cadenas de texto correctamente, o usar var incorrectamente. Tal vez tengas muchos paréntesis en algún lugar. Revisa cuidadosamente la sintaxis cuando este error es lanzado.

+ +

Ejemplo

+ +

Cadenas de texto (strings) sin terminar

+ +

Este error puede pasar fácilmente cuando no se colocan las comillas correctamente y el motor de JavaScript esta esperando el final de la cadena. por ejemplo:

+ +
var foo = 'El bar de Tom's';
+// Error de Sintaxis: Punto y coma ; faltante antes de la declaración
+ +

En este caso se pueden usar comillas dobles para escapar del apóstrofe:

+ +
var foo = "El bar de Tom's";
+var foo = 'El bar de Tom\'s';
+
+ +
+

Nota: Este error suele pasar frecuentemene con cadenas del idioma Inglés

+
+ +

Declarar propiedades con var

+ +

No se pueden declarar propiedades de un objeto o arreglo con una declaración var

+ +
var obj = {};
+var obj.foo = 'hola'; // Error de Sintaxis: Punto y coma ; faltante antes de la declaración
+
+var array = [];
+var array[0] = 'mundo'; // Error de Sintaxis: Punto y coma ; faltante antes de la declaración
+
+ +

En vez de esto. omitamos la palabra  var:

+ +
var obj = {};
+obj.foo = 'hola';
+
+var array = [];
+array[0] = 'mundo';
+
+ +

Ver también:

+ + diff --git a/files/es/web/javascript/reference/errors/strict_non_simple_params/index.html b/files/es/web/javascript/reference/errors/strict_non_simple_params/index.html new file mode 100644 index 0000000000..2ca6ef8de4 --- /dev/null +++ b/files/es/web/javascript/reference/errors/strict_non_simple_params/index.html @@ -0,0 +1,117 @@ +--- +title: 'SyntaxError: "use strict" no permitida en función con parámetros complejos' +slug: Web/JavaScript/Reference/Errors/Strict_y_parámetros_complejos +tags: + - Error + - JavaScript + - TypeError + - errores +translation_of: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params +--- +
{{jsSidebar("Errors", "Errores")}}
+ +

La excepción de JavaScript: "'use strict' no permitida en función" ocurre cuando se usa una directiva "use strict" en la parte superior de una función con {{jsxref("Functions/Default_parameters", "parámetros predeterminados", "", 1)}}, {{jsxref("Functions/rest_parameters", "parámetros rest", "", 1)}} o {{jsxref("Operators/Destructuring_assignment" , "Desestructuración de parámetros", "", 1)}}.

+ +

Mensaje

+ +
Edge:
+No se puede aplicar el modo estricto en funciones con una lista de parámetros complejos
+
+Firefox:
+SyntaxError: "use strict" no permitido en la función con parámetro predeterminado
+SyntaxError: "use strict" no permitido en la función con parámetro rest
+SyntaxError: "use strict" no permitido en la función con parámetro de desestructuración
+
+Chrome:
+SyntaxError: directiva ilegal 'use strict' en función con una lista de parámetros complejos
+
+ +

Tipo Error

+ +

{{jsxref("SyntaxError")}}.

+ +

¿Qué salió mal?

+ +

Se escribió una directiva "use strict" en la parte superior de una función que tiene uno de los siguientes parámetros:

+ + + +

No está permitida una directiva "use strict" en la parte superior de dichas funciones según la especificación ECMAScript.

+ +

Ejemplos

+ +

Declaración de función

+ +

En este caso, la función sum tiene los parámetros predeterminados a = 1 y b = 2:

+ +
function sum(a = 1, b = 2) {
+  SyntaxError: 'use strict' no permitida en la función con parámetros predeterminados
+  'use strict';
+  return a + b;
+}
+
+ +

Si la función debe estar en modo estricto, y todo el script o la función adjunta también está bien que esté en modo estricto, puedes mover la directiva "use strict" fuera de la función:

+ +
'use strict';
+function sum(a = 1, b = 2) {
+  return a + b;
+}
+
+ +

Expresión Function

+ +

Una expresión function puede usar otra solución alternativa:

+ +
var sum = function sum([a, b]) {
+  // SyntaxError: "use strict" no permitido en función con parámetros de desestructuración
+  'use strict';
+  return a + b;
+};
+
+ +

Esta se puede convertir a la siguiente expresión:

+ +
var sum = (function() {
+  'use strict';
+  return function sum([a, b]) {
+    return a + b;
+  };
+})();
+
+ +

Función de flecha

+ +

Si una función de flecha necesita acceder a la variable this, puedes usar la función de flecha como función circundante:

+ +
var callback = (...args) => {
+  SyntaxError: "use strict" no permitido en la función con parámetro rest
+  'use strict';
+  return this.run(args);
+};
+
+ +

Esta se puede convertir a la siguiente expresión:

+ +
var callback = (() => {
+  'use strict';
+  return (...args) => {
+    return this.run(args);
+  };
+})();
+
+ +

Ve también

+ + diff --git "a/files/es/web/javascript/reference/errors/strict_y_par\303\241metros_complejos/index.html" "b/files/es/web/javascript/reference/errors/strict_y_par\303\241metros_complejos/index.html" deleted file mode 100644 index 2ca6ef8de4..0000000000 --- "a/files/es/web/javascript/reference/errors/strict_y_par\303\241metros_complejos/index.html" +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: 'SyntaxError: "use strict" no permitida en función con parámetros complejos' -slug: Web/JavaScript/Reference/Errors/Strict_y_parámetros_complejos -tags: - - Error - - JavaScript - - TypeError - - errores -translation_of: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params ---- -
{{jsSidebar("Errors", "Errores")}}
- -

La excepción de JavaScript: "'use strict' no permitida en función" ocurre cuando se usa una directiva "use strict" en la parte superior de una función con {{jsxref("Functions/Default_parameters", "parámetros predeterminados", "", 1)}}, {{jsxref("Functions/rest_parameters", "parámetros rest", "", 1)}} o {{jsxref("Operators/Destructuring_assignment" , "Desestructuración de parámetros", "", 1)}}.

- -

Mensaje

- -
Edge:
-No se puede aplicar el modo estricto en funciones con una lista de parámetros complejos
-
-Firefox:
-SyntaxError: "use strict" no permitido en la función con parámetro predeterminado
-SyntaxError: "use strict" no permitido en la función con parámetro rest
-SyntaxError: "use strict" no permitido en la función con parámetro de desestructuración
-
-Chrome:
-SyntaxError: directiva ilegal 'use strict' en función con una lista de parámetros complejos
-
- -

Tipo Error

- -

{{jsxref("SyntaxError")}}.

- -

¿Qué salió mal?

- -

Se escribió una directiva "use strict" en la parte superior de una función que tiene uno de los siguientes parámetros:

- - - -

No está permitida una directiva "use strict" en la parte superior de dichas funciones según la especificación ECMAScript.

- -

Ejemplos

- -

Declaración de función

- -

En este caso, la función sum tiene los parámetros predeterminados a = 1 y b = 2:

- -
function sum(a = 1, b = 2) {
-  SyntaxError: 'use strict' no permitida en la función con parámetros predeterminados
-  'use strict';
-  return a + b;
-}
-
- -

Si la función debe estar en modo estricto, y todo el script o la función adjunta también está bien que esté en modo estricto, puedes mover la directiva "use strict" fuera de la función:

- -
'use strict';
-function sum(a = 1, b = 2) {
-  return a + b;
-}
-
- -

Expresión Function

- -

Una expresión function puede usar otra solución alternativa:

- -
var sum = function sum([a, b]) {
-  // SyntaxError: "use strict" no permitido en función con parámetros de desestructuración
-  'use strict';
-  return a + b;
-};
-
- -

Esta se puede convertir a la siguiente expresión:

- -
var sum = (function() {
-  'use strict';
-  return function sum([a, b]) {
-    return a + b;
-  };
-})();
-
- -

Función de flecha

- -

Si una función de flecha necesita acceder a la variable this, puedes usar la función de flecha como función circundante:

- -
var callback = (...args) => {
-  SyntaxError: "use strict" no permitido en la función con parámetro rest
-  'use strict';
-  return this.run(args);
-};
-
- -

Esta se puede convertir a la siguiente expresión:

- -
var callback = (() => {
-  'use strict';
-  return (...args) => {
-    return this.run(args);
-  };
-})();
-
- -

Ve también

- - diff --git a/files/es/web/javascript/reference/functions/arguments/callee/index.html b/files/es/web/javascript/reference/functions/arguments/callee/index.html new file mode 100644 index 0000000000..1902131055 --- /dev/null +++ b/files/es/web/javascript/reference/functions/arguments/callee/index.html @@ -0,0 +1,48 @@ +--- +title: callee +slug: Web/JavaScript/Referencia/Funciones/arguments/callee +tags: + - JavaScript + - JavaScript Reference + - Referencia +translation_of: Web/JavaScript/Reference/Functions/arguments/callee +--- +
+
{{jsSidebar("Functions")}}
+
+ +

Resumen

+ +

Especifica la función que se está ejecutando actualmente.

+ +

Descripción

+ +

callee es una propiedad de la variable local arguments disponible dentro de todos los objetos function; callee como una propiedad de {{jsxref("Funciones/arguments", "Function.arguments")}} ya no se utiliza. (Function.arguments en sí mismo está también desaconsejado.)

+ +

arguments.callee permite a funciones anónimas referirse a ellas mismas, lo cual es necesario en funciones anónimas recursivas.

+ +

La palabra clave this no se refiere a la función que se ejecuta actualmente. Use la propiedad callee para referirse a la función dentro del cuerpo de la función.

+ +

Ejemplos

+ +

Ejemplo: Usando arguments.callee en funciones anónimas recursivas

+ +

Una función recursiva debe ser capaz de referirse a sí misma. Típicamente, una función se refiere a sí misma por su nombre. Sin embargo, una función anónima no tiene nombre y por tanto es una variable de referencia para ella, es decir, si la función no está asignada a ninguna variable, la función no puede referirse a sí misma. (Se pueden crear funciones anónimas mediante una expresión {{jsxref("Operadores/function", "function")}} o el constructor {{jsxref("Function")}}.) Aquí es donde entra arguments.callee.

+ +

El siguiente ejemplo define una función, la cuál, en cada turno, define y devuelve una función factorial.

+ +
function makeFactorialFunc() {
+   alert('making a factorial function!');
+   return function(x) {
+      if (x <= 1)
+         return 1;
+      return x * arguments.callee(x - 1);
+   };
+}
+
+var result = makeFactorialFunc()(5); // returns 120 (5 * 4 * 3 * 2 * 1)
+
+ +

this example isn't very practical, but then again, there are few practical cases where arguments.callee is necessary, and most of the those cases involve closures

+ +

 

diff --git a/files/es/web/javascript/reference/functions/arguments/index.html b/files/es/web/javascript/reference/functions/arguments/index.html new file mode 100644 index 0000000000..ab768cff21 --- /dev/null +++ b/files/es/web/javascript/reference/functions/arguments/index.html @@ -0,0 +1,229 @@ +--- +title: El objeto arguments +slug: Web/JavaScript/Referencia/Funciones/arguments +tags: + - Funciones + - JavaScript + - Namespace + - argumentos + - arguments + - espacio de nombres + - multiples +translation_of: Web/JavaScript/Reference/Functions/arguments +--- +
{{jsSidebar("Functions", "Funciones")}}
+ +

arguments es un objeto similar a Array accesible dentro de funciones que contiene los valores de los argumentos pasados a esa función.

+ +
{{EmbedInteractiveExample("pages/js/functions-arguments.html")}}
+ + + +

Descripción

+ +
+

Nota: Si estás escribiendo código compatible con ES6, entonces se deben preferir los {{jsxref("Functions/rest_parameters", "parámetros resto")}}.

+
+ +
+

Nota: "similar a Array" significa que arguments tiene una propiedad {{jsxref("Functions/arguments/length", "lenght")}} y propiedades indexadas desde cero, pero no tiene métodos integrados de {{jsxref("Array")}} como {{jsxref("Array.forEach", "forEach()")}} o {{jsxref("Array.map", "map()")}}. Ve la §Descripción para obtener más detalles.

+
+ +

El objeto arguments es una variable local disponible en todas las funciones que no son {{jsxref("Functions/Arrow_functions", "funciones flecha")}}. Puedes hacer referencia a los argumentos de una función dentro de esa función utilizando su objeto arguments. Tiene entradas para cada argumento con el que se llamó a la función, con el índice de la primera entrada en 0.

+ +

Por ejemplo, si a una función se le pasan 3 argumentos, puedes acceder a ellos de la siguiente manera:

+ +
arguments[0] // primer argumento
+arguments[1] // segundo argumento
+arguments[2] // tercer argumento
+
+ +

También puedes establecer o reasignar cada argumento:

+ +
arguments[1] = 'new value';
+
+ +

El objeto arguments no es un {{jsxref("Array")}}. Es similar, pero carece de todas las propiedades de Array excepto de {{jsxref("Array.length", "length")}}. Por ejemplo, no tiene el método {{jsxref("Array.pop", "pop()")}}.

+ +

Sin embargo, se puede convertir en un Array real:

+ +
var args = Array.prototype.slice.call(arguments);
+// El uso de un arreglo literal es más corto que el anterior pero asigna un arreglo vacío
+var args = [].slice.call(arguments);
+
+ +

Así como puedes hacer con cualquier objeto tipo Array, puedes usar el método {{jsxref("Array.from()")}} de ES2015 o la {{jsxref("Operators/Spread_syntax", "propagación de sintaxis")}} para convertir arguments en un arreglo real:

+ +
let args = Array.from(arguments);
+// o
+let args = [...arguments];
+
+ +

El objeto arguments es útil para funciones llamadas con más argumentos de los que declara aceptar formalmente. Esta técnica es útil para funciones a las que se les puede pasar un número variable de argumentos, como {{jsxref("Math.min()")}}. Esta función de ejemplo acepta cualquier número de argumentos de cadena y devuelve la más larga:

+ +
function longestString() {
+  var longest = '';
+  for (var i=0; i < arguments.length; i++) {
+    if (arguments[i].length > longest.length) {
+      longest = arguments[i];
+    }
+  }
+  return longest;
+}
+
+ +

Puedes usar {{jsxref("Functions/arguments/lenght", "arguments.length")}} para contar con cuántos argumentos se llamó a la función. Si, en cambio, deseas contar cuántos parámetros se declara que acepta una función, inspecciona la propiedad {{jsxref("Function.length", "length")}} de esa función.

+ +

Usar typeof con arguments

+ +

El operador {{jsxref("Operators/typeof", "typeof")}} devuelve 'object' cuando se usa con arguments

+ +
console.log(typeof arguments); // 'object' 
+ +

El tipo de argumentos individuales se puede determinar indexando arguments:

+ +
console.log(typeof arguments[0]); // devuelve el tipo del primer argumento
+ +

Propiedades

+ +
+
{{jsxref("Functions/arguments/callee", "arguments.callee")}}
+
Referencia a la función en ejecución a la que pertenecen los argumentos. Prohibida en modo estricto.
+
{{jsxref("Functions/arguments/length", "arguments.length")}}
+
El número de argumentos que se pasaron a la función.
+
{{jsxref("Functions/arguments/@@iterator", "arguments[@@iterator]")}}
+
Devuelve un nuevo objeto {{jsxref("Array/@@iterator", "Array iterator", "", 0)}} que contiene los valores de cada índice en arguments.
+
+ +

Ejemplos

+ +

Definición de una función que concatena varias cadenas

+ +

Este ejemplo define una función que concatena varias cadenas. El único argumento formal de la función es una cadena que contiene los caracteres que separan los elementos a concatenar.

+ +
function myConcat(separator) {
+  let args = Array.prototype.slice.call(arguments, 1);
+  return args.join(separator);
+}
+ +

Puedes pasar tantos argumentos como desees a esta función. Devuelve una lista de cadenas usando cada argumento en la lista:

+ +
// returns "red, orange, blue"
+myConcat(', ', 'red', 'orange', 'blue');
+
+// devuelve "elephant; giraffe; lion; cheetah"
+myConcat('; ', 'elephant', 'giraffe', 'lion', 'cheetah');
+
+// devuelve "sage. basil. oregano. pepper. parsley"
+myConcat('. ', 'sage', 'basil', 'oregano', 'pepper', 'parsley');
+ +

Definición de una función que crea listas HTML

+ +

Este ejemplo define una función que crea una cadena que contiene HTML para una lista. El único argumento formal para la función es una cadena que es "u" si la lista debe estar {{htmlelement("ul", "desordenada (con viñetas)")}}, u "o" si la lista es {{htmlelement("ol", "ordenada (numerada)")}}. La función se define de la siguiente manera:

+ +
function list(type) {
+  var html = '<' + type + 'l><li>';
+  var args = Array.prototype.slice.call(arguments, 1);
+  html += args.join('</li><li>');
+  html += '</li></' + type + 'l>'; // fin de la lista
+  return html;
+}
+ +

Puedes pasar cualquier número de argumentos a esta función y agregar cada argumento como un elemento de lista a una lista del tipo indicado. Por ejemplo:

+ +
let listHTML = list('u', 'One', 'Two', 'Three');
+
+/* la listHTML es:
+"<ul><li>One</li><li>Two</li><li>Three</li></ul>"
+*/
+ +

Parámetros rest, predeterminados y desestructurados

+ +
+

El objeto arguments se puede utilizar junto con parámetros {{jsxref("Functions/rest_parameters", "rest")}}, {{jsxref("Functions/Default_parameters", "predeterminados")}} y {{jsxref("Operators/Destructuring_assignment", "desestructurados")}}.

+
+ +
function foo(...args) {
+  return args;
+}
+foo(1, 2, 3); // [1, 2, 3]
+
+ +

Si bien la presencia de parámetros rest, predeterminados o desestructurados no altera el comportamiento del objeto arguments en el código de modo estricto, existen sutiles diferencias para el código no estricto.

+ +

En el código de modo estricto, el objeto arguments se comporta de la misma manera independientemente de que se pasen parámetros rest, predeterminados o desestructurados a una función. Es decir, asignar nuevos valores a las variables en el cuerpo de la función no afectará al objeto arguments. La asignación de nuevas variables al objeto arguments tampoco afectará el valor de las variables.

+ +
+

Nota: No puedes escribir una directiva "use strict"; en el cuerpo de una definición de función que acepte parámetros rest, predeterminados o desestructurados. Si lo haces, generará un {{jsxref("Errors/Strict_Non_Simple_Params", "error de sintaxis")}}.

+
+ +

Las funciones no estrictas a las que se les pasan solo parámetros simples (es decir, no parámetros rest, predeterminados o desestructurados) sincronizarán el valor de los nuevos valores de las variables en el cuerpo de la función con el objeto arguments, y viceversa:

+ +
function func(a) {
+  arguments[0] = 99; // actualiza arguments[0] además actualiza a
+  console.log(a);
+}
+func(10); // 99
+
+ +

Y también:

+ +
function func(a) {
+  a = 99; // la actualización también actualiza arguments[0]
+  console.log(arguments[0]);
+}
+func(10); // 99
+
+ +

Por el contrario, las funciones no estrictas a las que se les pasan parámetros rest, predeterminados o desestructurados no sincronizarán los nuevos valores asignados a las variables de los argumentos en el cuerpo de la función con el objeto arguments. En cambio, el objeto arguments en funciones no estrictas con parámetros complejos siempre reflejarán los valores pasados a la función cuando se invocó (este es el mismo comportamiento exhibido por todas las funciones en modo estricto, independientemente del tipo de variables que se le pasen):

+ +
function func(a = 55) {
+  arguments[0] = 99; // actualizar arguments[0] tampoco actualiza a
+  console.log(a);
+}
+func(10); // 10
+ +

Y también:

+ +
function func(a = 55) {
+  a = 99; // actualizar a tampoco actualiza arguments[0]
+  console.log(arguments[0]);
+}
+func(10); // 10
+
+ +

Y también:

+ +
// Un parámetro predeterminado sin seguimiento
+function func(a = 55) {
+  console.log(arguments[0]);
+}
+func(); // undefined
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-arguments-exotic-objects', 'Objectos arguments exóticos')}}
+ +

Compatibilidad del navegador

+ + + +

{{Compat("javascript.functions.arguments")}}

+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/functions/arguments/length/index.html b/files/es/web/javascript/reference/functions/arguments/length/index.html new file mode 100644 index 0000000000..b1d7698194 --- /dev/null +++ b/files/es/web/javascript/reference/functions/arguments/length/index.html @@ -0,0 +1,131 @@ +--- +title: arguments.length +slug: Web/JavaScript/Referencia/Funciones/arguments/length +tags: + - Funciones + - JavaScript + - Propiedades + - argumentos +translation_of: Web/JavaScript/Reference/Functions/arguments/length +--- +
{{jsSidebar("Functions")}}
+ +

La propiedad arguments.length contiene el número de argumentos pasados a una función.

+ +

Sintaxis

+ +
arguments.length
+ +

Descripción

+ +

La propiedad arguments.length devuelve el número total de argumentos pasados a una función. Esto puede ser más o menos que el número de parametros definidos. (Véase {{jsxref("Function.length")}}).

+ +

Ejemplos

+ +

Usando arguments.length

+ +

En este ejemplo definimos una función que puede sumar dos o más números.

+ +
function adder(base /*, n2, ... */) {
+  base = Number(base);
+  for (var i = 1; i < arguments.length; i++) {
+    base += Number(arguments[i]);
+  }
+  return base;
+}
+
+ +
+

Tenga en cuenta la diferencia entre {{jsxref("Function.length")}} y arguments.length

+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en JavaScript 1.1
{{SpecName('ES5.1', '#sec-10.6', 'Arguments Object')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con los 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}}
+
+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/functions/arrow_functions/index.html b/files/es/web/javascript/reference/functions/arrow_functions/index.html new file mode 100644 index 0000000000..6ea9a35595 --- /dev/null +++ b/files/es/web/javascript/reference/functions/arrow_functions/index.html @@ -0,0 +1,530 @@ +--- +title: Funciones Flecha +slug: Web/JavaScript/Referencia/Funciones/Arrow_functions +tags: + - ECMAScript6 + - Intermedio + - JavaScript + - Referencia + - función +translation_of: Web/JavaScript/Reference/Functions/Arrow_functions +--- +
{{jsSidebar("Functions", "Funciones")}}
+ +

Una expresión de función flecha es una alternativa compacta a una {{JSxRef("Operadores/function", "expresión de función")}} tradicional, pero es limitada y no se puede utilizar en todas las situaciones.

+ +

Diferencias y limitaciones:

+ + + +

{{EmbedInteractiveExample("pages/js/functions-arrow.html")}}

+ +

Comparación de funciones tradicionales con funciones flecha

+ +

Observa, paso a paso, la descomposición de una "función tradicional" hasta la "función flecha" más simple:
+ Nota: Cada paso a lo largo del camino es una "función flecha" válida

+ +
// Función tradicional
+function (a){
+  return a + 100;
+}
+
+// Desglose de la función flecha
+
+// 1. Elimina la palabra "function" y coloca la flecha entre el argumento y el corchete de apertura.
+(a) => {
+  return a + 100;
+}
+
+// 2. Quita los corchetes del cuerpo y la palabra "return" — el return está implícito.
+(a) => a + 100;
+
+// 3. Suprime los paréntesis de los argumentos
+a => a + 100;
+ +
+

Como se muestra arriba, los { corchetes }, ( paréntesis ) y "return" son opcionales, pero pueden ser obligatorios.

+
+ +

Por ejemplo, si tienes varios argumentos o ningún argumento, deberás volver a introducir paréntesis alrededor de los argumentos:

+ +
// Función tradicional
+function (a, b){
+  return a + b + 100;
+}
+
+// Función flecha
+(a, b) => a + b + 100;
+
+// Función tradicional (sin argumentos)
+let a = 4;
+let b = 2;
+function (){
+  return a + b + 100;
+}
+
+// Función flecha (sin argumentos)
+let a = 4;
+let b = 2;
+() => a + b + 100;
+ +

Del mismo modo, si el cuerpo requiere líneas de procesamiento adicionales, deberás volver a introducir los corchetes Más el "return" (las funciones flecha no adivinan mágicamente qué o cuándo quieres "volver"):

+ +
// Función tradicional
+function (a, b){
+  let chuck = 42;
+  return a + b + chuck;
+}
+
+// Función flecha
+(a, b) => {
+  let chuck = 42;
+  return a + b + chuck;
+}
+ +
Y finalmente, en las funciones con nombre tratamos las expresiones de flecha como variables
+ +
+
// Función tradicional
+function bob (a){
+  return a + 100;
+}
+
+// Función flecha
+let bob = a => a + 100;
+
+ +
+ +
+ +

Sintaxis

+ +

Sintaxis básica

+ +

Un parámetro. Con una expresión simple no se necesita return:

+ +
param => expression
+ +

Varios parámetros requieren paréntesis. Con una expresión simple no se necesita return:

+ +
(param1, paramN) => expression
+ +

Las declaraciones de varias líneas requieren corchetes y return:

+ +
param => {
+  let a = 1;
+  return a + b;
+}
+ +

Varios parámetros requieren paréntesis. Las declaraciones de varias líneas requieren corchetes y return:

+ +
(param1, paramN) => {
+   let a = 1;
+   return a + b;
+}
+ +

Sintaxis avanzada

+ +

Para devolver una expresión de objeto literal, se requieren paréntesis alrededor de la expresión:

+ +
params => ({foo: "a"}) // devuelve el objeto {foo: "a"}
+ +

Los {{JSxRef("Funciones/parametros_rest", "parámetros rest")}} son compatibles:

+ +
(a, b, ...r) => expression
+ +

Se admiten los {{JSxRef("Funciones/Parametros_por_defecto", "parámetros predeterminados")}}:

+ +
(a=400, b=20, c) => expression
+ +

{{JSxRef("Operadores/Destructuring_assignment", "Desestructuración")}} dentro de los parámetros admitidos:

+ +
([a, b] = [10, 20]) => a + b;  // el resultado es 30
+({ a, b } = { a: 10, b: 20 }) => a + b; // resultado es 30
+
+ +

Descripción

+ +

Consulta también "ES6 en profundidad: funciones flecha" en hacks.mozilla.org.

+ +

"this" y funciones flecha

+ +

Una de las razones por las que se introdujeron las funciones flecha fue para eliminar complejidades del ámbito ({{JSxRef("Operadores/this", "this")}}) y hacer que la ejecución de funciones sea mucho más intuitiva.

+ +
+

Si this es un misterio para ti, consulta {{JSxRef("Operadores/this", "este documento")}} para obtener más información sobre cómo funciona this. Para resumir, this se refiere a la instancia. Las instancias se crean cuando se invoca la palabra clave new. De lo contrario, this se establecerá —de forma predeterminada— en el {{Glossary("Scope", "ámbito o alcance")}} de window.

+
+ +

En las funciones tradicionales de manera predeterminada this está en el ámbito de window:

+ + + +
window.age = 10; // <-- ¿me notas?
+function Person() {
+  this.age = 42; // <-- ¿me notas?
+  setTimeout(function () {// <-- La función tradicional se está ejecutando en el ámbito de window
+    console.log("this.age", this.age); // genera "10" porque la función se ejecuta en el ámbito de window
+  }, 100);
+}
+
+var p = new Person();
+
+
+ +

Las funciones flecha no predeterminan this al {{Glossary("Scope", "ámbito o alcance")}} de window, más bien se ejecutan en el {{Glossary("Scope", "ámbito o alcance")}} en que se crean:

+ +
window.age = 10; // <-- ¿me notas?
+function Person() {
+  this.age = 42; // <-- ¿me notas?
+  setTimeout(() => {// <-- Función flecha ejecutándose en el ámbito de "p" (una instancia de Person)
+    console.log("this.age", this.age); // genera "42" porque la función se ejecuta en el ámbito de Person
+  }, 100);
+}
+
+var p = new Person();
+
+
+ +

En el ejemplo anterior, la función flecha no tiene su propio this. Se utiliza el valor this del {{Glossary("Scope", "ámbito")}} léxico adjunto; las funciones flecha siguen las reglas normales de búsqueda de variables. Entonces, mientras busca this que no está presente en el {{Glossary("Scope", "ámbito")}} actual, una función flecha termina encontrando el this de su {{Glossary("Scope", "ámbito")}} adjunto.

+ +

Relación con el modo estricto

+ +

Dado que this proviene del contexto léxico circundante, en el {{JSxRef("Modo_estricto", "modo estricto")}} se ignoran las reglas con respecto a this.

+ +
var f = () => {
+    'use strict';
+    return this;
+};
+
+f() === window; // o el objeto global
+ +

Todas las demás reglas del {{JSxRef("Modo_estricto", "modo estricto")}} se aplican normalmente.

+ +
+

Nota: Comprueba las notas sobre el {{JSxRef("Modo_estricto", "modo estricto")}}.

+
+ +

Funciones flecha utilizadas como métodos

+ +

Como se indicó anteriormente, las expresiones de función flecha son más adecuadas para funciones que no son métodos. Observa qué sucede cuando intentas usarlas como métodos:

+ +
'use strict';
+
+var obj = { // no crea un nuevo ámbito
+  i: 10,
+  b: () => console.log(this.i, this),
+  c: function() {
+    console.log(this.i, this);
+  }
+}
+
+obj.b(); // imprime indefinido, Window {...} (o el objeto global)
+obj.c(); // imprime 10, Object {...}
+ +

Las funciones flecha no tienen su propio this. Otro ejemplo que involucra {{JSxRef("Object.defineProperty()")}}:

+ +
'use strict';
+
+var obj = {
+  a: 10
+};
+
+Object.defineProperty(obj, 'b', {
+  get: () => {
+    console.log(this.a, typeof this.a, this); // indefinida 'undefined' Window {...} (o el objeto global)
+    return this.a + 10; // representa el objeto global 'Window', por lo tanto 'this.a' devuelve 'undefined'
+  }
+});
+
+ +

call, apply y bind

+ +

Los métodos {{JSxRef("Objetos_globales/Function/call", "call")}}, {{JSxRef("Objetos_globales/Function/apply", "apply")}} y {{JSxRef("Objetos_globales/Function/bind", "bind")}} NO son adecuados para las funciones flecha, ya que fueron diseñados para permitir que los métodos se ejecuten dentro de diferentes ámbitos, porque las funciones flecha establecen "this" según el ámbito dentro del cual se define la función flecha.

+ +

Por ejemplo, {{JSxRef("Objetos_globales/Function/call", "call")}}, {{JSxRef("Objetos_globales/Function/apply", "apply")}} y {{JSxRef("Objetos_globales/Function/bind", "bind")}} funcionan como se esperaba con las funciones tradicionales, porque establecen el ámbito para cada uno de los métodos:

+ +
// ----------------------
+// Ejemplo tradicional
+// ----------------------
+// Un objeto simplista con su propio "this".
+var obj = {
+    num: 100
+}
+
+// Establece "num" en window para mostrar cómo NO se usa.
+window.num = 2020; // ¡Ay!
+
+// Una función tradicional simple para operar en "this"
+var add = function (a, b, c) {
+  return this.num + a + b + c;
+}
+
+// call
+var result = add.call(obj, 1, 2, 3) // establece el ámbito como "obj"
+console.log(result) // resultado 106
+
+// apply
+const arr = [1, 2, 3]
+var result = add.apply(obj, arr) // establece el ámbito como "obj"
+console.log(result) // resultado 106
+
+// bind
+var result = add.bind(obj) // estable el ámbito como "obj"
+console.log(result(1, 2, 3)) // resultado 106
+ +

Con las funciones flecha, dado que la función add esencialmente se crea en el ámbito del window (global), asumirá que this es window.

+ +
// ----------------------
+// Ejemplo de flecha
+// ----------------------
+
+// Un objeto simplista con su propio "this".
+var obj = {
+    num: 100
+}
+
+// Establecer "num" en window para mostrar cómo se recoge.
+window.num = 2020; // ¡Ay!
+
+// Función flecha
+var add = (a, b, c) => this.num + a + b + c;
+
+// call
+console.log(add.call(obj, 1, 2, 3)) // resultado 2026
+
+// apply
+const arr = [1, 2, 3]
+console.log(add.apply(obj, arr)) // resultado 2026
+
+// bind
+const bound = add.bind(obj)
+console.log(bound(1, 2, 3)) // resultado 2026
+
+ +

Quizás el mayor beneficio de usar las funciones flecha es con los métodos a nivel del DOM (setTimeout, setInterval, addEventListener) que generalmente requieren algún tipo de cierre, llamada, aplicación o vinculación para garantizar que la función se ejecute en el ámbito adecuado.

+ +

Ejemplo tradicional:

+ +
var obj = {
+    count : 10,
+    doSomethingLater : function (){
+        setTimeout(function(){ // la función se ejecuta en el ámbito de window
+            this.count++;
+            console.log(this.count);
+        }, 300);
+    }
+}
+
+obj.doSomethingLater(); // la consola imprime "NaN", porque la propiedad "count" no está en el ámbito de window.
+ +

Ejemplo de flecha:

+ +
var obj = {
+    count : 10,
+    doSomethingLater : function(){  // por supuesto, las funciones flecha no son adecuadas para métodos
+        setTimeout( () => { // dado que la función flecha se creó dentro del "obj", asume el "this" del objeto
+            this.count++;
+            console.log(this.count);
+        }, 300);
+    }
+}
+
+obj.doSomethingLater();
+ +

Sin enlace de arguments

+ +

Las funciones flecha no tienen su propio objeto {{JSxRef("Funciones/arguments", "arguments")}}. Por tanto, en este ejemplo, arguments simplemente es una referencia a los argumentos del ámbito adjunto:

+ +
var arguments = [1, 2, 3];
+var arr = () => arguments[0];
+
+arr(); // 1
+
+function foo(n) {
+  var f = () => arguments[0] + n; // Los argumentos implícitos de foo son vinculantes. arguments[0] es n
+  return f();
+}
+
+foo(3); // 6
+ +

En la mayoría de los casos, usar {{JSxRef("Funciones/parametros_rest", "parámetros rest")}} es una buena alternativa a usar un objeto arguments.

+ +
function foo(n) {
+  var f = (...args) => args[0] + n;
+  return f(10);
+}
+
+foo(1); // 11
+ +

Uso del operador new

+ +

Las funciones flecha no se pueden usar como constructores y arrojarán un error cuando se usen con new.

+ +
var Foo = () => {};
+var foo = new Foo(); // TypeError: Foo no es un constructor
+ +

Uso de la propiedad prototype

+ +

Las funciones flecha no tienen una propiedad prototype.

+ +
var Foo = () => {};
+console.log(Foo.prototype); // undefined
+
+ +

Uso de la palabra clave yield

+ +

La palabra clave {{JSxRef("Operadores/yield", "yield")}} no se puede utilizar en el cuerpo de una función flecha (excepto cuando está permitido dentro de las funciones anidadas dentro de ella). Como consecuencia, las funciones flecha no se pueden utilizar como generadores.

+ +

Cuerpo de función

+ +

Las funciones flecha pueden tener un "cuerpo conciso" o el "cuerpo de bloque" habitual.

+ +

En un cuerpo conciso, solo se especifica una expresión, que se convierte en el valor de retorno implícito. En el cuerpo de un bloque, debes utilizar una instrucción return explícita.

+ +
var func = x => x * x;
+// sintaxis de cuerpo conciso, "return" implícito
+
+var func = (x, y) => { return x + y; };
+// con cuerpo de bloque, se necesita un "return" explícito
+
+ +

Devolver objetos literales

+ +

Ten en cuenta que devolver objetos literales utilizando la sintaxis de cuerpo conciso params => {object: literal} no funcionará como se esperaba.

+ +
var func = () => { foo: 1 };
+// ¡Llamar a func() devuelve undefined!
+
+var func = () => { foo: function() {} };
+// SyntaxError: la declaración function requiere un nombre
+ +

Esto se debe a que el código entre llaves ({}) se procesa como una secuencia de declaraciones (es decir, foo se trata como una etiqueta, no como una clave en un objeto literal).

+ +

Debes envolver el objeto literal entre paréntesis:

+ +
var func = () => ({ foo: 1 });
+ +

Saltos de línea

+ +

Una función flecha no puede contener un salto de línea entre sus parámetros y su flecha.

+ +
var func = (a, b, c)
+  => 1;
+// SyntaxError: expresión esperada, obtuve '=>'
+ +

Sin embargo, esto se puede modificar colocando el salto de línea después de la flecha o usando paréntesis/llaves como se ve a continuación para garantizar que el código se mantenga bonito y esponjoso. También puedes poner saltos de línea entre argumentos.

+ +
var func = (a, b, c) =>
+  1;
+
+var func = (a, b, c) => (
+  1
+);
+
+var func = (a, b, c) => {
+  return 1
+};
+
+var func = (
+  a,
+  b,
+  c
+) => 1;
+
+// no se lanza SyntaxError
+ +

Orden de procesamiento

+ +

Aunque la flecha en una función flecha no es un operador, las funciones flecha tienen reglas de procesamiento especiales que interactúan de manera diferente con {{JSxRef("Operadores/Operator_Precedence", "prioridad de operadores")}} en comparación con las funciones regulares.

+ +
let callback;
+
+callback = callback || function() {}; // ok
+
+callback = callback || () => {};
+// SyntaxError: argumentos de función flecha no válidos
+
+callback = callback || (() => {});    // bien
+
+ +

Ejemplos

+ +

Uso básico

+ +
// Una función flecha vacía devuelve undefinided
+let empty = () => {};
+
+(() => 'foobar')();
+// Devuelve "foobar"
+// (esta es una expresión de función invocada inmediatamente)
+
+var simple = a => a > 15 ? 15 : a;
+simple(16); // 15
+simple(10); // 10
+
+let max = (a, b) => a > b ? a : b;
+
+// Fácil filtrado de arreglos, mapeo, ...
+
+var arr = [5, 6, 13, 0, 1, 18, 23];
+
+var sum = arr.reduce((a, b) => a + b);
+// 66
+
+var even = arr.filter(v => v % 2 == 0);
+// [6, 0, 18]
+
+var double = arr.map(v => v * 2);
+// [10, 12, 26, 0, 2, 36, 46]
+
+// Cadenas de promesas más concisas
+promise.then(a => {
+  // ...
+}).then(b => {
+  // ...
+});
+
+// Funciones flecha sin parámetros que son visualmente más fáciles de procesar
+setTimeout( () => {
+  console.log('sucederá antes');
+  setTimeout( () => {
+    // código más profundo
+    console.log ('Sucederá más tarde');
+  }, 1);
+}, 1);
+
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-arrow-function-definitions', 'Definición de función flecha')}}
+ +

Compatibilidad del navegador

+ +
+ + +

{{Compat("javascript.functions.arrow_functions")}}

+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/functions/default_parameters/index.html b/files/es/web/javascript/reference/functions/default_parameters/index.html new file mode 100644 index 0000000000..e319a3606b --- /dev/null +++ b/files/es/web/javascript/reference/functions/default_parameters/index.html @@ -0,0 +1,234 @@ +--- +title: Parámetros predeterminados +slug: Web/JavaScript/Referencia/Funciones/Parametros_por_defecto +tags: + - Característica del lenguaje + - ECMAScript 2015 + - Funciones + - JavaScript +translation_of: Web/JavaScript/Reference/Functions/Default_parameters +--- +
{{jsSidebar("Functions", "Funciones")}}
+ +

Parámetros predeterminados de función permiten que los parámetros con nombre se inicien con valores predeterminados si no se pasa ningún valor o undefined.

+ +
{{EmbedInteractiveExample("pages/js/functions-default.html")}}
+ + + +

Sintaxis

+ +
function [name]([param1[ = defaultValue1 ][, ..., paramN[ = defaultValueN ]]]) {
+   statements
+}
+
+ +

Descripción

+ +

En JavaScript, los parámetros de función están predeterminados en {{jsxref("undefined")}}. Sin embargo, a menudo es útil establecer un valor predeterminado diferente. Aquí es donde los parámetros predeterminados pueden ayudar.

+ +

En el pasado, la estrategia general para establecer valores predeterminados era probar los valores de los parámetros en el cuerpo de la función y asignar un valor si eran undefined.

+ +

En el siguiente ejemplo, si no se proporciona ningún valor para b cuando se llama a multiply, el valor de b sería undefined al evaluar a * b y multiply devolvería NaN.

+ +
function multiply(a, b) {
+  return a * b
+}
+
+multiply(5, 2)  // 10
+multiply(5)     // NaN !
+
+ +

Para protegerte contra esto, usarías algo como la segunda línea, donde b se establece en 1 si llamas a multiply con un solo argumento:

+ +
function multiply(a, b) {
+  b = (typeof b !== 'undefined') ?  b : 1
+  return a * b
+}
+
+multiply(5, 2)  // 10
+multiply(5)     // 5
+
+ +

Con los parámetros predeterminados en ES2015, las comprobaciones en el cuerpo de la función ya no son necesarias. Ahora, puedes asignar 1 como valor predeterminado para b en el encabezado de la función:

+ +
function multiply(a, b = 1) {
+  return a * b
+}
+
+multiply(5, 2)          // 10
+multiply(5)             // 5
+multiply(5, undefined)  // 5
+
+ +

Ejemplos

+ +

Pasar undefined vs. otros valores falsos

+ +

En la segunda llamada de este ejemplo, incluso si el primer argumento se establece explícitamente en undefined (aunque no null u otros valores {{Glossary("falsy", "falsos", "", 1)}} , el valor del argumento num sigue siendo el predeterminado.

+ +
function test(num = 1) {
+  console.log(typeof num)
+}
+
+test()           // 'number' (num se establece en 1)
+test(undefined)  // 'number' (num se establece en 1 también)
+
+// prueba con otros valores falsos:
+test('')         // 'string' (num se establece en '')
+test(null)       // 'object' (num se establece en null)
+
+ +

Evaluado en el momento de la llamada

+ +

El argumento predeterminado se evalúa en el momento de la llamada. Entonces, a diferencia de (por ejemplo) Python, se crea un nuevo objeto cada vez que se llama a la función.

+ +
function append(value, array = []) {
+  array.push(value)
+  return array
+}
+
+append(1)  // [1]
+append(2)  // [2], no [1, 2]
+
+ +

Esto incluso se aplica a funciones y variables:

+ +
function callSomething(thing = something()) {
+  return thing
+}
+
+let numberOfTimesCalled = 0
+function something() {
+  numberOfTimesCalled += 1
+  return numberOfTimesCalled
+}
+
+callSomething()  // 1
+callSomething()  // 2
+
+ +

Los parámetros anteriores están disponibles para los parámetros predeterminados posteriores

+ +

Los parámetros definidos anteriormente (a la izquierda) están disponibles para los parámetros predeterminados posteriores:

+ +
function greet(name, greeting, message = greeting + ' ' + name) {
+  return [name, greeting, message]
+}
+
+greet('David', 'Hi')                     // ["David", "Hi", "Hi David"]
+greet('David', 'Hi', 'Happy Birthday!')  // ["David", "Hi", "Happy Birthday!"]
+
+ +

Esta funcionalidad se puede aproximar de esta manera, lo que demuestra cuántos casos extremos se manejan:

+ +
function go() {
+  return ':P'
+}
+
+function withDefaults(a, b = 5, c = b, d = go(), e = this,
+                      f = arguments, g = this.value) {
+  return [a, b, c, d, e, f, g]
+}
+
+function withoutDefaults(a, b, c, d, e, f, g) {
+  switch (arguments.length) {
+    case 0:
+      a;
+    case 1:
+      b = 5;
+    case 2:
+      c = b;
+    case 3:
+      d = go();
+    case 4:
+      e = this;
+    case 5:
+      f = arguments;
+    case 6:
+      g = this.value;
+    default:
+  }
+  return [a, b, c, d, e, f, g];
+}
+
+withDefaults.call({value: '=^_^='});
+// [undefined, 5, 5, ":P", {value:"=^_^="}, arguments, "=^_^="]
+
+withoutDefaults.call({value: '=^_^='});
+// [undefined, 5, 5, ":P", {value:"=^_^="}, arguments, "=^_^="]
+
+ +

Efectos de el ámbito

+ +

Si se definen parámetros predeterminados para uno o más parámetros, se crea un segundo ámbito (registro de entorno), específicamente para los identificadores dentro de la lista de parámetros. Este ámbito es padre del ámbito creado para el cuerpo de la función.

+ +

Esto significa que no se puede hacer referencia a las funciones y variables declaradas en el cuerpo de la función desde los iniciadores de parámetros de valor predeterminado; intentar hacerlo arroja un {{jsxref("ReferenceError")}} en tiempo de ejecución.

+ +

También significa que las variables declaradas dentro del cuerpo de la función usando var enmascararán los parámetros del mismo nombre, en lugar de que el comportamiento habitual de las declaraciones var duplicadas no tenga ningún efecto.

+ +

La siguiente función arrojará un ReferenceError cuando se invoca, porque el valor del parámetro predeterminado no tiene acceso al ámbito secundario del cuerpo de la función:

+ +
function f(a = go()) { // Lanza un `ReferenceError` cuando se invoca a `f`.
+  function go() { return ':P' }
+}
+
+ +

...y esta función imprimirá undefined porque la variable var a se eleva solo a la parte superior del ámbito creado para el cuerpo de la función (y no hasta el ámbito principal creado para la lista de parámetros):

+ +
function f(a, b = () => console.log(a)) {
+  var a = 1
+  b() // Imprime `undefined`, porque los valores de los parámetros predeterminados existen en su propio ámbito
+}
+
+ +

Parámetros sin valores predeterminados después de los parámetros predeterminados

+ +

Los parámetros aún se establecen de izquierda a derecha, sobrescribiendo los parámetros predeterminados incluso si hay parámetros posteriores sin valores predeterminados.

+ +
function f(x = 1, y) {
+  return [x, y]
+}
+
+f()   // [1, undefined]
+f(2)  // [2, undefined]
+
+ +

Parámetro desestructurado con asignación de valor predeterminado

+ +

Puedes usar la asignación de valor predeterminado con la notación {{jsxref("Operators/Destructuring_assignment", "la desestructuración", "", 1)}}:

+ +
function f([x, y] = [1, 2], {z: z} = {z: 3}) {
+  return x + y + z
+}
+
+f()  // 6
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-function-definitions', 'Definición de Funciones')}}
+ +

Compatibilidad del navegador

+ +
+ + +

{{Compat("javascript.functions.default_parameters")}}

+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/functions/get/index.html b/files/es/web/javascript/reference/functions/get/index.html new file mode 100644 index 0000000000..7125ab0caa --- /dev/null +++ b/files/es/web/javascript/reference/functions/get/index.html @@ -0,0 +1,134 @@ +--- +title: get +slug: Web/JavaScript/Referencia/Funciones/get +tags: + - ECMAScript5 + - JavaScript + - Operator +translation_of: Web/JavaScript/Reference/Functions/get +--- +
{{jsSidebar("Funciones")}}
+ +

Enlaza la propiedad de un objeto con una función que será llamada cuando la propiedad es buscada.

+ +

Sintaxis

+ +

{get prop() { . . . } }

+ +

Parámetros

+ +
+
prop
+
el nombre de la propiedad a unir con la función dada
+
+ +

Descripción

+ +

A veces es deseable permitir acceso a una propiedad que retorna un valor dinámicamente calculado, o si desea mostrar el estado de alguna variable interna sin requerir el uso de llamadas a métodos explícitos. En JavaScript, esto se puede lograr con el uso de un getter (captador). No es posible tener simultáneamente un getter ligado a una propiedad y que dicha propiedad tenga actualmente un valor, aunque es posible usar un getter junto con un setter para crear un tipo de pseudo-propiedad.

+ +

Tenga en cuenta lo siguiente al trabajar con la sintaxis get:

+ + + +

El getter puede ser removido usando el operador {{jsxref("Operadores/delete", "delete")}}.

+ +

Ejemplos

+ +

Definir un getter con el operador get

+ +

Esto creará una pseudo-propiedad latest (ver ejemplo) del objecto o que podría retornar la más reciente entrada dentro de o.log:

+ +
var o = {
+  get latest () {
+    if (this.log.length > 0) {
+      return this.log[this.log.length - 1];
+    }
+    else {
+      return null;
+    }
+  },
+  log: []
+}
+
+ +

Note que intentar asignar un valor a latest no lo cambiará.

+ +

Borrar un getter usando el operador delete

+ +
delete o.latest;
+
+ +

Compatibilidad de navegadores

+ +

Basado en la página de página de Robert Nyman

+ +

Sin soporte (notablemente en IE6-8) significa que el script lanzará un error de sintaxis.

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaFirefox (Gecko)ChromeInternet ExplorerOperaSafari
Soporte básico{{ CompatGeckoDesktop("1.8.1") }}199.53
+
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaFirefox Mobile (Gecko)AndroidIE MobileOpera MobileSafari Mobile
Soporte básico{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
+
+ +

Consulta también

+ + + +
+

 

+
+ +

 

diff --git a/files/es/web/javascript/reference/functions/index.html b/files/es/web/javascript/reference/functions/index.html new file mode 100644 index 0000000000..ac1bea24ea --- /dev/null +++ b/files/es/web/javascript/reference/functions/index.html @@ -0,0 +1,661 @@ +--- +title: Funciones +slug: Web/JavaScript/Referencia/Funciones +tags: + - Funciones + - Guia(2) + - JavaScript + - función +translation_of: Web/JavaScript/Reference/Functions +--- +
{{jsSidebar("Functions")}}
+ +

En términos generales, una función es un "subprograma" que puede ser llamado por código externo (o interno en caso de recursión) a la función. Al igual que el programa en sí mismo, una función se compone de una secuencia de declaraciones, que conforman el llamado cuerpo de la función. Se pueden pasar valores a una función, y la función puede devolver un valor.

+ +

En JavaScript, las funciones son objetos de primera clase, es decir, son objetos y se pueden manipular y transmitir al igual que cualquier otro objeto. Concretamente son objetos {{jsxref("Function")}}.

+ +

General

+ +

Toda función en JavaScript es un objeto Function. Ver {{jsxref("Function")}} para obtener información sobre las propiedades y métodos de los objetos Function.

+ +

Las funciones no son lo mismo que los procedimientos. Una función siempre devuelve un valor, pero un procedimiento, puede o no puede devolver un valor.

+ +

Para devolver un valor especifico distinto del predeterminado, una función debe tener una sentencia {{jsxref("Sentencias/return", "return")}}, que especifique el valor a devolver. Una función sin una instrucción return devolverá el valor predeterminado. En el caso de un {{jsxref("Object.prototype.constructor", "constructor")}} llamado con la palabra clave {{jsxref("new")}}, el valor predeterminado es el valor de su parametro. Para el resto de funciones, el valor predeterminado es undefined.

+ +

Los parámetros en la llamada a una función son los argumentos de la función. Los argumentos se pasan a las funciones por valor. Si la función cambia el valor de un argumento, este cambio no se refleja globalmente ni en la llamada de la función. Sin embargo, las referencias a objetos también son valores, y son especiales: si la función cambia las propiedades del objeto referenciado, ese cambio es visible fuera de la función, tal y como se muestra en el siguiente ejemplo:

+ +
/* Declarando la función 'myFunc' */
+ function myFunc(elobjeto)
+ {
+   elobjeto.marca= "Toyota";
+ }
+
+ /*
+  * Declarando la variable 'mycar';
+  * Se crea e inicializa el nuevo objeto;
+  * para hacer referencia a él mediante 'mycar'
+  */
+ var mycar = {
+   marca: "Honda",
+   modelo: "Accord",
+   año: 1998
+ };
+
+ /* Mostrando 'Honda' */
+ window.alert(mycar.marca);
+
+ /* Paso por referencia del objeto 'mycar' a la función 'myFunc'*/
+ myFunc(mycar);
+
+ /*
+  * Muestra 'Toyota' como valor de la propiedad 'marca'
+  * del objeto, que ha sido cambiado por la función.
+  */
+ window.alert(mycar.marca);
+ +

La palabra clave this no hace referencia a la función que está ejecutandose actualmente, por lo que debes referirte a los objetos Function por nombre, incluso dentro del cuerpo de la función. Como alternativa, puedes utilizar la propiedad arguments.callee (que no se recomienda).

+ +

Definiendo funciones

+ +

Hay varias formas de definir funciones:

+ +

Declaración de una función (La instrucción function)

+ +

Hay una sintaxis especial para declarar funciones (ver la instrucción {{jsxref("Sentencias/function","function")}} para más detalles):

+ +
function nombre([param[,param[, ...param]]]) {
+   instrucciones
+}
+
+ +
+
nombre
+
El nombre de la función.
+
+ +
+
param
+
El nombre de un argumento que se pasará a la función. Una función puede tener hasta 255 argumentos.
+
+ +
+
instrucciones
+
Las instruciones que forman el cuerpo de la función.
+
+ +

Expresión de una función (El operador function)

+ +

Una expresión function es similar y tiene la misma sintaxis que una declaración de función (ver operador {{jsxref("Operadores/function", "function")}} para más detalles):

+ +
function [nombre]([param[, param[, ...param]]]) {
+   instrucciones
+}
+
+ +
+
nombre
+
El nombre de la función, se puede omitir, en ese caso la función se conoce como función anónima.
+
+ +
+
param
+
El nombre de los argumentos que se pasarán a la función. Una función puede tener hasta 255 argumentos.
+
+ +
+
instrucciones
+
Las instrucciones que forman el cuerpo de la función.
+
+ +

La expresión de función flecha (=>)

+ +
+

Nota: Las expresiones de función Flecha son una tecnología experimental, parte de la proposición Harmony (EcmaScript 6) y no son ampliamente implementadas por los navegadores.

+
+ +

Una expresión de función flecha tiene una sintaxis más corta y su léxico se une a este valor (ver {{jsxref("Funciones/Arrow_functions", "arrow functions", "", 1)}} para más detalles):

+ +
([param] [, param]) => { instrucciones }
+
+param => expresión
+
+ +
+
param
+
El nombre de un argumento. Si no hay argumentos se tiene que indicar con (). Para un único argumento no son necesarios los parentesis. (como foo => 1)
+
instrucciones o expresión
+
Multiples instrucciones deben ser encerradas entre llaves. Una única expresión no necesita llaves. La expresión es, así mismo, el valor de retorno implícito de esa función.
+
+ +

El constructor Function

+ +

Como todos los demás objetos, los objetos {{jsxref("Function")}} se pueden crear mediante el operador new:

+ +
new Function (arg1, arg2, ... argN, functionBody)
+
+ +
+
arg1, arg2, ... argN
+
Ningún o varios argumentos  son pasados para ser utilizados por la función como nombres de argumentos formales. Cada uno debe ser una cadena que se ajuste a las reglas de identificadores válidos en JavaScript, o a una lista de este tipo de cadenas separadas por comas; por ejemplo "x", "theValue", o "a,b".
+
+ +
+
Cuerpo de la función
+
Una cadena conteniendo las instrucciones JavaScript que comprenden la definición de la función.
+
+ +

Llamar al contructor Function como una función, sin el operador new, tiene el mismo efecto que llamarlo como un constructor.

+ +
Nota: Utilizar el constructor Function no se recomienda, ya que necesita el cuerpo de la función como una cadena, lo cual puede ocasionar que no se optimize correctamente por el motor JS, y puede también causar otros problemas.
+ +

El objeto arguments

+ +

Puedes referirte a los argumentos de una función dentro de la misma, utilizando el objeto arguments. Ver {{jsxref("Functiones/argument", "Function")}}.

+ +

Ámbito de ejecución y pila de funciones

+ +

some section about scope and functions calling other functions

+ +

Repaso

+ +

Una función puede referirse y llamarse a sí misma. Hay tres maneras en la que una función puede referirse a sí misma.

+ +
    +
  1. El nombre de la función
  2. +
  3. {{jsxref("arguments.callee")}}
  4. +
  5. una función dentro del ambito de ejecución que refiere a la función
  6. +
+ +

Por ejemplo, considere la siguiente definición de función:

+ +
var foo = function bar() {
+   // el cuerpo va aqui
+};
+
+ +

Dentro del cuerpo de la función, todo lo siguientes son lo mismo:

+ +
    +
  1. bar()
  2. +
  3. arguments.callee()
  4. +
  5. foo()
  6. +
+ +

Una función que se llama a sí misma es llamada una función recursiva. En algunas ocaciones, la recursión es análoga a un bucle. Ambos ejecutan el mismo código múltiples veces, y ambas requieren una condición (para evitar un bucle infinito, o en su lugar, recursión infinita en este caso). Por ejemplo, el siguiente bucle:

+ +
var x = 0;
+while (x < 10) { // "x < 10" es la condición
+   // haz algo
+   x++;
+}
+
+ +

puede ser convertida en una función recursiva y una llamada a esa función:

+ +
function loop(x) {
+   if (x >= 10) // "x >= 10" es la condición de salida (equivalente a "!(x < 10)")
+      return;
+   // haz algo
+   loop(x + 1); // la llamada recursiva
+}
+loop(0);
+
+ +

Sin embargo, algunos algoritmos no pueden ser bucles iterativos simples. Por ejemplo, obtener todos los nodos de una estructura de arbol (e.g. el DOM) es realizado de manera más fácil usando recursión:

+ +
function recorrerArbol (nodo) {
+   if (nodo == null) //
+      return;
+   // haz algo con el nodo
+   for (var i = 0; i < nodo.nodosHijos.length; i++) {
+       recorrerArbol(nodo.nodosHijos[i]);
+   }
+}
+
+ +

En comparación con el bucle de la función loop, cada llamada recursiva hace muchas llamadas recursivas aquí.

+ +

Es posible convertir cualquier algoritmo recursivo en uno no recursivo, pero a menudo la lógica es mucho más compleja y hacerlo requiere el uso de una pila. De hecho, la recursión utiliza una pila: la pila de funciones.

+ +

El comportamiento similar a la pila se puede ver en el ejemplo siguiente:

+ +
function foo(i) {
+   if (i < 0)
+      return;
+   document.writeln('inicio:' + i);
+   foo(i - 1);
+   document.writeln('fin:' + i);
+}
+foo(3);
+ +

que produce:

+ +
inicio:3
+inicio:2
+inicio:1
+inicio:0
+fin:0
+fin:1
+fin:2
+fin:3
+
+ +

Funciones anidadas y cierres

+ +

Puede anidar una función dentro de una función. La función anidada (inner) es privada a la función que la contiene (outer). También con la forma: aclosure.

+ +
+
Un cierre es una expresión (normalmente una función) que puede tener variables libres junto con un entorno que enlaza esas variables (que "cierra" la expresión).
+ Dado que una función anidada es un cierre, esto significa que una función anidada puede "heredar" los argumentos y las variables de su función contenedora. En otras palabras, la función interna contiene el ámbito de la función externa.
+
+ +

Desde que la función anidada es un cierre (closure), esto significa que una función anidada puede "heredar" los argumentos y variables de su función contenedora. En otras palabras, la función interna contiene un scope (alcance) de la función externa.

+ +

Para resumir:

+ + + + + +

El ejemplo siguiente muestra funciones anidadas:

+ +
function addCuadrado(a,b) {
+   function cuadrado(x) {
+      return x * x;
+   }
+   return cuadrado(a) + cuadrado(b);
+}
+a = addCuadrado(2,3); // retorna 13
+b = addCuadrado(3,4); // retorna 25
+c = addCuadrado(4,5); // retorna 41
+
+ +

Dado que la función interna forma un cierre, puede llamar a la función externa y especificar argumentos para la función externa e interna

+ +
function fuerade(x) {
+   function dentro(y) {
+      return x + y;
+   }
+   return dentro;
+}
+resultado = fuerade(3)(5); // retorna 8
+
+ +

Consideraciones sobre la eficiencia

+ +

Observe cómo se conserva x cuando se devuelve dentro. Un cierre conserva los argumentos y las variables en todos los ámbitos que contiene. Puesto que cada llamada proporciona argumentos potencialmente diferentes, debe crearse un cierre para cada llamada a la función externa. En otras palabras, cada llamada a fuerade crea un cierre. Por esta razón, los cierres pueden usar una gran cantidad de memoria. La memoria se puede liberar sólo cuando el dentro devuelto ya no es accesible. En este caso, el cierre del dentro se almacena en resultado. Como el resultado está en el ámbito global, el cierre permanecerá hasta que se descargue el script (en un navegador, esto sucedería cuando la página que contiene el script esté cerrada).

+ +

Debido a esta ineficiencia, evite cierres siempre que sea posible, es decir, evite las funciones de anidamiento siempre que sea posible. Por ejemplo, considere el siguiente ejemplo:

+ +
function assignOnclick(elemento) {
+   element.onclick = function() {
+      this.style.backgroundColor = 'blue';
+   };
+}
+
+ +

Esto se puede volver a escribir para evitar el cierre. Sin embargo, la función interna anónima necesitaría ser nombrada y ya no sería privada para assignOnclick:

+ +
function assignOnclick(elemento) {
+   elemento.onclick = elemento_onclick;
+}
+
+function elemento_onclick() {
+   this.style.backgroundColor = 'blue';
+}
+
+ +

Multiples funciones anidadas

+ +

Las funciones pueden ser anidadas contigua de la otra, es decir, una función (A) que contiene una función (B) que contiene una función (C), etc. Ambas funciones B y C forman cierres aquí, por lo que B puede acceder a A y C pueden acceder a B. Además, como C puede acceder a B, que puede acceder a A, C también puede acceder a A. Por lo tanto, los cierres pueden contener múltiples ámbitos; contienen recursivamente el alcance de las funciones que lo contienen. Esto es llamado encadenamiento de objetos(scope chaining). (Por qué se llama "chaining"("encadenamiento") se explicará más adelante.)

+ +

Considere el siguiente ejemplo:

+ +
function A(x) {
+   function B(y) {
+      function C(z) {
+         alert(x + y + z);
+      }
+      C(3);
+   }
+   B(2);
+}
+A(1); // alerts 6 (1 + 2 + 3)
+
+ +

En este ejemplo, C accede a las B que hayan en y y A en x. Esto se puede hacer porque:

+ +
    +
  1. B forma un cierre que incluye a A, es decir, B puede acceder a los argumentos y variables de A.
  2. +
  3. C forma un cierre que incluye a B.
  4. +
  5. Como el cierre de B incluye a A, el cierre de C incluye a A, C puede acceder a los argumentos y variables de la Banda A. En otras palabras, codifica los ámbitos de B y A en ese orden.
  6. +
+ +

Lo contrario, sin embargo, no es cierto. A no puede acceder a C, porque A no puede acceder a ningún argumento o variable de B, que C es una variable de. Así, C permanece privado de sólo B.

+ +

Conflictos de nombre

+ +

Cuando dos argumentos o variables en los ámbitos de un cierre tienen el mismo nombre, existe un conflicto de nombres("name conflict"). Más alcances internos tienen prioridad, por lo que el alcance más interno tiene la más alta precedencia, mientras que el alcance más externo toma el más bajo. Esta es la cadena de alcance. El primero en la cadena es el alcance más interno, y el último es el alcance más exterior. Considera lo siguiente:

+ +
function fuerade() {
+   var x = 10;
+   function dentro(x) {
+      return x;
+   }
+   return dentro;
+}
+resultado = fuerade()(20); // retorna 20 en lugar de 10
+
+ +

El conflicto de nombres ocurre en la sentencia return x y está entre el parámetro x del dentroy la variable x del fuerade. La cadena de alcance aquí es {dentro, fuerade, global object}. Por lo tanto, la x de insidetiene precedentes sobre la x de fuerade, y 20 (dentrode x) se devuelve en lugar de 10 (fuerade de x).

+ +

Constructor vs declaración vs expresión

+ +

Las diferencias entre la Function constructora, la de declaración y la de expresión.

+ +

Compare lo siguiente:

+ +
    +
  1. Una función definida con el constructor Function asignado a la variable multiply                                                                                                                     + +
    var multiply = new Function("x", "y", "return x * y;");
    +
    +
  2. +
  3. Una declaración de una función denominada multiply                                                  +
    function multiply(x, y) {
    +   return x * y;
    +}
    +
    +
  4. +
  5. Una expresión de función anónima asignada a la variable multiply                           +
    var multiply = function(x, y) {
    +   return x * y;
    +}
    +
    +
  6. +
  7. Una declaración de una función denominada func_name asignada a la variable multiply                                                                                                                  +
    var multiply = function func_name(x, y) {
    +   return x * y;
    +}
    +
    +
  8. +
+ +

Todos hacen aproximadamente la misma cosa, con algunas diferencias sutiles:

+ + + +

Una declaración de función es muy fácilmente (ya menudo involuntariamente) convertida en una expresión de función. Una declaración de función deja de ser una cuando:

+ + + +

Ejemplos:

+ + + +

Definición condicional de una función

+ +

Las funciones se pueden definir de forma condicional utilizando expresiones de función o el constructor Function.

+ +

En la siguiente secuencia de comandos, la función zero nunca se define y no se puede invocar, porque 'if (0)' se evalúa como false:

+ +
if (0)
+   function zero() {
+      document.writeln("Esto es zero.");
+   }
+
+ +

Si se cambia el script para que la condición se convierta en 'if (1)', se define la función zero.

+ +
+

Nota: Aunque esto parece una declaración de función, ésta es en realidad una expresión de función ya que está anidada dentro de otra instrucción. Ver las diferencias entre las funciones de declaración y de expresión.

+
+ +
+

Nota: Algunos motores JavaScript, sin incluir SpiderMonkey, tratan incorrectamente cualquier expresión de función con un nombre como una declaración de función. Esto llevaría a que se definiera zero incluso con el siempre-falso("always-false") condicional. Una manera más segura de definir funciones condicionalmente es definir la función anónimamente y asignarla a una variable:

+
+ +
if (0)
+   var zero = function() {
+      document.writeln("Esto es zero.");
+   }
+
+ +

Funciones como manejadores de eventos

+ +

En JavaScript, los controladores de eventos DOM son funciones (en oposición a los objetos que contienen un método handleEvent en otros enlaces de idioma DOM). Las funciones se pasan un objeto de evento como el primer y único parámetro. Como cualquier otro parámetro, si el objeto de evento no necesita ser utilizado, puede omitirse en la lista de parámetros formales.

+ +

Los posibles objetivos de eventos en un documento HTML incluyen: window (Window objects("objeto de ventana"), including frames("marcos")), document (HTMLDocument objects("objetos HTMLDocument")), y elementos (Element objects("objetos Elemento")). En el HTML DOM, los destinos de evento tienen propiedades de controlador de eventos. Estas propiedades son nombres de eventos en minúsculas con prefijo "on", e.g. onfocus. Los eventos DOM Level 2 Events proporcionan una forma alternativa y más sólida de agregar oyentes de eventos.

+ +
+

Nota: Los eventos son parte del DOM, no de JavaScript. (JavaScript simplemente proporciona un enlace al DOM.)

+
+ +

El ejemplo siguiente asigna una función a un manejador de eventos de "foco"("focus") de ventana.

+ +
window.onfocus = function() {
+   document.body.style.backgroundColor = 'white';
+}
+
+ +

Si se asigna una función a una variable, puede asignar la variable a un controlador de eventos. El siguiente código asigna una función a la variable setBGColor.

+ +
var setBGColor = new Function("document.body.style.backgroundColor = 'white';");
+
+ +

Puede utilizar esta variable para asignar una función a un controlador de eventos de varias maneras. Aquí hay dos formas:

+ +
    +
  1. Escritura con propiedades de evento DOM HTML
    + +
    document.form1.colorButton.onclick = setBGColor;
    +
    +
  2. +
  3. Atributo de evento HTML
    + +
    <input name="colorBoton" type="button"
    +   value="Cambia color de fondo"
    +   onclick="setBGColor();"/>
    +
    + +

    Un manejador de eventos establecido de esta manera es en realidad una función, denominada después del atributo, envuelta alrededor del código especificado. Esta es la razón por la que los paréntesis en "setBGColor()" son necesarios aquí (en lugar de sólo "setBGColor").

    +
  4. +
+ +

Es equivalente a:

+ +
document.form1.colorButton.onclick = function onclick(event) {
+   setBGColor();
+}
+
+ +

Observe cómo se pasa el objeto de evento a esta función anónima como event de parámetro. Esto permite que el código especificado utilice el objeto Evento("Event object)":

+ +
<input ...
+    onclick="alert(event.target.tagName);"/>
+
+ +

Al igual que cualquier otra propiedad que se refiere a una función, el controlador de eventos puede actuar como un método, y this se refiere al elemento que contiene el controlador de eventos. En el ejemplo siguiente, se llama a la función referida por onfocus con this igual a window.

+ +
window.onfocus();
+
+ +

Un error común de principiante de JavaScript es el añadir paréntesis y / o parámetros al final de la variable, es decir, llamar al manejador de eventos cuando lo asigna. La adición de estos paréntesis asignará el valor devuelto al llamar al manejador de eventos, que a menudo es undefined (si la función no devuelve nada), en lugar del controlador de eventos en sí:

+ +
document.form1.button1.onclick = setBGColor();
+
+ +

Para pasar parámetros a un manejador de eventos, el manejador debe ser envuelto en otra función de la siguiente manera:

+ +
document.form1.button1.onclick = function() {
+   setBGColor('Algun valor');
+};
+
+ +

Compatibilidad con versiones anteriores

+ +

JavaScript 1.1 y anteriores

+ +

No puede anidar una sentencia de función en otra instrucción o en sí misma.

+ +

Variables locales dentro de las funciones

+ +

arguments: Objeto similar a una matriz que contiene los argumentos pasados a la función en ejecución.

+ +

arguments.callee: Especifica la función en ejecución.

+ +

arguments.caller: Especifica la función que invocó la función en ejecución.

+ +

arguments.length: Especifica el número de argumentos pasados a la función.

+ +

Ejemplos

+ +

1) Devolver un número con formato

+ +

La siguiente función devuelve una cadena que contiene la representación formateada de un número rellenado con ceros a la izquierda.

+ +
// Esta función devuelve una cadena rellenada con ceros a la izquierda
+
+function padZeros(num, totalLen) {
+   var numStr = num.toString();             // Inicializa un valor de retorno como cadena
+   var numZeros = totalLen - numStr.length; // Calcula el no. de ceros
+   for (var i = 1; i <= numZeros; i++) {
+      numStr = "0" + numStr;
+   }
+   return numStr;
+}
+
+ +

Las siguientes sentencias llaman a la función padZeros.

+ +
var resultado;
+resultado = padZeros(42,4); // retorna "0042"
+resultado = padZeros(42,2); // retorna "42"
+resultado = padZeros(5,4);  // retorna "0005"
+
+ +

2) Determinar si existe una función

+ +

Puede determinar si existe una función utilizando el operador typeof. En el ejemplo siguiente, se realiza una prueba para determinar si el objeto window tiene una propiedad llamada noFunc que es una función. Si es así, se utiliza; de lo contrario, se tomarán otras medidas.

+ +
 if ('function' == typeof window.noFunc) {
+   // utiliza noFunc()
+ } else {
+   // hacer algo mas
+ }
+
+ +
+

Nota: Tenga en cuenta que en la prueba if, e utiliza una referencia a noFunc aquí no hay paréntesis "()" después del nombre de la función para que la función real no se llame.

+
+ +

Ver también

+ +

Function, sentencia function, operador function

+ +

{{ languages( { "en": "en/Core_JavaScript_1.5_Reference/Functions", "ru": "ru/\u042f\u0434\u0440\u043e_JavaScript_1.5_\u0421\u043f\u0440\u043e\u0432\u0447\u043d\u0438\u043a/Functions", "fr": "fr/R\u00e9f\u00e9rence_de_JavaScript_1.5_Core/Fonctions", "ja": "ja/Core_JavaScript_1.5_Reference/Functions" } ) }}

diff --git a/files/es/web/javascript/reference/functions/method_definitions/index.html b/files/es/web/javascript/reference/functions/method_definitions/index.html new file mode 100644 index 0000000000..2aa23ca9b3 --- /dev/null +++ b/files/es/web/javascript/reference/functions/method_definitions/index.html @@ -0,0 +1,226 @@ +--- +title: Method definitions +slug: Web/JavaScript/Referencia/Funciones/Method_definitions +translation_of: Web/JavaScript/Reference/Functions/Method_definitions +--- +
{{JsSidebar("Functions")}}
+ +
A partir de ECMAScript 2015 (ES6), se introdujo una sintaxis abreviada para la definición de métodos en inicializadores de objetos. Es una forma abreviada para la asignación de una función al nombre del método.
+ +
 
+ +

Sintaxis

+ +
var obj = {
+  property( parameters… ) {},
+  *generator( parameters… ) {},
+// also with computed keys:
+  [property]( parameters… ) {},
+  *[generator]( parameters… ) {},
+// compare ES5 getter/setter syntax:
+  get property() {},
+  set property(value) {}
+};
+
+ +

Descripción

+ +

La sintaxis abreviada es similar a la introducida en ECMAScript 5 con getter y setter.

+ +

Dado el siguiente código:

+ +
var obj = {
+  foo: function() {},
+  bar: function() {}
+};
+ +

Ahora se puede abreviar esto mismo como:

+ +
var obj = {
+  foo() {},
+  bar() {}
+};
+ +
+

Nota : La sintaxis abreviada usa funciones con nombre en lugar de funciones anónimas (como en …foo: function() {}…). Las funciones con nombre pueden ser llamadas desde el cuerpo de la función (esto es imposible con funciones anónimas, ya que no existe un identificador al que referirse). Para más detalles, ver {{jsxref("Operators/function","function","#Examples")}}.

+
+ +

Abreviatura de métodos generadores

+ +

Los métodos generadores también pueden definirse usando la sintaxis abreviada. Note que el asterisco (*) en la sintaxis abreviada debe estar antes del nombre de propiedad del generador. Esto es, * g(){} funcionará, pero g *(){} no.

+ +
// Usando una propiedad con nombre (pre-ES6)
+var obj2 = {
+  g: function*() {
+    var index = 0;
+    while(true)
+      yield index++;
+  }
+};
+
+// El mismo objeto, usando la sintaxis abreviada
+var obj2 = {
+  * g() {
+    var index = 0;
+    while(true)
+      yield index++;
+  }
+};
+
+var it = obj2.g();
+console.log(it.next().value); // 0
+console.log(it.next().value); // 1
+ +

Las definiciones de métodos no son constructores (instanciables con new)

+ +

Las las definiciones de métodos no son constructores y generarán un {{jsxref("TypeError")}} si intenta instanciarlos.

+ +
var obj = {
+  method() {},
+};
+new obj.method; // TypeError: obj.method no es un constructor
+
+var obj = {
+  * g() {}
+};
+new obj.g; // TypeError: obj.g no es un constructor (cambiado en ES2016)
+
+ +

Ejemplos

+ +

Caso de prueba simple

+ +
var obj = {
+  a : "foo",
+  b(){ return this.a; }
+};
+console.log(obj.b()); // "foo"
+
+ +

Nombres de propiedad computados

+ +

La sintaxis abreviada también soporta nombres de propiedades computados.

+ +
var bar = {
+  foo0 : function (){return 0;},
+  foo1(){return 1;},
+  ["foo" + 2](){return 2;},
+};
+
+console.log(bar.foo0()); // 0
+console.log(bar.foo1()); // 1
+console.log(bar.foo2()); // 2
+ +

Especificaciónes

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoObservaciones
{{SpecName('ES6', '#sec-method-definitions', 'Method definitions')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ES7', '#sec-method-definitions', 'Method definitions')}}{{Spec2('ES7')}}Cambiado el que los métodos generadores no deban tener una  trampa [[Construct]] y deban fallar cuando se usen con new.
{{SpecName('ESDraft', '#sec-method-definitions', 'Method definitions')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
PrestaciónChromeFirefox (Gecko)Internet ExplorerOperaSafari
Definición de métodos abreviada{{CompatChrome("39")}}{{CompatGeckoDesktop("34")}}{{CompatNo}}{{CompatOpera("26")}}{{CompatNo}}
Métodos generadors no son constructores (ES2016){{CompatUnknown}}{{CompatGeckoDesktop("43")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PrestaciónAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Definición de métodos abreviada{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("34")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
Métodos generadores no son constructores (ES2016){{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile("43")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Notas específicas para SpiderMonkey

+ + + +

Ver también

+ + diff --git a/files/es/web/javascript/reference/functions/rest_parameters/index.html b/files/es/web/javascript/reference/functions/rest_parameters/index.html new file mode 100644 index 0000000000..2e26e2c6e0 --- /dev/null +++ b/files/es/web/javascript/reference/functions/rest_parameters/index.html @@ -0,0 +1,266 @@ +--- +title: Parámetros Rest +slug: Web/JavaScript/Referencia/Funciones/parametros_rest +tags: + - Funciones + - JavaScript + - Parametros Rest +translation_of: Web/JavaScript/Reference/Functions/rest_parameters +--- +
{{jsSidebar("Functions")}}
+ +

La sintaxis de los parámetros rest nos permiten representar un número indefinido de argumentos como un array.

+ +

{{EmbedInteractiveExample("pages/js/functions-restparameters.html")}}

+ +

La fuente interactiva de este ejemplo es almacenado en un repositorio de GitHub. Si a ti te gustaría contribuir al proyecto de ejemplos interactivos, por favor clona este repositorio https://github.com/mdn/interactive-examples y envíanos un pull-request.

+ +

Sintaxis

+ +
function(a, b, ...theArgs) {
+  // ...
+}
+
+ +

Descripción

+ +

El último parámetro de una función se puede prefijar con ..., lo que hará que todos los argumentos restantes (suministrados por el usuario) se coloquen dentro de un array de javascript "estándar".

+ +

Sólo el último parámetro puede ser un "parámetro rest".

+ +
function myFun(a, b, ...manyMoreArgs) {
+  console.log("a", a);
+  console.log("b", b);
+  console.log("manyMoreArgs", manyMoreArgs);
+}
+
+myFun("one", "two", "three", "four", "five", "six");
+
+// Console Output:
+// a, one
+// b, two
+// manyMoreArgs, [three, four, five, six]
+
+ +

Diferencia entre los parámetros rest y el objeto arguments

+ +

Hay tres principales diferencias entre los parámetros rest y el objeto arguments:

+ + + +

De argumentos a array

+ +

Los parámetros rest han sido agregados para reducir el código repetitivo que se usaba en los parámetros.

+ +
// Antes de los parámetros rest, "arguments" se podía convertir en un array usando:
+
+function f(a, b) {
+
+  let normalArray = Array.prototype.slice.call(arguments)
+  // -- o  --
+  let normalArray = [].slice.call(arguments)
+  // -- o  --
+  let normalArray = Array.from(arguments)
+
+  let first = normalArray.shift()  // OK, nos da el primer argumento
+  let first = arguments.shift()    // ERROR (arguments no es un array)
+}
+
+// Ahora, puedes acceder fácilmente a un array usando un parametro rest.
+
+function f(...args) {
+  let normalArray = args
+  let first = normalArray.shift() // OK, gives the first argument
+}
+ +

Desestructuración de los parametros rest

+ +

Los parámetros rest pueden ser desestructurados, eso significa que sus datos pueden ser desempaquetados dentro de distintas variables. Ver Destructuring assignment.

+ +
function f(...[a, b, c]) {
+  return a + b + c;
+}
+
+f(1)          // NaN (b y c son indefinidos)
+f(1, 2, 3)    // 6
+f(1, 2, 3, 4) // 6 (el cuarto parámetro no está desestructurado)
+ +

Ejemplos

+ +

Usando parámetros rest

+ +

En este ejemplo, el primer argumento es mapeado con 'a' y el segundo con 'b', entonces, esos argumentos nombrados, son usados normalmente

+ +

De todas formas, el tercer argumento, manyMoreArgs, será un array que contendrá tantos argumentos como el usuario incluya (3er, 4to, 5to ...).

+ +
function myFun(a, b, ...manyMoreArgs) {
+  console.log("a", a)
+  console.log("b", b)
+  console.log("manyMoreArgs", manyMoreArgs)
+}
+
+myFun("one", "two", "three", "four", "five", "six")
+
+// a, one
+// b, two
+// manyMoreArgs, [three, four, five, six]
+ +

Debajo... incluso si hay solo un valor, el ultimo argumento seguirá siendo colocado dentro de un array.

+ +
// usando la misma definición de función del ejemplo anterior
+myFun("one", "two", "three")
+
+// a, one
+// b, two
+// manyMoreArgs, [three]
+ +

Debajo, el tercer argumento no esta provisto, pero manyMoreArgs continúa siendo un array (aunque uno vacío).

+ +
//usando la misma definición de función del ejemplo anterior
+
+myFun("one", "two")
+
+// a, one
+// b, two
+// manyMoreArgs, []
+ +

Argument length

+ +

Puesto que theArgs es un array, su tamaño (un conteo de sus elementos) es dado por la propiedad length :

+ +
function fun1(...theArgs) {
+  console.log(theArgs.length);
+}
+
+fun1();  // 0
+fun1(5); // 1
+fun1(5, 6, 7); // 3
+
+ +

Ordinary parameter and rest parameters

+ +

En el siguiente ejemplo, se usa un parámetro rest para agrupar  dentro de un array a todos los argumentos despues del primero.  Luego cada uno es multiplicado por el primero y el arreglo es retornado:

+ +
function multiply(multiplier, ...theArgs) {
+  return theArgs.map(function (element) {
+    return multiplier * element;
+  });
+}
+
+let arr = multiply(2, 1, 2, 3);
+console.log(arr); // [2, 4, 6]
+
+ +

El siguiente ejemplo muestra que se puede usar los métodos de Array en los parámetros rest , pero no en el objeto arguments:

+ +
function sortRestArgs(...theArgs) {
+  var sortedArgs = theArgs.sort();
+  return sortedArgs;
+}
+
+console.log(sortRestArgs(5,3,7,1)); // muestra 1,3,5,7
+
+function sortArguments() {
+  var sortedArgs = arguments.sort();
+  return sortedArgs; // esto nunca va a ocurrir
+}
+
+// lanza un TypeError: arguments.sort is not a function
+console.log(sortArguments(5,3,7,1));
+
+ +

Para poder usar los métodos de  Array en el objeto arguments, se debe convertir a un Array primero.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-function-definitions', 'Function Definitions')}}{{Spec2('ES6')}}definción inicial.
{{SpecName('ESDraft', '#sec-function-definitions', 'Function Definitions')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad en Navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico{{CompatChrome(47)}}{{CompatVersionUnknown}}{{CompatGeckoDesktop("15.0")}}{{CompatNo}}34{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Soporte Básico{{CompatNo}}{{CompatChrome(47)}}{{CompatGeckoMobile("15.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatChrome(47)}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/functions/set/index.html b/files/es/web/javascript/reference/functions/set/index.html new file mode 100644 index 0000000000..ef555e6759 --- /dev/null +++ b/files/es/web/javascript/reference/functions/set/index.html @@ -0,0 +1,217 @@ +--- +title: setter +slug: Web/JavaScript/Referencia/Funciones/set +translation_of: Web/JavaScript/Reference/Functions/set +--- +
{{jsSidebar("Funciones")}}
+ +

La sintaxis  set  asocia la propiedad de un objeto a una función que será llamada cuando haya un intento de asignar valor a esa propiedad.

+ +

Sintaxis

+ +
{set prop(val) { . . . }}
+{set [expression](val) { . . . }}
+ +

Parámetros

+ +
+
prop
+
El nombre de la propiedad a asociar con la función dada.
+
+ +
+
val
+
Un alias para la variable que contiene el valor a asignar a la propiedad.
+
expression
+
A partir de ECMAScript 2015, se puede también usar expresiones para nombres de propiedades computados para asociar a la función dada.
+
+ +

Descripción

+ +

En JavaScript, un setter puede ser usado para ejecutar una función donde sea que una propiedad se intente cambiar. Los setters son regularmente usados en conjunto con getters para crear un tipo de pseudo-propiedad. No es posible tener simultáneamente un setter en una propiedad que ya tiene un valor.

+ +

Tenga en cuenta lo siguiente al trabajar con setters:

+ +
+ +
+ +

Ejemplos

+ +

Definiendo un setter en el inicializador de nuevos objetos

+ +

En el siguiente ejemplo definimos una pseudo-propiedad  actual  al objeto lenguaje. Cuando se le asigne un valor a actual, actualiza log con ese valor:

+ +
var lenguaje = {
+  set actual(mensaje) {
+    this.log.push(mensaje);
+  },
+  log: []
+}
+lenguaje.actual='ES';
+console.log(lenguaje.log); // ['ES']
+
+lenguaje.actual='FR';
+console.log(lenguaje.log); // ['ES', 'FR']
+
+ + + +

Note que actual no está definido y cualquier intento de accederlo devolverá undefined.

+ +

Eliminando un setter con el operador delete 

+ +

Si desea eliminar el setter, puede simplemente aplicar delete en él:

+ +
delete lenguaje.actual;
+
+ +

Definiendo un setter en un objecto existente usando defineProperty

+ +

Para añadir un setter a un objeto existente, use {{jsxref("Object.defineProperty()")}}

+ +
consr o = {a: 0};
+
+Object.defineProperty(o, 'b', {
+  set: function (x) { this.a = x / 2; }
+});
+
+o.b = 10; // Ejecuta el setter, el cual asigna 10 / 2 (5) a la propiedad 'a'
+console.log(o.a) // 5
+ +

Usando un nombre de propiedad computado

+ +
+

Nota: Propiedades computadas son 'experimental technology', parte de la propuesta para ECMAScript 6, y no está soportado en todos los navegadores. Dará error de sintaxis en entornos no soportados.

+
+ +
const expr = 'foo';
+
+var obj = {
+  baz: 'bar',
+  set [expr](v) { this.baz = v; }
+};
+
+console.log(obj.baz); // "bar"
+obj.foo = "baz";      // ejecuta el setter
+console.log(obj.baz); // "baz"
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES5.1', '#sec-11.1.5', 'Object Initializer')}}{{Spec2('ES5.1')}}Definición inicial.
{{SpecName('ES6', '#sec-method-definitions', 'Method definitions')}}{{Spec2('ES6')}}Se añaden las propiedades computadas.
{{SpecName('ESDraft', '#sec-method-definitions', 'Method definitions')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad con navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(1)}}{{ CompatGeckoDesktop("1.8.1") }}{{ CompatIE(9) }}9.53
Computed property names{{CompatNo}}{{ CompatGeckoDesktop("34") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{ CompatGeckoMobile("1.8.1") }}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Computed property names{{CompatNo}}{{CompatNo}}{{ CompatGeckoMobile("34.0") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Notas específicas para SpiderMonkey-specific

+ + + +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/aggregateerror/index.html b/files/es/web/javascript/reference/global_objects/aggregateerror/index.html new file mode 100644 index 0000000000..524d0f9f5a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/aggregateerror/index.html @@ -0,0 +1,87 @@ +--- +title: AggregateError +slug: Web/JavaScript/Referencia/Objetos_globales/AggregateError +tags: + - AggregateError + - Clase + - Experimental + - Interfaz + - JavaScript +translation_of: Web/JavaScript/Reference/Global_Objects/AggregateError +--- +
{{JSRef}}
+ +

El objeto AggregateError representa un error cuando se deben agrupar varios errores en un solo error. Se lanza cuando una operación necesita informar de varios errores, por ejemplo, {{JSxRef("Promise.any()")}}, cuando todas las promesas que se le pasan son rechazadas.

+ +

Constructor

+ +
+
{{JSxRef("Global_Objects/AggregateError/AggregateError", "AggregateError()")}}
+
Crea un nuevo objeto AggregateError.
+
+ +

Propiedades de la instancia

+ +
+
{{JSxRef("Error.prototype.message", "AggregateError.prototype.message")}}
+
Mensaje de error, el valor predeterminado es "" (la cadena vacía).
+
{{JSxRef("Error.prototype.name", "AggregateError.prototype.name")}}
+
Nombre del error, el valor predeterminado es AggregateError.
+
+ +

Ejemplos

+ +

Capturar un error agregado

+ +
Promise.any([
+  Promise.reject(new Error("algún error")),
+]).catch(e => {
+  console.log(e instanceof AggregateError); // true
+  console.log(e.message);                   // "Todas las promesas rechazadas"
+  console.log(e.name);                      // "AggregateError"
+  console.log(e.errors);                    // [ Error: "algún error" ]
+});
+
+ +

Crear un AggregateError

+ +
try {
+  throw new AggregateError([
+    new Error("algún error"),
+  ], 'Hola');
+} catch (e) {
+  console.log(e instanceof AggregateError); // true
+  console.log(e.message);                   // "Hola"
+  console.log(e.name);                      // "AggregateError"
+  console.log(e.errors);                    // [ Error: "algún error" ]
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('Promise.any', '#sec-aggregate-error-objects', 'AggregateError')}}
+ +

Compatibilidad del navegador

+ +
+ + +

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

+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/@@iterator/index.html b/files/es/web/javascript/reference/global_objects/array/@@iterator/index.html new file mode 100644 index 0000000000..65ac581204 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/@@iterator/index.html @@ -0,0 +1,89 @@ +--- +title: 'Array.prototype[@@iterator]()' +slug: Web/JavaScript/Referencia/Objetos_globales/Array/@@iterator +tags: + - Array + - ECMAScript 2015 + - Iterator + - JavaScript + - Prototipo + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@iterator +--- +
{{JSRef}}
+ +

El valor inicial de la propiedad @@iterator es el mismo objeto de función que el valor inicial de la propiedad {{jsxref("Array.prototype.values()", "values()")}}.

+ +

Sintaxis

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

Valor de retorno

+ +

El valor inicial dado por el iterador {{jsxref("Array.prototype.values()", "values()")}}. Por defecto, usar arr[Symbol.iterator] devolverá la función {{jsxref("Array.prototype.values()", "values()")}}.

+ +

Ejemplos

+ +

Iteración usando el bucle for...of 

+ +
var arr = ['w', 'y', 'k', 'o', 'p'];
+var eArr = arr[Symbol.iterator]();
+// nuestro navegador debe ser compatible con el bucle for..of
+// y variables let-scoped en bucles for
+for (let letter of eArr) {
+  console.log(letter);
+}
+
+ +

Iteración 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
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}}{{Spec2('ES2015')}}Definición inicial..
{{SpecName('ESDraft', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
+ + +

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/@@species/index.html b/files/es/web/javascript/reference/global_objects/array/@@species/index.html new file mode 100644 index 0000000000..2f15ad345a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/@@species/index.html @@ -0,0 +1,76 @@ +--- +title: 'get Array[@@species]' +slug: Web/JavaScript/Referencia/Objetos_globales/Array/@@species +tags: + - Array + - JavaScript + - Prototipo + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@species +--- +
{{JSRef}}
+ +

La propiedad de acceso Array[@@species] devuelve el constructor de Array.

+ +

Sintaxis

+ +
Array[Symbol.species]
+
+ +

Valor de retorno

+ +

El constructor {{jsxref("Array")}}.

+ +

Descripción

+ +

La propiedad de acceso species devuelve el constructor predeterminado para objetos Array. Los constructores de subclase pueden anularlo para cambiar la asignación del constructor.

+ +

Ejemplos

+ +

La propiedad species devuelve la función de constructor predeterminada, que es el constructor Array para objetos Array:

+ +
Array[Symbol.species]; // function Array()
+ +

In a derived collection object (e.g. your custom array MyArray), the MyArray species is the MyArray constructor. However, you might want to overwrite this, in order to return parent Array objects in your derived class methods:

+ +
class MyArray extends Array {
+  // Overwrite MyArray species to the parent Array constructor
+  static get [Symbol.species]() { return Array; }
+}
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-get-array-@@species', 'get Array [ @@species ]')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-get-array-@@species', 'get Array [ @@species ]')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
+ + +

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/@@unscopables/index.html b/files/es/web/javascript/reference/global_objects/array/@@unscopables/index.html new file mode 100644 index 0000000000..43dc771ae7 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/@@unscopables/index.html @@ -0,0 +1,78 @@ +--- +title: 'Array.prototype[@@unscopables]' +slug: Web/JavaScript/Referencia/Objetos_globales/Array/@@unscopables +tags: + - Array + - JavaScript + - Matriz + - Propiedad + - Prototipo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@unscopables +--- +
{{JSRef}}
+ +

La propiedad de símbolo @@unscopable contiene nombres de propiedad que no se incluyeron en el estándar ECMAScript antes de la versión ES2015. Estas propiedades se excluyen de los enlaces de declaración with.

+ +

Sintaxis

+ +
arr[Symbol.unscopables]
+ +

Descripción

+ +

 

+ +

Las propiedades de matriz predeterminadas que se excluyen de los enlaces with son: copyWithin, entries, fill, find, findIndex, includes, keys, y values.

+ +

Consulte {{jsxref("Symbol.unscopables")}} para saber cómo configurar unscopables para sus propios objetos.

+ +

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

+ +

Ejemplos

+ +

El siguiente código funciona bien en ES5 y más abajo. Sin embargo, en ECMAScript 2015 y posterior, se introdujo el método {{jsxref("Array.prototype.keys()")}}. Eso significa que dentro de los entornos with, las "keys" ahora serían el método y no la variable. Aquí es donde entra en juego la propiedad de símbolo @@unscopables Array.prototype[@@unscopables] incorporada y evita que algunos de los métodos Array tengan un alcance en la instrucción with.

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

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
+ + +

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/concat/index.html b/files/es/web/javascript/reference/global_objects/array/concat/index.html new file mode 100644 index 0000000000..dc7dfc999d --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/concat/index.html @@ -0,0 +1,140 @@ +--- +title: Array.prototype.concat() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/concat +tags: + - Array + - JavaScript + - Métodos + - Prototipo + - Referencia + - array.concat + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/concat +--- +
{{JSRef}}
+ +

El método concat() se usa para unir dos o más arrays. Este método no cambia los arrays existentes, sino que devuelve un nuevo array.

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

Sintaxis

+ +
var nuevo_array = viejo_array.concat(valor1[, valor2[, ...[, valorN]]])
+ +

Parámetros

+ +
+
valorN {{optional_inline}}
+
Arrays y/o valores a concatenar en el nuevo array. Ver la descripción posterior para más detalles.
+
+ +

Valor devuelto

+ +
+
Una nueva instancia de {{jsxref("Array")}}.
+
+ +

Descripción

+ +

El método concat crea un nuevo array que consta de los elementos del objeto que lo llama, seguido, en orden de ingreso, por los elementos de cada parámetro (en caso de que el parámetro sea un array), o el parámetro mismo (en caso de que no sea un array). No se aplica de forma recursiva a parámetros con arreglos anidados.

+ +

El método concat no altera this el array original, ni ninguno de los que fueron ingresados como parámetros, sino que devuelve una copia superficial que contiene copias de los mismos elementos de los arrays originales combinados. Los elementos de los arrays originales son copiados en el nuevo array de la siguiente manera:

+ + + +
+

Nota: Al concatenar arrays o valores no se modificarán los originales. Además, las operaciones en el nuevo array (excepto las operaciones en elementos que son referencias a objetos) no tendrán efecto en el array original, y viceversa.

+
+ +

Ejemplos

+ +

Concatenando dos arrays

+ +

En el siguiente código se concatenan dos arrays:

+ +
const letters = ['a', 'b', 'c'];
+const numbers = [1, 2, 3];
+
+letters.concat(numbers);
+// result in ['a', 'b', 'c', 1, 2, 3]
+
+ +

Concatenando tres arrays

+ +

En el siguiente código se concatenan tres arrays:

+ +
const num1 = [1, 2, 3];
+const num2 = [4, 5, 6];
+const num3 = [7, 8, 9];
+
+const numbers = num1.concat(num2, num3);
+
+console.log(numbers);
+// results in [1, 2, 3, 4, 5, 6, 7, 8, 9]
+
+ +

Concatenando valores a un array

+ +

En el siguiente código se concatenan tres valores a un array:

+ +
var alpha = ['a', 'b', 'c'];
+
+var alphaNumeric = alpha.concat(1, [2, 3]);
+
+console.log(alphaNumeric);
+// Da como resultado: ['a', 'b', 'c', 1, 2, 3]
+
+ +

Concatenando arrays anidados

+ +

En el siguiente código concatena arrays anidados y demuestra retención de referencias:

+ +
var num1 = [[1]];
+var num2 = [2, [3]];
+
+var nums = num1.concat(num2);
+
+console.log(nums);
+// Da como resultado: [[1], 2, [3]]
+
+// modifica el primer elemento de num1
+num1[0].push(4);
+
+console.log(nums);
+// Da como resultado: [[1, 4], 2, [3]]
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-array.prototype.concat', 'Array.prototype.concat')}}
+ +

Compatibilidad con navegadores

+ +
+

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

+
+ +
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/copywithin/index.html b/files/es/web/javascript/reference/global_objects/array/copywithin/index.html new file mode 100644 index 0000000000..e28b99c382 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/copywithin/index.html @@ -0,0 +1,165 @@ +--- +title: Array.prototype.copyWithin() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/copyWithin +tags: + - Array + - ECMAScript 2015 + - JavaScript + - Prototipo + - Referencia + - metodo + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/copyWithin +--- +
{{JSRef}}
+ +

El método copyWithin() transfiere una copia  plana de una sección a otra dentro del mismo array ( o contexto similar ), sin modificar su propiedad length y lo devuelve.

+ +

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

+ +

Sintaxis

+ +
arr.copyWithin(target)
+arr.copyWithin(target, start)
+arr.copyWithin(target, start, end)
+ +

Parámetros

+ +
+
target
+
Índice basado en cero que establece en dónde dentro de la secuencia original se insertará la secuencia copiada.  Si es negativo, target se contará desde el final. -1 es el último elemento, -2 el penúltimo, etc.
+
Si target es  igual o mayor que  arr.length, no se copiará nada. Si target es posicionado después de start, la secuencia copiada se recortará para que encaje con arr.length.
+
start {{optional_inline}}
+
Índice basado en cero a partir del cual comenzar la copia de elementos. Si es negativo, start comenzará a contarse desde el final.
+
Si start es omitido, copyWithin copiará desde el principio (por defecto es 0).
+
end {{optional_inline}}
+
Índice basado en cero hasta el cual se copiarán los elementos. copyWithin copiará hasta pero sin incluir el end. Si es negativo, end será contado desde el final.
+
Si end es omitido, copyWithin copiará hasta el final ( por defecto es arr.length ).
+
+ +

Valor de retorno

+ +

El array modificado.

+ +

Descripción

+ +

copyWithin es similar a la función memmove de C y C++  , siendo altamente eficiente para desplazar los datos en un {{jsxref("Array")}} o  {{jsxref("TypedArray")}}. La secuencia de datos es leída y escrita en una sola operación;  la escritura será correcta incluso en el caso de que la zona de lectura y el destino de escritura se solapen.

+ +

La función copyWithin es intencionadamente genérica, permitiendo que se aplique en contextos en los cuales this no sea necesariamente un objeto {{jsxref("Array")}}.

+ +

El método copyWithin es un método mutador. No altera la propiedad length de this, pero cambiará su contenido y creará nuevas propiedades si es necesario.

+ +

Ejemplos

+ +

En los siguientes ejemplos céntrate en los siguientes aspectos:

+ + + +
[1, 2, 3, 4, 5].copyWithin(-2);
+// [1, 2, 3, 1, 2]
+
+[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(-2, -3, -1);
+// [1, 2, 3, 3, 4]
+
+ +

A continuación se aplica en el contexto de un objeto array-like:

+ + + +
[].copyWithin.call({length: 5, 3: 1}, 0, 3);
+// {0: 1, 3: 1, length: 5}
+
+
+ +

Lo que sigue ahora son las subclases tipadas de Array en ES6:

+ +
// Arrays tipados en ES6. Son subclases de Array
+var i32a = new Int32Array([1, 2, 3, 4, 5]);
+
+i32a.copyWithin(0, 2);
+// Int32Array [3, 4, 5, 4, 5]
+
+// En plataformas que todavía no siguen la norma 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 =
+  // Array: Number[, Number[, Number]]
+  function copyWithin(target, start, stop) {
+    var positiveT = target >= 0,
+        positiveS = (start = start | 0) >= 0,
+        length    = this.length,
+        zero      = 0,
+        r         = function() {return ((+new Date) * Math.random()).toString(36)},
+        delimiter = "\b" + r() + "-" + r() + "-" + r() + "\b",
+        hold;
+
+    stop = stop || this.length;
+    hold = this.slice.apply(this,
+      positiveT?
+        [start, stop]:
+      positiveS?
+        [start, -target]:
+      [start])
+    .join(delimiter);
+
+    return this.splice.apply(this,
+      positiveT?
+        [target, stop - start, hold]:
+      positiveS?
+        [target, stop, hold]:
+      [target, start, hold]),
+            this.join(delimiter).split(delimiter).slice(zero, length);
+  }
+}
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-array.prototype.copyWithin', 'Array.prototype.copyWithin')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.prototype.copyWithin', 'Array.prototype.copyWithin')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
+

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/entries/index.html b/files/es/web/javascript/reference/global_objects/array/entries/index.html new file mode 100644 index 0000000000..89fef6475f --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/entries/index.html @@ -0,0 +1,86 @@ +--- +title: Array.prototype.entries() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/entries +tags: + - Array + - ECMAScript 2015 + - Iterador + - Iterator + - JavaScript + - Prototipo + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/entries +--- +
{{JSRef}}
+ +
El método entries() retorna un nuevo objeto Array Iterator que contiene los pares clave/valor para cada índice de la matriz.
+ +
 
+ +
+

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

+
+ +

Sintaxis

+ +
arr.entries()
+ +

Valor de retorno

+ +

Un nuevo objeto iterador {{jsxref("Array")}}.

+ +

Ejemplos

+ +

Usando un bucle for…of 

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

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
{{SpecName('ES6', '#sec-array.prototype.entries', 'Array.prototype.entries')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.prototype.entries', 'Array.prototype.entries')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
+

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

+
+ +
 
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/every/index.html b/files/es/web/javascript/reference/global_objects/array/every/index.html new file mode 100644 index 0000000000..540ebbdfa9 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/every/index.html @@ -0,0 +1,195 @@ +--- +title: Array.prototype.every() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/every +tags: + - Arreglo + - ECMAScript 5 + - JavaScript + - Prototipo + - metodo + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/every +--- +
{{JSRef}}
+ +

Determina si todos los elementos en el array satisfacen una condición.

+ +
+

Precaución: ¡Llamar este método en un array vacío devuelve true para cualquier condición!

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

Sintaxis

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

Parámetros

+ +
+
callback
+
Una función para probar cada elemento; recibe tres argumentos: +
+
currentValue (required)
+
El elemento actual del arreglo que está siendo procesado.
+
index {{Optional_inline}}
+
El índice del elemento actual del arreglo que está siendo procesado.
+
array {{Optional_inline}}
+
El arreglo sobre el cual fue llamado every.
+
+
+
thisArg {{Optional_inline}}
+
Valor por usar como this cuando se ejecute callback.
+
+ +

Valor de retorno

+ +

true si la función de devolución de llamada devuelve un valor de {{Glossary("truthy")}} para cada elemento de matriz; de lo contrario, false.

+ +

Descripción

+ +

El método every ejecuta la función callback dada una vez por cada elemento presente en el arreglo hasta encontrar uno que haga retornar un valor falso a callback (un valor que resulte falso cuando se convierta a booleano).  Si no se encuentra tal elemento, el método every de inmediato retorna  false. O si  callback retorna verdadero para todos los elementos, every retornará true. callback es llamada sólo para índices del arreglo que tengan valores asignados; no se llama para índices que hayan sido eliminados o a los que no se les haya asignado un valor.

+ +

callback es llamada con tres argumetos: el valor del elemento, el índice del elemento y el objeto Array que está siendo recorrido.

+ +

Si se proporciona un parámetro thisArg a every, será pasado a la función callback cuando sea llamada, usándolo como valor this. En otro caso, se pasará el valor undefined para que sea usado como valor this.  El valor this observable por parte de  callback se determina de acuerdo a las normas usuales para determinar el this visto por una función.

+ +

every no modifica el arreglo sobre el cual es llamado.

+ +

El intervalo de elementos procesados por every se establece antes de la primera llamada a callback.  Los elementos que se agreguen al arreglo después de que la función every comience no serán vistos por la función callback.  Si se modifican elementos existentes en el arreglo, su valor cuando sea pasado a callback será el valor que tengan cuando sean visitados; los elementos que se eliminen no serán visitados.

+ +

every opera como el cuantificador "para todo" en matemáticas. En particular con el arreglo vacío retorna true. (es una verdad vacua que todos los elementos del conjunto vacío satisfacen una condición dada.)

+ +

Ejemplos

+ +

Probando el tamaño de todos los elementos de un arreglo

+ +

El siguiente ejemplo prueba si todos los elementos de un arreglo son mayores que 10.

+ +
function esSuficientementeGrande(elemento, indice, arrreglo) {
+  return elemento >= 10;
+}
+[12, 5, 8, 130, 44].every(esSuficientementeGrande);   // false
+[12, 54, 18, 130, 44].every(esSuficientementeGrande); // true
+
+ +

Usar funciones flecha

+ +

Las funciones flecha proveen una sintaxis más corta para la misma prueba.

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

Polyfill

+ +

every fue añadida a la norma ECMA-262 en la 5ta edición; por lo que podría no estar presente en otras implementaciones de la norma.  Puede sobrellevarlo insertando el siguiente código al comienzo de su programa,  permitiendo el uso de every  en implementación que no lo soporten de manera nativa. Este algoritmo es exactamente el especificado en ECMA-262, 5ta edición, suponiendo que  Object y TypeError tienen sus valores originales y que  callbackfn.call evalua al 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;
+  };
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.4.4.16', 'Array.prototype.every')}}{{Spec2('ES5.1')}}Initial definition. Implemented in JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.every', 'Array.prototype.every')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.every', 'Array.prototype.every')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad con navegadores

+ +
+

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

+
+ +
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/fill/index.html b/files/es/web/javascript/reference/global_objects/array/fill/index.html new file mode 100644 index 0000000000..7113df34bd --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/fill/index.html @@ -0,0 +1,145 @@ +--- +title: Array.prototype.fill() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/fill +tags: + - Array + - ECMAScript 2015 + - JavaScript + - Prototipo + - metodo + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/fill +--- +
{{JSRef}}
+ +

El método fill() cambia todos los elementos en un arreglo por un valor estático, desde el índice start (por defecto 0) hasta el índice end (por defecto array.length). Devuelve el arreglo modificado.

+ +

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

+ +

Sintaxis

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

Parámetros

+ +
+
value
+
Valor con el que se va a rellenar el arreglo. (Nótese que todos los elementos en el arreglo tendrán este mismo valor).
+
start {{optional_inline}}
+
Índice inicial, por defecto 0.
+
end {{optional_inline}}
+
Índice final, por defecto this.length.
+
+ +

Valor de retorno

+ +

El arreglo modificado, rellenado con valor.

+ +

Descripción

+ + + +

Ejemplos

+ +
[1, 2, 3].fill(4);               // [4, 4, 4]
+[1, 2, 3].fill(4, 1);            // [1, 4, 4]
+[1, 2, 3].fill(4, 1, 2);         // [1, 4, 3]
+[1, 2, 3].fill(4, 1, 1);         // [1, 2, 3]
+[1, 2, 3].fill(4, 3, 3);         // [1, 2, 3]
+[1, 2, 3].fill(4, -3, -2);       // [4, 2, 3]
+[1, 2, 3].fill(4, NaN, NaN);     // [1, 2, 3]
+[1, 2, 3].fill(4, 3, 5);         // [1, 2, 3]
+Array(3).fill(4);                // [4, 4, 4]
+[].fill.call({ length: 3 }, 4);  // {0: 4, 1: 4, 2: 4, length: 3}
+
+// Objects by reference.
+var arr = Array(3).fill({}) // [{}, {}, {}];
+arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]
+ +

Polyfill

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

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-array.prototype.fill', 'Array.prototype.fill')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.prototype.fill', 'Array.prototype.fill')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad con navegadores

+ +
+

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/filter/index.html b/files/es/web/javascript/reference/global_objects/array/filter/index.html new file mode 100644 index 0000000000..98e6843c4f --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/filter/index.html @@ -0,0 +1,231 @@ +--- +title: Array.prototype.filter() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/filter +tags: + - Array + - ECMAScript 5 + - JavaScript + - Prototipo + - Referencia + - metodo + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/filter +--- +
{{JSRef}}
+ +

El método filter() crea un nuevo array con todos los elementos que cumplan la condición implementada por la función dada.

+ +

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

+ +

Sintaxis

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

Parámetros

+ +
+
callback
+
Función que comprueba cada elemento del array para ver si cumple la condición (también llamada predicado).  Retorna true si el elemento la cumple o en caso contrario retornará false. Acepta tres parámetros:
+
+
+
currentValue
+
El elemento actual del array que está siendo procesado.
+
index {{optional_inline}}
+
El índice del elemento actual del array que está siendo procesado.
+
array {{optional_inline}}
+
El array sobre el que se ha llamado filter.
+
+
+
thisArg {{optional_inline}}
+
Opcional. Valor a utilizar como this cuando se ejecuta callback.
+
+ +

Valor devuelto

+ +

Un nuevo array con los elementos que cumplen la condición. Si ningún elemento cumple la condición, se devolverá un array vacío.

+ +

Descripción

+ +

filter() llama a la función callback  sobre cada elemento del array, y construye un nuevo array con todos los valores para los cuales  callback devuelve un valor verdadero. callback es invocada sólo para índices del array que tengan un valor asignado. No se invoca sobre índices que hayan sido borrados o a los que no se les haya asignado algún valor. Los elementos del array que no cumplan la condición callback  simplemente los salta, y no son incluidos en el nuevo array.

+ +

callback se invoca con tres argumentos:

+ +
    +
  1. El valor de cada elemento
  2. +
  3. El índice del elemento
  4. +
  5. El objeto Array que se está recorriendo
  6. +
+ +

Si se proporciona un parámetro thisArg a filter(), este será pasado a callback cuando sea invocado, para usarlo como valor this.  De lo contrario, se pasará el valor undefined como valor this.  El valor this dentro del callback se determina conforme a las las normas habituales para determinar el this visto por una función.

+ +

filter() no hace mutar el array sobre el cual es llamado.

+ +

El rango de elementos procesados por filter() se establece antes de la primera invocación de  callback. Los elementos que se añadan al array después de que comience la llamada a filter() no serán visitados por callback. Si se modifica o elimina un elemento existente del array, cuando pase su valor a callback será el que tenga cuando filter() lo recorra; los elementos que son eliminados no son recorridos.

+ +

Ejemplos

+ +

Filtrando todos los valores pequeños

+ +

El siguiente ejemplo usa filter() para crear un array filtrado que excluye todos los elementos con valores inferiores a 10.

+ +
function esSuficientementeGrande(elemento) {
+  return elemento >= 10;
+}
+var filtrados = [12, 5, 8, 130, 44].filter(esSuficientementeGrande);
+// filtrados es [12, 130, 44]
+
+ +

Filtrando entradas inválidas desde un JSON

+ +

El siguiente ejemplo emplea filter() para crear un json filtrado con todos lo elementos que tengan id numérico distinto de cero.

+ +
var arr = [
+  { id: 15 },
+  { id: -1 },
+  { id: 0 },
+  { id: 3 },
+  { id: 12.2 },
+  { },
+  { id: null },
+  { id: NaN },
+  { id: 'undefined' }
+];
+
+var entradasInvalidas = 0;
+// Si el elemento tiene un atributo id, y su valor correspondiente es un numero
+// Y no es el valor NaN, entonces es una entrada válida
+function filtrarPorID(obj) {
+  if ('id' in obj && typeof(obj.id) === 'number' && !isNaN(obj.id)) {
+    return true;
+  } else {
+    entradasInvalidas++;
+    return false;
+  }
+}
+
+var arrPorID = arr.filter(filtrarPorID);
+
+console.log('Array Filtrado\n', arrPorID);
+// [{ id: 15 }, { id: -1 }, { id: 0 }, { id: 3 }, { id: 12.2 }]
+
+console.log('Número de Entradas Invalidas = ', entradasInvalidas);
+// 4
+ +

Búsqueda en el arreglo

+ +

El siguiente ejemplo emplea filter() para filtrar el contendio de un arreglo en función de un criterio de búsqueda.

+ +
var fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];
+
+/**
+ * Filtra la matríz en función de un criterio de búsqueda (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']
+ +

Implementación en ES2015

+ +
const fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];
+
+/**
+ * Filtra la matríz en función de un criterio de búsqueda (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() se añadió a la norma ECMA-262 en la 5ta edición; como tal puede no estar presente en todas las implementaciones de la norma. Puedes sobrellevarlo insertando el siguiente código al comienzo de su programa, para permitir el uso de filter() en implementaciones de ECMA-262 que no lo soporten de forma nativa. Este algoritmo es exactamente el especificado en ECMA-262, 5ta edición, supone que  fn.call evalua al valor original de {{jsxref("Function.prototype.call")}}, y que {{jsxref("Array.prototype.push")}} tiene su valor original.

+ +
if (!Array.prototype.filter){
+  Array.prototype.filter = function(func, thisArg) {
+    'use strict';
+    if ( ! ((typeof func === 'Function' || typeof func === 'function') && this) )
+        throw new TypeError();
+
+    var len = this.length >>> 0,
+        res = new Array(len), // preallocate array
+        t = this, c = 0, i = -1;
+
+    var kValue;
+    if (thisArg === undefined){
+      while (++i !== len){
+        // checks to see if the key was set
+        if (i in this){
+          kValue = t[i]; // in case t is changed in callback
+          if (func(t[i], i, t)){
+            res[c++] = kValue;
+          }
+        }
+      }
+    }
+    else{
+      while (++i !== len){
+        // checks to see if the key was set
+        if (i in this){
+          kValue = t[i];
+          if (func.call(thisArg, t[i], i, t)){
+            res[c++] = kValue;
+          }
+        }
+      }
+    }
+
+    res.length = c; // shrink down array to proper size
+    return res;
+  };
+}
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.4.4.20', 'Array.prototype.filter')}}{{Spec2('ES5.1')}}Definición Inicial. Implementado en JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.filter', 'Array.prototype.filter')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.filter', 'Array.prototype.filter')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad con navegadores

+ +
+

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/find/index.html b/files/es/web/javascript/reference/global_objects/array/find/index.html new file mode 100644 index 0000000000..7de7850cca --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/find/index.html @@ -0,0 +1,233 @@ +--- +title: Array.prototype.find() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/find +tags: + - Array + - ECMAScript 2015 + - JavaScript + - Prototipo + - Referencia + - metodo + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/find +--- +
{{JSRef}}
+ +

El método find() devuelve el valor del primer elemento del array que cumple la función de prueba proporcionada.

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

Sintaxis

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

Parámetros

+ +
+
callback
+
Función que se ejecuta sobre cada valor en el array, tomando tres argumentos: +
+
element
+
El elemento actual que se está procesando en el array.
+
index {{optional_inline}}
+
El índice (posición) del elemento actual que se está procesando en el array.
+
array {{optional_inline}}
+
El array desde el que se llama al método find.
+
+
+
thisArg {{optional_inline}}
+
Objeto a usar como this cuando se ejecuta callback.
+
+ +

Valor devuelto

+ +

El valor del primer elemento del array que cumple la función de prueba proporcionada; de lo contrario, devuelve {{jsxref("undefined")}}.

+ +

Descripción

+ +

El método find ejecuta la función callback una vez por cada índice del array hasta que encuentre uno en el que el callback devuelva un valor verdadero. Si es así, find devuelve inmediatamente el valor del elemento. En caso contrario, find devuelve {{jsxref("undefined")}}.

+ +

callback se invoca con tres argumentos: el valor del elemento, el índice del elemento y el objeto Array que está siendo recorrido.

+ +

Si un parámetro thisArg es proporcionado al método find, este será utilizado como this para cada invocación del callback. Si no se proporciona el parámetro, entonces se utiliza {{jsxref("undefined")}}.

+ +

El método find no transforma el array desde el cual es llamado, pero la función proporcionada en callback sí. En ese caso, los elementos procesados por find son establecidos antes de la primera invocación de callback. Por lo tanto:

+ + + +

Ejemplos

+ +

Encontrar un objeto en un array por una de sus propiedades

+ +
const inventario = [
+    {nombre: 'manzanas', cantidad: 2},
+    {nombre: 'bananas', cantidad: 0},
+    {nombre: 'cerezas', cantidad: 5}
+];
+
+function esCereza(fruta) {
+    return fruta.nombre === 'cerezas';
+}
+
+console.log(inventario.find(esCereza));
+// { nombre: 'cerezas', cantidad: 5 }
+ +

Utilizando funciones flecha y destructuring

+ +
const inventario = [
+    {nombre: 'manzanas', cantidad: 2},
+    {nombre: 'bananas', cantidad: 0},
+    {nombre: 'cerezas', cantidad: 5}
+];
+
+const resultado = inventario.find( fruta => fruta.nombre === 'cerezas' );
+
+console.log(resultado); // { nombre: 'cerezas', cantidad: 5 }
+ +

Encontrar un número primo en un array

+ +

El siguiente ejemplo encuentra un elemento en un array que sea un número primo (o devuelve {{jsxref("undefined")}} si no hay un número primo).

+ +
function isPrime(element, index, array) {
+  let 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, no encontrado
+console.log([4, 5, 8, 12].find(isPrime)); // 5
+
+ +

Los siguientes ejemplos muestran cómo elementos no existentes o eliminados son visitados y el valor pasado a callback es su valor cuando son visitados.

+ +
// Declarar un array sin elementos en los índices 2, 3 y 4
+const array = [0,1,,,,5,6];
+
+// Muestra todos los índices, no sólo aquellos que tienen valores asignados
+array.find(function(value, index) {
+  console.log('Visited index ' + index + ' with value ' + value);
+});
+
+// Mostrar todos los índices, incluyendo los eliminados
+array.find(function(value, index) {
+
+  // Eliminar el elemento 5 en la primera iteración
+  if (index == 0) {
+    console.log('Deleting array[5] with value ' + array[5]);
+    delete array[5];
+  }
+  // El elemento 5 se visita aun habiendo sido eliminado
+  console.log('Visited index ' + index + ' with value ' + value);
+});
+// expected output:
+// Deleting array[5] with value 5
+// Visited index 0 with value 0
+// Visited index 1 with value 1
+// Visited index 2 with value undefined
+// Visited index 3 with value undefined
+// Visited index 4 with value undefined
+// Visited index 5 with value undefined
+// Visited index 6 with value 6
+
+ +

Polyfill

+ +

Este método ha sido añadido a la espeficicación ECMAScript 2015 y puede no estar disponible en todas las implementaciones de JavaScript aún. Sin embargo, puedes utilizar el siguiente polyfill de Array.prototype.find:

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

Si necesitas dar soporte a motores de JavaScript realmente obsoletos que no soportan Object.defineProperty, es mejor no utilizar el polyfill para los métodos Array.prototype, ya que no podrás hacerlos no enumerables.

+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-array.prototype.find', 'Array.prototype.find')}}
+ +

Compatibilidad en navegadores

+ +
+

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/findindex/index.html b/files/es/web/javascript/reference/global_objects/array/findindex/index.html new file mode 100644 index 0000000000..c249a3b2df --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/findindex/index.html @@ -0,0 +1,187 @@ +--- +title: Array.prototype.findIndex() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/findIndex +tags: + - Array + - ECMAScript 2015 + - JavaScript + - Protitipo + - Referencia + - metodo + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/findIndex +--- +
{{JSRef}}
+ +

El método findIndex() devuelve el índice del primer elemento de un array que cumpla con la función de prueba proporcionada. En caso contrario devuelve -1.

+ +
{{EmbedInteractiveExample("pages/js/array-findindex.html","shorter")}}
+ +

Vea también el método {{jsxref("Array.find", "find()")}}, que devuelve el valor de un elemento encontrado en el array en lugar de su índice.

+ +

Sintaxis

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

Parámetros

+ +
+
callback
+
+

Función a ejecutar en cada uno de los valores del array hasta que devuelve true, indicando que el elemento que la cumple fue encontrado.

+ +

Recibe tres argumentos:

+ +
+
element
+
El elemento actual siendo procesado en el array.
+
index {{optional_inline}}
+
El índice del elemento actual que está siendo procesado en el array.
+
array {{optional_inline}}
+
El array findIndex() de donde fue llamado.
+
+
+
thisArg {{optional_inline}}
+
Objeto opcional para usar como this cuando se ejecuta el callback.
+
+ +

Valor devuelto

+ +

Un índice en el array si un elemento pasa la prueba; en caso contrario, -1.

+ +

Descripción

+ +

El método findIndex() ejecuta la función de callback una vez por cada índice del array hasta que encuentre uno donde callback devuelva un valor verdadero (eso es, un valor que fuerza un true).

+ +

Si dicho elemento es encontrado, findIndex() inmediatamente devuelve el índice del elemento. Si la función callback nunca devuelve un valor verdadero (o el tamaño del array es 0), findIndex devuelve -1.

+ +
+

Alerta de Edge Case: A diferencia de otros métodos de arrays como {{jsxref("Array.some()")}}, callback se ejecuta incluso en índices sin valores asignados.

+
+ +

callback se invoca con tres argumentos:

+ +
    +
  1. El valor del elemento
  2. +
  3. El índice del elemento
  4. +
  5. El Array que será recorrido.
  6. +
+ +

Si el parámetro thisArg es provisto a findIndex, entonces será usado como el this para cada invocación del callback. Si no es provisto, entonces {{jsxref("undefined")}} será utilizado. 

+ +

El rango de elementos procesados por findIndex() se establece antes de la primera invocación de la función callback. Los elementos añadidos al array después de que la llamada a findIndex() comience no serán visitados por el callback. Si un elemento existente que no ha sido visitado en el array es modificado por el callback, el valor pasado al callback que lo visite será el valor en el momento en que findIndex() visite el índice del elemento.

+ +

Los elementos eliminados aún son visitados.

+ +

Ejemplos

+ +

Encontrar el índice de un número primo en un array

+ +

El siguiente ejemplo encuentra el índice de un elemento en el array que sea número primo (o devuelve -1 si no hay ningún número primo).

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

Encontrar un índice utilizando funciones flecha

+ +

El siguiente ejemplo encuentra el índice de una fruta utilizando funciones flecha.

+ +
const fruits = ["apple", "banana", "cantaloupe", "blueberries", "grapefruit"];
+
+const index = fruits.findIndex(fruit => fruit === "blueberries");
+
+console.log(index); // 3
+console.log(fruits[index]); // blueberries
+
+ +

Polyfill

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

Si necesita soporte para motores de JavaScript obsoletos que no soportan Object.defineProperty es mejor no emplear polyfills para métodos Array.prototype, ya que no puede hacerlos no-enumerables.

+ +

Especificaciones

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-array.prototype.findindex', 'Array.prototype.findIndex')}}
+ +

Compatibilidad en navegadores

+ +
+

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/flat/index.html b/files/es/web/javascript/reference/global_objects/array/flat/index.html new file mode 100644 index 0000000000..67d1b3a4c7 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/flat/index.html @@ -0,0 +1,174 @@ +--- +title: Array.prototype.flat() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/flat +tags: + - Array + - JavaScript + - Prototipo + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/flat +--- +
{{JSRef}} {{SeeCompatTable}}
+ +

El método flat() crea una nueva matriz con todos los elementos de sub-array concatenados recursivamente hasta la profundidad especificada.

+ + + + + +

Sintaxis

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

Parámetros

+ +
+
depth {{optional_inline}}
+
El nivel de profundidad que especifica qué tan profunda debe aplanarse una estructura de matriz anidada. El valor predeterminado es 1.
+
+ +

Valor de retorno

+ +

Una nueva matriz con los elementos de la sub-matriz concatenados en ella.

+ +

Ejemplos

+ +

Aplanar matrices anidadas

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

Aplanamiento y huecos de matriz

+ +

El método de aplanar elimina las ranuras vacías en las matrices:

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

Alternativa

+ +

reduce y concat

+ +
var arr1 = [1, 2, [3, 4]];
+arr1.flat();
+
+//aplanar una matriz de nivel único
+arr1.reduce((acc, val) => acc.concat(val), []);// [1, 2, 3, 4]
+
+//o
+const flatSingle = arr => [].concat(...arr);
+
+ +

 

+ +
//para permitir el aplanamiento a nivel profundo use recursión con reduce y 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), []);
+}
+flattenDeep(arr1); // [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]
+
+ +

 

+ +
//aplanamiento profundo no recursivo usando un stack
+var arr1 = [1,2,3,[1,2,3,4, [2,3,4]]];
+function flatten(input) {
+  const stack = [...input];
+  const res = [];
+  while (stack.length) {
+    // elimina ultimo valor del stack
+    const next = stack.pop();
+    if (Array.isArray(next)) {
+      // agrega de nuevo los items al array, sin modificar la entrada original
+      stack.push(...next);
+    } else {
+      res.push(next);
+    }
+  }
+  //invierte para restaurar el orden de entrada
+  return res.reverse();
+}
+flatten(arr1);// [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]
+ +

 

+ +
//Aplanamiento profundo recursivo
+function flatten(array) {
+  var flattend = [];
+  !(function flat(array) {
+    array.forEach(function(el) {
+      if (Array.isArray(el)) flat(el);
+      else flattend.push(el);
+    });
+  })(array);
+  return flattend;
+}
+ +

 

+ +

Polyfill

+ +
if (!Array.prototype.flat) {
+  Array.prototype.flat = function(depth) {
+    var flattend = [];
+    (function flat(array, depth) {
+      for (let el of array) {
+        if (Array.isArray(el) && depth > 0) {
+          flat(el, depth - 1);
+        } else {
+          flattend.push(el);
+        }
+      }
+    })(this, Math.floor(depth) || 1);
+    return flattend;
+  };
+}
+ +

Especificaciones

+ + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
Array.prototype.flat proposalFinalizado (4) 
+ +

Compatibilidad con navegadores

+ +
+ + +

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/flatmap/index.html b/files/es/web/javascript/reference/global_objects/array/flatmap/index.html new file mode 100644 index 0000000000..0a93f97675 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/flatmap/index.html @@ -0,0 +1,128 @@ +--- +title: Array.prototype.flatMap() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/flatMap +tags: + - Array + - JavaScript + - Prototipo + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/flatMap +--- +
{{JSRef}} {{SeeCompatTable}}
+ +

El método flatMap() primero mapea cada elemento usando una función de mapeo, luego aplana el resultado en una nueva matriz. Es idéntico a un map seguido de un flatten de profundidad 1, pero flatMap es a menudo útil y la fusión de ambos en un método es ligeramente más eficiente.

+ + + + + +

Sintaxis

+ +
var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) {
+    // return element for new_array
+}[, thisArg])
+ +

Parámetros

+ +
+
callback
+
Función que produce un elemento de la nueva matriz, tomando tres argumentos: +
+
+
currentValue
+
El elemento actual que se procesa en la matriz.
+
index{{optional_inline}}
+
El índice del elemento actual que se procesa en la matriz.
+
array{{optional_inline}}
+
La matriz map fue llamada.
+
+
+
thisArg{{optional_inline}}
+
Valor para usar como this al ejecutar callback.
+
+ +

Valor de retorno

+ +

Una nueva matriz con cada elemento es el resultado de la función de devolución de llamada y se aplana a una profundidad de 1.

+ +

Descripción

+ +

Ver {{jsxref("Array.prototype.map()")}} para una descripción detallada de la función de devolución de llamada. El método flatMap es idéntico a map seguido de una llamada a flatten de profundidad 1.

+ +

Ejemplos

+ +

map y 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]
+
+// solo un nivel es aplanado
+arr1.flatMap(x => [[x * 2]]);
+// [[2], [4], [6], [8]]
+
+ +
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
+ +

Alternativa

+ +

reduce y concat

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

Polyfill

+ +

Este polyfill necesita Array.prototype.flat polyfill

+ +
if (!Array.prototype.flatMap) {
+  Array.prototype.flatMap = function() {
+    return Array.prototype.map.apply(this, arguments).flat(1);
+  };
+}
+ +

Especificaciones

+ + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
Array.prototype.flatMap Finalizado (4)
+ +

Compatibilidad con navegadores

+ +
+ + +

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

+
+ +

Ver también

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

El método forEach() ejecuta la función indicada una vez por cada elemento del array.

+ +

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

+ +

Sintaxis

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

Parámetros

+ +
+
callback
+
Función a ejecutar por cada elemento, que recibe tres argumentos:
+
+
+
currentValue
+
El elemento actual siendo procesado en el array.
+
index {{optional_inline}}
+
El índice del elemento actual siendo procesado en el array.
+
array {{optional_inline}}
+
El vector en el que forEach() esta siendo aplicado.
+
+
+
thisArg {{optional_inline}}
+
Valor que se usará como this cuando se ejecute el callback.
+
+ +

Valor de retorno

+ +

{{jsxref("undefined")}}.

+ +

Descripción

+ +

forEach() ejecuta la función callback una vez por cada elemento presente en el array en orden ascendente. No es invocada para índices que han sido eliminados o que no hayan sido inicializados (Ej. sobre arrays sparse)

+ +

callback es invocada con tres argumentos:

+ +
    +
  1. el valor del elemento
  2. +
  3. el índice del elemento
  4. +
  5. el array que está siendo recorrido
  6. +
+ +

Si un parámetro thisArg es proporcionado a forEach, será usado como el valor this para cada invocación de callback como si se llamara a callback.call(thisArg, element, index, array). Si thisArg es undefined o null, el valor this dentro de la función depende si la función está o no en modo estricto (valor pasado si está en modo estricto, objeto global si está en modo no-estricto).

+ +

El rango de elementos procesados por forEach() se establece antes de la primera invocación del callback. Los elementos que sean añadidos al vector después de que inicie la llamada a forEach no serán visitados por callback. Si los valores de los elementos existentes en el vector son modificados, el valor pasado al callback será el valor al momento de que forEach los visite; no se evaluarán los elementos borrados antes de ser visitados por forEach.

+ +

forEach() ejecuta la función callback una vez por cada elemento del array; a diferencia de {{jsxref("Array.prototype.map()", "map()")}} o {{jsxref("Array.prototype.reduce()", "reduce()")}} este siempre devuelve el valor {{jsxref("undefined")}} y no es encadenable. El típico uso es ejecutar los efectos secundarios al final de la cadena.

+ +

foreach() no muta/modifica el array desde el que es llamado (aunque callback, si se invoca, podría hacerlo).

+ +
Nota : No hay forma de detener o cortar un bucle forEach que no sea lanzar una excepción. Si necesita dicho comportamiento, el método .forEach() es la herramienta equivocada, use una simple iteración en su lugar. Si está probando los elementos del array para un predicado y necesita devolver un valor boleano, puede usar {{jsxref("Array.prototype.every()", "every()")}} o {{jsxref("Array.prototype.some()", "some()")}} en su lugar.
+ +

Ejemplos

+ +

Imprimiendo el contenido de un array

+ +

El siguiente código imprime una línea por cada elemento en un array:

+ +
function logArrayElements(element, index, array) {
+    console.log("a[" + index + "] = " + element);
+}
+// Nótese que se evita el 2° índice ya que no hay ningún elemento en esa posición del array
+[2, 5, , 9].forEach(logArrayElements);
+// salida:
+// a[0] = 2
+// a[1] = 5
+// a[2] = 9
+
+ +

Usando thisArg

+ +

El siguiente ejemplo actualiza las propiedades del objeto por cada entrada en el array:

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

Nota: Dado que el parámetro thisArg (this) se referencia en el forEach(), será pasado al callback cuando se invoque, para utilizarse como su valor this.

+ +

Ejemplo: Función que copia objetos

+ +

El siguiente código crea una copia de un objeto dado. Hay diferentes formas de crear una copia de un objeto, ésta es sólo una de ellas y sirve para explicar cómo funciona Array.prototype.forEach utilizando funciones Object.* de ECMAScript 5.

+ +
function copy(o){
+  var copy = Object.create( Object.getPrototypeOf(o) );
+  var propNames = Object.getOwnPropertyNames(o);
+
+  propNames.forEach(function(name){
+    var desc = Object.getOwnPropertyDescriptor(o, name);
+    Object.defineProperty(copy, name, desc);
+  });
+
+  return copy;
+}
+
+var o1 = {a:1, b:2};
+var o2 = copy(o1); // o2 ahora se parece a o1
+
+ +

Si el array se modifica durante la iteración, otros elementos pueden ser omitidos.

+ +

El siguiente ejemplo muestra por consola "uno", "dos", "cuatro". Cuando se alcanza el registro que contiene el valor "dos", el primer registro del array se desplaza, lo que hace que los registros restantes se muevan una posición. Debido a que el elemento "cuatro" está ahora en una posición anterior en el array, "tres" se omitirá. forEach() no hace una copia del array antes de iterar.

+ +
var words = ['uno', 'dos', 'tres', 'cuatro'];
+words.forEach(function(word) {
+  console.log(word);
+  if (word === 'dos') {
+    words.shift();
+  }
+});
+// uno
+// dos
+// cuatro
+
+ +

Polyfill

+ +

forEach se agregó de manera reciente al estándar ECMA-262; así que puede no estar presente en otras implementaciones del estándar. Se puede asegurar el uso del forEach con tan solo agregar el siguiente código al inicio de los scripts, permitiendo así el uso de forEach en implementaciones que no lo soportan de manera nativa. El algoritmo es el mismo que se especifica en la quinta versión de ECMA-262, asumiendo que {{jsxref("Object")}} y {{jsxref("TypeError")}} tienen sus valores originales y que callback.call evalúa el valor original de {{jsxref("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) {
+    'use strict';
+    var T, k;
+
+    if (this == null) {
+      throw new TypeError("this is null or not defined");
+    }
+
+    var kValue,
+        // 1. Let O be the result of calling ToObject passing the |this| value as the argument.
+        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).
+        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 (arguments.length >= 2) {
+      T = thisArg;
+    }
+
+    // 6. Let k be 0
+    k = 0;
+
+    // 7. Repeat, while k < len
+    while (k < len) {
+
+      // 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. 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
+  };
+}
+
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.4.4.18', 'Array.prototype.forEach')}}{{Spec2('ES5.1')}}Definición inicial. Implementada en 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')}}
+ +

Compatibilidad con navegadores

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

Vea también

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

El método Array.from() crea una nueva instancia de Array a partir de un objeto iterable.

+ +

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

+ +

Sintaxis

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

Parámetros

+ +
+
arrayLike
+
Objeto iterable para convertirlo en un array.
+
mapFn{{Optional_inline}}
+
Función de mapa para llamar a cada elemento de la matriz.
+
thisArg{{Optional_inline}}
+
Valor para usar como this al ejecutar mapFn.
+
+ +

Valor de retorno

+ +

Una nueva instancia de {{jsxref("Array")}}.

+ +

Descripción

+ +

Array.from() permite crear Arrays de:

+ + + +

Array.from() tiene un parámetro opcional mapFn, que te permite ejecutar una función {{jsxref("Array.prototype.map", "map")}}  a cada elemento del array (o a la subclase del objeto) que se ha creado. Para aclararlo, Array.from(obj, mapFn, thisArg) es igual que Array.from(obj).map(mapFn, thisArg), excepto en que éste no crea un array intermedio. Esto es importante para ciertas subclases de array, vectores tipados, ya que el vector intermedio necesitaría tener valores truncados para trabajar con el tipo adecuado.

+ +

La propiedad length del método from() es 1.

+ +

En ES2015, la sintaxis de clase permite la subclasificación de clases integradas y definidas por el usuario; como resultado, los métodos estáticos como Array.from son "heredados" por subclases de Array y crean nuevas instancias de la subclase, no Array.

+ +

Ejemplos

+ +

Array desde un String

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

Array desde un Set

+ +
const set = new Set(['foo', 'bar', 'baz', 'foo']);
+Array.from(set);
+// [ "foo", "bar", "baz" ]
+ +

Array desde un Map

+ +
const map = new Map([[1, 2], [2, 4], [4, 8]]);
+Array.from(map);
+// [[1, 2], [2, 4], [4, 8]]
+
+const mapper = new Map([['1', 'a'], ['2', 'b']]);
+Array.from(mapper.values());
+// ['a', 'b'];
+
+Array.from(mapper.keys());
+// ['1', '2'];
+
+ +

Array desde un objeto Array-like (argumentos)

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

Usando una función de flecha y Array.from

+ +
// Usando una función de flecha como función
+// para manipular los elementos
+Array.from([1, 2, 3], x => x + x);
+// [2, 4, 6]
+
+
+// Generar secuencia de números
+// Puesto que el array se inicializa con `undefined` en cada posición,
+// el valor de `v` a continuación será `undefined`
+Array.from({length: 5}, (v, i) => i);
+// [0, 1, 2, 3, 4]
+
+ +

Generador de secuencia (rango)

+ +
// Función generadora de secuencia (comúnmente llamado "rango", ej. Clojure, PHP, etc.)
+const range = (start, stop, step) => Array.from({ length: (stop - start) / step + 1}, (_, i) => start + (i * step));
+
+// Genera un rango de números entre 0..4
+range(0, 4, 1);
+// [0, 1, 2, 3, 4]
+
+// Genera un rango de números entre 1..10 con saltos de 2
+range(1, 10, 2);
+// [1, 3, 5, 7, 9]
+
+// Generar el abecedario utilizando Array.from haciendo uso de que se ordena como secuencia
+range('A'.charCodeAt(0), 'Z'.charCodeAt(0), 1).map(x => String.fromCharCode(x));
+// ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
+
+ +

Polyfill

+ +

Array.from fue añadido en el estándar ECMA-262 en la 6ta edición (ES2015); así que no puede estar presente en otras implementaciones del estándar. Puedes usarlo insertando este código al comienzo de sus scripts, permitiendo el uso de Array.from en implementaciones que no lo soportan. Este algoritmo es el mismo especificado en ECMA-262, 6ta edición, suponiendo que Object y TypeError tengan sus valores originales y callback.call evalúa el valor original de {{jsxref("Function.prototype.call")}}. Adicionalmente, ya que verdaderos iterables pueden no ser polyficados, esta implementación no soporta iterables genéricos como definidos en la 6ta edición de ECMA-262.

+ +
// Pasos de producción de ECMA-262, Edición 6, 22.1.2.1
+// Referencia: 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);
+    };
+
+    // La propiedad length del método from es 1.
+    return function from(arrayLike/*, mapFn, thisArg */) {
+      // 1. Deje a C ser el este valor.
+      var C = this;
+
+      // 2. Deje que los elementos sean ToObject(arrayLike).
+      var items = Object(arrayLike);
+
+      // 3. Retornar IfAbrupt(items).
+      if (arrayLike == null) {
+        throw new TypeError("Array.from requiere un objeto array-like - not null or undefined");
+      }
+
+      // 4. Si mapfn no está definida, entonces deja que sea false.
+      var mapFn = arguments.length > 1 ? arguments[1] : void undefined;
+      var T;
+      if (typeof mapFn !== 'undefined') {
+        // 5. si no
+        // 5. a If IsCallable(mapfn) es false, lanza una excepción TypeError.
+        if (!isCallable(mapFn)) {
+          throw new TypeError('Array.from: si hay mapFn, el segundo argumento debe ser una función');
+        }
+
+        // 5. b. Si thisArg se suministró, deje que T sea thisArg; si no, deje que T esté indefinido.
+        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;
+    };
+  }());
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-array.from', 'Array.from')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.from', 'Array.from')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
+

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/includes/index.html b/files/es/web/javascript/reference/global_objects/array/includes/index.html new file mode 100644 index 0000000000..3831c7d73d --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/includes/index.html @@ -0,0 +1,181 @@ +--- +title: Array.prototype.includes() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/includes +tags: + - Array + - JavaScript + - Prototipo + - Referencia + - metodo + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/includes +--- +
{{JSRef}}
+ +

El método includes() determina si una matriz incluye un determinado elemento, devuelve truefalse según corresponda.

+ +

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

+ +

Sintaxis

+ +
arr.includes(searchElement[fromIndex])
+ +

Parámetros

+ +
+
valueToFind
+
+

El valor a buscar.

+ +
+

Nota: Al comparar cadenas de texto y caracteres, includes() distingue mayúsculas y minúsculas.

+
+
+
fromIndex {{optional_inline}}
+
Posición en la matriz en la cuál se debe comenzar a buscar valueToFind; el primer caracter a buscar se encuentra en fromIndex. Un valor negativo inicia la búsqueda desde array.length + fromIndex en adelante. El valor por defecto es 0.
+
+ +

Valor devuelto

+ +

Un {{jsxref ("Boolean")}} que es true si el valor valueToFind se encuentra dentro de la matriz (o la parte de la matriz indicada por el índice fromIndex, si se especifica). Todos los valores de cero se consideran iguales independientemente del signo (es decir, -0 se considera igual a 0 y +0), pero false no se considera igual a 0.

+ +
+

Note: Técnicamente hablando, include() usa el algoritmo sameValueZero para determinar si se encuentra el elemento dado

+
+ +

Ejemplos

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

fromIndex es mayor o igual que la longitud de la matriz

+ +

Si fromIndex es mayor o igual que la longitud de la matriz, se devuelve false. No se buscará en la matriz.

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

El índice calculado es menor que 0

+ +

Si fromIndex es negativo, el índice calculado se calcula para usarse como una posición en la matriz en la cual comenzar a buscar searchElement. Si el índice calculado es menor que 0, se buscará la matriz completa.

+ +
// la longitud de la matriz es 3
+// fromIndex es -100
+// el índice calculado es 3 + (-100) = -97
+
+var arr = ['a', 'b', 'c'];
+
+arr.includes('a', -100); // true
+arr.includes('b', -100); // true
+arr.includes('c', -100); // true
+ +

includes() utilizado como método genérico

+ +

El método includes() es intencionalmente genérico. No requiere que este valor sea un objeto Array, por lo que se puede aplicar a otros tipos de objetos (por ejemplo, objetos tipo array). El siguiente ejemplo ilustra el método includes() llamado en el objeto de argumentos de la función.

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

Polyfill

+ +
// https://tc39.github.io/ecma262/#sec-array.prototype.includes
+if (!Array.prototype.includes) {
+  Object.defineProperty(Array.prototype, 'includes', {
+    value: function(searchElement, fromIndex) {
+
+      if (this == null) {
+        throw new TypeError('"this" es null o no está definido');
+      }
+
+      // 1. Dejar que O sea ? ToObject(this value).
+      var o = Object(this);
+
+      // 2. Dejar que len sea ? ToLength(? Get(O, "length")).
+      var len = o.length >>> 0;
+
+      // 3. Si len es 0, devuelve false.
+      if (len === 0) {
+        return false;
+      }
+
+      // 4. Dejar que n sea ? ToInteger(fromIndex).
+      //    (Si fromIndex no está definido, este paso produce el valor 0.)
+      var n = fromIndex | 0;
+
+      // 5. Si n ≥ 0, entonces
+      //  a. Dejar que k sea n.
+      // 6. Else n < 0,
+      //  a. Dejar que k sea len + n.
+      //  b. Si k < 0, Dejar que k sea 0.
+      var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
+
+      function sameValueZero(x, y) {
+        return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));
+      }
+
+      // 7. Repite, mientras k < len
+      while (k < len) {
+        // a. Dejar que elementK sea el resultado de ? Get(O, ! ToString(k)).
+        // b. Si SameValueZero(searchElement, elementK) es true, devuelve true.
+        if (sameValueZero(o[k], searchElement)) {
+          return true;
+        }
+        // c. Incrementa k por 1.
+        k++;
+      }
+
+      // 8. Devuelve false
+      return false;
+    }
+  });
+}
+ +

Si necesita admitir motores de JavaScript realmente obsoletos que no son compatibles con Object.defineProperty, es mejor no rellenar los métodos Array.prototype, ya que no puede hacerlos no enumerables.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
{{SpecName('ES7', '#sec-array.prototype.includes', 'Array.prototype.includes')}}{{Spec2('ES7')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.prototype.includes', 'Array.prototype.includes')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad con navegadores

+ +
+

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

+
+ +
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/index.html b/files/es/web/javascript/reference/global_objects/array/index.html new file mode 100644 index 0000000000..45531c7a3e --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/index.html @@ -0,0 +1,449 @@ +--- +title: Array +slug: Web/JavaScript/Referencia/Objetos_globales/Array +tags: + - Array + - JavaScript + - Matriz unidimensional + - Referencia + - Vector +translation_of: Web/JavaScript/Reference/Global_Objects/Array +--- +

{{JSRef}}
+ El objeto Array de JavaScript es un objeto global que es usado en la construcción de arrays, que son objetos tipo lista de alto nivel.

+ +

Descripción

+ +

Los arrays son objetos similares a una lista cuyo prototipo proporciona métodos para efectuar operaciones de recorrido y de mutación. Tanto la longitud como el tipo de los elementos de un array son variables. Dado que la longitud de un array puede cambiar en cualquier momento, y los datos se pueden almacenar en ubicaciones no contiguas, no hay garantía de que los arrays de JavaScript sean densos; esto depende de cómo el programador elija usarlos. En general estas características son cómodas, pero si, en su caso particular, no resultan deseables, puede considerar el uso de arrays con tipo.

+ +

Operaciones habituales

+ +

Crear un Array

+ +
let frutas = ["Manzana", "Banana"]
+
+console.log(frutas.length)
+// 2
+
+ +

Acceder a un elemento de Array mediante su índice

+ +
let primero = frutas[0]
+// Manzana
+
+let ultimo = frutas[frutas.length - 1]
+// Banana
+ +

Recorrer un Array

+ +
frutas.forEach(function(elemento, indice, array) {
+    console.log(elemento, indice);
+})
+// Manzana 0
+// Banana 1
+ +

Añadir un elemento al final de un Array

+ +
let nuevaLongitud = frutas.push('Naranja') // Añade "Naranja" al final
+// ["Manzana", "Banana", "Naranja"]
+ +

Eliminar el último elemento de un Array

+ +
let ultimo = frutas.pop() // Elimina "Naranja" del final
+// ["Manzana", "Banana"]
+ +

Añadir un elemento al principio de un Array

+ +
let nuevaLongitud = frutas.unshift('Fresa') // Añade "Fresa" al inicio
+// ["Fresa" ,"Manzana", "Banana"]
+
+ +

Eliminar el primer elemento de un Array

+ +
let primero = frutas.shift() // Elimina "Fresa" del inicio
+// ["Manzana", "Banana"]
+
+ +

Encontrar el índice de un elemento del Array

+ +
frutas.push('Fresa')
+// ["Manzana", "Banana", "Fresa"]
+
+let pos = frutas.indexOf('Banana') // (pos) es la posición para abreviar
+// 1
+ +

Eliminar un único elemento mediante su posición

+ +
+
  Ejemplo:
+
Eliminamos "Banana" del array pasándole dos parámetros: la posición del primer elemento que se elimina y el número de elementos que queremos eliminar. De esta forma, .splice(pos, 1) empieza en la posición que nos indica el valor de la variable pos y elimina 1 elemento. En este caso, como pos vale 1, elimina un elemento comenzando en la posición 1 del array, es decir "Banana".
+
+ +
let elementoEliminado = frutas.splice(pos, 1)
+// ["Manzana", "Fresa"]
+ +

Eliminar varios elementos a partir de una posición

+ +
+
  Nota:
+
Con .splice() no solo se puede eliminar elementos del array, si no que también podemos extraerlos guardándolo en un nuevo array. ¡Ojo! que al hacer esto estaríamos modificando el array de origen.
+
+ +
let vegetales = ['Repollo', 'Nabo', 'Rábano', 'Zanahoria']
+console.log(vegetales)
+// ["Repollo", "Nabo", "Rábano", "Zanahoria"]
+
+let pos = 1, numElementos = 2
+
+let elementosEliminados = vegetales.splice(pos, numElementos)
+// ["Nabo", "Rábano"] ==> Lo que se ha guardado en "elementosEliminados"
+
+console.log(vegetales)
+// ["Repollo", "Zanahoria"] ==> Lo que actualmente tiene "vegetales" 
+ +

Copiar un Array

+ +
let copiaArray = vegetales.slice();
+// ["Repollo", "Zanahoria"]; ==> Copiado en "copiaArray"
+ +

Acceso a elementos de un array

+ +

Los índices de los arrays de JavaScript comienzan en cero, es decir, el índice del primer elemento de un array es 0, y el del último elemento es igual al valor de la propiedad length del array restándole 1.

+ +

Si se utiliza un número de índice no válido, se obtendrá undefined.

+ +
let arr = ['este es el primer elemento', 'este es el segundo elemento', 'este es el último elemento']
+console.log(arr[0])              // escribe en consola 'este es el primer elemento'
+console.log(arr[1])              // escribe en consola 'este es el segundo elemento'
+console.log(arr[arr.length - 1]) // escribe en consola 'este es el último elemento'
+
+ +

Los elementos de un array pueden considerarse propiedades del objeto tanto como toString (sin embargo, para ser precisos, toString() es un método). Sin embargo, se obtendrá un error de sintaxis si se intenta acceder a un elemento de un array de la forma siguiente, ya que el nombre de la propiedad no sería válido:

+ +
console.log(arr.0) // error de sintaxis
+ +

No hay nada especial ni en los arrays de JavaScript ni en sus propiedades que ocasione esto. En JavaScript, las propiedades cuyo nombre comienza con un dígito no pueden referenciarse con la notación punto y debe accederse a ellas mediante la notación corchete.

+ +

Por ejemplo, dado un objeto con una propiedad de nombre '3d', sólo podría accederse a dicha propiedad con la notación corchete.

+ +
let decadas = [1950, 1960, 1970, 1980, 1990, 2000, 2010]
+console.log(decadas.0)  // error de sintaxis
+console.log(decadas[0]) // funciona correctamente
+
+ +
renderizador.3d.usarTextura(modelo, 'personaje.png')
+renderizador['3d'].usarTextura(modelo, 'personaje.png')
+ +

Obsérvese que, en el último ejemplo, ha sido necesario poner '3d' entre comillas. Es posible usar también comillas con los índices del los arrays de JavaScript (p. ej., decadas['2'] en vez de decadas[2]), aunque no es necesario.

+ +

El motor de JavaScript transforma en un string el 2 de decadas[2] a través de una conversión implícita mediante toString. Por tanto, '2' y '02' harían referencia a dos posiciones diferentes en el objeto decadas, y el siguiente ejemplo podría dar true como resultado:

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

Relación entre length y las propiedades numéricas

+ +

La propiedad length de un array de JavaScript está conectada con algunas otras de sus propiedades numéricas.

+ +

Varios de los métodos propios de un array (p. ej., join(), slice(), indexOf(), etc.) tienen en cuenta el valor de la propiedad length de un array cuando se les llama.

+ +

Otros métodos (p. ej., push()splice(), etc.) modifican la propiedad length de un array.

+ +
const frutas = []
+frutas.push('banana', 'manzana', 'pera')
+
+console.log(frutas.length) // 3
+
+ +

Cuando se le da a una propiedad de un array JavaScript un valor que corresponda a un índice válido para el array pero que se encuentre fuera de sus límites, el motor actualizará el valor de la propiedad length como corresponda:

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

Si se aumenta el valor de length:

+ +
frutas.length = 10
+console.log(frutas)              // ['banana', 'manzana', 'pera', <2 empty items>, 'fresa', <4 empty items>]
+console.log(Object.keys(frutas)) // ['0', '1', '2', '5']
+console.log(frutas.length)       // 10
+console.log(frutas[8])           // undefined
+
+ +

Si se disminuye el valor de la propiedad length pueden eliminarse elementos:

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

Hay más información sobre este tema en la página sobre Array.length.

+ +

Creación de un array a partir de una expresión regular

+ +

El resultado de una búsqueda con una RegExp en un string puede crear un array de JavaScript. Este array tendrá propiedades y elementos que proporcionan información sobre la correspondencia encontrada. Para obtener un array de esta forma puede utilizarse RegExp.exec(), String.match() o String.replace().

+ +

El siguiente ejemplo, y la tabla que le sigue, pueden ayudar a comprender mejor las propiedades y elementos a los que nos referimos:

+ +
// Buscar una d seguida de una o más b y, al final, de otra d
+// Recordar las b y la d final
+// No distinguir mayúsculas y minúsculas
+
+const miRe = /d(b+)(d)/i
+const miArray = miRe.exec('cdbBdbsbz')
+ +

Las propiedades y elementos que se obtienen de esta búsqueda son los siguientes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Propiedad/ElementoDescripciónEjemplo
input
+ {{ReadOnlyInline}}
El string original sobre el que se ha realizado la búsqueda con la expresión regular"cdbBdbsbz"
index
+ {{ReadOnlyInline}}
El índice de la correspondencia en el string, siendo cero el de la primera posición.1
[0]
+ {{ReadOnlyInline}}
Los últimos caracteres que cumplen la correspondencia"dbBd"
[1], ...[n]
+ {{ReadOnlyInline}}
Elementos que indican las correspondencias de substrings entre paréntesis (si se han incluido) de la expresión regular. No hay límite al número de substrings entre paréntesis que se puedan utilizar.[1]: "bB"
+ [2]: "d"
+ +

Constructor

+ +
+
Array()
+
Crea un nuevo objeto Array.
+
+ +

Propiedades estáticas

+ +
+
get Array[@@species]
+
La función del constructor se utiliza para crear objetos derivados.
+
+ +

Métodos estáticos

+ +
+
Array.from()
+
Crea una nueva instancia de Array a partir de similarAUnArray, un objeto iterable o parecido a un array.
+
Array.isArray()
+
Devuelve true si valor es un array, y false en caso contrario.
+
Array.of()
+
Crea una nueva instancia de Array con un número variable de parámetros, independientemente del número y del tipo de dichos parámetros.
+
+ +

Propiedades de instancia

+ +
+
Array.prototype.length
+
Indica el número de elementos de un array.
+
Array.prototype[@@unscopables]
+
Símbolo que contiene todos los nombres de las propiedades que se excluyen de un ámbito de enlace with.
+
+ +

Métodos de instancia

+ +
+
Array.prototype.concat()
+
Devuelve un nuevo array que es la concatenación de aquél sobre el que se invoca, seguido de otros array(s) o valor(es).
+
Array.prototype.copyWithin()
+
Copia una secuencia de elementos de un array dentro del propio array.
+
Array.prototype.entries()
+
Devuelve un nuevo objeto Array Iterator que contiene los pares clave/valor para cada índice del array.
+
Array.prototype.every()
+
Devuelve true si todos los elementos del array cumplen el predicado que recibe como parámetro.
+
Array.prototype.fill()
+
Asigna un valor estático a todos los elementos del array entre las posiciones inicio y fin.
+
Array.prototype.filter()
+
Devuelve un nuevo array que contiene todos los elementos de aquél para el cual se llama que cumplan el predicado que se le pasa como parámetro.
+
Array.prototype.find()
+
Devuelve el primer elemento del array que cumpla el predicado que se pasa como parámetro, o undefined si ninguno lo cumple.
+
Array.prototype.findIndex()
+
Devuelve el índice del primer elemento del array que cumpla el predicado que se pasa como parámetro, o -1 si nunguno lo cumple.
+
Array.prototype.forEach()
+
Llama a la función pasada como parámetro para todos los elementos del array.
+
Array.prototype.includes()
+
Determina si el array contiene el valorBuscado y devuelve true o false según sea el caso.
+
Array.prototype.indexOf()
+
Devuelve el índice del primer elemento del array que sea igual a elementoBuscado, o -1 si no existe.
+
Array.prototype.join()
+
Concatena en un string todos los elementos de un array.
+
Array.prototype.keys()
+
Devuelve un nuevo Array Iterator que contiene las claves de cada índice del array.
+
Array.prototype.lastIndexOf()
+
Devuelve el índice del último elemento del array que sea igual a elementoBuscado, o -1 si no existe.
+
Array.prototype.map()
+
Devuelve un nuevo array que contiene el resultado de llamar a la función pasada como parámetro a todos los elementos del array sobre el que se invoca.
+
Array.prototype.pop()
+
Elimina el último elemento de un array, y devuelve dicho elemento.
+
Array.prototype.push()
+
Añade uno o más elementos al final de un array y devuelve el nuevo valor de su propiedad length.
+
Array.prototype.reduce()
+
Aplica la función pasada como parámetro a un acumulador y a cada valor del array, que se recorre de izquierda a derecha, para reducirlo a un único valor.
+
Array.prototype.reduceRight()
+
Aplica la función pasada como parámetro a un acumulador y a cada valor del array, que se recorre de derecha a izquierda, para reducirlo a un único valor.
+
Array.prototype.reverse()
+
Invierte el orden de los elementos de un array (el primero pasa a ser el último y el último a ser el primero) en el propio array. Este método modifica el array.
+
Array.prototype.shift()
+
Elimina el primer elemento de un array, y devuelve dicho elemento.
+
Array.prototype.slice()
+
Extrae una porción del array sobre el que se llama y devuelve un nuevo array.
+
Array.prototype.some()
+
Devuelve true si al menos un elemento del array cumple con el predicado que se pasa como parámetro.
+
Array.prototype.sort()
+
Ordena los elementos de un array, modificando éste, y devuelve el array ordenado.
+
Array.prototype.splice()
+
Añade, borra o modifica elementos de un array.
+
Array.prototype.toLocaleString()
+
Devuelve un string adaptado a la configuración regional que representa el array y sus elementos. Redefine el método Object.prototype.toLocaleString().
+
Array.prototype.toString()
+
Devuelve un string que representa el array y sus elementos. Redefine el método Object.prototype.toString().
+
Array.prototype.unshift()
+
Añada uno o más elementos al inicio de un array y devuelve el nuevo valor de length para el array resultante.
+
Array.prototype.values()
+
Devuelve un nuevo objeto Array Iterator que contiene los valores para cada índice del array.
+
Array.prototype[@@iterator]()
+
Devuelve un nuevo objeto Array Iterator que contiene los valores para cada índice del array.
+
+ +

Ejemplos

+ +

Creación de una matriz unidimensional

+ +

El siguiente ejemplo crea un array mensajes con una longitud de 0, y luego asigna valores a mensajes[0] y a mensajes[99], con lo que la longitud del array pasa a ser 100.

+ +
let mensajes = [];
+mensajes[0] = "Hola";
+mensajes[99] = "mundo";
+
+if (mensajes.length === 100) {
+   console.log("La longitud es de 100.");
+}
+
+ +

Creación de una matriz de dos dimensiones

+ +

El siguiente ejemplo crea una matriz bidimensional que representa un tablero de ajedrez. El primer movimiento se realiza copiando la 'p' de tablero[6][4] en tablero[4][4]. La posición [6][4] se limpia.

+ +
let tablero = [
+  ['T','C','A','D','R','A','C','T'],
+  ['P','P','P','P','P','P','P','P'],
+  [' ',' ',' ',' ',' ',' ',' ',' '],
+  [' ',' ',' ',' ',' ',' ',' ',' '],
+  [' ',' ',' ',' ',' ',' ',' ',' '],
+  [' ',' ',' ',' ',' ',' ',' ',' '],
+  ['p','p','p','p','p','p','p','p'],
+  ['t','c','a','d','r','a','c','t'] ]
+
+console.log(tablero.join('\n') + '\n\n')
+
+// Adelantar dos posiciones el peón de rey
+tablero[4][4] = tablero[6][4]
+tablero[6][4] = ' '
+console.log(tablero.join('\n'))
+ +

Este es el resultado:

+ +
T,C,A,D,R,A,C,T
+P,P,P,P,P,P,P,P
+ , , , , , , ,
+ , , , , , , ,
+ , , , , , , ,
+ , , , , , , ,
+p,p,p,p,p,p,p,p
+t,c,a,d,r,a,c,t
+
+P,P,P,P,P,P,P,P
+ , , , , , , ,
+ , , , , , , ,
+ , , , ,p, , ,
+ , , , , , , ,
+p,p,p,p, ,p,p,p
+t,c,a,d,r,a,c,t
+
+ +

Uso de un array para tabular un conjunto de valores

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

da como resultado:

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

(La primera columna es el índice).

+ +

Especificaciones

+ + + + + + + + + + + + + + +
EspecificaciónPublicación inicial
{{SpecName('ESDraft', '#sec-array-objects', 'Array')}}ECMAScript 1
+ +

Compatibilidad con navegadores

+ + + +

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

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/indexof/index.html b/files/es/web/javascript/reference/global_objects/array/indexof/index.html new file mode 100644 index 0000000000..7aad7773b1 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/indexof/index.html @@ -0,0 +1,248 @@ +--- +title: Array.prototype.indexOf() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/indexOf +tags: + - Array + - JavaScript + - Method + - Prototype + - Referencia + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/indexOf +--- +
{{JSRef}}
+ +

El método indexOf() retorna el primer índice en el que se puede encontrar un elemento dado en el array, ó retorna -1 si el elemento no esta presente.

+ +
+

Nota: Para el método String, ver {{jsxref("String.prototype.indexOf()")}}.

+
+ +

Sintaxis

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

Parámetros

+ +
+
searchElement
+
Elemento a encontrar en el array.
+
fromIndex {{optional_inline}}
+
Indica el índice por el que se comienza la búsqueda. Por defecto es 0, por lo que se busca en todo el array. Si el índice es mayor o igual a la longitud del array, devuelve -1, ya que no se buscaría en el array. Si el valor es negativo, se toma restando posiciones desde el final del array. Hay que tener en cuenta que aunque el índice sea negativo, la búsqueda seguirá realizándose en un orden incremental. Si el índice calculado es menor de 0, la búsqueda se realizará por todo el array.
+
+ +

Valor de retorno

+ +

El primer índice del elemento en la matriz; -1 si no se encuentra.

+ +

Descripción

+ +

indexOf() compara searchElement con los elementos del array usando igualdad estricta (el mismo método que cuando se usa ===, o el operador igualdad-triple).

+ +

Ejemplos

+ +

Usando indexOf()

+ +

El siguiente ejemplo usa indexof() para localizar valores en un array 

+ +
var array = [2, 9, 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 las apariciones de un elemento

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

Encontrar si un elemento existe en la matriz o no y actualizar la matriz

+ +
function updateVegetablesCollection (veggies, veggie) {
+    if (veggies.indexOf(veggie) === -1) {
+        veggies.push(veggie);
+        console.log('La nueva colección de vegetales es: ' + veggies);
+    } else if (veggies.indexOf(veggie) > -1) {
+        console.log(veggie + ' ya existe en la colección de verduras.');
+    }
+}
+
+var veggies = ['patata', 'tomate', 'chiles', 'pimientoverde'];
+
+updateVegetablesCollection(veggies, 'espinaca');
+// La nueva colección de verduras es : patata, tomate, chiles, pimientoverde, espinaca
+updateVegetablesCollection(veggies, 'espinaca');
+// La espinaca ya existe en la colección de verduras.
+ +

 

+ +

Polyfill

+ +

indexOf() se agregó al estándar ECMA-262 en la 5a edición; por tanto no está implementado en todos los navegadores. Puedes hacerlo funcionar insertando el siguiente código al comienzo de tus scripts, permitiendo usar  indexOf() en implementaciones que no lo soporten de forma nativa. Este algoritmo es exáctamente el especificado en ECMA-262, 5ª edición, suponiendo que {{jsxref("Global_Objects/TypeError", "TypeError")}} y {{jsxref("Math.abs()")}} tienen sus valores originales.

+ + +
if (!Array.prototype.indexOf) {
+  Array.prototype.indexOf = function indexOf(member, startFrom) {
+    /*
+    En el modo no estricto, si la variable `this` es null o indefinida, entonces se establece
+    en el objeto ventana. De lo contrario, `this` se convierte automáticamente en un objeto.
+    En modo estricto, si la variable `this` es nula o indefinida, se lanza `TypeError`.
+    */
+    if (this == null) {
+      throw new TypeError("Array.prototype.indexOf() - no se puede convertir `" + this + "` en objeto");
+    }
+
+    var
+      index = isFinite(startFrom) ? Math.floor(startFrom) : 0,
+      that = this instanceof Object ? this : new Object(this),
+      length = isFinite(that.length) ? Math.floor(that.length) : 0;
+
+    if (index >= length) {
+      return -1;
+    }
+
+    if (index < 0) {
+      index = Math.max(length + index, 0);
+    }
+
+    if (member === undefined) {
+      /*
+        Dado que `member` no está definido, las claves que no existan tendrán el valor de `same`
+        como `member` y, por lo tanto, es necesario verificarlas.
+      */
+      do {
+        if (index in that && that[index] === undefined) {
+          return index;
+        }
+      } while (++index < length);
+    } else {
+      do {
+        if (that[index] === member) {
+          return index;
+        }
+      } while (++index < length);
+    }
+
+    return -1;
+  };
+}
+ +

Sin embargo, si está más interesado en todos los pequeños trozos técnicos definidos por el estándar ECMA, y está menos preocupado por el rendimiento o la concisión, entonces usted puede encontrar esta polyfill más descriptivo que sea más útil.

+ +
// Pasos de producción de ECMA-262, Edición 5, 15.4.4.14
+// Referencia: http://es5.github.io/#x15.4.4.14
+if (!Array.prototype.indexOf) {
+  Array.prototype.indexOf = function(searchElement, fromIndex) {
+
+    var k;
+
+    // 1. Dejar que `o` sea el resultado de llamar a ToObject
+    //    pasando este valor como argumento.
+    if (this == null) {
+      throw new TypeError('"this" is null or not defined');
+    }
+
+    var o = Object(this);
+
+    // 2. Dejar que `lenValue` sea el resultado de llamar al método interno
+    //    de `o` con el argumento "length".
+    // 3. Dejar que len sea ToUint32(lenValue).
+    var len = o.length >>> 0;
+
+    // 4. Si `len` es 0, devolver -1.
+    if (len === 0) {
+      return -1;
+    }
+
+    // 5. Si se pasó el argumento `fromIndex`, deje que `n` sea
+    //    ToInteger(fromIndex); si no, que `n` sea 0.
+    var n = fromIndex | 0;
+
+    // 6. Si n >= len, devolver -1.
+    if (n >= len) {
+      return -1;
+    }
+
+    // 7. Si n >= 0, entonces deja que `k` sea `n`.
+    // 8. Si no, n<0, deja que `k` sea `len - abs(n)`.
+    //    Si `k` es menor que 0, entonces deja que `k` sea 0.
+    k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
+
+    // 9. Repite, mientras k < len
+    while (k < len) {
+      // a. Dejar que `Pk` sea ToString(k).
+      //   Esto está implícito para los operandos LHS del operador in
+      // b. Dejar que kPresent sea el resultado de llamar al método
+      //    interno `HasProperty` de `o` con el argumento `Pk`.
+      //   Este paso se puede combinar con `c`
+      // c. Si kPresent es verdadero, entonces
+      //    i.  Dejar que `elementK` sea el resultado de llamar al método
+      //        interno de `o` con el argumento ToString(k).
+      //   ii.  Deje que `same` sea el resultado de aplicar el
+      //        Algoritmo de comparación de igualdad estricta a
+      //        searchElement y elementK.
+      //  iii.  Si `same` es true, devuelve `k`.
+      if (k in o && o[k] === searchElement) {
+        return k;
+      }
+      k++;
+    }
+    return -1;
+  };
+}
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.4.4.14', 'Array.prototype.indexOf')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +

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

+ +

Notas de compatibilidad

+ + + +
 
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/isarray/index.html b/files/es/web/javascript/reference/global_objects/array/isarray/index.html new file mode 100644 index 0000000000..b2a115a814 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/isarray/index.html @@ -0,0 +1,128 @@ +--- +title: Array.isArray() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/isArray +tags: + - Array + - ECMAScript5 + - JavaScript + - Referencia + - metodo + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/isArray +--- +
{{JSRef}}
+ +

El método Array.isArray() determina si el valor pasado es un {{jsxref("Array")}}.

+ +
Array.isArray([1, 2, 3]);  // true
+Array.isArray({foo: 123}); // false
+Array.isArray('foobar');   // false
+Array.isArray(undefined);  // false
+
+ +

Sintaxis

+ +
Array.isArray(obj)
+ +

Parámetros

+ +
+
obj
+
El objeto a evaluar.
+
+ +

Valor de retorno

+ +

true si el objeto es un {{jsxref("Array")}}; en caso contrario, false.

+ +

Descripción

+ +

Si el objeto es un {{jsxref("Array")}}, devuelve truefalse, en cualquier otro caso.

+ +

Vea el artículo “Determining with absolute accuracy whether or not a JavaScript object is an array” para más detalles.

+ +

Ejemplos

+ +
// las siguientes llamadas devuelven true
+Array.isArray([]);
+Array.isArray([1]);
+Array.isArray(new Array());
+Array.isArray(new Array('a', 'b', 'c', 'd'));
+Array.isArray(new Array(3));
+// Hecho poco conocido: Array.prototype es también un array:
+Array.isArray(Array.prototype);
+
+// todas las siguientes llamadas devuelven false
+Array.isArray();
+Array.isArray({});
+Array.isArray(null);
+Array.isArray(undefined);
+Array.isArray(17);
+Array.isArray('Array');
+Array.isArray(true);
+Array.isArray(false);
+Array.isArray({ __proto__: Array.prototype });
+
+ +

instanceof vs isArray

+ +

Al comprobar una instancia ArrayArray.isArray es más recomendado que instanceof porque funciona a través de iframes.

+ +
var iframe = document.createElement('iframe');
+document.body.appendChild(iframe);
+xArray = window.frames[window.frames.length - 1].Array;
+var arr = new xArray(1,2,3); // [1,2,3]
+
+// Comprobando correctamente un Array
+Array.isArray(arr);  // true
+// Considerado peligroso, porque no funciona a través de iframes
+arr instanceof Array; // false
+
+ +

Polyfill

+ +

Ejecutar el siguiente código antes de cualquier otro código creará un Array.isArray() si no está disponible de forma nativa.

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

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.4.3.2', 'Array.isArray')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.8.5.
{{SpecName('ES6', '#sec-array.isarray', 'Array.isArray')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-array.isarray', 'Array.isArray')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

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

Vea también

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

El método join() une todos los elementos de una matriz (o un objeto similar a una matriz) en una cadena y devuelve esta cadena.

+ +

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

+ +

Sintaxis

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

Parámetros

+ +
+
separador {{optional_inline}}
+
Es una cadena usada para separar cada uno de los elementos del arreglo. El separador es convertido a una cadena si es necesario. Si este se omite, los elementos del arreglo son separados con una coma (","). Si el separador es una cadena vacía todos los elementos son unidos sin ningún carácter entre ellos.
+
+ +

Valor de retorno

+ +

Una cadena con todos los elementos de la matriz unidos. Si arr.length es 0, se devuelve la cadena vacía.

+ +

Descripción

+ +

Las conversiones de cadena de todos los elementos de la matriz se unen en una cadena.

+ +
+

Si un elemento no está definido o es nulo, se convierte en la cadena vacía.

+
+ +

Ejemplos

+ +

Uniendo un arreglo cuatro veces en diferentes formas

+ +

El siguiente ejemplo crea un arreglo a con tres elementos para luego unir el arreglo cuatro veces: usando el separador predeterminado, luego una coma y un espacio, luego un signo de suma, y finalmente una cadena vacío.

+ +
var a = ['Viento', 'Lluvia', 'Fuego'];
+var miVar1 = a.join();      // asigna 'Viento,Lluvia,Fuego' a miVar1
+var miVar2 = a.join(', ');  // asigna 'Viento, Lluvia, Fuego' a miVar2
+var miVar3 = a.join(' + '); // asigna 'Viento + Lluvia + Fuego' a miVar3
+var miVar4 = a.join('');    // asigna 'VientoLluviaFuego' a miVar4
+
+ +

Unirse a un objeto tipo matriz

+ +

El siguiente ejemplo une un objeto parecido a una matriz (argumentos), llamando a {{jsxref("Function.prototype.call")}} en 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);
+//resultado esperado: "1,a,true"
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
ECMAScript 1st EditionEstándarDefinición inicial. Implementado en 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')}} 
+ +

Compatibilidad con navegadores

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

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/keys/index.html b/files/es/web/javascript/reference/global_objects/array/keys/index.html new file mode 100644 index 0000000000..ff7cb593f5 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/keys/index.html @@ -0,0 +1,84 @@ +--- +title: Array.prototype.keys() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/keys +tags: + - Array + - ECMAScript 2015 + - Iterator + - JavaScript + - Matriz + - Prototipo + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/keys +--- +
{{JSRef}}
+ +

El método keys() devuelve un nuevo objeto  Array Iterator que contiene las claves de índice con las que acceder a cada elemento en el array.

+ +

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

+ +

Sintaxis

+ +
arr.keys()
+ +

Valor de retorno

+ +

Un nuevo objeto iterador {{jsxref("Array")}}.

+ +

Ejemplos

+ +

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

El iterador no ignora los huecos

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

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-array.prototype.keys', 'Array.prototype.keys')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.prototype.keys', 'Array.prototype.keys')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

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

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/lastindexof/index.html b/files/es/web/javascript/reference/global_objects/array/lastindexof/index.html new file mode 100644 index 0000000000..19667a54af --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/lastindexof/index.html @@ -0,0 +1,164 @@ +--- +title: Array.prototype.lastIndexOf() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/lastIndexOf +tags: + - Array + - Arreglo + - ECMAScript 5 + - JavaScript + - Matriz + - Prototipo + - metodo + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf +--- +
{{JSRef}}
+ +

El método lastIndexOf() devuelve el último índice en el que un cierto elemento puede encontrarse en el arreglo, ó -1 si el elemento no se encontrara. El arreglo es recorrido en sentido contrario, empezando por el índice fromIndex.

+ +

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

+ +

Sintaxis

+ +
arr.lastIndexOf(searchElement) arr.lastIndexOf(searchElement, fromIndex)
+ +

Parámetros

+ +
+
searchElement
+
Elemento a encontrar en el arreglo.
+
fromIndex {{optional_inline}}
+
El índice en el que empieza la búsqueda en sentido contrario. Por defecto la longitud del arreglo menos uno (arr.length - 1), es decir, todo el arreglo será recorrido. Si el índice es mayor o igual que la longitud del arreglo, todo el arreglo será recorrido. Si es un valor negatigo, se usará como inicio del desplazamiento el final del arreglo. Darse cuenta que aún cuando el índice es negativo, el arreglo todavía será recorrido desde atrás hacia delante. Si el índice calculado es menor de 0, se devolverá -1, es decir, el arreglo no será recorrido.
+
+ +

Valor de retorno

+ +

El último índice del elemento en el arreglo; -1 si no se encuentra.

+ +

Descripción

+ +

lastIndexOf compara searchElement con los elementos del arreglo usando igualdad estricta (el mismo método es usado para la ===, operador triple igualdad).

+ +

Ejemplos

+ +

Usando lastIndexOf

+ +

El siguiente ejemplo usa lastIndexOf para encontrar valores en un arreglo.

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

Encontrar todas las apariciones de un elemento

+ +

El siguiente ejemplo uses lastIndexOf encuentra todos los índices de un elemento en un arreglo dado, usando {{jsxref("Array.prototype.push", "push")}} añadiéndolos a otro arreglo como elementos 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]
+
+ +

Darse cuenta que en este caso tenemos que tratar idx == 0  de forma separada por que el elemento siempre será encontrado independiemente del valor del parámetro fromIndex  si este es el primer elemento del arreglo. Diferente de como se trata en el método {{jsxref("Array.prototype.indexOf", "indexOf")}}.

+ +

Polyfill

+ +

lastIndexOf fue añadido al estándar ECMA-262 en la 5ª edición; por tanto puede que no este presente en otras implementaciones del estándar. Puedes solucionarlo escribiendo el siguiente código al principio de tus scripts, pudiendo usar lastIndexOf en implementaciones que no tiene soporte de forma nativa. Este algoritmo es exactamente el especificado en ECMA-262, 5ª edición, suponiendo que {{jsxref("Object")}}, {{jsxref("TypeError")}}, {{jsxref("Number")}}, {{jsxref("Math.floor")}}, {{jsxref("Math.abs")}}, y {{jsxref("Math.min")}} tienen sus valores originales.

+ +
// Pasos de producción de ECMA-262, Edición 5, 15.4.4.15
+// Referencia: 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;
+  };
+}
+
+ +

De nuevo, darse cuenta que esta implementación tiene como objeto la completa compatibilidad con lastIndexOf en Firefox y el motor SpiderMonkey JavaScript, en particular en varios casos que son posiblemente extremos. Si pretendes usar esta funcionalidad en aplicaciones reales, es posible que puedes calcular from con código menos complejo si ignoras estos casos.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.4.4.15', 'Array.prototype.lastIndexOf')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad con navegadores

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

Notas de compatibilidad

+ + + +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/length/index.html b/files/es/web/javascript/reference/global_objects/array/length/index.html new file mode 100644 index 0000000000..cbbb1a46db --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/length/index.html @@ -0,0 +1,143 @@ +--- +title: Array.prototype.length +slug: Web/JavaScript/Referencia/Objetos_globales/Array/length +tags: + - Array + - JavaScript + - Propiedad + - Referencia + - Vector +translation_of: Web/JavaScript/Reference/Global_Objects/Array/length +--- +
{{JSRef}}
+ +

La propiedad length de un objeto que es una instancia de tipo Array establece o devuelve la cantidad de elementos en esa matriz. El valor es un entero sin signo de 32 bits que siempre es numéricamente mayor que el índice más alto en la matriz.

+ +
+

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

+
+ +

Descripción

+ +

El valor de la propiedad length es un número entero con un signo positivo y un valor menor que 2 a la 32a potencia (232).

+ +
var namelistA = new Array(4294967296); //2 a la 32a potencia = 4294967296
+var namelistC = new Array(-100) //signo negativo
+
+console.log(namelistA.length); //RangeError: longitud de la matriz inválida
+console.log(namelistC.length); //RangeError: longitud de la matriz inválida
+
+
+
+var namelistB = [];
+namelistB.length = Math.pow(2,32)-1; //establecer una longitud de la matriz menor que 2 a la 32ª potencia
+console.log(namelistB.length);
+
+//4294967295
+ +

Puedes establecer la propiedad length para truncar una matriz unidimensional en cualquier momento. Cuando extiende una matriz cambiando su propiedad length, el número de elementos reales aumenta; por ejemplo, si se establece length en 3 cuando actualmente es 2, la matriz ahora contiene 3 elementos, lo que hace que el tercer elemento sea undefined.

+ +
var arr = [1, 2, 3];
+printEntries(arr);
+
+arr.length = 5; // establecer la longitud de la matriz en 5 mientras que actualmente es 3.
+printEntries(arr);
+
+function printEntries(arr) {
+  var length = arr.length;
+  for (var i = 0; i < length; i++) {
+    console.log(arr[i]);
+  }
+  console.log('=== printed ===');
+}
+
+// 1
+// 2
+// 3
+// === impreso ===
+// 1
+// 2
+// 3
+// undefined
+// undefined
+// === impreso ===
+ +

Pero, la propiedad length no necesariamente indica el número de valores definidos en la matriz. Ver también Relación entre length y las propiedades numéricas.

+ +

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

+ + + +

Ejemplos

+ +

Iterando sobre una matriz

+ +

En el siguiente ejemplo, la matriz numbers se itera a través de la propiedad length. El valor en cada elemento se duplica.

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

Acortando una matriz

+ +

El siguiente ejemplo acorta los numbers de la matriz a una longitud de 3 si la longitud actual es mayor que 3.

+ +
var numbers = [1, 2, 3, 4, 5];
+
+if (numbers.length > 3) {
+  numbers.length = 3;
+}
+
+console.log(numbers); // [1, 2, 3]
+console.log(numbers.length); // 3
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
ECMAScript 1ra Edición.EstándarDefinición inicial.
{{SpecName('ES5.1', '#sec-15.4.5.2', 'Array.length')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-properties-of-array-instances-length', 'Array.length')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-properties-of-array-instances-length', 'Array.length')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

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

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/map/index.html b/files/es/web/javascript/reference/global_objects/array/map/index.html new file mode 100644 index 0000000000..8b958a4945 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/map/index.html @@ -0,0 +1,360 @@ +--- +title: Array.prototype.map() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/map +tags: + - Array + - Arreglo + - Callback + - ECMAScript5 + - Polifill + - Prototype + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/map +--- +
{{JSRef}}
+ +

El método map() crea un nuevo array con los resultados de la llamada a la función indicada aplicados a cada uno de sus elementos.

+ +
var numbers = [1, 5, 10, 15];
+var doubles = numbers.map(function(x) {
+   return x * 2;
+});
+// doubles is now [2, 10, 20, 30]
+// numbers is still [1, 5, 10, 15]
+
+var numbers = [1, 4, 9];
+var roots = numbers.map(function(num) {
+    return Math.sqrt(num);
+});
+// roots is now [1, 2, 3]
+// numbers is still [1, 4, 9]
+
+ +

Sintaxis

+ +
var nuevo_array = arr.map(function callback(currentValue, index, array) {
+    // Elemento devuelto de nuevo_array
+}[, thisArg])
+ +

Parámetros

+ +
+
callback
+
Función que producirá un elemento del nuevo array, recibe tres argumentos:
+
+
+
currentValue
+
El elemento actual del array que se está procesando.
+
index
+
El índice del elemento actual dentro del array.
+
array
+
El array sobre el que se llama map.
+
+
+
thisArg
+
Opcional. Valor a usar como this al ejecutar callback.
+
+ +

Descripción

+ +

map llama a la función callback provista una vez por elemento de un array, en orden, y construye un nuevo array con los resultados. callback se invoca sólo para los índices del array que tienen valores asignados; no se invoca en los índices que han sido borrados o a los que no se ha asignado valor.

+ +

callback es llamada con tres argumentos: el valor del elemento, el índice del elemento, y el objeto array que se está recorriendo.

+ +

Si se indica un parámetro thisArg a un map, se usará como valor de this en la función callback. En otro caso, se pasará {{jsxref("Global_Objects/undefined", "undefined")}} como su valor this. El valor de this observable por el callback se determina de acuerdo a las reglas habituales para determinar el valor this visto por una función.

+ +

map no modifica el array original en el que es llamado (aunque callback, si es llamada, puede modificarlo).

+ +

El rango de elementos procesado por map es establecido antes de la primera invocación del callback. Los elementos que sean agregados al array después de que la llamada a map comience no serán visitados por el callback. Si los elementos existentes del array son modificados o eliminados, su valor pasado al callback será el valor en el momento que el map lo visita; los elementos que son eliminados no son visitados.

+ +

Ejemplos

+ +

Procesar un array de números aplicándoles la raíz cuadrada

+ +

El siguiente código itera sobre un array de números, aplicándoles la raíz cuadrada a cada uno de sus elementos, produciendo un nuevo array a partir del inicial.

+ +
var numeros= [1, 4, 9];
+var raices = numeros.map(Math.sqrt);
+// raices tiene [1, 2, 3]
+// numeros aún mantiene [1, 4, 9]
+
+ +

Usando map para dar un nuevo formato a los objetos de un array

+ +

El siguiente código toma un array de objetos y crea un nuevo array que contiene los nuevos objetos formateados.

+ +
var kvArray = [{clave:1, valor:10},
+               {clave:2, valor:20},
+               {clave:3, valor: 30}];
+
+var reformattedArray = kvArray.map(function(obj){
+   var rObj = {};
+   rObj[obj.clave] = obj.valor;
+   return rObj;
+});
+
+// reformattedArray es ahora [{1:10}, {2:20}, {3:30}],
+
+// kvArray sigue siendo:
+// [{clave:1, valor:10},
+//  {clave:2, valor:20},
+//  {clave:3, valor: 30}]
+
+ +

Mapear un array de números usando una función con un argumento

+ +

El siguiente código muestra cómo trabaja map cuando se utiliza una función que requiere de un argumento. El argumento será asignado automáticamente a cada elemento del arreglo conforme map itera el arreglo original.

+ +
var numeros = [1, 4, 9];
+var dobles  = numeros.map(function(num) {
+  return num * 2;
+});
+
+// dobles es ahora [2, 8, 18]
+// numeros sigue siendo [1, 4, 9]
+
+ +

Usando map de forma genérica

+ +

Este ejemplo muestra como usar map en {{jsxref("Global_Objects/String", "String")}} para obtener un arreglo de bytes en codifcación ASCII representando el valor de los caracteres:

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

Usando map genérico con querySelectorAll

+ +

Este ejemplo muestra como iterar sobre una colección de objetos obtenidos por querySelectorAll. En este caso obtenemos todas las opciones seleccionadas en pantalla y se imprimen en la consola:

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

Usando map para invertir una cadena

+ +
var str = '12345';
+[].map.call(str, function(x) {
+  return x;
+}).reverse().join('');
+
+// Salida: '54321'
+// Bonus: usa'===' para probar si la cadena original era un palindromo
+
+ +

Caso de uso engañoso

+ +

(inspirado por este artículo)

+ +

Es común utilizar el callback con un argumento (el elemento siendo pasado). Ciertas funciones son también usadas comunmente con un argumento, aún cuando toman argumentos adicionales opcionales.  Estos hábitos pueden llevar a comportamientos confusos.

+ +
// Considera:
+['1', '2', '3'].map(parseInt);
+// Mientras uno esperaría [1, 2, 3]
+// en realidad se obtiene [1, NaN, NaN]
+
+// parseInt se usa comúnmente con un argumento, pero toma dos.
+// El primero es una expresión y el segundo el radix.
+// a la función callback, Array.prototype.map pasa 3 argumentos:
+// el elemento, el índice y el array.
+// El tercer argumento es ignorado por parseInt, pero no el segundo,
+// de ahí la posible confusión. Véase el artículo del blog para más detalles
+
+function returnInt(element) {
+  return parseInt(element, 10);
+}
+
+['1', '2', '3'].map(returnInt); // [1, 2, 3]
+// El resultado es un arreglo de números (como se esperaba)
+
+// Un modo más simple de lograr lo de arriba, mientras de evita el "gotcha":
+['1', '2', '3'].map(Number); // [1, 2, 3]
+
+ +

Polyfill

+ +

map fue agregado al estandar ECMA-262 en la 5th edición; por lo tanto podría no estar presente en todas la implementaciones del estándar. Puedes sobrepasar esto insertando el siguiente código al comienzo de tus scripts, permitiendo el uso de map en implementaciones que no lo soportan de forma nativa. Este algoritmo es exactamente el mismo especificado en ECMA-262, 5th edición, asumiendo {{jsxref("Global_Objects/Object", "Object")}}, {{jsxref("Global_Objects/TypeError", "TypeError")}}, y {{jsxref("Global_Objects/Array", "Array")}} tienen sus valores originales y que el callback.call evalua el 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;
+  };
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.4.4.19', 'Array.prototype.map')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.map', 'Array.prototype.map')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.map', 'Array.prototype.map')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.8")}}{{CompatIE("9")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome para AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.8")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/of/index.html b/files/es/web/javascript/reference/global_objects/array/of/index.html new file mode 100644 index 0000000000..f57c7e2bc1 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/of/index.html @@ -0,0 +1,97 @@ +--- +title: Array.of() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/of +tags: + - Array + - ECMAScript 2015 + - JavaScript + - metodo + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/of +--- +
{{JSRef}}
+ +

El método Array.of() crea una nueva instancia Array con un número variable de elementos pasados como argumento, independientemente del número o del tipo.

+ +

La diferencia entre Array.of() y el constructor Array reside en como maneja los parámetros de tipo entero: Array.of(7) crea un array con un solo elemento, 7, mientras que Array(7) crea un array vacío con una propiedad length de 7 (Nota: esto implica un array de 7 ranuras vacías, no ranuras con valores undefined).

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

Sintaxis

+ +
Array.of(elemento0[, elemento1[, ...[, elementoN]]])
+ +

Parámetros

+ +
+
elementoN
+
Valores con los que se creará el Array en su respectivo indice.
+
+

Valor de retorno

+
+
Una nueva instancia de {{jsxref("Array")}}.
+
+ +

Descripción

+ +

Esta función es parte del estándar ECMAScript 2015. Para obtener más información, consulte Array.of y Array.from proposal y Array.of polyfill.

+ +

Ejemplos

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

Polyfill

+ +

Escribiendo el siguiente código antes que cualquier otro, podemos emular la funcionalidad de Array.of() si es que ésta no está disponible de forma nativa.

+ +
if (!Array.of) {
+  Array.of = function() {
+    return Array.prototype.slice.call(arguments);
+  };
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-array.of', 'Array.of')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.of', 'Array.of')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
+ + +

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

+
+ +

Ver también

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

El método pop() elimina el último elemento de un array y lo devuelve. Este método cambia la longitud del array.

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

Sintaxis

+ +
arr.pop()
+ +

Valor devuelto

+ +

El elemento que ha sido eliminado del array; {{jsxref("undefined")}} si el array está vacío.

+ +

Descripción

+ +

El método pop elimina el último elemento de un array y devuelve su valor al método que lo llamó.

+ +

pop es intencionadamente genérico; este método puede ser {{jsxref("Function.call", "called", "", 1)}} o {{jsxref("Function.apply", "applied", "", 1)}} en objectos similares a un array. En objetos que no contengan una propiedad length, que refleje su forma en una serie de propiedades numéricas consecutivas en base cero, puede no comportarse de manera significativa.

+ +

Si se llama a pop() en un array vacío, devuelve {{jsxref("undefined")}}.

+ +

Ejemplos

+ +

Eliminando el último elemento de un array

+ +

El siguiente código crea el array myFish, que contiene cuatro elementos, a continuación, elimina su último elemento.

+ +
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
+
+var popped = myFish.pop();
+
+console.log(myFish); // ['angel', 'clown', 'mandarin' ]
+
+console.log(popped); // 'sturgeon'
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES3')}}EstándarDefinición inicial. Implementada en JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.6', 'Array.prototype.pop')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-array.prototype.pop', 'Array.prototype.pop')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-array.prototype.pop', 'Array.prototype.pop')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
+

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

+
+ +

Vea también

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

El método push() añade uno o más elementos al final de un array y devuelve la nueva longitud del array.

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

Sintaxis

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

Parámetros

+ +
+
elementN
+
Los elementos a añadir al final del array.
+
+ +

Valor devuelto

+ +

La nueva propiedad {{jsxref("Array.length", "length")}} del objeto sobre el cual se efectuó la llamada.

+ +

Descripción

+ +

El método push es muy práctico para añadir valores a un array.

+ +

push es genérico intencionadamente. Este método puede ser {{jsxref("Function.call", "call()")}} o {{jsxref("Function.apply", "apply()")}} a objetos que representen arrays. El método push depende de la propiedad length para decidir donde empezar a insertar los valores dados. Si el valor de la propiedad length no puede ser convertido en numérico, el índice 0 es usado. Esto permite la posibilidad de que la propiedad length sea inexistente, y en este caso length será creado.

+ +

Los únicos objetos nativos que se asemejen al array son {{jsxref("Global_Objects/String", "strings", "", 1)}} objetos, aunque estos no se puedan usar en la aplicación de este método ya que son inmutables.

+ +

Ejemplos

+ +

Ejemplo: Añadiendo elementos a un array

+ +

El siguiente código crea el array sports que contiene dos elementos, luego añade 2 elementos más. Tras ejecutar el código, sports contiene 4 elementos: "soccer", "baseball", "football" and "swimming".

+ +
var sports = ['soccer', 'baseball'];
+var total = sports.push('football', 'swimming');
+
+console.log(sports); // ['soccer', 'baseball', 'football', 'swimming']
+console.log(total);  // 4
+
+ +

Uniendo dos arrays

+ +

This example uses {{jsxref("Function.apply", "apply()")}} to push all elements from a second array.

+ +

Do not use this method if the second array (moreVegs in the example) is very large, because the maximum number of parameters that one function can take is limited in practice. See {{jsxref("Function.apply", "apply()")}} for more details.

+ +
var vegetables = ['parsnip', 'potato'];
+var moreVegs = ['celery', 'beetroot'];
+
+// Merge the second array into the first one
+// Equivalent to vegetables.push('celery', 'beetroot');
+Array.prototype.push.apply(vegetables, moreVegs);
+
+console.log(vegetables); // ['parsnip', 'potato', 'celery', 'beetroot']
+
+ +

Using an object in an array-like fashion

+ +

Como se menciona anteriormente, push es intencionadamente genérico, y podemos usar eso a nuestro favor. Array.prototype.push puede funcionar bien con un objeto, como muestra este ejemplo. Ten en cuenta que no se crea un array para almacenar una colección de objetos. En su lugar, almacenamos la colección en el propio objeto y se utiliza el método call sobre Array.prototype.push para hacer creer al método que estamos tratando a un array, y simplemente funciona, gracias a la forma en que JavaScript nos permite establecer el contexto de la ejecución.

+ +
var obj = {
+    length: 0,
+
+    addElem: function addElem(elem) {
+        // obj.length is automatically incremented
+        // every time an element is added.
+        [].push.call(this, elem);
+    }
+};
+
+// Let's add some empty objects just to illustrate.
+obj.addElem({});
+obj.addElem({});
+console.log(obj.length);
+// → 2
+
+ +

Tenga en cuenta que aunque obj no es un array, el método push ha incrementado satisfactoriamente la propiedad length de obj tal y como si se tratara de un array.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial. Implementado en 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')}} 
{{SpecName('ESDraft', '#sec-array.prototype.push', 'Array.prototype.push')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad en navegadores

+ +
+ + +

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/reduce/index.html b/files/es/web/javascript/reference/global_objects/array/reduce/index.html new file mode 100644 index 0000000000..68d7a9cb2f --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/reduce/index.html @@ -0,0 +1,215 @@ +--- +title: Array.prototype.reduce() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/reduce +tags: + - Array + - ECMAScript 5 + - JavaScript + - Prototype + - Reduce + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/Reduce +--- +
{{JSRef}}
+ +

El método reduce() ejecuta una función reductora sobre cada elemento de un array, devolviendo como resultado un único valor.

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

La función reductora recibe cuatro argumentos:

+ +
    +
  1. Acumulador (acc)
  2. +
  3. Valor Actual (cur)
  4. +
  5. Índice Actual (idx)
  6. +
  7. Array (src)
  8. +
+ +

El valor devuelto de la función reductora se asigna al acumulador, cuyo valor se recuerda en cada iteración de la matriz y, en última instancia, se convierte en el valor final, único y resultante.

+ +

Sintaxis

+ +
arr.reduce(callback(acumulador, valorActual[, índice[, array]])[, valorInicial])
+ +

Parámetros

+ +
+
callback
+
Función a ejecutar sobre cada elemento del array (excepto para el primero, si no se proporciona valorInicial), que recibe cuatro parámetros: +
+
acumulador
+
El acumulador acumula el valor devuelto por la función callback. Es el valor acumulado devuelto en la última invocación de callback, o el valorInicial, si se proveyó. (Ver a continuación).
+
valorActual
+
El elemento actual que está siendo procesado en el array.
+
índice {{optional_inline}}
+
El índice del elemento actual que está siendo procesado en el array. Empieza desde el índice 0 si se provee valorInicial. En caso contrario, comienza desde el índice 1.
+
array {{optional_inline}}
+
El array sobre el cual se llamó el método reduce().
+
+
+
valorInicial {{optional_inline}}
+
Un valor a usar como primer argumento en la primera llamada de la función callback. Si no se proporciona el valorInicial, el primer elemento del array será utilizado y saltado. Llamando a reduce() sobre un array vacío sin un valorInicial lanzará un {{jsxref("TypeError")}}.
+
+ +

Descripción

+ +

El método reduce() ejecuta callback una vez por cada elemento presente en el array, excluyendo los huecos del mismo, recibe cuatro argumentos:

+ + + +

La primera vez que se llama la función, valorAnterior y valorActual pueden tener uno de dos valores. Si se proveyó un valorInicial al llamar a reduce, entonces valorAnterior será igual al valorInicial y valorActual será igual al primer elemento del array. Si no se proveyó un valorInicial, entonces valorAnterior será igual al primer valor en el array y valorActual será el segundo.

+ +

Si el array está vacío y no se proveyó un valorInicial lanzará un {{jsxref("Global_Objects/TypeError", "TypeError")}}. Si el array tiene un sólo elemento (sin importar la posición) y no se proveyó un valorInicial, o si se proveyó un valorInicial pero el arreglo está vacío, se retornará ese único valor sin llamar a la función.

+ +

Suponga que ocurre el siguiente uso de reduce:

+ +
[0,1,2,3,4].reduce(function(valorAnterior, valorActual, indice, vector){
+  return valorAnterior + valorActual;
+});
+
+// Primera llamada
+valorAnterior = 0, valorActual = 1, indice = 1
+
+// Segunda llamada
+valorAnterior = 1, valorActual = 2, indice = 2
+
+// Tercera llamada
+valorAnterior = 3, valorActual = 3, indice = 3
+
+// Cuarta llamada
+valorAnterior = 6, valorActual = 4, indice = 4
+
+// el array sobre el que se llama a reduce siempre es el objeto [0,1,2,3,4]
+
+// Valor Devuelto: 10
+
+ +

Y si proporcionas un valorInicial, el resultado sería como este:

+ +
[0,1,2,3,4].reduce(function(valorAnterior, valorActual, indice, vector){
+  return valorAnterior + valorActual;
+}, 10);
+
+// Primera llamada
+valorAnterior = 10, valorActual = 0, indice = 0
+
+// Segunda llamada
+valorAnterior = 10, valorActual = 1, indice = 1
+
+// Tercera llamada
+valorAnterior = 11, valorActual = 2, indice = 2
+
+// Cuarta llamada
+valorAnterior = 13, valorActual = 3, indice = 3
+
+// Quinta llamada
+valorAnterior = 16, valorActual = 4, indice = 4
+
+// el array sobre el que se llama a reduce siempre es el objeto [0,1,2,3,4]
+
+// Valor Devuelto: 20
+
+ +

Polyfill

+ +
+

Polyfill se refiere a unas líneas de código o un plugin que permite "tener"  (en realidad se simulan de alguna otra manera) las nuevas funcionalidades   de HTML5 en aquellos navegadores que nativamente no lo soportan. Consigue que, en adelante, el código sea transparente para el programador, como si el navegador soportase la funcionalidad nativamente.

+
+ +

reduce es una extensión de JavaScript al estándar ECMA-262; como tal puede que no esté presente en otras implementaciones del estándar. Puedes trabajar con ésto insertando el siguiente código al comienzo de tus scripts, permitiendo el uso de reduce en implementaciones de ECMA-262 que no lo implementan de modo nativo. Este algoritmo es exactamente el mismo usando en Firefox y SpiderMonkey.

+ +
if (!Array.prototype.reduce)
+{
+  Array.prototype.reduce = function(fun /*, inicial*/)
+  {
+    var longitud = this.length;
+    if (typeof fun != "function")
+      throw new TypeError();
+
+    // no se devuelve ningún valor si no hay valor inicial y el array está vacío
+    if (longitud == 0 && arguments.length == 1)
+      throw new TypeError();
+
+    var indice = 0;
+    if (arguments.length >= 2)
+    {
+      var rv = arguments[1];
+    }
+    else
+    {
+      do
+      {
+        if (indice in this)
+        {
+          rv = this[indice++];
+          break;
+        }
+
+        // si el array no contiene valores, no existe valor inicial a devolver
+        if (++indice >= longitud)
+          throw new TypeError();
+      }
+      while (true);
+    }
+
+    for (; indice < longitud; indice++)
+    {
+      if (indice in this)
+        rv = fun.call(null, rv, this[indice], indice, this);
+    }
+
+    return rv;
+  };
+}
+
+ +

Ejemplos

+ +

Ejemplo: Sumar todos los valores de un array

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

Ejemplo: Integrar un array a partir de varios arrays

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

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-array.prototype.reduce', 'Array.prototype.reduce()')}}
+ +

Compatibilidad con navegadores

+ +
+ + +

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

+
+ +

Ver también

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

Resumen

+ +

Aplica una función simultáneamente contra un acumulador y cada elemento de un array (de derecha a izquierda) para reducirlo a un único valor.

+ +

Sintaxis

+ +
array.reduceRight(
+funcion[,
+valorInicial])
+
+ +

Parámetros

+ +
+
callback
+
Función a ejecutar para cada valor del array.
+
initialValue
+
Objeto a usar como primer argumento en la primera llamada de la funcion.
+
+ +

Descripción

+ +

reduceRight ejecuta la funcion una vez para cada elemento presente en el array, excluyendo los huecos del mismo, recibiendo cuatro argumentos: el valor inicial (o valor de la llamada previa de funcion), el valor del elemento actual, el índice actual y el array sobre el que ocurre la iteración.

+ +

La llamada a la funcion de reduceRight sería similar a esto:

+ +
.reduceRight(function(valorPrevio, valorActual, indice, array){
+  // ...
+})
+
+ +

La primera vez que se llama a la función, el valorPrevio y el valorActual puede ser uno de los dos valores. Si se incluye un valorInicial en la llamada a reduceRight, entonces el valorPrevio será igual al valorInicial y el valorActual será igual al último valor del array. Si no se incluye ningún valorInicial, entonces el valorPrevio será igual al último valor del array y el valorActual será igual al penúltimo valor.

+ +

Algún ejemplo de la ejecución de la función paso a paso sería similar a esto:

+ +
[0,1,2,3,4].reduceRight(function(valorPrevio, valorActual, indice, array){
+  return valorPrevio + valorActual;
+});
+
+// First call
+valorPrevio = 4, valorActual = 3, indice = 3
+
+// Second call
+valorPrevio = 7, valorActual = 2, indice = 2
+
+// Third call
+valorPrevio = 9, valorActual = 1, indice = 1
+
+// Fourth call
+valorPrevio = 10, valorActual = 0, indice = 0
+
+// el array sobre el que se llama a reduceRight siempre es el objeto [0,1,2,3,4]
+
+// Valor Devuelto: 10
+
+ +

Y si proporcionas un valorInicial, el resultado sería como este:

+ +
[0,1,2,3,4].reduceRight(function(valorPrevio, valorActual, indice, array){
+  return valorPrevio + currentValue;
+}, 10);
+
+// Primera llamada
+valorPrevio = 10, valorActual = 4, indice = 4
+
+// Segunda llamada
+valorPrevio = 14, valorActual = 3, indice = 3
+
+// Tercera llamada
+valorPrevio = 17, valorActual = 2, indice = 2
+
+// Cuarta llamada
+valorPrevio = 19, valorActual = 1, indice = 1
+
+// Quinta llamada
+valorPrevio = 20, valorActual = 0, indice = 0
+
+// el array sobre el que se llama a reduce siempre es el objeto [0,1,2,3,4]
+
+// Valor Devuelto: 20
+
+ +

Compatibilidad

+ +

reduceRight es una extensión de JavaScript al estándar ECMA-262; como tal puede que no esté presente en otras implementaciones del estándar. Puedes trabajar con ésto insertando el siguiente código al comienzo de tus scripts, permitiendo el uso de reduceRight en implementaciones de ECMA-262 que no lo implementan de modo nativo. Este algoritmo es exactamente el mismo usando en Firefox y SpiderMonkey.

+ +
if (!Array.prototype.reduceRight)
+{
+  Array.prototype.reduceRight = function(fun /*, inicial*/)
+  {
+    var longitud = this.length;
+    if (typeof fun != "function")
+      throw new TypeError();
+
+    // no se devuelve ningún valor si no hay valor inicial y el array está vacío
+    if (longitud == 0 && arguments.length == 1)
+      throw new TypeError();
+
+    var indice = longitud - 1;
+    if (arguments.length >= 2)
+    {
+      var rv = arguments[1];
+    }
+    else
+    {
+      do
+      {
+        if (indice in this)
+        {
+          rv = this[indice--];
+          break;
+        }
+
+        // si el array no contiene valores, no existe valor incial a devolver
+        if (--indice < 0)
+          throw new TypeError();
+      }
+      while (true);
+    }
+
+    for (; indice >= 0; indice--)
+    {
+      if (indice in this)
+        rv = fun.call(null, rv, this[indice], indice, this);
+    }
+
+    return rv;
+  };
+}
+
+ +

Ejemplos

+ +

Ejemplos: Resumir todos los valores de un array

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

Ejemplo: Integrar un array a partir de varios arrays

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

Véase también

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

El método reverse() invierte el orden de los elementos de un array in place. El primer elemento pasa a ser el último y el último pasa a ser el primero.

+ +

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

+ +

Sintaxis

+ +
a.reverse()
+ +

Valor devuelto

+ +

El array invertido.

+ +

Descripción

+ +

El método reverse cruza los elementos del objeto matriz invocados en su lugar, mutando la matriz, y retornando una referencia a la misma.

+ +

Ejemplos

+ +

Colocar al revés los elementos de un array

+ +

El siguiente ejemplo crea un array a que contiene tres elementos y luego lo invierte.
+ La llamada a reverse() devuelve una referencia al array a invertido.

+ +
const a = [1, 2, 3];
+
+console.log(a); // [1, 2, 3]
+
+a.reverse();
+
+console.log(a); // [3, 2, 1]
+
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.4.4.8', 'Array.prototype.reverse')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-array.prototype.reverse', 'Array.prototype.reverse')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-array.prototype.reverse', 'Array.prototype.reverse')}}{{Spec2('ESDraft')}} 
+ + + +

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

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/shift/index.html b/files/es/web/javascript/reference/global_objects/array/shift/index.html new file mode 100644 index 0000000000..7391f6c325 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/shift/index.html @@ -0,0 +1,124 @@ +--- +title: Array.prototype.shift() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/shift +translation_of: Web/JavaScript/Reference/Global_Objects/Array/shift +--- +
{{JSRef}}
+ +

El método shift() elimina el primer elemento del array y lo retorna. Este método modifica la longitud del array.

+ +

Sintaxis

+ +
arr.shift()
+ +

Descripción

+ +

El método shift elimina el elemento en el índice cero y desplaza los valores consecutivos hacia abajo, devolviendo el valor eliminado. Si la propiedad {{jsxref("Array.length", "length")}} es 0, devuelve {{jsxref("undefined")}}.

+ +

shift es genérico; este método puede utilizarse con {{jsxref("Function.call", "call", "", 1)}} o {{jsxref("Function.apply", "apply", "", 1)}} a objetos simliares a arrays. Los objetos que no tengan una propiedad length que refleje el último elemento de una serie consecutiva de propiedades numéricas con índice base cero pueden no comportarse de manera significativa.

+ +

Ejemplos

+ +

Eliminando un elemento de un array

+ +

El siguiente código muestra el contenido del array miPescado antes y después de eliminar el primer elemento. También muestra el elemento eliminado:

+ +
var miPescado = ['ángel', 'payaso', 'mandarín', 'cirujano'];
+
+console.log('miPescado antes: ' + miPescado);
+// "miPescado antes: ángel,payaso,mandarín,cirujano"
+
+var eliminado = miPescado.shift();
+
+console.log('miPescado después: ' + miPescado);
+// "miPescado after: payaso,mandarín,cirujano"
+
+console.log('Elemento eliminado: ' + eliminado);
+// "Elemento eliminado: ángel"
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial. Implementado en Javascript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.9', 'Array.prototype.shift')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.shift', 'Array.prototype.shift')}}{{Spec2('ES6')}}
+ + + +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("1.0")}}{{CompatGeckoDesktop("1.7")}}{{CompatIE("5.5")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Ver también

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

El método slice() devuelve una copia de una parte del array dentro de un nuevo array empezando por inicio hasta fin (fin no incluido). El array original no se modificará.

+ +

El código fuente de esta demostración interactiva está alojado en un repositorio Github. Si desea contribuir con ella, por favor clone https://github.com/mdn/interactive-examples y envíenos un "pull request".

+ +

Sintaxis 

+ +
arr.slice([inicio [, fin]])
+ +

Parámetros

+ +
+
inicio
+
Índice donde empieza la extracción. El primer elemento corresponde con el índice  0.
+
Si el índice especificado es negativo, indica un desplazamiento desde el final del array. slice(-2)extrae los dos últimos elementos del array
+
Si inicio es omitido el valor por defecto es 0.
+
Si inicio es mayor a la longitud del array, se devuelve un array vacío.
+
fin
+
Índice  que marca el final de la extracción. slice extrae hasta, pero sin incluir el final.
+
slice(1,4) extrae desde el segundo elemento hasta el cuarto  (los elementos con índices 1, 2,  y 3).
+
Con un índice negativo, fin indica un desplazamiento desde el final de la secuencia. slice(2,-1) extrae desde el tercer hasta el penúltimo elemento en la secuencia.
+
Si fin es omitido, slice extrae hasta el final de la secuencia (arr.length).
+
Si fin es mayor a la longitud del array, slice extrae hasta el final de la secuencia (arr.length).
+
+ +

Valor de retorno

+ +

Un nuevo array con los valores extraídos.

+ +

Descripción

+ +

slice no modifica el array original. Devuelve una copia plana (shallow copy) de los elementos especificados del array original. Los elementos del array original son copiados en el array devuelto de la siguiente manera:

+ + + +

Si un nuevo elemento es agregado a cualquiera de los arrays, el otro array no es afectado.

+ +

Ejemplos

+ +

Ejemplo: Devolver una porción de un array existente

+ +
var nombres = ['Rita', 'Pedro', 'Miguel', 'Ana', 'Vanesa'];
+var masculinos = nombres.slice(1, 3);
+
+// masculinos contiene ['Pedro','Miguel']
+
+ +

Ejemplo: Utilizando slice

+ +

Presta especial atención a:

+ + + +

En el siguiente ejemplo, slice crea un nuevo array, nuevoCoche, de myCoche. Los dos incluyen una referncia al objecto miHonda se cambia a púrpura, ambas matrices reflejan el cambio.

+ +
var miHonda = { color: 'red', ruedas: 4, motor: { cilindros: 4, cantidad: 2.2 } };
+var miCoche = [miHonda, 2, 'Buen estado', 'comprado 1997'];
+var nuevoCoche = miCoche.slice(0, 2);
+
+//  Muestra los valores de myCar, newCar y el color de myHonda.
+console.log('miCoche = ' + JSON.stringify(miCoche));
+console.log('nuevoCoche = ' + JSON.stringify(nuevoCoche));
+console.log('miCoche[0].color = ' + miCoche[0].color);
+console.log('nuevoCoche[0].color = ' + nuevoCoche[0].color);
+
+// Cambia el color de miHonda.
+miHonda.color = 'azul';
+console.log('El nuevo color de mi Honda es ' + miHonda.color);
+
+// Muestra el color de myHonda referenciado desde ambos arrays. 
+console.log('miCoche[0].color = ' + miCoche[0].color);
+
+console.log('nuevoCoche[0].color = ' + nuevoCoche[0].color);
+ +

Este script escribe:

+ +
miCoche = [{color: 'rojo', ruedas: 4, motor: {cilindros: 4, cantidad: 2.2}}, 2,
+         'buen estado', 'comprado 1997']
+nuevoCoche = [{color: 'rojo', ruedas: 4, motor: {cilindros: 4, cantidad: 2.2}}, 2]
+miCoche[0].color = rojo
+nuevoCoche[0].color = rojo
+El nuevo color de miHonda es azul
+miCoche[0].color = azul
+nuevoCoche[0].color = azul
+ +

Objetos array-like

+ +
+

Se dice que un objeto es array-like ( similar o que se asemeja a un array) cuando entre sus propiedades existen algunas cuyos nombres son números y en particular tiene una propiedad llamada length. Este hecho  hace  suponer que el objeto es algún tipo de colección de elementos indexados por números. Es conveniente, a veces, convertir estos objetos a arrays para otorgarles la funcionalidad que de serie se incorpora en todos los arrays a través de su prototipo. 

+
+ +

El método slice puede ser usado para convertir objetos parecidos a arrays o colecciones a un nuevo Array. Simplemente debe enlazar el método al objeto. El  {{jsxref("Functions_and_function_scope/arguments", "arguments")}} dentro de una función es un ejemplo de un objeto parecido a arrays.

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

El enlazado puede realizarse con la función .call de  {{jsxref("Function.prototype")}} y puede ser abreviado también usando  [].slice.call(arguments) en lugar de Array.prototype.slice.call. En cualquier caso, puede ser simplificado usando {{jsxref("Function.prototype.bind", "bind")}}.

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

Coordinación del comportamiento entre navegadores

+ +

 

+ +

La especificación permite a los objetos del host  ( entre ellos los objetos del DOM )  ser dependientes de la implementación.  Esta NO obligatoriedad, origina diferencias en el comportamiento entre aquellos comprometidos con los estándares, como Mozilla, y los que no. En lo que concierne a  Array.prototype.slice , por lo tanto, existen importantes incompatibilidades en IE < 9 . Versiones de IE a partir de la 9 permiten un comportamiento compatible más fiable.  Se puede recurrir al  “shimming”  para alcanzar la compatibilidad en otros casos.  Mientras otros navegadores modernos continúan mejorando para soportar esta habilidad, en la forma en que actualmente lo hacen Mozilla, Chrome, Safari, Opera  e IE, los desarrolladores de código preocupados por el soporte DOM que confíen en este shim no deben dejarse engañar por la semántica, deben confiar de forma segura en ella para proporcionar el comportamiento estándar que aparentemente ahora es la norma.

+ +

El shim también soluciona que IE pueda tratar con el caso de que el segundo argumento de slice() pueda ser un valor {{jsxref("Global_Objects/null", "null")}}/{{jsxref("Global_Objects/undefined", "undefined")}} explícito. Esto era un problema en versiones anteriores de IE, pero todos los navegadores modernos, incluído IE >= 9, lo hacen actualmente.

+ +
/**
+ * Shim para "solucionar" la falta de soporte de IE (IE < 9) para aplicar slice
+ * sobre objetos del host, tal como NamedNodeMap, NodeList, y HTMLCollection
+ * (técnicamente, al ser los objetos del host dependientes de la implementación,
+ * al menos anteriormente a ES2015, IE no tenía la necesidad de trabajar de este modo).
+ * También funciona sobre strings, solucionando que IE < 9 admita un undefined explícito
+ * como segundo argumento (igual que en Firefox), y previniendo errores cuando se llama
+ * sobre otros objetos del DOM.
+ */
+(function () {
+  'use strict';
+  var _slice = Array.prototype.slice;
+
+  try {
+    // Fallará al usarse con elementos DOM en IE < 9
+    _slice.call(document.documentElement);
+  } catch (e) { // Fails in IE < 9
+    // Funcionará con arrays genuinos, objetos array-like,
+    // NamedNodeMap (attributes, entities, notations),
+    // NodeList (e.g., getElementsByTagName), HTMLCollection (e.g., childNodes),
+    // and will not fail on other DOM objects (as do DOM elements in IE < 9)
+    Array.prototype.slice = function(begin, end) {
+      // A IE < 9 no le gustan los undefined como argumento end.
+      end = (typeof end !== 'undefined') ? end : this.length;
+
+      // Con objetos Array nativos, podemos usar la función slice
+      if (Object.prototype.toString.call(this) === '[object Array]'){
+        return _slice.call(this, begin, end);
+      }
+
+      // Con objetos array-like debemos manejarlo por nuestra cuenta.
+      var i, cloned = [],
+        size, len = this.length;
+
+      // Maneja valores negativos para el argumento "inicio"
+      var start = begin || 0;
+      start = (start >= 0) ? start : Math.max(0, len + start);
+
+      // Maneja valores negativos para el argumento "fin"
+      var upTo = (typeof end == 'number') ? Math.min(end, len) : len;
+      if (end < 0) {
+        upTo = len + end;
+      }
+
+      // Tamaño esperado para el 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;
+    };
+  }
+}());
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoObservaciones
ECMAScript 3ª ediciónEstandarDefinición inicial Implementado en JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.10', 'Array.prototype.slice')}}{{Spec2('ES5.1')}} 
{{SpecName('ES2015', '#sec-array.prototype.slice', 'Array.prototype.slice')}}{{Spec2('ES2015')}} 
+ +

Compatibilidad con navegadores

+ +

La tabla de compatibilidad en esta página esta generada desde datos estructurados. Si desea contribuir con los datos, por favor "checkout" https://github.com/mdn/browser-compat-data  y envíenos un "pull request".

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

Ver también 

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

El método some() comprueba si al menos un elemento del array cumple con la condición implementada por la función proporcionada.

+ +
+

Nota: Este método devuelve false para cualquier condición puesta en un array vacío.

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

Sintaxis

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

Parámetros

+ +
+
callback
+
Función que verifica cada elemento, toma tres argumentos: +
+
element
+
El elemento actual siendo procesado en el array.
+
index {{Optional_inline}}
+
El índice del elemento del array que se está procesando.
+
array {{Optional_inline}}
+
El array sobre el que ha sido llamada la función some().
+
+
+
thisArg {{Optional_inline}}
+
Valor a usar como this cuando se ejecute callback.
+
+ +

Valor devuelto

+ +

true si la función callback devuelve un valor {{Glossary("truthy")}} para cualquier elemento del array; en caso contrario, false.

+ +

Descripción

+ +

some() ejecuta la función callback una vez por cada elemento presente en el array hasta que encuentre uno donde callback retorna un valor verdadero (true). Si se encuentra dicho elemento, some() retorna true inmediatamente. Si no, some() retorna false. callback es invocada sólo para los índices del array que tienen valores asignados; no es invocada para índices que han sido borrados o a los que nunca se les han asignado valores.

+ +

callback es invocada con tres argumentos: el valor del elemento, el índice del elemento, y el objeto array sobre el que se itera.

+ +

Si se indica un parámetro thisArg a some(), se pasará a callback cuando es invocada, para usar como valor this. Si no, el valor {{jsxref("undefined")}} será pasado para usar como valor this. El valor this value observable por callback se determina de acuerdo a las reglas habituales para determinar el this visible por una función.

+ +

some() no modifica el array con el cual fue llamada.

+ +

El rango de elementos procesados por some() es configurado antes de la primera invocación de callback. Los elementos anexados al array luego de que comience la llamada a some() no serán visitados por callback. Si un elemento existente y no visitado del array es alterado por callback, su valor pasado al callback será el valor al momento que some() visita el índice del elemento; los elementos borrados no son visitados.

+ +

Ejemplos

+ +

Verificando el valor de los elementos de un array

+ +

El siguiente ejemplo verifica si algún elemento del array es mayor a 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
+
+ +

Verificando los elementos de un array usando funciones flecha

+ +

Las funciones flecha (Arrow functions) brindan una sintáxis más corta para el mismo test.

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

Comprobando si un elemento existe en un array

+ +

Para imitar la función del método includes(), esta función personalizada devuelve true si el elemento existe en el array:

+ +
var fruits = ['apple', 'banana', 'mango', 'guava'];
+
+function checkAvailability(arr, val) {
+  return arr.some(function(arrVal) {
+    return val === arrVal;
+  });
+}
+
+checkAvailability(fruits, 'kela');   // false
+checkAvailability(fruits, 'banana'); // true
+ +

Comprobando si un elemento existe en un array con funciones flecha

+ +
var fruits = ['apple', 'banana', 'mango', 'guava'];
+
+function checkAvailability(arr, val) {
+  return arr.some(arrVal => val === arrVal);
+}
+
+checkAvailability(fruits, 'kela');   // false
+checkAvailability(fruits, 'banana'); // true
+ +

Convirtiendo cualquier valor a Boolean

+ +
var TRUTHY_VALUES = [true, 'true', 1];
+
+function getBoolean(value) {
+  'use strict';
+
+  if (typeof value === 'string') {
+    value = value.toLowerCase().trim();
+  }
+
+  return TRUTHY_VALUES.some(function(t) {
+    return t === value;
+  });
+}
+
+getBoolean(false);   // false
+getBoolean('false'); // false
+getBoolean(1);       // true
+getBoolean('true');  // true
+ +

Polyfill

+ +

some() fue agregado al estándar ECMA-262 en la 5ta edición; por ello, puede no estar presente en todas las implementaciones del estándar. Puedes trabajar sobre esto insertando el siguiente código al comienzo de tus scripts, permitiendo el uso de some() en implementaciones que no tienen soporte nativo. Este algoritmo es exactamente el mismo especificado en ECMA-262, 5ta edición, asumiendo que {{jsxref("Global_Objects/Object", "Object")}} y {{jsxref("Global_Objects/TypeError", "TypeError")}} tienen sus valores originales y que fun.call evalúa el valor original de{{jsxref("Function.prototype.call()")}}.

+ +
// Pasos de producción de ECMA-262, Edición 5, 15.4.4.17
+// Referencia: 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;
+  };
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.4.4.17', 'Array.prototype.some')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.some', 'Array.prototype.some')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-array.prototype.some', 'Array.prototype.some')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad en navegadores

+ +
+ + +

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/sort/index.html b/files/es/web/javascript/reference/global_objects/array/sort/index.html new file mode 100644 index 0000000000..ac28826327 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/sort/index.html @@ -0,0 +1,301 @@ +--- +title: Array.prototype.sort() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/sort +tags: + - Array + - JavaScript + - Método(2) + - Prototipo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/sort +--- +
{{JSRef}}
+ +

El método sort() ordena los elementos de un arreglo (array) localmente y devuelve el arreglo ordenado. La ordenación no es necesariamente estable. El modo de ordenación por defecto responde a la posición del valor del string de acuerdo a su valor Unicode.

+ +

La fuente de este ejemplo interactivo se almacena en un repositorio de GitHub. Si desea contribuir al proyecto de ejemplos interactivos, clone https://github.com/mdn/interactive-examples y envíenos una solicitud de extracción (pull request).

+ +

Sintaxis

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

Parámetros

+ +
+
compareFunction
+
Opcional. Especifica una función que define el modo de ordenamiento. Si se omite, el array es ordenado atendiendo a la posición del valor Unicode de cada caracter, según la conversión a string de cada elemento.
+
firstEl
+
El primer elemento a comparar.
+
secondEl
+
El segundo elemento a comparar.
+
+ +

Valor devuelto

+ +

El array ordenado.

+ +

Descripción

+ +

Si no se provee compareFunction, los elementos son ordenados convirtiéndolos a strings y comparando la posición del valor Unicode de dichos strings. Por ejemplo, "Cherry" viene antes que "banana"  (porque las mayúsculas van antes que las minúsculas en la codificación Unicode) . En un ordenamiento numérico, 9 está antes que 80, pero dado que los números son convertidos a strings y ordenados según el valor Unicode, el resultado será "80" antes que "9".

+ +
var frutas = ['guindas', 'manzanas', 'bananas'];
+frutas.sort(); // ['bananas', 'guindas', 'manzanas']
+
+var puntos = [1, 10, 2, 21];
+puntos.sort(); // [1, 10, 2, 21]
+// Tenga en cuenta que 10 viene antes que 2
+// porque '10' viene antes que '2' según la posición del valor Unicode.
+
+var cosas = ['word', 'Word', '1 Word', '2 Words'];
+cosas.sort(); // ['1 Word', '2 Words', 'Word', 'word']
+// En Unicode, los números vienen antes que las letras mayúsculas
+// y estas vienen antes que las letras minúsculas.
+
+ +

Si se provee compareFunction, los elementos del array son ordenados de acuerdo al valor que retorna dicha función de comparación. Siendo a y b dos elementos comparados, entonces:

+ + + +

Entonces, la función de comparación tiene la siguiente forma:

+ +
function compare(a, b) {
+  if (a es menor que b según criterio de ordenamiento) {
+    return -1;
+  }
+  if (a es mayor que b según criterio de ordenamiento) {
+    return 1;
+  }
+  // a debe ser igual b
+  return 0;
+}
+
+ +

Para comparar números en lugar de strings, la función de comparación puede simplemente restar b de a. La siguiente función ordena el array de modo ascendente:

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

El metodo sort puede ser usado convenientemente con {{jsxref("Operators/function", "function expressions", "", 1)}} (y closures):

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

Los objectos pueden ser ordenados por el valor de una de sus propiedades.

+ +
var items = [
+  { name: 'Edward', value: 21 },
+  { name: 'Sharpe', value: 37 },
+  { name: 'And', value: 45 },
+  { name: 'The', value: -12 },
+  { name: 'Magnetic', value: 13 },
+  { 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;
+});
+
+ +

Ejemplos

+ +

Ordenando un array

+ +

Un array de elementos string, sin especificar una función de comparación:

+ +
var arr = [ 'a', 'b', 'Z', 'Aa', 'AA' ];
+arr.sort();  //[ 'AA', 'Aa', 'Z', 'a', 'b' ]
+
+ +

Un array de elementos numéricos,  sin función de comparación:

+ +
var arr = [ 40, 1, 5, 200 ];
+arr.sort();  //[ 1, 200, 40, 5 ]
+
+ +

Un array de elementos numéricos, usando una función de comparación:

+ +
var arr = [ 40, 1, 5, 200 ];
+function comparar ( a, b ){ return a - b; }
+arr.sort( comparar );  // [ 1, 5, 40, 200 ]
+ +

Lo mismo pero usando una función anónima normal:

+ +
var arr = [ 40, 1, 5, 200 ];
+arr.sort(function(a,b){return a - b;});  // [ 1, 5, 40, 200 ]
+ +

Lo mismo escrito más compacto mediante una función flecha:

+ +
var arr = [ 40, 1, 5, 200 ];
+arr.sort((a,b)=>a-b);  // [ 1, 5, 40, 200 ]
+ +

+ +

Creando, mostrando, y ordenando un array

+ +

El siguiente ejemplo abunda en la idea de ordenar con y sin función de comparación. Además, ilustra una manera de mostrar un array una vez creado. El método join es usado para convertir el array en una cadena de texto que imprimir. Al no pasarle un argumento que indique el separador, usará la coma por defecto para separar los elementos del array dentro de la cadena.

+ +
var arr = ['80', '9', '700', 40, 1, 5, 200];
+function comparar(a, b) {
+  return a - b;
+}
+console.log('original:', arr.join());
+console.log('ordenado sin función:', arr.sort());
+console.log('ordenado con función:', arr.sort(comparar));
+
+ +

El ejemplo produce el siguiente resultado. Como muestra la salida, cuando una función de comparación es usada, los números se ordenan correctamente, sean estos valores numéricos o strings numéricos.

+ +
original: 80,9,700,40,1,5,200
+ordenado sin función: 1,200,40,5,700,80,9
+ordenado con función: 1,5,9,40,80,200,700
+
+ +

Ordenando caracteres no ASCII

+ +

Para ordenar strings con characters no ASCII, i.e. strings con caracteres con acento (e, é, è, a, ä, etc.), strings de lenguajes diferentes al inglés: use {{jsxref("String.localeCompare")}}. Esta función puede comparar esos caracteres para que aparezcan en el orden correcto.

+ +
var items = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu'];
+items.sort(function (a, b) {
+  return a.localeCompare(b);
+});
+
+// items is ['adieu', 'café', 'cliché', 'communiqué', 'premier', 'réservé']
+
+ +

Ordenando con map

+ +

La compareFunction puede ser invocada múltiples veces por elemento dentro del array. Dependiendo de la naturaleza de compareFunction, este puede resultar en una alta penalización de rendimiento. Cuanto más trabajo hace una compareFunction y más elementos hay para ordenar, resulta más recomendable usar una función map para ordenar. La idea es recorrer el array una sola vez para extraer los valores usados para ordenar en un array temporal, ordenar el array temporal y luego recorrer el array para lograr el orden correcto.

+ +
// el array a ordenar
+var list = ['Delta', 'alpha', 'CHARLIE', 'bravo'];
+
+// array temporal contiene objetos con posición y valor de ordenamiento
+var mapped = list.map(function(el, i) {
+  return { index: i, value: el.toLowerCase() };
+})
+
+// ordenando el array mapeado que contiene los valores reducidos
+mapped.sort(function(a, b) {
+  if (a.value > b.value) {
+    return 1;
+  }
+  if (a.value < b.value) {
+    return -1;
+  }
+  return 0;
+});
+
+// contenedor para el orden resultante
+var result = mapped.map(function(el){
+  return list[el.index];
+});
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
ECMAScript 1st EditionStandardDefinicióñ 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')}}
+ +

Compatibilidad en navegadores

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

Compatibilidad en navegadores

+ +

La tabla de compatibilidad en esta página es generada por una data estructurada. Si deseas contribuir a la data, por favor entra a https://github.com/mdn/browser-compat-data y envíanos un pull request.

+ +

Ver también

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

El método splice() cambia el contenido de un array eliminando elementos existentes y/o agregando nuevos elementos.

+ +

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

+ +

Sintaxis

+ +
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
+
+ +

Parámetros

+ +
+
start
+
Índice donde se comenzará a cambiar el array (con 0 como origen). Si es mayor que la longitud del array, el punto inicial será la longitud del array. Si es negativo, empezará esa cantidad de elementos contando desde el final.
+
deleteCount {{optional_inline}}
+
Un entero indicando el número de elementos a eliminar del array antiguo.
+
Si deleteCount se omite, o si su valor es mayor que arr.length - start (esto significa, si es mayor que el número de elementos restantes del array, comenzando desde start), entonces todos los elementos desde start hasta el final del array serán eliminados.
+
Si deleteCount es igual a 0 o negativo, no se eliminará ningún elemento. En este caso, se debe especificar al menos un nuevo elemento (ver más abajo).
+
item1, item2, ...  {{optional_inline}}
+
Los elementos que se agregarán al array, empezando en el índice start. Si no se especifica ningún elemento, splice() solamente eliminará elementos del array.
+
+ +

Valor devuelto

+ +

Un array que contiene los elementos eliminados. Si sólo se ha eliminado un elemento, devuelve un array con un solo elemento. Si no se ha eliminado ningún elemento, devuelve un array vacío.

+ +

Descripción

+ +

Si especifica un número diferente de elementos a agregar que los que se eliminarán, el array tendrá un tamaño diferente al original una vez finalizada la llamada.

+ +

Ejemplos

+ +

Eliminar 0 elementos desde el índice 2 e insertar "drum"

+ +
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
+var removed = myFish.splice(2, 0, 'drum');
+
+// myFish is ["angel", "clown", "drum", "mandarin", "sturgeon"]
+// removed is [], no elements removed
+
+ +

Eliminar 1 elemento desde el índice 3

+ +
var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
+var removed = myFish.splice(3, 1);
+
+// removed is ["mandarin"]
+// myFish is ["angel", "clown", "drum", "sturgeon"]
+
+ +

Eliminar 1 elemento desde el índice 2 e insertar "trumpet"

+ +
var myFish = ['angel', 'clown', 'drum', 'sturgeon'];
+var removed = myFish.splice(2, 1, 'trumpet');
+
+// myFish is ["angel", "clown", "trumpet", "sturgeon"]
+// removed is ["drum"]
+ +

Eliminar 2 elementos desde el índice 0 e insertar "parrot", "anemone" y "blue"

+ +
var myFish = ['angel', 'clown', 'trumpet', 'sturgeon'];
+var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');
+
+// myFish is ["parrot", "anemone", "blue", "trumpet", "sturgeon"]
+// removed is ["angel", "clown"]
+ +

Eliminar 2 elementos desde el índice 2

+ +
var myFish = ['parrot', 'anemone', 'blue', 'trumpet', 'sturgeon'];
+var removed = myFish.splice(myFish.length - 3, 2);
+
+// myFish is ["parrot", "anemone", "sturgeon"]
+// removed is ["blue", "trumpet"]
+ +

Eliminar 1 elemento desde el índice -2

+ +
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
+var removed = myFish.splice(-2, 1);
+
+// myFish is ["angel", "clown", "sturgeon"]
+// removed is ["mandarin"]
+ +

Eliminar todos los elementos tras el índice 2 (incl.)

+ +
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
+var removed = myFish.splice(2);
+
+// myFish is ["angel", "clown"]
+// removed is ["mandarin", "sturgeon"]
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Initial definition. Implemented in 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')}} 
{{SpecName('ESDraft', '#sec-array.prototype.splice', 'Array.prototype.splice')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
+

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/tolocalestring/index.html b/files/es/web/javascript/reference/global_objects/array/tolocalestring/index.html new file mode 100644 index 0000000000..0fc418ab47 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/tolocalestring/index.html @@ -0,0 +1,177 @@ +--- +title: Array.prototype.toLocaleString() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/toLocaleString +translation_of: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString +--- +
{{JSRef}}
+ +

El método toLocaleString() devuelve una cadena de texto representando los elementos del array. Los elementos son convertidos a texto usando su método toLocaleString  y dichos Strings son separados por un caracter específico para la localidad (como una coma para la separación de decimales “,”).

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

Sintaxis

+ +
arr.toLocaleString([locales[, options]]);
+
+ +

Parámetros

+ +
+
locales {{optional_inline}}
+
Una cadena de texto con una etiqueta de idioma BCP 47, o un array de dichos strings. Para la forma general e interpretación the los argumentos locales, ver la página {{jsxref("Intl")}}.
+
options {{optional_inline}}
+
Un objeto con las configuraciones, para números ver {{jsxref("Number.prototype.toLocaleString()")}}, y para fechas ver {{jsxref("Date.prototype.toLocaleString()")}}.
+
+ +

Valor de retorno

+ +

Una cadena de texto representando los elementos del array.

+ +

Ejemplos

+ +

Usando locales y options

+ +

Los elementos del array son convertidos a strings usando sus métodos toLocaleString.

+ + + +

Siempre mostrar la moneda para los strings y números en el array precios:

+ +
var precios = ['$7', 500, 8123, 12];
+precios.toLocaleString('es-AR', { style: 'currency', currency: 'ARS' });
+
+// "$7, $500, $8.123, $12"
+
+ +

Para más ejemplos, ver también {{jsxref("Intl")}}, {{jsxref("NumberFormat")}}, y {{jsxref("DateTimeFormat")}}.

+ +

Polyfill

+ +
// https://tc39.github.io/ecma402/#sup-array.prototype.tolocalestring
+if (!Array.prototype.toLocaleString) {
+  Object.defineProperty(Array.prototype, 'toLocaleString', {
+    value: function(locales, options) {
+      // 1. Let O be ? ToObject(this value).
+      if (this == null) {
+        throw new TypeError('"this" is null or not defined');
+      }
+
+      var a = Object(this);
+
+      // 2. Let len be ? ToLength(? Get(A, "length")).
+      var len = a.length >>> 0;
+
+      // 3. Let separator be the String value for the
+      //    list-separator String appropriate for the
+      //    host environment's current locale (this is
+      //    derived in an implementation-defined way).
+      // NOTE: In this case, we will use a comma
+      var separator = ',';
+
+      // 4. If len is zero, return the empty String.
+      if (len === 0) {
+        return '';
+      }
+
+      // 5. Let firstElement be ? Get(A, "0").
+      var firstElement = a[0];
+      // 6. If firstElement is undefined or null, then
+      //  a.Let R be the empty String.
+      // 7. Else,
+      //  a. Let R be ?
+      //     ToString(?
+      //       Invoke(
+      //        firstElement,
+      //        "toLocaleString",
+      //        « locales, options »
+      //       )
+      //     )
+      var r = firstElement == null ?
+        '' : firstElement.toLocaleString(locales, options);
+
+      // 8. Let k be 1.
+      var k = 1;
+
+      // 9. Repeat, while k < len
+      while (k < len) {
+        // a. Let S be a String value produced by
+        //   concatenating R and separator.
+        var s = r + separator;
+
+        // b. Let nextElement be ? Get(A, ToString(k)).
+        var nextElement = a[k];
+
+        // c. If nextElement is undefined or null, then
+        //   i. Let R be the empty String.
+        // d. Else,
+        //   i. Let R be ?
+        //     ToString(?
+        //       Invoke(
+        //        nextElement,
+        //        "toLocaleString",
+        //        « locales, options »
+        //       )
+        //     )
+        r = nextElement == null ?
+          '' : nextElement.toLocaleString(locales, options);
+
+        // e. Let R be a String value produced by
+        //   concatenating S and R.
+        r = s + r;
+
+        // f. Increase k by 1.
+        k++;
+      }
+
+      // 10. Return R.
+      return r;
+    }
+  });
+}
+
+ +

Si necesitas soportar motores de JavaScript obsoletos que no compatibilizan con Object.defineProperty, es mejor no utilizar los métodos Array.prototype, ya que no se pueden hacer no-enumerables.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ESDraft', '#sec-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}}{{Spec2('ESDraft')}}La definicion original fue en ECMAScript 3.
{{SpecName('ES Int Draft', '#sup-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}}{{Spec2('ES Int Draft')}}Esta definición reemplaza la proporcionada en ECMA-262.
+ +

Compatibilidad con navegadores

+ +
+ + +

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/tosource/index.html b/files/es/web/javascript/reference/global_objects/array/tosource/index.html new file mode 100644 index 0000000000..ffd8df0b3b --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/tosource/index.html @@ -0,0 +1,112 @@ +--- +title: Array.prototype.toSource() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/toSource +translation_of: Web/JavaScript/Reference/Global_Objects/Array/toSource +--- +
{{JSRef}} {{non-standard_header}}
+ +

El método toSource() devuelve un string representando el código fuente de un arreglo.

+ +

Sintaxis

+ +
arr.toSource()
+ +

Valor devuelto

+ +

Un string representando el código fuente del arreglo.

+ +

Descripción

+ +

El método toSourcer retorna los siguientes valores:

+ + + +

Este método suele ser llamado internamente por JavaScript y no explícitamente en código. Puede usar toSource mientras depura para examinar el contenido de un arreglo.

+ +

Ejemplos

+ +

Examinar el código fuente de un arreglo

+ +

Para examinar el código fuente de un arreglo:

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

Especificaciones

+ +

No hace parte de ningún estándar. Implementado en JavaScript 1.3.

+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básicot{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/tostring/index.html b/files/es/web/javascript/reference/global_objects/array/tostring/index.html new file mode 100644 index 0000000000..402f011e0f --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/tostring/index.html @@ -0,0 +1,78 @@ +--- +title: Array.prototype.toString() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/toString +tags: + - Array + - JavaScript + - Prototipo + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/toString +--- +
{{JSRef}}
+ +

El método toString() devuelve una cadena de caracteres representando el array especificado y sus elementos.

+ +

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

+ +

Sintaxis 

+ +
arr.toString()
+ +

Valor devuelto

+ +

Una cadena de caracteres representando los elementos del array.

+ +

Descripción

+ +

El objeto {{jsxref("Array")}} sustituye al método toString de {{jsxref("Object")}}. Para los objetos Array, el método toString une el array y devuelve una cadena de caracteres que contiene cada elemento del array separado por comas.

+ +

JavaScript llama al método toString automáticamente cuando un array va a ser representado como un valor de texto o cuando se referencia a un array en una concatenación de caracteres.

+ +

Semántica de ECMAScript 5 

+ +

Desde JavaScript 1.8.5 (Firefox 4), y consistente con la 5ª edición de semántica de ECMAScript, el método toString() es genérico y puede ser usado con cualquier objeto. {{jsxref("Object.prototype.toString()")}} será llamado y devolverá el valor resultante.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
{{SpecName('ESDraft', '#sec-array.prototype.tostring', 'Array.prototype.toString')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
+

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

+
> + +

Vea también

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

El método unshift() agrega uno o más elementos al inicio del array, y devuelve la nueva longitud del array.

+ +

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

+ +

Sintaxis

+ +
arr.unshift(elemento1[, ...[, elementoN]])
+ +

Parámetros

+ +
+
elementoN
+
Elementos a agregar al inicio del array.
+
+ +

Devuelve

+ +

La nueva propiedad {{jsxref("Array.length", "length")}} del objeto sobre el cual el método fue llamado.

+ +

Descripción

+ +

El método unshift inserta los valores proporcionados al inicio de un objeto del tipo array.

+ +

unshift es intencionalmente genérico; este método puede ser {{jsxref("Function.call", "called", "", 1)}} o {{jsxref("Function.apply", "applied", "", 1)}} a objetos similares a arrays. Objetos que no contengan una propiedad length reflejando una serie de propiedades numéricas consecutivas, comenzada a partir del cero, pueden no comportarse de una manera comprensible.

+ +

Ejemplos

+ +
var arr = [1, 2];
+
+arr.unshift(0); // resultado de la llamada es 3, la nueva longitud del array
+// arr es [0, 1, 2]
+
+arr.unshift(-2, -1); // = 5
+// arr es [-2, -1, 0, 1, 2]
+
+arr.unshift([-3]);
+// arr es [[-3], -2, -1, 0, 1, 2]
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónStatusComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Initial definition. Implemented in 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')}} 
{{SpecName('ESDraft', '#sec-array.prototype.unshift', 'Array.prototype.unshift')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad en navegadores

+ +
+ + +

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/array/values/index.html b/files/es/web/javascript/reference/global_objects/array/values/index.html new file mode 100644 index 0000000000..dbc76e8634 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/array/values/index.html @@ -0,0 +1,82 @@ +--- +title: Array.prototype.values() +slug: Web/JavaScript/Referencia/Objetos_globales/Array/values +tags: + - Array + - ECMAScript 2015 + - Iterador + - JavaScript + - Prototipo + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/values +--- +
{{JSRef}}
+ +

El método values() devuelve un nuevo objeto Array Iterator que contiene los valores para cada índice del array.

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

Sintaxis

+ +
arr.values()
+
+ +

Valor devuelto

+ +

Un nuevo objeto {{jsxref("Array")}} iterator.

+ +

Ejemplos

+ +

Iteración usando un bucle for...of

+ +
var arr = ['w', 'y', 'k', 'o', 'p'];
+var iterador = arr.values();
+
+for (let letra of iterador) {
+  console.log(letra);
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-array.prototype.values', 'Array.prototype.values')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.prototype.values', 'Array.prototype.values')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

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

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/arraybuffer/@@species/index.html b/files/es/web/javascript/reference/global_objects/arraybuffer/@@species/index.html new file mode 100644 index 0000000000..ab87242260 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/arraybuffer/@@species/index.html @@ -0,0 +1,72 @@ +--- +title: 'get ArrayBuffer[@@species]' +slug: Web/JavaScript/Referencia/Objetos_globales/ArrayBuffer/@@species +tags: + - ArrayBuffer + - JavaScript + - Propiedad + - TypedArrays +translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/@@species +--- +
{{JSRef}}
+ +

La propiedad de acceso ArrayBuffer[@@species] devuelve el constructor ArrayBuffer.

+ +

Sintaxis

+ +
ArrayBuffer[Symbol.species]
+
+ +

Descripción

+ +

La propiedad de acceso species devuelve el constructor predeterminado para los objetos ArrayBuffer. Los constructores de subclase pueden anularlo para cambiar la asignación del constructor.

+ +

Ejemplos

+ +

La propiedad species devuelve la función constructora predeterminada, que es el constructor ArrayBuffer para los objetos ArrayBuffer:

+ +
ArrayBuffer[Symbol.species]; // función ArrayBuffer()
+ +

En un objeto de colección derivado (por ejemplo, su búfer de array personalizado MyArrayBuffer), MyArrayBuffer species es el constructor MyArrayBuffer. Sin embargo, es posible que desee sobrescribir esto para devolver objetos ArrayBuffer principales en sus métodos de clase derivados:

+ +
class MyArrayBuffer extends ArrayBuffer {
+  // Overwrite MyArrayBuffer species to the parent ArrayBuffer constructor
+  static get [Symbol.species]() { return ArrayBuffer; }
+}
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-get-arraybuffer-@@species', 'get ArrayBuffer [ @@species ]')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-get-arraybuffer-@@species', 'get ArrayBuffer [ @@species ]')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
+ + +

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/arraybuffer/bytelength/index.html b/files/es/web/javascript/reference/global_objects/arraybuffer/bytelength/index.html new file mode 100644 index 0000000000..e553024b1e --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/arraybuffer/bytelength/index.html @@ -0,0 +1,70 @@ +--- +title: ArrayBuffer.prototype.byteLength +slug: Web/JavaScript/Referencia/Objetos_globales/ArrayBuffer/byteLength +tags: + - ArrayBuffer + - JavaScript + - Propiedad + - Prototipo +translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/byteLength +--- +
{{JSRef}}
+ +

La propiedad de acceso byteLength representa la longitud de {{jsxref("ArrayBuffer")}} en bytes.

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

Sintaxis

+ +
arraybuffer.byteLength
+ +

Descripción

+ +

La propiedad byteLength es una propiedad de acceso cuya función de acceso de conjunto es undefined, lo que significa que solo puede leer esta propiedad. El valor se establece cuando la matriz se construye y no se puede cambiar. Esta propiedad devuelve 0 si este ArrayBuffer ha sido separado.

+ +

Ejemplos

+ +
var buffer = new ArrayBuffer(8);
+buffer.byteLength; // 8
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Reemplazado por ECMAScript 2015.
{{SpecName('ES2015', '#sec-get-arraybuffer.prototype.bytelength', 'ArrayBuffer.prototype.byteLength')}}{{Spec2('ES2015')}}Definición inicial en un estándar ECMA.
{{SpecName('ESDraft', '#sec-get-arraybuffer.prototype.bytelength', 'ArrayBuffer.prototype.byteLength')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ + + +

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

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/arraybuffer/index.html b/files/es/web/javascript/reference/global_objects/arraybuffer/index.html new file mode 100644 index 0000000000..4a83b5a24d --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/arraybuffer/index.html @@ -0,0 +1,139 @@ +--- +title: ArrayBuffer +slug: Web/JavaScript/Referencia/Objetos_globales/ArrayBuffer +tags: + - ArrayBuffer + - Constructor + - JavaScript + - TypedArrays +translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer +--- +
{{JSRef}}
+ +

El objeto ArrayBuffer se usa para representar un buffer genérico, de datos binarios crudos (raw) con una longitud específica. No se puede manipular directamente el contenido de un ArrayBuffer; sin embargo, puedes crear uno de los arrays tipados o un objeto {{jsxref("DataView")}} que representa el buffer en un formato especifico, y usarlo para leer y escribir el contenido del buffer.

+ +

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

+ +

Sintaxis

+ +
new ArrayBuffer(length)
+
+ +

Parámetros

+ +
+
length
+
El tamaño en bytes, del array buffer que quieres crear.
+
+ +

Valor de retorno

+ +

Un nuevo objeto ArrayBuffer de tamaño específico. Su contenido se inicializa a cero.

+ +

Excepciones

+ +

Se lanza un {{jsxref("RangeError")}} si la longitud (length) es mayor que {{jsxref("Number.MAX_SAFE_INTEGER")}} (> = 2 ** 53) o negativa.

+ +

Descripción

+ +

El constructor de ArrayBuffer crea un nuevo ArrayBuffer del tamaño especificado en bytes.

+ +

Obtener un array buffer sobre datos existentes

+ + + +

Propiedades

+ +
+
ArrayBuffer.length
+
El tamaño de constructor de ArrayBuffer cuyo valor es 1.
+
{{jsxref("ArrayBuffer.@@species", "get ArrayBuffer[@@species]")}}
+
La función de constructor que se usa para crear objetos derivados.
+
{{jsxref("ArrayBuffer.prototype")}}
+
Permite añadir propiedades a todos los objetos ArrayBuffer.
+
+ +

Métodos

+ +
+
{{jsxref("ArrayBuffer.isView", "ArrayBuffer.isView(arg)")}}
+
Devuelve true si arg es una de las vistas de ArrayBuffer, como pueden ser los arrays tipados o un {{jsxref("DataView")}}. Sino devuelve false.
+
{{jsxref("ArrayBuffer.transfer", "ArrayBuffer.transfer(oldBuffer [, newByteLength])")}} {{experimental_inline}}
+
+
Devuelve un nuevo ArrayBuffer cuyo contenido se toma de los datos de oldBuffer y luego es truncado o extendido por cero por newByteLength.
+
+
+ +

Instancias

+ +

Todas las instancias de ArrayBuffer heredan de {{jsxref("ArrayBuffer.prototype")}}.

+ +

Propiedades

+ +

{{page('es/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype','Propiedades')}}

+ +

Métodos

+ +

{{page('es/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype','Métodos')}}

+ +
+
{{jsxref("ArrayBuffer.slice()")}} {{non-standard_inline}}
+
Tiene la misma funcionalidad que {{jsxref("ArrayBuffer.prototype.slice()")}}.
+
+ +

Ejemplo

+ +

En este ejemplo creamos un buffer de 8-bytes con una vista del tipo {{jsxref("Global_Objects/Int32Array", "Int32Array")}} referenciando dicho buffer:

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

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Sustituida por ECMAScript 6.
{{SpecName('ES6', '#sec-arraybuffer-constructor', 'ArrayBuffer')}}{{Spec2('ES6')}}Definición inicial en un estándar ECMA. Especifica que new es obligatorio.
{{SpecName('ESDraft', '#sec-arraybuffer-constructor', 'ArrayBuffer')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +

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

+ +

Notas de compatibilidad

+ +

Desde el ECMAScript 2015, los constructores de ArrayBuffer requieren ser instanciados usando el operador {{jsxref("Operators/new", "new")}}. Ejecutar el constructor de un ArrayBuffer como una funciónsin el new, lanzará un {{jsxref("TypeError")}} de ahora en adelante.

+ +
var dv = ArrayBuffer(10);
+// TypeError: llamar al constructor ArrayBuffer sin new está prohibido
+ +
var dv = new ArrayBuffer(10);
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/asyncfunction/index.html b/files/es/web/javascript/reference/global_objects/asyncfunction/index.html new file mode 100644 index 0000000000..bdb37b012c --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/asyncfunction/index.html @@ -0,0 +1,122 @@ +--- +title: Funciones asíncronas +slug: Web/JavaScript/Referencia/Objetos_globales/Funcionesasíncronas +translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction +--- +
{{JSRef}}
+ +
El constructor de las funciones asíncronas crea un nuevo objecto {{jsxref("Statements/async_function", "async function")}}. En JavaScript cada función asíncrona es un objeto AsyncFunction.
+ +
+ +
Nota: AsyncFunction no es un objeto global. Este puede ser obtenido como resultado del siguiente código.
+ +
+ +
Object.getPrototypeOf(async function(){}).constructor
+
+ +

Syntax

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

Parametros

+ +
+
arg1, arg2, ... argN
+
Nombres a ser usados por la función como los nombres de los argumentos. Cada uno debe ser una cadena que corresponda a un identificador válido en JavaScript o una lista de cadenas separadas por coma, ejemplo: "x", "theValue", or "a,b".
+
functionBody
+
Una cadena que contiene las declaraciones de JavaScript que comprenden la definición de la función.
+
+ +

Descripción

+ +

{{jsxref("Statements/async_function", "async function")}} los objetos creados con el constructor AsyncFunction son analizados gramaticalmente en el momento que la función es creada. Esto es menos eficiente que declarar una función asincrona con un {{jsxref("Statements/async_function", "async function expression")}} y llamarla con eso en tu código , ya que las funciones están analizadas gramaticalmento junto al resto del código.

+ +

Todos los argumentos que son pasados por la función son tratados por los nombres de los identificadores con los que fueron creados, en el orden en que son pasados por la función.

+ +
+

Note: {{jsxref("Statements/async_function", "async functions")}} created with the AsyncFunction constructor do not create closures to their creation contexts; they are always created in the global scope. When running them, they will only be able to access their own local variables and global ones, not the ones from the scope in which the AsyncFunction constructor was called. This is different from using {{jsxref("Global_Objects/eval", "eval")}} with code for an async function expression.

+
+ +

Invoking the AsyncFunction constructor as a function (without using the new operator) has the same effect as invoking it as a constructor.

+ +

Propiedades

+ +
+
AsyncFunction.length
+
The AsyncFunction constructor's length property whose value is 1.
+
{{jsxref("AsyncFunction.prototype")}}
+
Allows the addition of properties to all async function objects.
+
+ +

El objeto prototipo  AsyncFunction 

+ +

Propiedades

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

AsyncFunction y sus instancias

+ +

Una instancia de AsyncFunction  hereda métodos y propiedades de {{jsxref("AsyncFunction.prototype")}}. Como son todos los constructores, puedes cambiar el constructor del objeto prototipo para aplicar cambios a todas las instancias de AsyncFunction .

+ +

Ejemplos

+ +

Creating an async function from an AsyncFunction constructor

+ +
function resolveAfter2Seconds(x) {
+  return new Promise(resolve => {
+    setTimeout(() => {
+      resolve(x);
+    }, 2000);
+  });
+}
+
+var AsyncFunction = Object.getPrototypeOf(async function(){}).constructor
+
+var a = new AsyncFunction('a',
+                          'b',
+                          'return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);');
+
+a(10, 20).then(v => {
+  console.log(v); // prints 30 after 4 seconds
+});
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-async-function-objects', 'AsyncFunction object')}}{{Spec2('ESDraft')}}Initial definition in ES2017.
+ +

Compatibilidad del navegador

+ +
+ + +

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/boolean/boolean/index.html b/files/es/web/javascript/reference/global_objects/boolean/boolean/index.html new file mode 100644 index 0000000000..924ab7ccef --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/boolean/boolean/index.html @@ -0,0 +1,75 @@ +--- +title: Boolean() constructor +slug: Web/JavaScript/Referencia/Objetos_globales/Boolean/Boolean +tags: + - Booleano + - Constructor + - JavaScript + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/Boolean +--- +
{{JSRef}}
+ +

El constructor Boolean() se usa para crear objetos {{jsxref("Boolean")}}.

+ +
{{EmbedInteractiveExample("pages/js/boolean-constructor.html", "shorter")}}
+ + + +

Sintaxis

+ +
new Boolean([value])
+ +

Parámetros

+ +
+
value {{optional_inline}}
+
El valor inicial del objeto Boolean.
+
+ +

Ejemplos

+ +

Creación de objetos Boolean con un valor inicial de false

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

Creación de objetos Boolean con un valor inicial de 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({});
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-boolean-constructor', 'Boolean constructor')}}
+ +

Compatibilidad del navegador

+ +
+ + +

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

+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/boolean/index.html b/files/es/web/javascript/reference/global_objects/boolean/index.html new file mode 100644 index 0000000000..17a0f7d9e9 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/boolean/index.html @@ -0,0 +1,126 @@ +--- +title: Booleano +slug: Web/JavaScript/Referencia/Objetos_globales/Boolean +tags: + - Boolean + - Clase + - Class + - Constructor + - JavaScript + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean +--- +
{{JSRef}}
+ +

El objeto Boolean es un objeto contenedor para un valor booleano.

+ +

Descripción

+ +

El valor pasado como primer parámetro se convierte en un valor booleano, si es necesario. Si el valor se omite o es 0, -0, {{jsxref("null")}}, false, {{jsxref("NaN")}}, {{jsxref("undefined")}}, o la cadena vacía (""), el objeto tiene un valor inicial de false. Todos los demás valores, incluido cualquier objeto, un arreglo vacío ([]) o la cadena "false", crean un objeto con un valor inicial de true.

+ +

No confundas los valores del Boolean {{Glossary("Primitive", "primitivo")}}, true y false con los valores true y false del objeto Boolean.

+ +

Cualquier objeto cuyo valor no sea {{jsxref("undefined")}} o {{jsxref("null")}}, incluido un objeto Boolean cuyo valor es false, se evalúa como true cuando se pasa a una declaración condicional. Por ejemplo, la condición en la siguiente declaración {{jsxref("Statements/if...else", "if")}} se evalúa como true:

+ +
var x = new Boolean(false);
+if (x) {
+  // este código se ejecuta
+}
+
+ +

Este comportamiento no se aplica a los Boolean primitivos. Por ejemplo, la condición en la siguiente instrucción {{jsxref("Statements/if...else", "if")}} se evalúa como false:

+ +
var x = false;
+if (x) {
+  // este código no se ejecuta
+}
+
+ +

No utilices un objeto Boolean para convertir un valor no booleano en un valor booleano. Para realizar esta tarea, en su lugar, usa Boolean como función, o un operador NOT doble:

+ +
var x = Boolean(expression);     // usa esta...
+var x = !!(expression);          // ... o esta
+var x = new Boolean(expression); // ¡no uses esta!
+
+ +

Si especificas cualquier objeto, incluido un objeto Boolean cuyo valor es false, como valor inicial de un objeto Boolean, el nuevo objeto Boolean tiene un valor de true.

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

No utilices un objeto Boolean en lugar de un Boolean primitivo.

+ +
+

Nota Cuando la propiedad no estándar document.all se usa como argumento para este constructor, el resultado es un objeto Boolean con el valor false. Esta propiedad es heredada y no estándar y no se debe usar.

+
+ +

Constructor

+ +
+
{{jsxref("Global_Objects/Boolean/Boolean", "Boolean()")}}
+
Crea un nuevo objeto Boolean.
+
+ +

Métodos de instancia

+ +
+
{{jsxref("Boolean.prototype.toString()")}}
+
Devuelve una cadena de true o false dependiendo del valor del objeto. Redefine el método {{jsxref("Object.prototype.toString()")}}.
+
{{jsxref("Boolean.prototype.valueOf()")}}
+
Devuelve el valor primitivo del objeto {{jsxref("Boolean")}}. Redefine el método {{jsxref("Object.prototype.valueOf()")}}.
+
+ +

Ejemplos

+ +

Creación de objetos Boolean con un valor inicial de false

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

Creación de objetos Boolean con un valor inicial de 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({});
+
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-boolean-objects', 'Boolean')}}
+ +

Compatibilidad del navegador

+ +
+ + +

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

+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/boolean/tosource/index.html b/files/es/web/javascript/reference/global_objects/boolean/tosource/index.html new file mode 100644 index 0000000000..e42f79f26b --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/boolean/tosource/index.html @@ -0,0 +1,36 @@ +--- +title: Boolean.prototype.toSource() +slug: Web/JavaScript/Referencia/Objetos_globales/Boolean/toSource +tags: + - Boolean + - JavaScript + - Method + - Non-standard + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/toSource +--- +
+ {{JSRef("Objetos_globales", "Boolean")}} {{ Non-standard_header() }}
+

Resumen

+

Devuelve una cadena que representa el código fuente del objeto.

+

Sintaxis

+

toSource()

+

Parámetros

+

Ninguno.

+

Descripción

+

El método toSource devuelve los siguientes valores:

+ +
function Boolean() {
+   [código nativo]
+}
+
+ +

Este método se utiliza habitualmente en llamadas internas por JavaScript y no en código explícito.

+

Vea También

+ diff --git a/files/es/web/javascript/reference/global_objects/date/getdate/index.html b/files/es/web/javascript/reference/global_objects/date/getdate/index.html new file mode 100644 index 0000000000..451f889003 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/getdate/index.html @@ -0,0 +1,119 @@ +--- +title: Date.prototype.getDate() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/getDate +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getDate +--- +
{{JSRef}}
+ +

El método getDate() devuelve el día del mes para la fecha especificada de acuerdo con la hora local.

+ +

Sintaxis

+ +
dateObj.getDate()
+ +

Parámetros

+ +

Ninguno.

+ +

Valor de retorno

+ +

El valor devuelto por getDate() es un número entero, entre 1 y 31, que representa el día del mes para la fecha dada según la hora local.

+ +

Ejemplos

+ +

Uso de getDate()

+ +

La segunda instrucción asigna el valor 25 a la variable day, en función del valor del objeto {{jsxref("Date")}} Xmas95.

+ +
var Xmas95 = new Date('December 25, 1995 23:15:30');
+var day = Xmas95.getDate();
+
+console.log(day); // 25
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-date.prototype.getdate', 'Date.prototype.getDate')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-15.9.5.14', 'Date.prototype.getDate')}}{{Spec2('ES5.1')}} 
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implantado en JavaScript 1.1.
+ +

Compatibilidad con navegadores

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

Véase también

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/getday/index.html b/files/es/web/javascript/reference/global_objects/date/getday/index.html new file mode 100644 index 0000000000..f384f21b71 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/getday/index.html @@ -0,0 +1,124 @@ +--- +title: Date.prototype.getDay() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/getDay +tags: + - Date + - JavaScript + - Prototype + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getDay +--- +
{{JSRef}}
+ +

El método getDay() devuelve el día de la semana de la fecha especificada en función de la fecha local; siendo 0 (Domingo) el primer día.

+ +

Sintaxis

+ +
dateObj.getDay()
+ +

Parámetros

+ +

Ninguno.

+ +

Valor devuelto

+ +

El valor devuelto por getDay() es un entero correspondiente al día de la semana; siendo 0 (Domingo) el primer día, 1 (Lunes) el segundo, etcétera. 

+ +

Ejemplos

+ +

Usos de getDay()

+ +

La segunda sentencia asigna el valor 1 a weekday, basado en el valor del objeto Xmas95  {{jsxref("Date")}}. December 25, 1995,  que corresponde a Lunes.

+ +
var Xmas95 = new Date('December 25, 1995 23:15:30');
+var weekday = Xmas95.getDay();
+
+console.log(weekday); // 1
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-date.prototype.getday', 'Date.prototype.getDay')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-15.9.5.16', 'Date.prototype.getDay')}}{{Spec2('ES5.1')}} 
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en JS 1.0.
+ +

Compatibilidad con navegadores

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

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/getfullyear/index.html b/files/es/web/javascript/reference/global_objects/date/getfullyear/index.html new file mode 100644 index 0000000000..0d047fbbc3 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/getfullyear/index.html @@ -0,0 +1,67 @@ +--- +title: Date.prototype.getFullYear() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/getFullYear +tags: + - Fecha + - JavaScript + - Prototipo + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getFullYear +--- +
{{JSRef}}
+ +

El método getFullYear() devuelve el año de la fecha indicada acorde a la hora local.

+ +

Usa este método en lugar del método {{jsxref("Date.prototype.getYear()", "getYear()")}}.

+ +
{{EmbedInteractiveExample("pages/js/date-getfullyear.html","shorter")}}
+ +

Sintaxis

+ +
dateObj.getFullYear()
+ +

Valor devuelto

+ +

Un número correspondiente al año de la fecha indicada, según la hora local.

+ +

Descripción

+ +

El valor devuelto por getFullYear() es un número absoluto. Para fechas entre los años 1000 y 9999, getFullYear() devuelve un número de cuatro cifras, por ejemplo, 1995. Utiliza esta función para obtener un año que cumpla con los años posteriores al 2000.

+ +

Ejemplos

+ +

Utilizando getFullYear()

+ +

El siguiente ejemplo asigna el valor de cuatro dígitos del año actual a la variable year.

+ +
var today = new Date();
+var year = today.getFullYear();
+
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-date.prototype.getfullyear', 'Date.prototype.getFullYear')}}
+ +

Compatibilidad con navegadores

+ +

{{Compat("javascript.builtins.Date.getFullYear")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/gethours/index.html b/files/es/web/javascript/reference/global_objects/date/gethours/index.html new file mode 100644 index 0000000000..b669c976c7 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/gethours/index.html @@ -0,0 +1,119 @@ +--- +title: Date.prototype.getHours() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/getHours +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getHours +--- +
{{JSRef}}
+ +

El método getHours() retorna la hora de la fecha especificada, de acuerdo a la hora local.

+ +

Sintaxis

+ +
dateObj.getHours()
+ +

Valor de retorno

+ +

Un número entero, entre 0 y 23, representando la hora de la fecha dada de acuerdo a la hora local.

+ +

Ejemplos

+ +

Usando getHours()

+ +

La segunda sentencia abajo asigna el valor 23 a la variable hours, basado en el valor del 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
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definicion inicial. Implementado en JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.5.18', 'Date.prototype.getHours')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.gethours', 'Date.prototype.getHours')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-date.prototype.gethours', 'Date.prototype.getHours')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad de navegador

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

Ver tambien

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/getmilliseconds/index.html b/files/es/web/javascript/reference/global_objects/date/getmilliseconds/index.html new file mode 100644 index 0000000000..cf673a530a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/getmilliseconds/index.html @@ -0,0 +1,121 @@ +--- +title: Date.prototype.getMilliseconds() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/getMilliseconds +tags: + - Fecha + - Milisegundos + - Prototipo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds +--- +
{{JSRef}}
+ +

El método getMilliseconds() devuelve la cantidad de milisegundos en el objeto fecha especificado de acuerdo a la hora local.

+ +

Sintaxis

+ +
dateObj.getMilliseconds()
+ +

Valor de Retorno

+ +

Un número, entre 0 y 999, que representa la cantidad de milisegundos en la fecha dada, de acuerdo a la hora local.

+ +

Ejemplos

+ +

Usando getMilliseconds()

+ +

El siguiente ejemplo asigna la cantidad de milisegundos de la hora actual a la variable milisegundos:

+ +
var ahora = new Date();
+var milisegundos = ahora.getMilliseconds();
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
+ +

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

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/getminutes/index.html b/files/es/web/javascript/reference/global_objects/date/getminutes/index.html new file mode 100644 index 0000000000..9b144239b9 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/getminutes/index.html @@ -0,0 +1,118 @@ +--- +title: Date.prototype.getMinutes() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/getMinutes +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMinutes +--- +
{{JSRef}}
+ +

El método getMinutes() devuelve los minutos de la fecha especificada en función de la hora local. 

+ +

Sintaxis

+ +
dateObj.getMinutes()
+ +

Parámetros

+ +

Ninguno.

+ +

Devuelve

+ +

El valor devuelto por getMinutes() es un número entero entre 0 y 59.

+ +

Ejemplos

+ +

Uso de getMinutes()

+ +

La segunda declaración del código mostrado a continuación le asigna el valor 15 a la variable minutos, basado en el valor del {{jsxref("Global_Objects/Date", "Date")}} objeto Xmas95.

+ +
var Xmas95 = new Date('December 25, 1995 23:15:30');
+var minutos = Xmas95.getMinutes();
+
+console.log(minutos); // 15
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
+ +

Compatibilidad con navegadores

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

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/getmonth/index.html b/files/es/web/javascript/reference/global_objects/date/getmonth/index.html new file mode 100644 index 0000000000..08a7e1d143 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/getmonth/index.html @@ -0,0 +1,125 @@ +--- +title: Date.prototype.getMonth() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/getMonth +tags: + - Date + - JavaScript + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMonth +--- +
{{JSRef}}
+ +

Resumen

+ +

El método getMonth() devuelve el mes del objeto Date según la hora local, donde el número cero indica el primer mes del año.

+ +

Sintaxis

+ +
dateObj.getMonth()
+ +

Parámetros

+ +

Ninguno.

+ +

Resultado

+ +

El valor devuelto por getMonth() es un entero entre 0 y 11, donde 0 corresponde a Enero, 1 a Febrero y así sucesivamente.

+ +

Ejemplos

+ +

Usando getMonth()

+ +

En el siguiente ejemplo, la segunda línea asigna el valor 11 a la variable mes, basado en el valor del objeto {{jsxref("Date")}} Navidad.

+ +
var Navidad = new Date('December 25, 2014 23:15:30');
+var mes = Navidad.getMonth();
+
+console.log(mes); // 11
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Primera definición. Implementado en 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')}} 
+ +

Compatibilidad

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

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/getseconds/index.html b/files/es/web/javascript/reference/global_objects/date/getseconds/index.html new file mode 100644 index 0000000000..875fe3f48b --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/getseconds/index.html @@ -0,0 +1,83 @@ +--- +title: Date.prototype.getSeconds() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/getSeconds +tags: + - Fecha + - JavaScript + - Prototipo + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getSeconds +--- +
{{JSRef}}
+ +

El método getSeconds() devuelve los segundos en la fecha especificada de acuerdo a la hora local.

+ +
{{EmbedInteractiveExample("pages/js/date-getseconds.html")}}
+ + + +

Sintaxis

+ +
dateObj.getSeconds()
+ +

Valor devuelto

+ +

Un número entero, entro 0 y 59, representando los segundos en la fecha dada de acuerdo a la hora local.

+ +

Ejemplos

+ +

Utilizando getSeconds()

+ +

La segunda sentencia asigna el valor 30 a la variable seconds, en base al valor del 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
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
+ +

Compatibilidad con navegadores

+ + + +

{{Compat("javascript.builtins.Date.getSeconds")}}

+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/gettime/index.html b/files/es/web/javascript/reference/global_objects/date/gettime/index.html new file mode 100644 index 0000000000..f08882be5e --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/gettime/index.html @@ -0,0 +1,140 @@ +--- +title: Date.prototype.getTime() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/getTime +tags: + - Date + - Metodo getTime() + - Referencia + - getTime +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getTime +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Resumen

+ +

El método getTime() devuelve el valor numérico correspondiente a la hora para la fecha especificada según la hora universal.

+ + + +

Puede utilizar este método para ayudar a asignar una fecha y hora a otro objeto {{jsxref("Global_Objects/Date", "Date")}}. Este método es funcionalmente equivalente al metodo {{jsxref("Date.valueof", "valueOf()")}}.

+ +

Sintaxis

+ +
dateObj.getTime()
+
+ +

Valor devuelto

+ +

El valor devuelto por el método getTime() es un número de milisegundos desde el 1 de enero de 1970 00:00:00 UTC.

+ +

Ejemplos

+ +

Ejemplo: Uso de getTime() para copiar fechas.

+ +

Construir un objeto de fecha con el mismo valor de tiempo.

+ +
var birthday = new Date(1994, 12, 10);
+var copy = new Date();
+copy.setTime(birthday.getTime());
+
+ +

Ejemplo: Medir el tiempo de ejecución

+ +

Restando dos llamadas getTime() subsiguientes en objetos {{jsxref("Global_Objects/Date", "Date")}} recién generados, dé el intervalo de tiempo entre estas dos llamadas. Esto se puede utilizar para calcular el tiempo de ejecución de algunas operaciones.

+ +
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');
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
ECMAScript 1st Edition.StandardInitial definition. Implemented in 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')}}
+ +

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

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/getutcfullyear/index.html b/files/es/web/javascript/reference/global_objects/date/getutcfullyear/index.html new file mode 100644 index 0000000000..f2133bfc02 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/getutcfullyear/index.html @@ -0,0 +1,121 @@ +--- +title: Date.prototype.getUTCFullYear() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/getUTCFullYear +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear +--- +
{{JSRef}}
+ +

El método getUTCFullYear() devuelve el año en la fecha especificada en tiempo universal.

+ +

Sintaxis

+ +
objectoFecha.getUTCFullYear()
+ +

Valor devuelto

+ +

Un número que representa el año en la fecha representada por el objectoFecha en tiempo universal.

+ +

Descripción

+ +

El valor devuelto por getUTCFullYear() es un número que no está afectado por  el efecto año 2000, por ejemplo, 1995.

+ +

Ejemplos

+ +

Empleo de getUTCFullYear()

+ +

El siguiente ejemplo asigna el valor de cuatro digitos del año actual a la variable year.

+ +
var today = new Date();
+var year = today.getUTCFullYear();
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementada en 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')}} 
+ +

Compatibilidad en navegadores

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

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/getutchours/index.html b/files/es/web/javascript/reference/global_objects/date/getutchours/index.html new file mode 100644 index 0000000000..1e7a7a1ce2 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/getutchours/index.html @@ -0,0 +1,117 @@ +--- +title: Date.prototype.getUTCHours() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/getUTCHours +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCHours +--- +
{{JSRef}}
+ +

El método getUTCHours() retorna las horas especificadas en la fecha deacuerdo al horario universal.

+ +

Syntax

+ +
dateObj.getUTCHours()
+ +

Return value

+ +

An integer number, between 0 and 23, representing the hours in the given date according to universal time.

+ +

Examples

+ +

Using getUTCHours()

+ +

The following example assigns the hours portion of the current time to the variable hours.

+ +
var today = new Date();
+var hours = today.getUTCHours();
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.19', 'Date.prototype.getUTCHours')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.getutchours', 'Date.prototype.getUTCHours')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-date.prototype.getutchours', 'Date.prototype.getUTCHours')}}{{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}}
+
+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/index.html b/files/es/web/javascript/reference/global_objects/date/index.html new file mode 100644 index 0000000000..20e05539e5 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/index.html @@ -0,0 +1,132 @@ +--- +title: Date +slug: Web/JavaScript/Referencia/Objetos_globales/Date +tags: + - Date + - JavaScript +translation_of: Web/JavaScript/Reference/Global_Objects/Date +--- +
{{JSRef("Objetos_globales", "Date")}}
+ +

Resumen

+ +

Permite trabajar con fechas y horas.

+ +

El constructor

+ +

El constructor Date:

+ +
new Date()
+new Date(milisegundos)
+new Date(cadenaFecha)
+new Date(año_num,mes_num,dia_num
+        [,hor_num,min_num,seg_num,mils_num])
+
+ +

Parámetros

+ +
+
milisegundos
+
Valor entero que representa el número de milisegundos desde las 00:00:00 UTC del 1 de enero de 1970.
+
+ +
+
cadenaFecha
+
Valor de tipo cadena que representa una fecha. La cadena debería estar en un formato reconocido por el método {{jsxref("Date.parse()")}}.
+
+ +
+
año_num, mes_num, dia_num
+
Valores enteros con las representaciones de las partes de una fecha. Como valor entero, el mes se representa de 0 a 11, con 0=enero and 11=diciembre.
+
+ +
+
hor_num, min_num, seg_num, mils_num
+
Valores enteros que representan las partes de una hora completa.
+
+ +

Descripción

+ +

Si no proporciona argumentos, el constructor crea un objeto Date con la hora y fecha de hoy según la hora local.

+ +

Si proporciona algunos argumentos, debe proporcionar al menos 2 argumentos. Los argumentos vacíos se establecen a 0 (ó 1 si falta el día). 

+ +

La fecha se mide en milisegundos desde la media noche exacta del 01 de enero de 1970 en formato UTC. Un día contiene 86.400.000 milisegundos. El rango del objeto Date va desde -100,000,000 días hasta 100,000,000 días respecto del 01 de enero de 1970 UTC.

+ +

El objeto Date proporciona un comportamiento uniforme entre plataformas.

+ +

El objeto Date soporta métodos UTC (universales), además de métodos horarios locales. UTC, también conocido como Greenwich Mean Time (GMT), se refiere a la hora según el Estádar Horario Mundial (World Time Standard). La hora local es la hora establecida por el ordenador donde se ejecuta JavaScript.

+ +

Por compatibilidad con los cálculos del nuevo milenio (en otras palabras, para tener en cuenta el efecto 2000), debería especificar siempre el año completo; por ejemplo, utilice 1998, y no 98. Para ayudarle a especificar el año completo, JavaScript incluye los métodos {{jsxref("Date.prototype.getFullYear()")}}, {{jsxref("Date.prototype.setFullYear()")}}, {{jsxref("Date.prototype.getUTCFullYear()")}}, y {{jsxref("Date.prototype.setUTCFullYear()")}}.

+ +

El siguiente ejemplo devuelve el tiempo transcurrido entre horaA y horaB en milisegundos.

+ +
horaA = new Date();
+// Sentencias que realizan alguna acción.
+horaB = new Date();
+diferenciaHoras = horaB - horaA;
+
+ +

Propiedades

+ +
+
{{jsxref("Date.prototype")}}
+
Permite añadir propiedades a un objeto Date.
+
+ +

{{ jsOverrides("Function", "properties", "prototype") }}

+ +

Métodos

+ +
+
{{jsxref("Date.now()")}}
+
Devuelve el valor numérico correspondiente a la hora actual.
+
+ +
+
{{jsxref("Date.parse()")}}
+
Transforma una cadena que representa una fecha, y devuelve el número de milisegundos desde el 1 de enero de 1970, hora local 00:00:00.
+
+ +
+
{{jsxref("Date.UTC()")}}
+
Acepta los mismos parámetros que la forma más larga del constructor, y devuelve el número de milisegundos en un objeto Date desde el 1 de enero de 1970, hora universal 00:00:00.
+
+ +

Instancias de  Date

+ +

Métodos

+ +

{{ page("/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/prototype", "M.C3.A9todos") }}

+ +

Ejemplos

+ +

Ejemplo: Diversas maneras de asignar fechas

+ +

Los ejemplos siguientes muestran diversos modos de asignar fechas:

+ +
hoy = new Date();
+cumpleanos = new Date("December 17, 1995 03:24:00");
+cumpleanos = new Date(1995,11,17);
+cumpleanos = new Date(1995,11,17,3,24,0);
+
+ +

Ejemplo: Calcular el tiempo transcurrido

+ +

Los siguientes ejemplos muestran como determinar el tiempo transcurrido entre dos fechas:

+ +
// usando métodos estáticos
+var inicio = Date.now();
+// el evento cuyo tiempo ha transcurrido aquí:
+hacerAlgoPorAlgunTiempo();
+var fin = Date.now();
+var transcurso = fin - inicio; // tiempo en milisegundos
+
+ +
// si tiene objetos Date
+var inicio = new Date();
+// el evento cuyo tiempo ha transcurrido aquí:
+hacerAlgoPorAlgunTiempo();
+var fin = new Date();
+var transcurso = fin.getTime() - inicio.getTime(); // tiempo en milisegundos
+
diff --git a/files/es/web/javascript/reference/global_objects/date/now/index.html b/files/es/web/javascript/reference/global_objects/date/now/index.html new file mode 100644 index 0000000000..6c611710bb --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/now/index.html @@ -0,0 +1,30 @@ +--- +title: Date.now() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/now +tags: + - Date + - JavaScript + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/now +--- +
+ {{JSRef("Objetos_globales", "Date")}}
+

Resumen

+

Devuelve el número de milisegundos transcurridos desde las 00:00:00 UTC del 1 de enero de 1970.

+

Sintaxis

+
var fechaEnMiliseg = Date.now();
+
+

Descripción

+

El método now devuelve los milisegundos transcurridos desde las 00:00:00 UTC del 1 de enero de 1970 justo hasta ahora como un {{jsxref("Number")}}.

+

Cuando se usa now para crear registros temporales or identificadores únicos, tenga en cuenta que la precisión de Windows puede ser de 15 milisegundos (vea {{Bug(363258)}}), lo que puede provocar valores iguales si now se llama múltiples veces en un breve intervalo de tiempo.

+

Ejemplos

+

Ejemplo: Usando now

+

El siguiente ejemplo usa now para crear un registro temporal.

+
var registro = Date.now();
+
+

Vea También

+ diff --git a/files/es/web/javascript/reference/global_objects/date/parse/index.html b/files/es/web/javascript/reference/global_objects/date/parse/index.html new file mode 100644 index 0000000000..15536775d7 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/parse/index.html @@ -0,0 +1,35 @@ +--- +title: Date.parse() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/parse +tags: + - Date + - JavaScript + - Method +translation_of: Web/JavaScript/Reference/Global_Objects/Date/parse +--- +
+ {{JSRef("Objetos_globales", "Date")}}
+

Resumen

+

Transforma una cadena con la representación de una fecha y hora, y devuelve el número de milisegundos desde las 00:00:00 del 1 de enero de 1970, hora local.

+

Sintaxis

+
Date.parse(cadenaFecha)
+

Parámetros

+
+
+ cadenaFecha
+
+ Una cadena con la representación de una fecha y hora.
+
+

Descripción

+

El método parse toma una cadena con una fecha en inglés (como por ejemplo "Dec 25, 1995") y devuelve el número de milisegundos desde las 00:00:00 del 1 de enero de 1970 (hora local). Esta función es útil para establecer valores de fecha basados en cadenas con fechas, por ejemplo junto con el método {{jsxref("Date.prototype.setTime()")}} y el objeto {{jsxref("Date")}}.

+

Dada una cadena con una hora, parse devuelve el valor de la hora. Acepta la sintaxis del estándar IETF (en inglés): "Mon, 25 Dec 1995 13:30:00 GMT". Comprende las abreviaciones de la zona horaria continental de Estados Unidos, pero para su uso general, use la diferencia de zona horaria, como por ejemplo, "Mon, 25 Dec 1995 13:30:00 GMT+0430" (4 horas, 30 minutos al oeste del meridiano de Greenwich). Si no se especifica una zona horaria, se asumirá la zona de la hora local. GMT y UTC se consideran equivalentes.

+

Debido a que parse es un método estático de Date, úselo siempre como Date.parse(), en vez de como un método del objeto Date que usted cree.

+

Ejemplos

+

Ejemplo: Usando parse

+

Si IPOfecha es un objeto existente Date, entonces usted puede asignarlo a 9 de agosto de 1995 de la manera siguiente:

+
IPOfecha.setTime(Date.parse("Aug 9, 1995")) ;
+
+

Vea también

+ diff --git a/files/es/web/javascript/reference/global_objects/date/setfullyear/index.html b/files/es/web/javascript/reference/global_objects/date/setfullyear/index.html new file mode 100644 index 0000000000..e272f78fc3 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/setfullyear/index.html @@ -0,0 +1,133 @@ +--- +title: Date.prototype.setFullYear() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/setFullYear +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setFullYear +--- +
{{JSRef}}
+ +

El método setFullYear() fija el año completo para una fecha específica de acuerdo a la zona horaria local. Devuelve un nuevo valor de tipo timestamp.

+ +

Sintaxis

+ +
dateObj.setFullYear(valorAño[, valorMes[, valorDia]])
+ +

Parámetros

+ +
+
valorAño
+
Valor de tipo entero que contiene el valor numérico del año, por ejemplo, 1995.
+
valorMes
+
Opcional. Valor entero entre 0 y 11 que representa el mes de Enero a Diciembre.
+
valorDia
+
Opcional. Valor entero entre 1 y 31 que representa el día del mes. Si se especifica este parámetro debe incluirse también el parámetro valorMes.
+
+ +

Valor devuelto

+ +

El número de milisegundos entre 1 Enero 1970 00:00:00 UTC y a la fecha actualizada con el valor del año.

+ +

Descripción

+ +

Si en la invocación al método no se especifican los parámetros valorMesvalorDia, se emplean en su lugar los valores devueltos por  {{jsxref("Date.prototype.getMonth()", "getMonth()")}} y {{jsxref("Date.prototype.getDate()", "getDate()")}}.

+ +

Si se especifica un parámetro con un valor fuera del rango esperado,  setFullYear() intenta actualizar el resto de parámetros y la informacion de fecha en el objeto {{jsxref("Date")}} de manera consistente. Por ejemplo, si se especifica el valor 15 para el parametro valorMes, el parámetro año se incrementa en 1  (valorAño+ 1), y se emplea  3 como valor para el parámetro mes.

+ +

Ejemplos

+ +

Uso de setFullYear()

+ +
var theBigDay = new Date();
+theBigDay.setFullYear(1997);
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.40', 'Date.prototype.setFullYear')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.setfullyear', 'Date.prototype.setFullYear')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-date.prototype.setfullyear', 'Date.prototype.setFullYear')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/setmonth/index.html b/files/es/web/javascript/reference/global_objects/date/setmonth/index.html new file mode 100644 index 0000000000..04aa9ec82a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/setmonth/index.html @@ -0,0 +1,78 @@ +--- +title: Date.prototype.setMonth() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/setMonth +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMonth +--- +
{{JSRef}}
+ +
El método setMonth() establece el mes para una fecha específica de acuerdo con el año establecido actualmente.
+ +
{{EmbedInteractiveExample("pages/js/date-setmonth.html")}}
+ +

Sintaxis

+ +
dateObj.setMonth(monthValue[,dayValue])
+ +

Versiones anteriores a JavaScript 1.3

+ +
dateObj.setMonth(monthValue)
+ +

Parámetros

+ +
+
monthValue
+
Un entero entre 0 y 11, representando los meses de Enero a Diciembre.
+
dayValue
+
Opcional. Un entero de 1 a 31, representando el dia del mes.
+
+ +

Resultado

+ +

El valor retornado es el número de milisegundos entre el 1 de Enero de 1970 00:00:00 UTC y la fecha actualizada.

+ +

Descripción

+ +

Si no especificas el parámetro dayValue, el valor retornado del metodo {{jsxref("Date.prototype.getDate()", "getDate()")}} es usado.

+ +

Si un parámetro especificado esta fuera del rango esperado, setMonth() intenta actualizar la información de la fecha en el objeto {{jsxref("Date")}} en consecuencia. Por ejemplo, si usted usa 15 para monthValue, usa 12 para incrementar el año en 1, y los 3 restantes para calcular el mes.

+ +

El día actual del mes tendrá un impacto en el comportamiento de este método. Conceptualmente agregará el número de días dados por el día actual del mes al primer día del nuevo mes especificado como parámetro, para devolver la nueva fecha. Por ejemplo, si el valor actual es el 31 de agosto de 2016, llamar a setMonth con un valor de 1 devolverá el 2 de marzo de 2016. Esto se debe a que en febrero de 2016 tuvo 29 días.

+ +

Ejemplos

+ +

Usando setMonth()

+ +
var theBigDay = new Date();
+theBigDay.setMonth(6);
+
+//Cuidado con las transiciones de fin de mes
+var endOfMonth = new Date(2016, 7, 31);
+endOfMonth.setMonth(1);
+console.log(endOfMonth); //Wed Mar 02 2016 00:00:00
+
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-date.prototype.setmonth', 'Date.prototype.setMonth')}}
+ +

Compatibilidad del navegador

+ + + +

{{Compat("javascript.builtins.Date.setMonth")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/todatestring/index.html b/files/es/web/javascript/reference/global_objects/date/todatestring/index.html new file mode 100644 index 0000000000..b0a3b5f431 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/todatestring/index.html @@ -0,0 +1,88 @@ +--- +title: Date.prototype.toDateString() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/toDateString +tags: + - Fecha + - JavaScript + - Prototipo + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toDateString +--- +
{{JSRef}}
+ +

El método toDateString() devuelve la porción de la fecha de un objeto {{jsxref("Date")}} en formato humano legible en Inglés Americano.

+ +

Sintaxis

+ +
dateObj.toDateString()
+ +

Valor devuelto

+ +

Una cadena que representa la porción de fecha de un determinado objeto {{jsxref("Date")}} en formato humano legible en Inglés Americano.

+ +

Descripción

+ +

Las instancias de {{jsxref("Date")}} representan momentos especificos en el tiempo. Un llamado a {{jsxref("Date.prototype.toString()", "toString()")}} devolverá la fecha formateada en un formato humano legible en Inglés Americano. En SpiderMonkey, esto consiste en la porción de la fecha (día, mes, y año) seguido por la porción de la hora (horas, minutos, segundos, y zona horaria). Algunas veces sólo se necesita obtener una cadena de la porción de la hora; esto puede lograrse con el método toTimeString().

+ +

El método toDateString() es especialmente útil, pues los distintos motores compatibles que implementan ECMA-262 pueden diferir en la cadena obtenida al ejecutar {{jsxref("Date.prototype.toString()", "toString()")}} para los objetos de tipo {{jsxref("Date")}}, pues dicho formato depende de la implementación, por lo que es posible que el enfoque de la segmentación simple de cadenas no produzca resultados consistentes entre distintos motores.

+ +

Ejemplos

+ +

Uso básico de toDateString()

+ +
var d = new Date(1993, 5, 28, 14, 39, 7);
+
+console.log(d.toString());     // logs Wed Jun 28 1993 14:39:07 GMT-0600 (PDT)
+console.log(d.toDateString()); // logs Wed Jun 28 1993
+
+ +
+

Nota: Los meses son 0-indexados cuando son utilizados como parámetros de {{jsxref("Date")}} (Siendo así, el cero (0) corresponde a Enero y el once (11) a Diciembre).

+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EpecificaciónEstatusComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición 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')}} 
+ +

Compatibilidad entre navegadores

+ + + +

{{Compat("javascript.builtins.Date.toDateString")}}

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/toisostring/index.html b/files/es/web/javascript/reference/global_objects/date/toisostring/index.html new file mode 100644 index 0000000000..b3461f355d --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/toisostring/index.html @@ -0,0 +1,144 @@ +--- +title: Date.prototype.toISOString() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/toISOString +tags: + - Date + - JavaScript + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toISOString +--- +
{{JSRef}}
+ +

El método toISOString() devuelve una cadena en el formato simplificado extendido ISO (ISO 8601), que siempre mide 24 o 27 caracteres de largo: (YYYY-MM-DDTHH:mm:ss.sssZ or ±YYYYYY-MM-DDTHH:mm:ss.sssZ, respectivamente). El uso horario no tiene retraso respecto a UTC, como lo denota el sufijo "Z".

+ +

Sintaxis

+ +
dateObj.toISOString()
+
+ +

Valor devuelto

+ +

Una cadena que representa la fecha dada en el formato ISO 8601 según la hora universal.

+ +

Ejemplos

+ +

Usando toISOString()

+ +
var today = new Date('05 October 2011 14:48 UTC');
+
+console.log(today.toISOString()); // Devuelve 2011-10-05T14:48:00.000Z
+
+ +

El ejemplo de arriba usa una cadena no estándar que podría no ser interpretada correctamente en navegadores distintos de Firefox.

+ +

Polyfill

+ +

Este método fue estandarizado en ECMA-262 5° edición. Los motores javascript que no han sido actualizados para soportar este método pueden solucionar su ausencia de la siguiente manera:

+ +
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';
+    };
+
+  }());
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
{{SpecName('ES5.1', '#sec-15.9.5.43', 'Date.prototype.toISOString')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en javascript 1.8
{{SpecName('ES6', '#sec-date.prototype.toisostring', 'Date.prototype.toISOString')}}{{Spec2('ES6')}}
+ +

Compatibilidad con navegadores

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

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/tojson/index.html b/files/es/web/javascript/reference/global_objects/date/tojson/index.html new file mode 100644 index 0000000000..7d44a716c2 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/tojson/index.html @@ -0,0 +1,61 @@ +--- +title: Date.prototype.toJSON() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/toJSON +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toJSON +--- +
{{JSRef}}
+ +

El metodo toJSON() retorna una representacion de cadena del objeto {{jsxref("Date")}}

+ +
{{EmbedInteractiveExample("pages/js/date-tojson.html")}}
+ + + +

Syntaxis

+ +
dateObj.toJSON()
+ +

Valor retornado

+ +

Una representación de cadena de la fecha dada.

+ +

Descripción

+ +

{{jsxref("Date")}} las instancias se refieren a un momento específico en el tiempo. Llamando a toJSON() retorna un string (usando {{jsxref("Date.prototype.toISOString()", "toISOString()")}}) representando el {{jsxref("Date")}} valor del objeto. Este método generalmente está destinado, de forma predeterminada, a serializar de manera útil {{jsxref("Date")}} objetos durante la serialización JSON .

+ +

Ejemplos

+ +

Usando toJSON()

+ +
var jsonDate = (new Date()).toJSON();
+var backToDate = new Date(jsonDate);
+
+console.log(jsonDate); //2015-10-26T07:46:36.611Z
+
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-date.prototype.tojson', 'Date.prototype.toJSON')}}
+ +

Compatibilidad en buscadores

+ + + +

{{Compat("javascript.builtins.Date.toJSON")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/tolocaledatestring/index.html b/files/es/web/javascript/reference/global_objects/date/tolocaledatestring/index.html new file mode 100644 index 0000000000..26b773ba9a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/tolocaledatestring/index.html @@ -0,0 +1,159 @@ +--- +title: Date.prototype.toLocaleDateString() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/toLocaleDateString +tags: + - Fecha + - IANA formato horario + - Internacionalizacion + - JavaScript + - Prototipo + - Prototype + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString +--- +
{{JSRef}}
+ +

El método toLocaleDateString() devuelve una cadena con una representación de la fecha sensible al lenguaje. Los nuevos argumentos locales y options permiten a las aplicaciones especificar el lenguaje cuyas convenciones de formato deben usarse y permitir personalizar el comportamiento de la función. En implementaciones anteriores, las cuales ignoran los argumentos locales y options, el configuración regional usada y el formato de cadena devuelto dependen completamente de la implementación.

+ +
{{EmbedInteractiveExample("pages/js/date-tolocaledatestring.html")}}
+ + + +

Sintaxis

+ +
dateObj.toLocaleDateString([locales [, options]])
+ +

Parámetros

+ +

Compruebe la sección de Compatibilidad con su navegador para ver qué navegadores suportan los argumentos locales y options, y el Ejemplo: Comprobando el soporte para los argumentos locales y options para detectar dicha característica.

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat', 'Parameters')}}
+ +

El valor por defecto para cada propiedad del componente date-time es {{jsxref("undefined")}}, pero si las propiedades weekday, year, month, day son todas {{jsxref("undefined")}}, entonces year, month, y day se asumen tener el valor "numeric".

+ +

Valor devuelto

+ +

Una cadena representando una porción de fecha de la instancia {{jsxref("Global_Objects/Date", "Date")}} indicada de acuerdo con las convenciones específicas del lenguaje.

+ +

Ejemplos

+ +

Usando toLocaleDateString()

+ +

En un caso básico sin especificar una configuración regional, se devolverá una cadena formateada en la configuración regional y las opciones por defecto.

+ +
var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
+
+// toLocaleDateString() sin argumentos dependientes de la implementación,
+// de la configuración regional por defecto y la zona horaria por defecto
+console.log(date.toLocaleDateString());
+// → "12/11/2012" si se ejecuta en una configuración regional en-US con zona horaria America/Los_Angeles
+
+ +

Comprobando el soporte para los argumentos locales y options

+ +

Los argumentos locales y options no son soportados aún por todos los navegadores. Para comprobar si una implementación los soporta, puede usar el requerimiento 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 toLocaleDateStringSupportsLocales() {
+  try {
+    new Date().toLocaleDateString('i');
+  } catch (e) {
+    return e.name === 'RangeError';
+  }
+  return false;
+}
+
+Using locales
+ +

Usando locales

+ +

Este ejemplo muestra algunas de las variaciones en los formatos de configuración regional de las fechas. Para poder obtener el formato del idioma usado en la interfaz de usuario de su aplicación, asegúrese de especificar el idioma (y posiblemente algunos idiomas alternativos) usando el argumento locales:

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// Los formatos de abajo asumen la zona horaria local de la configuración regional;
+// America/Los_Angeles para US
+
+// El inglés de USA hace uso de orden mes-día-año
+console.log(date.toLocaleDateString('en-US'));
+// → "12/19/2012"
+
+// El inglés británico hace uso del orden día-mes-año
+console.log(date.toLocaleDateString('en-GB'));
+// → "20/12/2012"
+
+// El coreano hace uso del orden año-mes-día
+console.log(date.toLocaleDateString('ko-KR'));
+// → "2012. 12. 20."
+
+// Evento para persa. Es difícil convertir manualmente la fecha a Solar Hijri
+console.log(date.toLocaleDateString('fa-IR'));
+// → "۱۳۹۱/۹/۳۰"
+
+// El árave en la mayoría de paises arabehablantes hace uso de los dígitos árabes
+console.log(date.toLocaleDateString('ar-EG'));
+// → "٢٠‏/١٢‏/٢٠١٢"
+
+// Para el japonés, las aplicaciones quieren poder usar el calendario japonés,
+// donde 2012 era el año 24 de la era Heisei
+console.log(date.toLocaleDateString('ja-JP-u-ca-japanese'));
+// → "24/12/20"
+
+// Cuando solicite un idioma que no esté soportado, por ejemplo el balinés,
+// incluya un idioma alternativo, en este caso el indonesio
+console.log(date.toLocaleDateString(['ban', 'id']));
+// → "20/12/2012"
+
+ +

Usando options

+ +

Los resultados aportados por toLocaleDateString() pueden ser personalizados usando el argumento options:

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// Solicita el día de la semana junto a una fecha larga
+var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
+console.log(date.toLocaleDateString('de-DE', options));
+// → "Donnerstag, 20. Dezember 2012"
+
+// Una aplicación puede querer usar UTC y hacer que sea visible
+options.timeZone = 'UTC';
+options.timeZoneName = 'short';
+console.log(date.toLocaleDateString('en-US', options));
+// → "Thursday, December 20, 2012, GMT"
+
+ +

Performance

+ +

Cuando se formatea números largos de fechas, es mejor crear un objeto {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} y usar la función aportada por esta propiedad {{jsxref("DateTimeFormat.prototype.format", "format")}}.

+ +

Especificaciones

+ + + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-date.prototype.tolocaledatestring', 'Date.prototype.toLocaleDateString')}}
{{SpecName('ES Int Draft', '#sup-date.prototype.tolocaledatestring', 'Date.prototype.toLocaleDateString')}}
+ +

Compatibilidad con el navegador

+ + + +

{{Compat("javascript.builtins.Date.toLocaleDateString")}}

+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/tolocalestring/index.html b/files/es/web/javascript/reference/global_objects/date/tolocalestring/index.html new file mode 100644 index 0000000000..77f48344d3 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/tolocalestring/index.html @@ -0,0 +1,163 @@ +--- +title: Date.prototype.toLocaleString() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/toLocaleString +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleString +--- +
{{JSRef}}
+ +

El método toLocaleString() devuelve un cadena con la representación al idioma de la fecha especificada. Los nuevos argumentos locales y options permiten a las aplicaciones especificar el idioma cuyas convenciones de formato deben usarse y personalizar el comportamiento de la función. En implementaciones anteriores, ignoran los argumentos de las configuraciones localesoptions , la configuración regional utilizada y la forma de la cadena devuelta dependen completamente de la implementación .

+ +
{{EmbedInteractiveExample("pages/js/date-tolocalestring.html")}}
+ + + +

Syntax

+ +
dateObj.toLocaleString([locales[, options]])
+ +

Parametros

+ +

Los argumentos locales y de options  personalizan el comportamiento de la función y permiten que las aplicaciones especifiquen el lenguaje cuyas convenciones de formato deben ser utilizadas. En las implementaciones, que ignoran los argumentos, localesoptions, el locale utilizado y la forma de la cadena devuelta dependen totalmente de la implementación.

+ +

Vea el  constructor de Intl.DateTimeFormat() para detalles en esos parametros y como se usan.

+ +

El valor por defecto para cada componente date-time es  {{jsxref("undefined")}}, pero si las propiedades weekday, year, month, day son todas {{jsxref("undefined")}}, entonces year, month, y day son asumidas como "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-01T01:00:00Z").toLocaleString("en-US");
+// 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

+ + + + + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-date.prototype.tolocalestring', 'Date.prototype.toLocaleString')}}
{{SpecName('ES Int Draft', '#sup-date.prototype.tolocalestring', 'Date.prototype.toLocaleString')}}
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Date.toLocaleString")}}

+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/tolocaletimestring/index.html b/files/es/web/javascript/reference/global_objects/date/tolocaletimestring/index.html new file mode 100644 index 0000000000..c3954096f6 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/tolocaletimestring/index.html @@ -0,0 +1,152 @@ +--- +title: Date.prototype.toLocaleTimeString() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/toLocaleTimeString +tags: + - Date + - Fecha + - Internacionalizacion + - JavaScript + - Method + - Prototype + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString +--- +
{{JSRef}}
+ +

El método toLocaleTimeString() devuelve una cadena con una representación de la parte del tiempo de esta fecha sensible al idioma. Los nuevos argumentos locales y options le permiten a la aplicación especificar el idioma cuyas convenciones de formato deben usarse y personalizan el comportamiento de esta función. En implementaciones antiguas que ignoran los argumentos locales y options la localidad usada y la forma de la cadena devuelta son completamente dependientes de la implementación.

+ +
{{EmbedInteractiveExample("pages/js/date-tolocaletimestring.html")}}
+ + + +

Sintaxis

+ +
dateObj.toLocaleTimeString([locales[, options]])
+ +

Parámetros

+ +

Los argumentos locales y options personalizan el comportamiento de la función y le permiten a la aplicación especificar el idioma cuyas convenciones de formato deben usarse. En las implementaciones que ignoran los argumentos locales y options, la localidad y la forma de la cadena devuelta son dependientes por completo de la implementación.

+ +

Vea el constructor Intl.DateTimeFormat() para los detalles de estos parámetros y sobre cómo usarlos.

+ +

El valor predeterminado de cada componente de fecha-hora es {{jsxref("undefined")}}, pero si las propiedades weekday, year, month y day son todas {{jsxref("undefined")}}, entonces year, month y day se asumen como "numeric".

+ +

Valor devuelto

+ +

Una cadena representando la porción de tiempo de la instancia {{jsxref("Global_Objects/Date", "Date")}} dada, conforme a las convenciones específicas del idioma.

+ +

Ejemplos

+ +

Usando toLocaleTimeString()

+ +

En el uso básico sin especificar una localidad, una cadena con formato en la localidad y opciones predeterminadas es devuelta.

+ +
var fecha = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
+
+// toLocaleTimeString() sin argumentos depende de la implementación,
+// la localidad y la zona horaria predeterminadas
+console.log(date.toLocaleTimeString());
+// → "21:00:00" si se ejecuta en la localidad es-MX con la zona horaria America/Mexico_City
+
+ +

Verificando el soporte de argumentos locales y options

+ +

Los argumentos locales y options aún no están soportados en todos los navegadores. Para verificar si alguna implementación ya los soporta, puede usar el requerimiento de que etiquetas inválidas son rechazadas con una excepción {{jsxref("RangeError")}}:

+ +
function toLocaleTimeStringSoportaLocales() {
+  try {
+    new Date().toLocaleTimeString('i');
+  } catch (e) {
+    return e​.name === 'RangeError';
+  }
+  return false;
+}
+
+ +

Usando locales

+ +

Este ejemplo muestra una de las variaciones en formatos de tiempo localizados. Para obtener el formato del idioma usado en la interfaz de su aplicación, asegúrese de especificar ese idioma (y posiblemente algunos de fallback) usando el argumento locales:

+ +
var fecha = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// los siguientes formatos asumen la zona horaria de la localidad;
+// America/Los_Angeles para los EEUU
+
+// El inglés americano usa formato de 12 horas con AM/PM
+console.log(fecha.toLocaleTimeString('en-US'));
+// → "7:00:00 PM"
+
+// El inglés británico usa formato de 24 horas sin AM/PM
+console.log(date.toLocaleTimeString('en-GB'));
+// → "03:00:00"
+
+// El koreano usa formato de 12 horas con AM/PM
+console.log(date.toLocaleTimeString('ko-KR'));
+// → "오후 12:00:00"
+
+// En muchos países donde hablan árabe se usan dígitos árabes
+console.log(date.toLocaleTimeString('ar-EG'));
+// → "٧:٠٠:٠٠ م"
+
+// cuando se pide un idioma que puede no estar disponible, como
+// balinés, incluya un idioma de respaldo, como en este caso, indonesio
+console.log(date.toLocaleTimeString(['ban', 'id']));
+// → "11.00.00"
+
+ +

Usando options

+ +

Los resultados provistos por toLocaleTimeString() pueden ser personalizados usando el argumento options:

+ +
var fecha = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// una aplicación puede querer usar UTC y visibilizarlo:
+var options = { timeZone: 'UTC', timeZoneName: 'short' };
+console.log(date.toLocaleTimeString('en-US', options));
+// → "3:00:00 AM GMT"
+
+// algunas veces incluso en EEUU necesitan el tiempo en 24 horas
+console.log(date.toLocaleTimeString('en-US', { hour12: false }));
+// → "19:00:00"
+
+// mostrar únicamente horas y minutos, use options con la localidad predeterminada - usar un arreglo vacío
+console.log(date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }));
+// → "20:01"
+
+
+ +

Rendimiento

+ +

Cuando se da formato a un gran número de fechas, es mejor crear un objeto {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} y usar su método {{jsxref("DateTimeFormat.prototype.format", "format")}}.

+ +

Especificaciones

+ + + + + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-date.prototype.tolocaletimestring', 'Date.prototype.toLocaleTimeString')}}
{{SpecName('ES Int Draft', '#sup-date.prototype.tolocaletimestring', 'Date.prototype.toLocaleTimeString')}}
+ +

Compatibilidad con navegadores

+ + + +

{{Compat("javascript.builtins.Date.toLocaleTimeString")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/toutcstring/index.html b/files/es/web/javascript/reference/global_objects/date/toutcstring/index.html new file mode 100644 index 0000000000..4742a6eacf --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/toutcstring/index.html @@ -0,0 +1,105 @@ +--- +title: Date.prototype.toUTCString() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/toUTCString +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference + - UTC +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toUTCString +--- +
{{JSRef}}
+ +

El métodotoUTCString() convierte una fecha en una cadena, utilizando la zona horaria UTC.

+ +
{{EmbedInteractiveExample("pages/js/date-toutcstring.html")}}
+ + + +

Sintaxis

+ +
dateObj.toUTCString()
+ +

Valor de retorno

+ +

Una cadena que representa la fecha dada usando la zona horaria UTC

+ +

Descripción

+ +

El valor devuelto por toUTCString() es una cadena con la forma

+ +

Www, dd Mmm yyyy hh:mm:ss GMT

+ +

donde:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
WwwDía de la semana, como tres letras (ej. Sun, Mon, ...)
ddDía del mes, como dos dígitos, con cero a la izquierda si es necesario.
MmmMes, como tres letras (ej. Jan, Feb, ...)
yyyyAño, como cuatro o más dígitos con cero a la izquierda si es necesario.
hhHora, como dos dígitos con cero a la izquierda si es necesario.
mmMinutos, como dos dígitos con cero a la izquierda si es necesario.
ssSegundos, como dos dígitos con cero a la izquierda si es necesario.
+ +

Antes de ECMAScript 2018, el formato del valor devuelto variaba según la plataforma. El valor devuelto más comun era un sello de fecha con formato RFC-1123, que es una versión ligeramente actualizada de los sellos de fecha RFC-822.

+ +

Ejemplos

+ +

Usando toUTCString()

+ +
var today = new Date('Wed, 14 Jun 2017 00:00:00 PDT');
+var UTCstring = today.toUTCString(); // Wed, 14 Jun 2017 07:00:00 GMT
+
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-date.prototype.toutcstring', 'Date.prototype.toUTCString')}}
+ +

Compatibilidad del navegador

+ + + +

{{Compat("javascript.builtins.Date.toUTCString")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/date/utc/index.html b/files/es/web/javascript/reference/global_objects/date/utc/index.html new file mode 100644 index 0000000000..605ae2819d --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/date/utc/index.html @@ -0,0 +1,78 @@ +--- +title: Date.UTC() +slug: Web/JavaScript/Referencia/Objetos_globales/Date/UTC +tags: + - Date + - JavaScript + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/UTC +--- +
+ {{JSRef("Objetos_globales", "Date")}}
+

Resumen

+

Accepts the same parameters as the longest form of the constructor, and returns the number of milliseconds in a Date object since January 1, 1970, 00:00:00, universal time.

+

Sintaxis

+
Date.UTC(año,mes[, dia[, hora[, minutos[, segundos, milisegundos]]]])
+

Parámetros

+
+
+ año
+
+ Un año mayor de 1900.
+
+
+
+ mes
+
+ Un entero entre 0 y 11 que representa al mes.
+
+
+
+ dia
+
+ Un entero entre 1 y 31 que representa al día del mes.
+
+
+
+ hora
+
+ Un entero entre 0 y 23 que representa la hora.
+
+
+
+ minutos
+
+ Un entero entre 0 y 59 que representa los minutos.
+
+
+
+ segundos
+
+ Un entero entre 0 y 59 que representa los segundos.
+
+
+
+ milisegundos
+
+ Un entero entre 0 y 999 que representa los milisegundos.
+
+

Descripción

+

UTC toma los parámetros de la fecha delimitados por punto y comay devuelve el número de milisegundos entre las 00:00:00 del 1 de enero de 1970 (hora universal) y la hora que especifique.

+

Debería especificar los dígitos del año completo; por ejemplo, 1998. Si se especifica un año entre 0 y 99, el método convierte dicho año en uno del siglo XX (1900 + año); por ejemplo, si especifica 95, se usará el año 1995.

+

El método UTC difiere del constructor de Date de dos modos.

+ +

Si especifica un parámetro fuera del rango esperado, el método UTC modifica los otros parámetros para tener en cuenta su número. Por ejemplo, si usa 15 para el mes, el año será incrementado en 1 (año + 1), y 3 se usará para el mes.

+

Debido a que UTC es un método estático de Date, utilícelo siempre como Date.UTC(), en vez de como un método del objeto Date que usted cree.

+

Ejemplos

+

Ejemplo: Usando Date.UTC

+

La sentencia siguiente crea un objeto Date usando GMT en vez de la hora local:

+
fechaGmt = new Date(Date.UTC(96, 11, 1, 0, 0, 0));
+
+

Vea También

+ diff --git a/files/es/web/javascript/reference/global_objects/decodeuri/index.html b/files/es/web/javascript/reference/global_objects/decodeuri/index.html new file mode 100644 index 0000000000..dc8264eebe --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/decodeuri/index.html @@ -0,0 +1,38 @@ +--- +title: decodeURI() +slug: Web/JavaScript/Referencia/Objetos_globales/decodeURI +tags: + - JavaScript + - URI +translation_of: Web/JavaScript/Reference/Global_Objects/decodeURI +--- +
{{jsSidebar("Objects")}}
+ +

Sumario

+ +

Decodifica un Identificador de Recurso Uniforme (Uniform Resource Identifier, URI) previamente creado por {{jsxref("encodeURI")}} o por una rutina similar.

+ +

Sintaxis

+ +

decodeURI(encodedURI)

+ +

Parámetros

+ +
+
encodedURI
+
Un completo, Identificador de Recurso Uniforme.
+
+ +

Descripción

+ +

Sustituye a cada secuencia de escape codificado en URI con el carácter que representa.

+ +

No decodifica secuencias de escape que no se puedan haber introducido por {{jsxref("encodeURI")}}.

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/decodeuricomponent/index.html b/files/es/web/javascript/reference/global_objects/decodeuricomponent/index.html new file mode 100644 index 0000000000..05d9bd4b52 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/decodeuricomponent/index.html @@ -0,0 +1,42 @@ +--- +title: decodeURIComponent +slug: Web/JavaScript/Referencia/Objetos_globales/decodeURIComponent +tags: + - JavaScript + - JavaScript Reference + - URI +translation_of: Web/JavaScript/Reference/Global_Objects/decodeURIComponent +--- +
{{jsSidebar("Objects")}}
+ +

Sumario

+ +

Decodifica un Identificador de Recurso Uniforme (Uniform Resource Identifier, URI) previamente creado por {{jsxref("encodeURIComponent")}} o por una rutina similar.

+ +

Sintaxis

+ +

decodeURIComponent(encodedURI)

+ +

Parámetros

+ +
+
encodedURI
+
Un Identificador de Recurso Uniforme codificado.
+
 
+
+ +

Valor retornado

+ +

Retorna una nueva cadena representando la version decodificada del componente URI dado

+ +

Descripción

+ +

Sustituye a cada secuencia de escape codificado en URI con el carácter que representa.

+ +

Ver También

+ + diff --git a/files/es/web/javascript/reference/global_objects/encodeuri/index.html b/files/es/web/javascript/reference/global_objects/encodeuri/index.html new file mode 100644 index 0000000000..51277231e0 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/encodeuri/index.html @@ -0,0 +1,61 @@ +--- +title: encodeURI +slug: Web/JavaScript/Referencia/Objetos_globales/encodeURI +tags: + - JavaScript + - URI +translation_of: Web/JavaScript/Reference/Global_Objects/encodeURI +--- +
{{jsSidebar("Objects")}}
+ +

Sumario

+ +

Codifica un Identificador de Recurso Uniforme (Uniform Resource Identifier, URI) reemplazando cada instancia de ciertos carácteres por uno, dos o tres secuencias de escape representando el carácter codificado en UTF-8.

+ +

Sintaxis

+ +

encodeURI(URI)

+ +

Parámetros

+ +
+
URI
+
Un Identificador de Recurso Uniforme codificado.
+
+ +

Descripción

+ +

Se asume que el URI es un URI completo, a fin de no codificar caracteres reservados que tienen un significado especial en la URI.

+ +

encodeURI reemplaza todos los caracteres excepto los siguientes con las secuencias de escape UTF-8:

+ + + + + + + + + + + + + + + + + + + + +
TipoIncluye
Caracteres reservados; , / ? : @ & = + $
Caracteres No escapeAlfabéticos, dígitos decimales, - _ . ! ~ * ' ( )
Almohadilla#
+ +

Tenga en cuenta que encodeURI por sí sola no puede formar solicitudes correctas HTTP GET y POST, como por XMLHTTPRequests, porque "&", "+", y "=" no están codificados, los cuales son tratados como caracteres especiales en las solicitudes GET y POST. encodeURIComponent, sin embargo, codifica estos caracteres. Lo más probable es que estos comportamientos no sean compatibles en los navegadores Web.

+ +

Ver También

+ + diff --git a/files/es/web/javascript/reference/global_objects/encodeuricomponent/index.html b/files/es/web/javascript/reference/global_objects/encodeuricomponent/index.html new file mode 100644 index 0000000000..53af149970 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/encodeuricomponent/index.html @@ -0,0 +1,161 @@ +--- +title: encodeURIComponent +slug: Web/JavaScript/Referencia/Objetos_globales/encodeURIComponent +tags: + - JavaScript + - URI +translation_of: Web/JavaScript/Reference/Global_Objects/encodeURIComponent +--- +
{{jsSidebar("Objects")}}
+ +

Resumen

+ +

El método encodeURIComponent() codifica un componente URI (Identificador Uniforme de Recursos) al reemplazar cada instancia de ciertos caracteres por una, dos, tres o cuatro secuencias de escape que representan la codificación UTF-8 del carácter (solo serán cuatro secuencias de escape para caracteres compuestos por dos carácteres "sustitutos").

+ +

Sintaxis

+ +
encodeURIComponent(str);
+ +

Parámetros

+ +
+
str
+
Cadena. Un componente de un URI.
+
+ +

Descripción

+ +

encodeURIComponent escapes all characters except the following: alphabetic, decimal digits, - _ . ! ~ * ' ( )

+ +

Note that an {{jsxref("Objetos_globales/URIError", "URIError")}} will be thrown if one attempts to encode a surrogate which is not part of a high-low pair, e.g.,

+ +
// high-low pair ok
+alert(encodeURIComponent('\uD800\uDFFF'));
+
+// lone high surrogate throws "URIError: malformed URI sequence"
+alert(encodeURIComponent('\uD800'));
+
+// lone low surrogate throws "URIError: malformed URI sequence"
+alert(encodeURIComponent('\uDFFF'));
+
+ +

To avoid unexpected requests to the server, you should call encodeURIComponent on any user-entered parameters that will be passed as part of a URI. For example, a user could type "Thyme &time=again" for a variable comment. Not using encodeURIComponent on this variable will give comment=Thyme%20&time=again. Note that the ampersand and the equal sign mark a new key and value pair. So instead of having a POST comment key equal to "Thyme &time=again", you have two POST keys, one equal to "Thyme " and another (time) equal to again.

+ +

For application/x-www-form-urlencoded (POST), spaces are to be replaced by '+', so one may wish to follow a encodeURIComponent replacement with an additional replacement of "%20" with "+".

+ +

To be more stringent in adhering to RFC 3986 (which reserves !, ', (, ), and *), even though these characters have no formalized URI delimiting uses, the following can be safely used:

+ +
function fixedEncodeURIComponent (str) {
+  return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
+}
+
+ +

Examples

+ +

The following example provides the special encoding required within UTF-8 Content-Disposition and Link server response header parameters (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);
+}
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
ECMAScript 3rd Edition.StandardInitial definition.
{{SpecName('ES5.1', '#sec-15.1.3.4', 'encodeURIComponent')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-encodeuricomponent-uricomponent', 'encodeURIComponent')}}{{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() }}
+
+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/error/error/index.html b/files/es/web/javascript/reference/global_objects/error/error/index.html new file mode 100644 index 0000000000..114831c512 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/error/error/index.html @@ -0,0 +1,69 @@ +--- +title: Constructor Error() +slug: Web/JavaScript/Referencia/Objetos_globales/Error/constructor_Error +tags: + - Constructor + - JavaScript + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Error/Error +--- +
{{JSRef}}
+ +

El constructor Error crea un objeto Error.

+ +

Sintaxis

+ +
new Error([message[, fileName[, lineNumber]]])
+ +

Parámetros

+ +
+
message{{Optional_Inline}}
+
Una descripción del error legible para los humanos.
+
fileName {{Optional_Inline}}{{Non-standard_inline}}
+
El valor de la propiedad fileName en el objeto Error creado. De manera predeterminada, el nombre del archivo que contiene el código que llamó al constructor Error().
+
lineNumber {{Optional_Inline}}{{Non-standard_inline}}
+
El valor de la propiedad lineNumber en el objeto Error creado. De manera predeterminada, el número de línea que contiene la invocación del constructor Error().
+
+ +

Ejemplos

+ +

Llamada a función o construcción new

+ +

Cuando se usa Error como una función, sin {{JSxRef("Operators/new", "new")}}, devolverá un objeto Error. Por lo tanto, una simple llamada a Error producirá el mismo resultado que la construcción de un objeto Error mediante la palabra clave new.

+ +
// esto...
+const x = Error('¡Fui creado usando una llamada a función!')
+
+    // ...tiene la misma funcionalidad que esta.
+const y = new Error('¡Fui construido con la palabra clave "new"!') 
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-error-constructor', 'Error constructor')}}
+ +

Compatibilidad del navegador

+ +
+ + +

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

+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/error/filename/index.html b/files/es/web/javascript/reference/global_objects/error/filename/index.html new file mode 100644 index 0000000000..8e633934e0 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/error/filename/index.html @@ -0,0 +1,48 @@ +--- +title: Error.prototype.fileName +slug: Web/JavaScript/Referencia/Objetos_globales/Error/fileName +tags: + - JavaScript + - No estandar + - Propiedad + - Prototipo +translation_of: Web/JavaScript/Reference/Global_Objects/Error/fileName +--- +
{{jsRef}} {{non-standard_header}}
+ +

La propiedad fileName contiene la ruta al archivo que generó este error.

+ +

Descripción

+ +

Esta propiedad no estándar contiene la ruta al archivo que generó este error. Si se llama desde un contexto de depuración, devuelve las herramientas de desarrollo de Firefox, por ejemplo, "código de evaluación del depurador".

+ +

Ejemplos

+ +

Usar fileName

+ +
var e = new Error('No se pudo procesar la entrada');
+throw e;
+// e.fileName podría verse como "file:///C:/ejemplo.html"
+
+ +

Especificaciones

+ +

No forma parte de ningún estándar.

+ +

Compatibilidad del navegador

+ +
+
+ + +

{{Compat("javascript.builtins.Error.fileName")}}

+
+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/error/index.html b/files/es/web/javascript/reference/global_objects/error/index.html new file mode 100644 index 0000000000..03cbd038da --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/error/index.html @@ -0,0 +1,219 @@ +--- +title: Error +slug: Web/JavaScript/Referencia/Objetos_globales/Error +tags: + - Error + - JavaScript +translation_of: Web/JavaScript/Reference/Global_Objects/Error +--- +
{{JSRef}}
+ +

Los objetos Error se lanzan cuando ocurren errores en tiempo de ejecución. También puedes utilizar el objeto Error como objeto base para excepciones definidas por el usuario. Ve más adelante los tipos de errores estándar integrados.

+ +

Descripción

+ +

Los errores en tiempo de ejecución dan como resultado la creación y lanzamiento de nuevos objetos Error.

+ +

Tipos Error

+ +

Además del constructor genérico Error, hay otros siete constructores de errores en el núcleo de JavaScript. Para conocer las excepciones de lado del cliente, consulta {{JSxRef("../Guide/Control_de_flujo_y_manejo_de_errores", "Declaraciones para el manejo de excepciones", "#Sentencias_de_manejo_de_excepciones", 1)}}.

+ +
+
{{JSxRef("EvalError")}}
+
Crea una instancia que representa un error que ocurre con respecto a la función global {{JSxRef("eval", "eval()")}}.
+
{{JSxRef("InternalError")}}
+
Crea una instancia que representa un error que ocurre cuando se produce un error interno en el motor de JavaScript. Por ejemplo: "demasiada recursividad".
+
{{JSxRef("RangeError")}}
+
Crea una instancia que representa un error que ocurre cuando una variable numérica o parámetro está fuera de su rango válido.
+
{{JSxRef("ReferenceError")}}
+
Crea una instancia que representa un error que ocurre cuando se quita la referencia a una referencia no válida.
+
{{JSxRef("SyntaxError")}}
+
Crea una instancia que representa un error de sintaxis.
+
{{JSxRef("TypeError")}}
+
Crea una instancia que representa un error que ocurre cuando una variable o parámetro no es de un tipo válido.
+
{{JSxRef("URIError")}}
+
Crea una instancia que representa un error que ocurre cuando {{JSxRef("encodeURI", "encodeURI()")}} o {{JSxRef("decodeURI", "decodeURI()")}} pasan parámetros no válidos.
+
+ +

Constructor

+ +
+
{{JSxRef("Objetos_globales/Error/Error", "Error()")}}
+
Crea un nuevo objeto Error.
+
+ +

Métodos estáticos

+ +
+
{{JSxRef("Error.captureStackTrace()")}}
+
Una función V8 no estándar que crea la propiedad {{JSxRef("Error.prototype.stack", "stack")}} en una instancia de Error.
+
+ +

Propiedades de la instancia

+ +
+
{{jsxref("Error.prototype.message")}}
+
Mensaje de error.
+
{{jsxref("Error.prototype.name")}}
+
Nombre del error.
+
{{jsxref("Error.prototype.description")}}
+
Una propiedad no estándar de Microsoft para la descripción del error. Similar a {{jsxref("Error.prototype.message", "message")}}.
+
{{jsxref("Error.prototype.number")}}
+
Una propiedad no estándar de Microsoft para un número de error.
+
{{jsxref("Error.prototype.fileName")}}
+
Una propiedad no estándar de Mozilla para la ruta al archivo que generó este error.
+
{{JSxRef("Error.prototype.lineNumber")}}
+
Una propiedad no estándar de Mozilla para el número de línea en el archivo que generó este error.
+
{{JSxRef("Error.prototype.columnNumber")}}
+
Una propiedad no estándar de Mozilla para el número de columna en la línea que generó este error.
+
{{JSxRef("Error.prototype.stack")}}
+
Una propiedad no estándar de Mozilla para un seguimiento de la pila.
+
+ +

Métodos de instancia

+ +
+
{{jsxref("Error.prototype.toString()")}}
+
Devuelve una cadena que representa el objeto especificado. Redefine el método {{JSxRef("Object.prototype.toString()")}}.
+
+ +

Ejemplos

+ +

Lanzar un error genérico

+ +

Normalmente, creas un objeto Error con la intención de generarlo utilizando la palabra clave {{JSxRef("Sentencias/throw", "throw")}}. Puedes manejar el error usando la construcción {{JSxRef("Sentencias/try...catch", "try...catch")}}:

+ +
try {
+  throw new Error('¡Ups!')
+} catch (e) {
+  console.error(e.name + ': ' + e.message)
+}
+
+ +

Manejar de un error específico

+ +

Puede elegir manejar solo tipos de error específicos probando el tipo de error con la propiedad {{JSxRef("Object.prototype.constructor", "constructor")}} del error o, si estás escribiendo para motores JavaScript modernos, la palabra clave {{JSxRef("Operators/instanceof", "instanceof")}}:

+ +
try {
+  foo.bar()
+} catch (e) {
+  if (e instanceof EvalError) {
+    console.error(e.name + ': ' + e.message)
+  } else if (e instanceof RangeError) {
+    console.error(e.name + ': ' + e.message)
+  }
+  // ... etc
+}
+
+ +

Tipos Error personalizados

+ +

Posiblemente desees definir tus propios tipos de error derivados de Error para poder lanzarlo con throw new MyError() y usar instanceof MyError para verificar el tipo de error en el controlador de excepciones. Esto da como resultado un código de manejo de errores más limpio y consistente.

+ +

Consulta "¿Cuál es una buena manera de extender Error en JavaScript?" en StackOverflow para una discusión en profundidad.

+ +

Clase Error personalizado en ES6

+ +
+

Las versiones de Babel anteriores a la 7 pueden manejar métodos de clase CustomError, pero solo cuando se declaran con {{JSxRef("Objetos_globales/Object/defineProperty", "Object.defineProperty()")}}. De lo contrario, las versiones antiguas de Babel y otros transpiladores no manejarán correctamente el siguiente código sin configuración adicional.

+
+ +
+

Algunos navegadores incluyen el constructor CustomError en el seguimiento de la pila cuando se utilizan clases de ES2015.

+
+ +
class CustomError extends Error {
+  constructor(foo = 'bar', ...params) {
+    // Pasa los argumentos restantes (incluidos los específicos del proveedor) al constructor padre
+    super(...params)
+
+    // Mantiene un seguimiento adecuado de la pila para el lugar donde se lanzó nuestro error (solo disponible en V8)
+    if (Error.captureStackTrace) {
+      Error.captureStackTrace(this, CustomError)
+    }
+
+    this.name = 'CustomError'
+    // Información de depuración personalizada
+    this.foo = foo
+    this.date = new Date()
+  }
+}
+
+try {
+  throw new CustomError('baz', 'bazMessage')
+} catch(e) {
+  console.error(e.name)    // CustomError
+  console.error(e.foo)     // baz
+  console.error(e.message) // bazMessage
+  console.error(e.stack)   // stacktrace
+}
+ +

Objeto Error personalizado ES5

+ +
+

Todos los navegadores incluyen el constructor CustomError en el seguimiento de la pila cuando se usa una declaración de prototipo.

+
+ +
function CustomError(foo, message, fileName, lineNumber) {
+  var instance = new Error(message, fileName, lineNumber);
+  instance.name = 'CustomError';
+  instance.foo = foo;
+  Object.setPrototypeOf(instance, Object.getPrototypeOf(this));
+  if (Error.captureStackTrace) {
+    Error.captureStackTrace(instance, CustomError);
+  }
+  return instance;
+}
+
+CustomError.prototype = Object.create(Error.prototype, {
+  constructor: {
+    value: Error,
+    enumerable: false,
+    writable: true,
+    configurable: true
+  }
+});
+
+if (Object.setPrototypeOf){
+  Object.setPrototypeOf(CustomError, Error);
+} else {
+  CustomError.__proto__ = Error;
+}
+
+try {
+  throw new CustomError('baz', 'bazMessage');
+} catch(e){
+  console.error(e.name); // CustomError
+  console.error(e.foo); // baz
+  console.error(e.message); // bazMessage
+}
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-error-objects', 'Error')}}
+ +

Compatibilidad del navegador

+ +
+ + +

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

+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/error/linenumber/index.html b/files/es/web/javascript/reference/global_objects/error/linenumber/index.html new file mode 100644 index 0000000000..0efec0696f --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/error/linenumber/index.html @@ -0,0 +1,101 @@ +--- +title: Error.prototype.lineNumber +slug: Web/JavaScript/Referencia/Objetos_globales/Error/lineNumber +translation_of: Web/JavaScript/Reference/Global_Objects/Error/lineNumber +--- +
No es una norma
+Esta característica no es una norma y no está en la lista de normas. No la utilice en sitios de producción que enfrenta la Web: no va a funcionar para todos los usuarios. También puede haber grandes incompatibilidades entre implementaciones y el comportamiento puede cambiar en el futuro.
+ +
 
+ +
La propiedad lineNumber contiene el número de linea en el archivo que arrojó el error.
+ +
 
+ +

Ejemplos

+ +

Utilizando lineNumber

+ +
var e = new Error('No fue posible analizar el dato introducido');
+throw e;
+console.log(e.lineNumber) // 2
+
+ +

Ejemplo alternativo utilizando el evento 'error'

+ +
window.addEventListener('error', function(e) {
+  console.log(e.lineno); // 5
+});
+var e = new Error('No fue posible analizar el dato introducido');
+throw e;
+
+ +

Esta es una norma soportada por Chrome, Firefox entre otros.

+ +

Especificaciones

+ +

No forma parte de ninguna especificación. No es una norma.

+ + + +
+

 

+ +

Tabla de compatibilidad

+ + + + + + + + + + + + + + + + + + + + +
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básicoCompatible [1]CompatibleNo compatibleNo compatibleNo compatible
+ +

 [1] Objeto error en errores manejados.

+ + + + + + + + + + + + + + + + + + + + + + +
CaracteristicaAndroidChorme para AndroidFirefox Móvil (Gecko)IE MóvilOpera MóvilSafari Móvil
Soporte básicoNo compatibleNo compatibleCompatibleNo compatibleNo compatibleNo compatible
+
+ +

 

+ +

Vea también:

+ + diff --git a/files/es/web/javascript/reference/global_objects/error/message/index.html b/files/es/web/javascript/reference/global_objects/error/message/index.html new file mode 100644 index 0000000000..3f14983d6e --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/error/message/index.html @@ -0,0 +1,114 @@ +--- +title: Error.prototype.message +slug: Web/JavaScript/Referencia/Objetos_globales/Error/message +translation_of: Web/JavaScript/Reference/Global_Objects/Error/message +--- +
{{JSRef}}
+ +

La propiedad message es una descripción legible del error.

+ +

Descripción

+ +

Esta propiedad contiene una breve descripción del error, si está disponible o ha sido fijado. SpiderMonkey hace un amplio uso de esta propiedad para las excepciones. Esta porpiedad combinada con la propiedad {{jsxref("Error.prototype.name", "name")}} es usada por el método {{jsxref("Error.prototype.toString()")}} para crear una cadena de texto del objeto Error.

+ +

Por defecto, la propiedad message es una cadena vacía, pero se puede especificar un mensaje a través del primer parámetro del {{jsxref("Error", "constructor Error")}}.

+ +

Ejemplo

+ +

Lanzar un error personalizado

+ +
var e = new Error('No se pudo analizar la entrada');
+// e.message es 'No se pudo analizar la entrada'
+throw e;
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial.
{{SpecName('ES5.1', '#sec-15.11.4.3', 'Error.prototype.message')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-error.prototype.message', 'Error.prototype.message')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-error.prototype.message', 'Error.prototype.message')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

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

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/error/name/index.html b/files/es/web/javascript/reference/global_objects/error/name/index.html new file mode 100644 index 0000000000..841cc7cbc4 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/error/name/index.html @@ -0,0 +1,58 @@ +--- +title: Error.prototype.name +slug: Web/JavaScript/Referencia/Objetos_globales/Error/name +tags: + - Error + - JavaScript + - Propiedad + - Prototipo +translation_of: Web/JavaScript/Reference/Global_Objects/Error/name +--- +
{{JSRef}}
+ +

La propiedad name representa un nombre para el tipo de error. El valor inicial es "Error".

+ +

Descripción

+ +

De forma predeterminada, las instancias {{JSxRef("Error")}} reciben el nombre "Error". La propiedad name, además de la propiedad {{JSxRef("Error.prototype.message", "message")}}, la utiliza el método {{JSxRef("Error.prototype.toString()")}} para crear una representación de cadena del error.

+ +

Ejemplos

+ +

Lanzar un error personalizado

+ +
var e = new Error('Entrada mal formada'); // e.name es 'Error'
+
+e.name = 'ParseError';
+throw e;
+// e.toString() devolverá 'ParseError: Entrada mal formada'
+
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-error.prototype.name', 'Error.prototype.name')}}
+ +

Compatibilidad del navegador

+ +
+
+ + +

{{Compat("javascript.builtins.Error.name")}}

+
+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/error/tosource/index.html b/files/es/web/javascript/reference/global_objects/error/tosource/index.html new file mode 100644 index 0000000000..fb1b429884 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/error/tosource/index.html @@ -0,0 +1,60 @@ +--- +title: Error.prototype.toSource() +slug: Web/JavaScript/Referencia/Objetos_globales/Error/toSource +tags: + - JavaScript + - No estandar + - Prototipo + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Error/toSource +--- +
{{JSRef}} {{non-standard_header}}
+ +

El método toSource() devuelve código que podría evaluar el mismo error.

+ +

Sintaxis

+ +
e.toSource()
+ +

Valor de retorno

+ +

Una cadena que contiene el código fuente del error.

+ +

Ejemplos

+ +

Usar toSource

+ +

Llamar al método toSource de una instancia {{JSxRef("Error")}} (incluido {{JSxRef("Global_Objects/Error", "NativeErrors", "#Error_types")}}) devolverá una cadena que contiene el código fuente del error. Esta cadena se puede evaluar para crear un objeto (aproximadamente) igual. Naturalmente, la cadena que contiene la fuente sigue la estructura del constructor {{JSxRef("Error")}}. Por ejemplo:

+ +
(newname(message ,fileName,lineNumber))
+
+ +

donde estos atributos corresponden a las propiedades respectivas de la instancia de error.

+ +
+

Nota: Ten en cuenta que las propiedades utilizadas por el método toSource en la creación de esta cadena son mutables y es posible que no reflejen con precisión la función utilizada para crear una instancia de error o el nombre de archivo o número de línea donde ocurrió un error real.

+
+ +

Especificaciones

+ +

No forma parte de ningún estándar.

+ +

Compatibilidad del navegador

+ +
+
+ + +

{{Compat("javascript.builtins.Error.toSource")}}

+
+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/error/tostring/index.html b/files/es/web/javascript/reference/global_objects/error/tostring/index.html new file mode 100644 index 0000000000..f4ea4a44b9 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/error/tostring/index.html @@ -0,0 +1,98 @@ +--- +title: Error.prototype.toString() +slug: Web/JavaScript/Referencia/Objetos_globales/Error/toString +tags: + - JavaScript + - Prototipo + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Error/toString +--- +
{{JSRef}}
+ +

El método toString() devuelve una cadena que representa el objeto {{JSxRef("Error")}} especificado.

+ +

Sintaxis

+ +
e.toString()
+ +

Valor de retorno

+ +

Una cadena que representa el objeto {{JSxRef("Error")}} especificado.

+ +

Descripción

+ +

El objeto {{JSxRef("Error")}} redefine el método {{JSxRef("Object.prototype.toString()")}} heredado por todos los objetos. Su semántica es la siguiente (asumiendo que {{JSxRef("Object")}} y {{JSxRef("String")}} tienen sus valores originales):

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

Ejemplos

+ +

Usar toString()

+ +
var e = new Error('fatal error');
+console.log(e.toString()); // 'Error: error fatal'
+
+e.name = undefined;
+console.log(e.toString()); // 'Error: error fatal'
+
+e.name = '';
+console.log(e.toString()); // 'error fatal'
+
+e.message = undefined;
+console.log(e.toString()); // ''
+
+e.name = 'hola';
+console.log(e.toString()); // 'hola'
+
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-error.prototype.tostring', 'Error.prototype.toString')}}
+ +

Compatibilidad del navegador

+ +
+ + +

{{Compat("javascript.builtins.Error.toString")}}

+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/escape/index.html b/files/es/web/javascript/reference/global_objects/escape/index.html new file mode 100644 index 0000000000..4925618b0e --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/escape/index.html @@ -0,0 +1,91 @@ +--- +title: escape() +slug: Web/JavaScript/Referencia/Objetos_globales/escape +tags: + - JavaScript + - Obsoleto + - escape +translation_of: Web/JavaScript/Reference/Global_Objects/escape +--- +
{{Deprecated_header}} Advertencia escape() no esta estrictamente en desuso("eliminada por los estándares Web"), esta definida en  Anexo B El estándar ECMA-262 , cuya introducción establece: +
… Todos las características especificas y comportamientos del lenguaje en este anexo tienen mas de una caracterísitca indeseable y en ausencia del legado sera eliminada de esta especificación. …
+… Los programadores no deben usar o suponer la existencia de estas características y/o comportamientos al escribir nuevo código ECMAScript …
+
+ +
+ +

La función obsoleta escape() crea una nueva cadena de caracteres en los que ciertos caracteres han sido sustituidos por una secuencia hexadecimal de escape.

+ +

Sintaxis

+ +
escape(str)
+ +

Parametros

+ +
+
str
+
Cadena a codificar.
+
+ +

Devuelve

+ +

Una nueva cadena en la que ciertos caracteres han sido sustituidos.

+ +

Descripción

+ +

La función escape es una propiedad del objeto global. SLos caracteres especiales son codificados a excepción de: @*_+-./

+ +

La forma hexadecimal de los caracteres cuyo valor es 0xFF o menor, es una secuencia de escape de dos digitos: %xx. Para caracteres un valor superior, se usa el fomato de cuatro digitos: %uxxxx.

+ +

Ejemplos

+ +
escape('abc123');     // "abc123"
+escape('äöü');        // "%E4%F6%FC"
+escape('ć');          // "%u0107"
+
+// caracteres especiales
+escape('@*_+-./');    // "@*_+-./"
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition.
{{SpecName('ES5.1', '#sec-B.2.1', 'escape')}}{{Spec2('ES5.1')}}Defined in the (informative) Compatibility Annex B
{{SpecName('ES6', '#sec-escape-string', 'escape')}}{{Spec2('ES6')}}Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers
{{SpecName('ESDraft', '#sec-escape-string', 'escape')}}{{Spec2('ESDraft')}}Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers
+ +

Compatibilidad con navegadores

+ +

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

+ +

Ver más

+ + diff --git a/files/es/web/javascript/reference/global_objects/eval/index.html b/files/es/web/javascript/reference/global_objects/eval/index.html new file mode 100644 index 0000000000..52375445c4 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/eval/index.html @@ -0,0 +1,309 @@ +--- +title: eval +slug: Web/JavaScript/Referencia/Objetos_globales/eval +tags: + - JavaScript + - eval +translation_of: Web/JavaScript/Reference/Global_Objects/eval +--- +
{{jsSidebar("Objects")}}
+ +

Resumen

+ +

La función eval() evalúa un código JavaScript representado como una cadena de caracteres (string), sin referenciar a un objeto en particular.

+ +

Sintaxis

+ +
eval(cadena de caracteres o string)
+
+ +

Parámetros

+ +
+
cadena de caracteres (string)
+
Una cadena de caracteres (string) que representa una expresión, sentencia o secuencia de sentencias en JavaScript. La expresión puede incluir variables y propiedades de objetos existentes.
+
+

Valores retornados o devueltos

+
+
+ +

El valor que resulta de la evaluación del código proporcionado. Si este valor está vacío. {{jsxref("undefined")}} (artículo en inglés) es devuelto.

+ +

Descripción

+ +

eval() es una propiedad de la función del objeto global.

+ +

El argumento de la función eval es una cadena de caracteres. Si la cadena de caracteres representa una expresión, eval() evalúa la expresión. Si el argumento representa una o más sentencias JavaScript, eval() evalúa las sentencias. No se debe llamar a eval() para evaluar una expresión aritmética; ya que JavaScript evalúa las expresiones aritméticas automáticamente.

+ +

Si construye una expresión aritmética como una cadena de caracteres, puede usar eval() para evaluarla más tarde. Por ejemplo, suponga que tiene la variable x. Puede posponer la evaluación de una expresión que involucre a x mediante la asignación del valor de la cadena de caracteres de la expresión, asignando "3 * x + 2" a la variable, y entonces llamar a eval() posteriormente en el script.

+ +

Si el argumento de eval() no es una cadena de caracteres, eval() devuelve el argumento sin cambio. En el siguiente ejemplo, el constructor String es especificado, y eval() devuelve un objeto String en lugar de evaluar la cadena de caracteres.

+ +
eval(new String("2 + 2")); // devuelve un objeto String que contiene "2 + 2"
+eval("2 + 2");             // devuelve 4
+
+ +

Puede trabajar sobre esta limitación de una manera genérica utilizando toString().

+ +
var expresion = new String("2 + 2");
+eval(expresion.toString());
+
+ +

Si utiliza la función eval() indirectamente, invocándola a través de una referencia distinta de eval, a partir de ECMAScript 5, ésta funciona en el ámbito global en lugar de hacerlo en el ámbito local; esto quiere decir, por ejemplo, que las declaraciones de función crean funciones globales, y que el código siendo evaluado no tiene acceso a las variables locales dentro del ámbito en donde está siendo llamada.

+ +
function test() {
+  var x = 2, y = 4;
+  console.log(eval("x + y"));  // Llamada directa, utiliza el ámbito local, el resultado es 6
+  var geval = eval;
+  console.log(geval("x + y")); // Llamada indirecta, utiliza el ámbito global, através de ReferenceError por que `x` es indefinida
+}
+ +

No utilice eval innecesariamente

+ +

eval() es una función peligrosa, quel ejecuta el código el cual es pasado con los privilegios de quien llama.  Si ejecuta eval() con una cadena de carcteres que podría ser afectada por un elemento malicioso, podría terminar ejecutando código malicioso dentro de la computadora del usuario con los permisos de su página o extensión web . Más importante aún, una parte del código de terceros podría accesar al ámbito en el cual eval() fue invocada, lo que puede permitir la entrada a posibles ataques de formas a las que el constructor {{jsxref("Global_Objects/Function", "Function")}} (art. en inglés) el cual es similar, no es susceptible.

+ +

eval() es generalmente también más lenta que otras alternativas desde que se invoca en el intérprte de JS, mientras que otros muchos constructores son optimizados por los motores JS modernos.

+ +

Existen alternativas más seguras (y rápidas) que eval() para casos de uso común.

+ +

Accediendo a propiedades de los miembros

+ +

No debería utilizar eval() con el fin de convertir nombres de propiedades en propiedades. Observe el siguiente ejemplo en el cual la función getNombreCampo(n) devuelve el nombre del elemento del formulario especificado como una cadena. La primera sentencia asigna el valor de cadena del tercer elemento del formulario a la variable campo. La segunda sentencia utiliza eval para mostrar el valor del elemento del formulario.

+ +
var campo = getNombreCampo(3);
+document.write("El campo llamado ", campo, " tiene un valor de ", eval(campo + ".value"));
+
+ +

Sin embargo, eval() no es necesario en este código. De hecho, su uso aquí no se recomienda. En su lugar, utilice los operadores de miembro (art. en inglés), que son mucho más rápidos y seguros:

+ +
var campo = getFieldName(3);
+document.write("El campo llamado ", campo, " tiene un valor de ", campo[valor]);
+
+ +

Considere ahora este nuevo ejemplo, en donde la propiedad del objeto a ser accesado no es conocida hasta que el código es ejecutado. Esto puede hacerse con eval:

+ +
var obj = { a: 20, b: 30 };
+var nombreProp = obtenerNombreProp();  // devuelve "a" o "b"
+
+eval( "var resultado = obj." + nombreProp );
+ +

Y con el uso de los accesores de propiedades (artículo en inglés), el cual es mucho más rápido y seguro, sería así:

+ +
var obj = { a: 20, b: 30 };
+var nombreProp = obtenerNombreProp(); // devuelve "a" o "b"
+var resultado = obj[ nombreProp ];  //  obj[ "a" ] es el mismo que obj.a
+ +

Puede incluso utilizar este método para acceder a las propiedades de los descendientes. Utilizando eval() esto sería de la siguiente forma:

+ +
var obj = {a: {b: {c: 0}}};
+var propPath = getPropPath();  // returns e.g. "a.b.c"
+
+eval( "var result = obj." + propPath );
+ +

Evitando eval(), esto podría hacerse dividiendo la ruta de propiedad y haciendo un bucle a través de las diferentes propiedades:

+ +
function getDescendantProp(obj, desc) {
+  var arr = desc.split(".");
+  while(arr.length) {
+    obj = obj[arr.shift()];
+  }
+  return obj;
+}
+
+var obj = {a: {b: {c: 0}}};
+var propPath = getPropPath();  // returns e.g. "a.b.c"
+var result = getDescendantProp(obj, propPath);
+ +

Estableciendo una propiedad que funcione de modo similar:

+ +
function setDescendantProp(obj, desc, value) {
+  var arr = desc.split(".");
+  while(arr.length > 1) {
+    obj = obj[arr.shift()];
+  }
+  obj[arr[0]] = value;
+}
+
+var obj = {a: {b: {c: 0}}};
+var propPath = getPropPath();  // returns e.g. "a.b.c"
+var result = setDescendantProp(obj, propPath, 1);  // test.a.b.c will now be 1
+ +

Utilice funciones en lugar de evaluar fragmentos de código

+ +

JavaScript tiene funciones de primera clase (artículo en inglés), lo que quiere decir que usted puede pasar funciones como argumentos a otras APIs, almacenarlas en variables y propiedades de objetos, etc. Muchas APIs de DOM están diseñadas con esto en mente, o sea que usted puede (y debería) escribir:

+ +
// instead of setTimeout(" ... ", 1000) use:
+setTimeout(function() { ... }, 1000);
+
+// instead of elt.setAttribute("onclick", "...") use:
+elt.addEventListener("click", function() { ... } , false);
+ +

Las clausuras o cierres (art. en inglés) son muy útiles como forma de crear funciones parametrizadas sin la concatenación de cadenas de caracteres o strings.

+ +

Analizando JSON (convirtiendo cadenas de caracteres (strings) hacia objetos de JavaScript)

+ +

Si la cadena de caracteres que usted esta llamando eval() contiene datos (por ejemplo, un array: "[1, 2, 3]"), en contraposición al código, debería considerar un cambio a JSON (art. en inglés), el cual permite a la cadena de caracteres utilizar un subconjunto de sintaxis de JavaScript para representar los datos. Vea también Descargando JSON y JavaScript en extensiones (art. en inglés).

+ +

Observe, que ya que la sintaxis de JSON es limitada en comparación con la sintaxis de JavaScript, muchas literales válidas de JavaScript no serán analizadas como JSON. Por ejemplo, seguir comas no está permitido en JSON, y los nombres de propiedades (keys) en literales de objeto deben ser entrecomilladas. Asegúrese de utilizar un serializados de JSON para generar cadenas de caracteres que posteriormente sean analizadas como JSON.

+ +

Pasar datos en lugar de código

+ +

Por ejemplo, una extensión diseñada para arrastar contenido de páginas web podría tener reglas de arrastre definidas en XPath (art. en inglés) en lugar de código JavaScript.

+ +

Ejecutar código sin privilegos limitados

+ +

Si usted debe ejecutar código, considere ejecutarlo con privilegios reducidos. Este consejo aplica principalmente para las extensiones y las aplicaciones XUL, para lo cual puede utilizar Components.utils.evalInSandbox (art. en inglés).

+ +

Ejemplos

+ +

Los siguientes ejemplos muestran el resultado usando document.write. En JavaScript del lado servidor, puede mostrar el mismo resultado llamando a la función write en vez de document.write.

+ +

Utlizando eval

+ +

En el siguiente código, las dos sentencias que contienen eval devuelven 42. La primera evalúa la cadena "x + y + 1"; la segunda evalúa la cadena "42".

+ +
var x = 2;
+var y = 39;
+var z = "42";
+eval("x + y + 1"); // returns 42
+eval(z);           // returns 42
+
+ +

Utilizando eval para evaluar una cadena de caracteres (string) como sentencias de JavaScript

+ +

El siguiente ejemplo utiliza eval para evaluar una cadena de caracteres str. Esta cadena consiste de sentencias de JavaScript que abren un diálogo Alert y asignan a z un valor de 42 si x es cinco, y asigna 0 a z en caso contrario. Cuando se ejecuta la segunda sentencia, eval ocasionará que estas sentencias sean ejecutadas, y también evaluará el conjunto de sentencias y devolverá que el valor es asignado a z.

+ +
var x = 5;
+var str = "if (x == 5) {alert('z is 42'); z = 42;} else z = 0; ";
+
+document.write("<P>z es ", eval(str));
+
+ +

La última espresión es evaluada

+ +

eval() devuelve el valor de la última expresión evaluada

+ +
var str = "if ( a ) { 1+1; } else { 1+2; }";
+var a = true;
+var b = eval(str);  // devuelve 2
+
+console.log("b is : " + b);
+
+a = false;
+b = eval(str);  // devuelve 3
+
+console.log("b is : " + b);
+ +

eval como una cadena de caracteres (string) definiendo funciones requiere "(" y ")" como prefijo y sufijo

+ +
var fctStr1 = "function a() {}"
+var fctStr2 = "(function a() {})"
+var fct1 = eval(fctStr1)  // devuelve undefined
+var fct2 = eval(fctStr2)  // deuelve una función
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificacionesStatusComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial.
{{SpecName('ES5.1', '#sec-15.1.2.1', 'eval')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-eval-x', 'eval')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-eval-x', 'eval')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad de navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
Carác.ChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Observaciones específicas para Gecko

+ + + +

Compatibilidad Hacia Atrás

+ +

JavaScript 1.3 y anteriores

+ +

Puede usar eval indirectamente, aunque ésto está desaconsejado.

+ +

JavaScript 1.1

+ +

eval también es un método de todos los objetos.

+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/evalerror/index.html b/files/es/web/javascript/reference/global_objects/evalerror/index.html new file mode 100644 index 0000000000..13fbe371e4 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/evalerror/index.html @@ -0,0 +1,163 @@ +--- +title: EvalError +slug: Web/JavaScript/Referencia/Objetos_globales/EvalError +tags: + - Error +translation_of: Web/JavaScript/Reference/Global_Objects/EvalError +--- +
{{JSRef}}
+ +

El objeto EvalError indica un error con respecto a la función global {{jsxref("Global_Objects/eval", "eval()")}}. Esta excepción ya no es lanzada por JavaScript, sin embargo, el objeto EvalError se mantiene por motivos de compatibilidad.

+ +

Sintaxis

+ +
new EvalError([mensaje[, nombreArchivo[, lineaNumero]]])
+ +

Parámetros

+ +
+
mensaje
+
Opcional. Descripción del error en formato legible.
+
nombreArchivo{{non-standard_inline}}
+
+

Opcional. El nombre del archivo que contiene el código que causó la excepción.

+
+
lineaNumero{{non-standard_inline}}
+
+

Opcional. El número de línea del código que causó la excepción.

+
+
+ +

Propiedades

+ +
+
{{jsxref("EvalError.prototype")}}
+
+

Permite la adición de propiedades a un objeto EvalError.

+
+
+ +

Métodos

+ +

El objeto global EvalError no contiene ningún método propio, sin embargo, hereda algunos métodos a través de la cadena de prototipos.

+ +

Instancias de EvalError

+ +

Propiedades

+ +
{{page('/es/docs/Web/JavaScript/Referencia/Objetos_globales/Error/prototype', 'Properties')}}
+ +

Métodos

+ +
{{page('/es/docs/Web/JavaScript/Referencia/Objetos_globales/Error/prototype', 'Métodos')}}
+ +

Ejemplos

+ +

EvalError no se usa en la especificación actual de ECMAScript y, por ende, no será lanzado en tiempo de ejecución. Sin embargo, el mismo permanece para compatibilidad con versiones anteriores de la especificación.

+ +

Creando un 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"
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial.
{{SpecName('ES5.1', '#sec-15.11.6.1', 'EvalError')}}{{Spec2('ES5.1')}}No usado en esta especificación. Presente por compatibilidad con versiones anteriores.
{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-evalerror', 'EvalError')}}{{Spec2('ES6')}}No usado en esta especificación. Presente por compatibilidad con versiones anteriores.
{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-evalerror', 'EvalError')}}{{Spec2('ESDraft')}}
+ +

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

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/function/apply/index.html b/files/es/web/javascript/reference/global_objects/function/apply/index.html new file mode 100644 index 0000000000..07f47b42f2 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/function/apply/index.html @@ -0,0 +1,233 @@ +--- +title: Function.prototype.apply() +slug: Web/JavaScript/Referencia/Objetos_globales/Function/apply +tags: + - Function + - JavaScript + - Method + - función + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Function/apply +--- +
{{JSRef("Objetos_globales", "Function")}}
+ +

Resumen

+ +

El método apply() invoca una determinada función asignando explícitamente el objeto this y un array o similar (array like object) como parámetros (argumentos) para dicha función.

+ +
NOTA: Aunque la sintaxis de esta función es casi idéntica a {{jsxref("Function.call", "call()")}}, la diferencia fundamental es que call() acepta una lista de argumentos, mientras que apply() acepta un simple array con los argumentos.
+ +

Sintaxis

+ +
fun.apply(thisArg[, argsArray])
+ +

Parámetros

+ +
+
thisArg
+
El valor del objeto this a utilizar dentro de la llamada a fun. Cabe mencionar que éste puede no ser el valor visto por el método: si el método es una función del tipo {{jsxref("Functions_and_function_scope/Strict_mode", "non-strict mode", "", 1)}}, {{jsxref("Global_Objects/null", "null")}} o {{jsxref("Global_Objects/undefined", "undefined")}} será reemplazado por el objeto global, y los valores primitivos serán encapsulados.
+
argsArray
+
Un objeto similar a un array (array like object), que contiene los parámetros con los que será llamada fun, o null o {{jsxref("undefined")}} si ningún argumento es estipulado. Desde la versión 5 de ECMAScript estos parámetros pueden estar en un objeto similar a un array en lugar de un array. Véase {{anch("Browser_compatibility", "browser compatibility")}} para mayor información.
+
+

Valor de retorno

+ +

El resultado de llamar a la función con el valor dado this y argumentos.

+
+
+ +

Descripción

+ +

Puede estipularse un objeto this diferente al llamar una función. this se refiere al objeto actual, el objeto haciendo la llamada. Con apply, puede escribirse un método una vez y heredarlo a otro objeto, sin necesidad de reescribir el método para adecuarlo al nuevo objeto.

+ +

apply es muy similar a {{jsxref("Function.call", "call()")}}, excepto por el tipo de argumentos que soporta. Puede utilizarse un arreglo de parámetros en lugar de un conjunto de pares nombre-valor. Con apply, puede utilizarse un arreglo literal, por ejemplo, fun.apply(this, ['eat', 'bananas']), o un objeto Array, por ejemplo, fun.apply(this, new Array('eat', 'bananas')).

+ +

Puede también utilizarse {{jsxref("Funciones/arguments", "arguments")}} como parámetro argsArray. arguments es una variable local a la función. Puede utilizarse para acceder a todos los argumentos no específicados en la llamada al objeto. Por lo tanto, no se requiere conocer todos los argumentos del objeto invocado cuando se utiliza el método apply. Puede utilizarse arguments para pasar los argumentos al objeto invocado. El objeto invocado es entonces responsable por el manejo de los argumentos.

+ +

Desde la 5ta edición de ECMAScript se puede utilizar también cualquier tipo de objeto similar a un arreglo, que en términos prácticos significa que tendrá una propiedad length y propiedades integer en el rango (0...length). Por ejemplo, ahora puede utilizarse un {{domxref("NodeList")}} o un objeto personalizado como: {'length': 2, '0': 'eat', '1': 'bananas'}.

+ +
{{ note("La mayoría de los navegadores, incluidos Chrome 14 e Internet Explorer 9, aún no soportan el uso de objetos similares a un array y arrojarán una excepción.") }}
+ +
 
+ +

Ejemplos

+ +

Utilizando apply para encadenar constructores

+ +

Puedes utilizar apply para encadenar {{jsxref("Operadores/new", "constructors")}} para un objeto, similar a Java. En el ejemplo siguiente se crea un método global a {{jsxref("Function")}} llamado construct, en cual posibilita el uso de un objeto similar a un arreglo en un constructor en lugar de una lista de argumentos.

+ +
Function.prototype.construct = function (aArgs) {
+    var fConstructor = this, fNewConstr = function () { fConstructor.apply(this, aArgs); };
+    fNewConstr.prototype = fConstructor.prototype;
+    return new fNewConstr();
+};
+ +

Ejemplo 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);
+
+alert(myInstance.property1); // alerts "Hello world!"
+alert(myInstance instanceof MyConstructor); // alerts "true"
+alert(myInstance.constructor); // alerts "MyConstructor"
+ +
Nota: El método Function.construct no nativo no funcionará con algunos constructores nativos (como {{jsxref("Date")}}, por ejemplo). En estos casos se deberá utilizar el método {{jsxref("Function.bind")}} (por ejemplo, supóngase un arreglo como el siguiente para utilizar con el constructor Date: [2012, 11, 4]; en este caso se tendría que escribir algo como: new (Function.prototype.bind.apply(Date, [null].concat([2012, 11, 4])))() – de cualquier manera, ésta no es la mejor manera de hacerlo y probablemente no debería utilizarse en ningún entorno en producción).
+ +

apply y funciones built-in

+ +

El uso inteligente de apply permite utilizar funciones built-in para algunas tareas que, de otra manera, habrían sido escritas recorriendo los valores del arreglo dentro de un bucle. Como ejemplo, vamos a utilizar Math.max/Math.min para encontrar el máximo/mínimo valor en un arreglo.

+ +
/* min/max number in an array */
+var numbers = [5, 6, 2, 3, 7];
+
+/* using Math.min/Math.max apply */
+var max = Math.max.apply(null, numbers); /* This about equal to Math.max(numbers[0], ...) or Math.max(5, 6, ..) */
+var min = Math.min.apply(null, numbers);
+
+/* vs. simple loop based algorithm */
+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];
+}
+ +

Pero cuidado: utilizando apply de esta manera estás corriendo el riesgo de exceder el límite de argumentos permitido por el motor de JavaScript. Las consecuencias de aplicar una función con demasiados argumentos (imagínate más de decenas de miles de argumentos) varían entre los distintos motores (JavaScriptCore tiene un límite de argumentos fijo de 65536), porque el límite (de hecho, incluso el comportamiento de cualquier pila excesivamente larga) no está especificado. Algunos motores lanzarán una excepción. Más perniciosamente, otros limitarán de manera arbitraria el número de argumentos que se están pasando en realidad a la función. (Para ilustrar este último caso: si un motor tuviera un límite de cuatro argumentos [por supuesto, los límites reales son significamente mayores], sería como si los argumentos 5, 6, 2 y 3 hubieran sido pasados a apply en los ejemplos anteriores, en lugar del arreglo completo). Si el valor de tu arreglo pudiera crecer en decenas de miles, utiliza una estrategia híbrida: aplica a tu función trozos del array a la 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]);
+ +

Utilizando apply en "monkey-patching" 

+ +

(Reemplazando de manera dinámica los argumentos en tiempo de ejecución)

+ +

apply puede ser la mejor manera de reemplazar dinámicamente una función 'built-in' de Firefox, o de una librería de JavaScript. Dada una función someobject.foo, puedes modificar la función de una forma 'hacker', como ésta:

+ +
var originalfoo = someobject.foo;
+someobject.foo = function() {
+  // Haz algo antes de llamar a la función
+  console.log(arguments);
+  // Llama a la función como la hubieras llamado normalmente
+  originalfoo.apply(this, arguments);
+  // Aquí, ejecuta algo después
+}
+ +

Este método es especialmente útil cuando quieres depurar eventos, o interfaces con algún elemento que no tiene API, al igual que los diversos .on (eventos [event]..., como los que se usan en el Devtools Inspector)

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición Inicial. Implementada in 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')}} 
{{SpecName('ESDraft', '#sec-function.prototype.apply', 'Function.prototype.apply')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad entre navegadores

+ +

{{CompatibilityTable}}

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
ES 5.1 generic array-like object as {{jsxref("Functions/arguments", "arguments")}}{{CompatUnknown}}{{CompatGeckoDesktop("2.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
ES 5.1 generic array-like object as {{jsxref("Functions/arguments", "arguments")}}{{CompatUnknown}}
+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/global_objects/function/arguments/index.html b/files/es/web/javascript/reference/global_objects/function/arguments/index.html new file mode 100644 index 0000000000..f0f8f6ca90 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/function/arguments/index.html @@ -0,0 +1,44 @@ +--- +title: Function.arguments +slug: Web/JavaScript/Referencia/Objetos_globales/Function/arguments +translation_of: Web/JavaScript/Reference/Global_Objects/Function/arguments +--- +
{{JSRef("Objetos_globales", "Function")}} {{deprecated_header}}
+ +

Resumen

+ +

Un objeto de tipo arreglo correspondiente a los argumentos pasados a la función.

+ +

Descripción

+ +

Use el objeto arguments disponible dentro de las funciones en vez de Function.arguments.

+ +

Notas

+ +

En caso de recursividad, es decir, si la función f aparece varias veces en la pila de llamada, el valor de f.arguments representa los argumentos correspondientes a la invocación más reciente de la función.

+ +

Ejemplo

+ +
function f(n) { g(n-1) }
+function g(n) {
+  print("antes: " + g.arguments[0]);
+  if(n>0)
+    f(n);
+  print("después: " + g.arguments[0]);
+}
+f(2)
+
+ +

resultados:

+ +
antes: 1
+antes: 0
+después: 0
+después: 1
+
+ +

 

+ +
 
+ +

{{ languages( { "en": "en/Core_JavaScript_1.5_Reference/Global_Objects/Function/arguments", "pl": "pl/Dokumentacja_j\u0119zyka_JavaScript_1.5/Obiekty/Function/arguments" } ) }}

diff --git a/files/es/web/javascript/reference/global_objects/function/bind/index.html b/files/es/web/javascript/reference/global_objects/function/bind/index.html new file mode 100644 index 0000000000..bdc7b5b73c --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/function/bind/index.html @@ -0,0 +1,293 @@ +--- +title: Function.prototype.bind() +slug: Web/JavaScript/Referencia/Objetos_globales/Function/bind +translation_of: Web/JavaScript/Reference/Global_Objects/Function/bind +--- +
{{JSRef("Global_Objects", "Function")}}
+ +

Resumen

+ +

El método bind() crea una nueva función, que cuando es llamada, asigna a su operador  this el valor entregado, con una secuencia de argumentos dados precediendo a cualquiera entregados cuando la función es llamada. 

+ +

El valor de this es ignorado cuando la función es llamada con el operador new.

+ +

Sintaxis

+ +
fun.bind(thisArg[, arg1[, arg2[, ...]]])
+ +

Parametros

+ +
+
thisArg
+
Es un valor que será enviado a la función destino cuando se llame a la función de enlace. Este valor será ignorado si la función de enlace es construida usando el operador {{jsxref("Operators/new", "new")}}.
+
arg1, arg2, ...
+
Son los argumentos que se enviarán además de los provistos a la función de enlace cuando se invoque la función destino.
+
+ +

Valor de retorno

+ +

Una copia de la función entregada con el valor especificado this y los argumentos iniciales.

+ +

Descripción

+ +

La función bind() crea una nueva función (función ligada) con el mismo cuerpo (propiedad interna {{jsxref("Function.prototype.call", "call")}} en términos de ECMAScript 5) como la función que será llamada (la función objetivo de la función ligada) con la referencia this asociada al primer argumento de bind(), el cual no podrá ser sobreescrito. bind() también acepta parámetros predeterminados que antecederán al resto de los parámetros específicos cuando la función objetivo sea llamada. Una función ligada también puede ser construída utilizando el operador {{jsxref("Operators/new", "new")}}: al hacerlo, actuará como si en su lugar hubiera sido construída la función objetivo.

+ +

En este último caso, el parámetro correspondiente para this será ignorado, aunque los parámetros predeterminados que antecederán al resto sí serán provistos para la función emulada.

+ +

Ejemplos

+ +

Ejemplo: Crear una función ligada

+ +

El uso más simple de bind() es hacer que una función que, sin importar cómo es llamada, siempre apunte al mismo objeto con la referencia this. Un error común para nuevos programadores de JavaScript es que obtienen una referencia a un método de un objeto, posteriormente ejecutan ese método desde la referencia externa y esperan que la referencia de this siga apuntando al objeto original de donde se obtuvo el método (v.g. cuando se usa ese método en un callback). Sin el debido cuidado, el objeto original es comúnmente perdido. Creando una función ligada desde la función  empleando el objeto original, resuelve limpiamente este problema:

+ +
this.x = 9;
+var module = {
+  x: 81,
+  getX: function() { return this.x; }
+};
+
+module.getX(); // 81
+
+var getX = module.getX;
+getX(); // 9, porque en este caso, "this" apunta al objeto global
+
+// Crear una nueva función con 'this' asociado al objeto original 'module'
+var boundGetX = getX.bind(module);
+boundGetX(); // 81
+ +

Ejemplo: Funciones Parciales

+ +

El siguiente uso simple de bind() es definir una función con argumentos predeterminados que precederán a los argumentos finales de la función ligada. Estos argumentos iniciales (en caso de haberlos) se definen a continuación de lo que será la referencia de this y son entonces enviados como argumentos de la función objetivo, seguidos por los argumentos enviados a la función ligada cada vez que dicha función sea llamada.

+ +
function list() {
+  return Array.prototype.slice.call(arguments);
+}
+
+var list1 = list(1, 2, 3); // [1, 2, 3]
+
+// Crear funcion (sin referencia this) con argumento inicial predeterminado
+var leadingThirtysevenList = list.bind(undefined, 37);
+
+var list2 = leadingThirtysevenList(); // [37]
+var list3 = leadingThirtysevenList(1, 2, 3); // [37, 1, 2, 3]
+
+ +

Ejemplo: Con setTimeout

+ +

De manera predeterminada, dentro de {{ domxref("window.setTimeout()") }}, la palabra reservada this será setteada al objeto {{ domxref("window") }} (o a global). Cuando se esté trabajando con métodos de clase que requieran que this se refiera a instancias de clase, usted puede explícitamente ligar this a la función callback para mantener la referencia de la instancia.

+ +
function LateBloomer() {
+  this.petalCount = Math.ceil(Math.random() * 12) + 1;
+}
+
+// Declare bloom after a delay of 1 second
+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!');
+};
+
+ +

Ejemplo: Funciones ligadas usadas como constructores

+ +
+

Advetencia: Esta sección demuestra las capacidades de JavaScript y documenta algunos usos extremos del método bind(). Los métodos mostrados a continuación no son la mejor forma de hacer las cosas y probablemente no deberían ser utilizados en ningún ambiente productivo.

+
+ +

Las funciones ligadas son automáticamente adecuadas para usarse con el operador {{jsxref("Operators/new", "new")}} para construir nuevas instancias creadas por la función objetivo. Cuando una función ligada es utilizada para construir un valor, el parámetro enviado para reemplazar la referencia this es ignorado. De cualquier forma, los argumentos iniciales sí son tomados en consideración y antecederán a los parámetros que se envíen al constructor:

+ +
function Point(x, y) {
+  this.x = x;
+  this.y = y;
+}
+
+Point.prototype.toString = function() {
+  return this.x + ',' + this.y;
+};
+
+var p = new Point(1, 2);
+p.toString(); // '1,2'
+
+
+var emptyObj = {};
+var YAxisPoint = Point.bind(emptyObj, 0/*x*/);
+// not supported in the polyfill below,
+// works fine with native bind:
+var YAxisPoint = Point.bind(null, 0/*x*/);
+
+var axisPoint = new YAxisPoint(5);
+axisPoint.toString(); // '0,5'
+
+axisPoint instanceof Point; // true
+axisPoint instanceof YAxisPoint; // true
+new Point(17, 42) instanceof YAxisPoint; // true
+
+ +

Note que no necesita hacer nada especial para crear una función ligada para usarse con {{jsxref("Operators/new", "new")}}. El razonamiento es que usted no necesita hacer nada especial para crear una función ligada para ser llamada planamente, aún si usted prefiriera requerir que la función ligada sea llamada únicamente utilizando {{jsxref("Operators/new", "new")}}.

+ +
// Ejemplo que puede ser ejecutado directamente en tu consola JavaScript
+// ...continúa de arriba
+
+// Aún puede ser invocada como una función normal
+// (aunque es usualmente indeseable)
+YAxisPoint(13);
+
+emptyObj.x + ',' + emptyObj.y;
+// >  '0,13'
+
+ +

Si desea utilizar una función ligada únicamente usando {{jsxref("Operators/new", "new")}}, o únicamente mediante una llamada directa, la función objetivo debe forzar esa restricción.

+ +

Ejemplo: Crear atajos

+ +

bind() también es útil en casos en los que desea crear un atajo para una función que requiere una referencia específica para this.

+ +

Tomando {{jsxref("Array.prototype.slice")}}, por ejemplo, el cual se desearía utilizar para convertir un objeto tipo array a un arreglo real. Podría crear un atajo como el siguiente:

+ +
var slice = Array.prototype.slice;
+
+// ...
+
+slice.call(arguments);
+
+ +

Con bind(), esto puede ser simplificado. En el siguiente fragmento de código, slice es una función ligada a la función {{jsxref("Function.prototype.call()", "call()")}} de {{jsxref("Function.prototype")}}, con la referencia this setteada a la función {{jsxref("Array.prototype.slice()", "slice()")}} de {{jsxref("Array.prototype")}}. Esto significa que llamadas adicionales a call() pueden omitirse:

+ +
// same as "slice" in the previous example
+var unboundSlice = Array.prototype.slice;
+var slice = Function.prototype.call.bind(unboundSlice);
+
+// ...
+
+slice(arguments);
+
+ +

Polyfill

+ +

La función bind() fue añadida a la especificación ECMA-262, 5a edición; por lo tanto podría no estar presente en todos los navegadores. Usted puede parcialmente simularla al insertar el siguiente código al inicio de sus scripts, permitiendo emplear muchas de las funcionalidades de bind() en implementaciones que no la soportan nativamente.

+ +
if (!Function.prototype.bind) {
+  Function.prototype.bind = function(oThis) {
+    if (typeof this !== 'function') {
+      // closest thing possible to the ECMAScript 5
+      // internal IsCallable function
+      throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
+    }
+
+    var aArgs   = Array.prototype.slice.call(arguments, 1),
+        fToBind = this,
+        fNOP    = function() {},
+        fBound  = function() {
+          return fToBind.apply(this instanceof fNOP && oThis
+                 ? this
+                 : oThis,
+                 aArgs.concat(Array.prototype.slice.call(arguments)));
+        };
+
+    fNOP.prototype = this.prototype;
+    fBound.prototype = new fNOP();
+
+    return fBound;
+  };
+}
+
+ +

Algunas de las muchas diferencias (bien podría haber otras, en tanto la siguiente lista no intenta ser exhaustiva) entre este algoritmo y el algoritmo de la especificación son:

+ + + +

Si elige usar esta implementación parcial, no debe de utilizarla en los casos en los que el comportamiento es distinto al de la especificación ECMA-262, 5th edition! Con un poco de cuidado, de cualquier manera (y tal vez con algunas modificaciones adicionales para adecuarse a sus necesidades específicas), esta implementación parcial podría ser un puente razonable al momento en que bind() sea ampliamente implementada acorde a a la especificación.

+ +

Por favor checa https://github.com/Raynos/function-bind para ver una solución más profunda.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
{{SpecName('ES5.1', '#sec-15.3.4.5', 'Function.prototype.bind')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.8.5.
{{SpecName('ES6', '#sec-function.prototype.bind', 'Function.prototype.bind')}}{{Spec2('ES6')}} 
+ +

Compatibilidad de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome("7")}}{{CompatGeckoDesktop("2")}}{{CompatIE("9")}}{{CompatOpera("11.60")}}{{CompatSafari("5.1.4")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatAndroid("4.0")}}{{CompatChrome("0.16")}}{{CompatGeckoMobile("2")}}{{CompatUnknown}}{{CompatOperaMobile("11.50")}}{{CompatSafari("6.0")}}
+
+ +

Basado en Kangax's compat tables.

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/function/call/index.html b/files/es/web/javascript/reference/global_objects/function/call/index.html new file mode 100644 index 0000000000..4200c5d2a5 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/function/call/index.html @@ -0,0 +1,113 @@ +--- +title: Function.prototype.call() +slug: Web/JavaScript/Referencia/Objetos_globales/Function/call +tags: + - Function + - JavaScript + - Method +translation_of: Web/JavaScript/Reference/Global_Objects/Function/call +--- +
{{JSRef("Objetos_globales", "Function")}}
+ +

Resumen

+ +

El método call() llama a una función con un valor dado this y con argumentos provistos individualmente.

+ +

Sintaxis

+ +
function.call(thisArg[, arg1[, arg2[, ...]]])
+ +

Parametros

+ +
+
thisArg {{optional_inline}}
+
El valor a usar como this cuando se llama a function.
+
+
+

Cuidado: En ciertos casos, thisArg puede no ser el valor actual visto por el método.

+ +

Si el método es una función en {{jsxref("Strict_mode", "non-strict mode", "", 1)}}, {{jsxref("Global_Objects/null", "null")}} y {{jsxref("Global_Objects/undefined", "undefined")}} serán reemplazados con el objeto global, y valores primitivos serán convertidos a objetos.

+
+
+
arg1, arg2, ...
+
Argumentos para el objeto.
+
+

Valor de retorno

+
+
El resultado de llamar a la función con el this especificado y los argumentos.
+
+ +

Descripción

+ +

call() permite que una función/método que pertenece a un objeto, ser asignada y llamada para un objeto diferente.

+ +

call() provee un nuevo valor de this a la función/método. Con call(), puedes escribir un método ona vez y heredarlo a otro objeto, sin tener que reescribir el método en el nuevo objeto.

+ +
Nota: Mientras la sintaxis de esta función es casi identica a la función {{jsxref("Function.apply", "apply()")}}, la diferencia fundamental es que call() acepta una lista de argumentos, mientras apply() accepta un arreglo sencillo de argumentos.
+ +

Ejemplos

+ +

Usando call para encadenar constructores para un objeto

+ +

Puede usar call para encadenar constructores para un objeto (similar a Java).

+ +

En el siguiente ejemplo, el constructor para el objeto Producto es definido con dos parametros, nombre y precio.

+ +

Otras dos funciones Comida y Juguete invocan a Producto, pasándo thisnombre y precio. Producto inicializa las propiedades nombre y precio, ambas funciones especializadas definen la categoria.

+ +
function Producto(nombre, precio) {
+  this.nombre = nombre;
+  this.precio = precio;
+
+  if (precio < 0)
+    throw RangeError('No se puede crear el producto "' + nombre + '" con un precio negativo');
+  return this;
+}
+
+function Comida(nombre, precio) {
+  Producto.call(this, nombre, precio);
+  this.categoria = 'comida';
+}
+Comida.prototype = new Producto();
+
+function Juguete(nombre, precio) {
+  Producto.call(this, nombre, precio);
+  this.categoria = 'juguete';
+}
+Juguete.prototype = new Producto();
+
+var queso = new Comida('feta', 5);
+var diversion = new Juguete('robot', 40);
+
+ +

Usando call para invocar una función anónima

+ +

En este ejemplo, creamos una función anónima y usamos call para invocarla en cada objeto en un arreglo.

+ +

El propósito principal de la función anónima aquí es agregar una función print  a cada objeto, el cual puede imprimir el índice correcto en el arreglo.

+ +
+

Pasar el objeto como valor this no es estrictamente necesario, pero se hace con propósito explicativo.

+
+ +
var animales = [
+  {especie: 'Leon', nombre: 'Rey'},
+  {especie: 'Whale', nombre: 'Fail'}
+];
+
+for (var i = 0; i < animales.length; i++) {
+  (function (i) {
+    this.imprimir = function () {
+      console.log('#' + i  + ' ' + this.especie + ': ' + this.nombre);
+    }
+    this.imprimir();
+  }).call(animales[i], i);
+}
+
+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/function/caller/index.html b/files/es/web/javascript/reference/global_objects/function/caller/index.html new file mode 100644 index 0000000000..942df69a68 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/function/caller/index.html @@ -0,0 +1,128 @@ +--- +title: Function.caller +slug: Web/JavaScript/Referencia/Objetos_globales/Function/caller +tags: + - Función Javascript No-standard Propiedad +translation_of: Web/JavaScript/Reference/Global_Objects/Function/caller +--- +
{{JSRef("Global_Objects", "Function")}} {{non-standard_header}}
+ +

Resumen

+ +

La propiedad function.caller retorna la función que llamó a la función especificada.

+ +

Descripción

+ +

Si la función f fue llamada por desde nivel raiz (top level code), el valor de f.caller es {{jsxref("Global_Objects/null", "null")}}, de lo contrario se retorna la función que llamó a f.

+ +

Esta propiedad reemplaza a la propiedad obsoleta {{jsxref("Functions_and_function_scope/arguments/caller", "arguments.caller")}} del objeto {{jsxref("Funciones/arguments", "arguments")}}.

+ +

la propiedad especial __caller__, la cual retornaba el objeto de activación del llamador y permitía reconstruir la pila de llamadas, ha sido removida por motivos de seguridad.

+ +

Notas

+ +

En caso de recursión se puede reconstruir la pila de llamada utilizando esta propiedad, tal como se muestra a continuación:

+ +
function f(n) { g(n - 1); }
+function g(n) { if (n > 0) { f(n); } else { stop(); } }
+f(2);
+
+ +

Al momento de ejecutar stop() este se llama con la siguiente pila de llamadas:

+ +
f(2) -> g(1) -> f(1) -> g(0) -> stop()
+
+ +

Siendo verdadero la siguiente consideración:

+ +
stop.caller === g && f.caller === g && g.caller === f
+
+ +

Por lo tanto si se intenta obtener el rastro de llamadas (stack trace) de la función stop() como se muestra a continuación:

+ +
var f = stop;
+var stack = 'Stack trace:';
+while (f) {
+  stack += '\n' + f.name;
+  f = f.caller;
+}
+
+ +

se provocará una bucle que nunca termina.

+ +

Ejemplos

+ +

Ejemplo: Verificar el valor de la propiedad caller de una función

+ +

El siguiente código verifica el valor de la propiedad caller de una función.

+ +
function myFunc() {
+  if (myFunc.caller == null) {
+    return 'The function was called from the top!';
+  } else {
+    return 'This function\'s caller was ' + myFunc.caller;
+  }
+}
+
+ +

Especificación

+ +

No es parte de ninguna especificación. Se implementa en JavaScript 1.5.

+ +

Compatiblilidad de Navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/global_objects/function/displayname/index.html b/files/es/web/javascript/reference/global_objects/function/displayname/index.html new file mode 100644 index 0000000000..d464266838 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/function/displayname/index.html @@ -0,0 +1,77 @@ +--- +title: Function.displayName +slug: Web/JavaScript/Referencia/Objetos_globales/Function/displayName +translation_of: Web/JavaScript/Reference/Global_Objects/Function/displayName +--- +
{{JSRef}} {{non-standard_header}}
+ +

The function.displayName property returns the display name of the function.

+ +

Description

+ +

Cuando se define la propiedad displayName , retorna un mensaje con el nombre para mostrar en una función:

+ +
function doSomething() {}
+
+console.log(doSomething.displayName); // "undefined"
+
+var popup = function(content) { console.log(content); };
+
+popup.displayName = 'Show Popup';
+
+console.log(popup.displayName); // "Show Popup"
+
+ +

Tu puedes definir una funcion con un nombre a mostrar en un {{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
+
+ +

Puedes cambiar dinámicamente el displayName de una función:

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

Ejemplos

+ +

Normalmente, se prefiere por consolas y profilers sobre {{jsxref("Function.name", "func.name")}} a mostrar el nombre de una función.

+ +

Al ingresar lo siguiente en una consola, debería mostrarse como algo así como "function My Function()":

+ +
var a = function() {};
+a.displayName = 'My Function';
+
+a; // "function My Function()"
+ +

Specifications

+ +

Not part of any specification.

+ +

Browser compatibility

+ +
+ + +

{{Compat("javascript.builtins.Function.displayName")}}

+
+ +
 
diff --git a/files/es/web/javascript/reference/global_objects/function/function/index.html b/files/es/web/javascript/reference/global_objects/function/function/index.html new file mode 100644 index 0000000000..af4dff0361 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/function/function/index.html @@ -0,0 +1,92 @@ +--- +title: Function() constructor +slug: Web/JavaScript/Referencia/Objetos_globales/Function/Función +tags: + - Constructor + - Function + - JavaScript + - Referencia + - función +translation_of: Web/JavaScript/Reference/Global_Objects/Function/Function +--- +
{{JSRef("Objetos_globales", "Function")}}
+ +

El constructor Function crea un nuevo objeto Function. Llamar al constructor directamente puede crear funciones dinámicamente, pero tiene problemas de seguridad y de rendimiento similares (pero mucho menos importantes) para {{jsxref("eval")}}. Sin embargo, a diferencia de eval, el constructor Function crea funciones que solo se ejecutan en el ámbito global.

+ +
{{EmbedInteractiveExample("pages/js/function-constructor.html","shorter")}}
+ + + +

Sintaxis

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

Parámetros

+ +
+
arg1, arg2, ... argN
+
Nombres que utilizará la función como nombres de argumentos formales. Cada uno debe ser una cadena que corresponda a un identificador JavaScript válido, o una lista de dichas cadenas separadas por una coma. Por ejemplo: "x", "theValue" —o "x,theValue".
+
functionBody
+
Una cadena que contiene las declaraciones de JavaScript que comprenden la definición de función.
+
+ +

Descripción

+ +

Los objetos Function creados con el constructor Function se procesan cuando se crea la función. Esto es menos eficiente que declarar una función con una {{jsxref("Operators/function", "expresión de función")}} o {{jsxref("Statements/function", "declaración de función")}} y llamarla dentro de tu código porque tales funciones se procesan con el resto del código.

+ +

Todos los argumentos pasados a la función se tratan como los nombres de los identificadores de los parámetros en la función que se va a crear, en el orden en que se pasan. Omitir un argumento dará como resultado que el valor de ese parámetro sea undefined.

+ +

Invocar el constructor Function como función (sin usar el operador new) tiene el mismo efecto que invocarlo como constructor.

+ +

Ejemplos

+ +

Especificar argumentos con el constructor Function

+ +

El siguiente código crea un objeto Function que toma dos argumentos.

+ +
// El ejemplo se puede ejecutar directamente en tu consola JavaScript
+
+// Crea una función que toma dos argumentos y devuelve la suma de esos argumentos
+const adder = new Function('a', 'b', 'return a + b');
+
+// Llama a la función
+adder(2, 6);
+// 8
+
+ +

Los argumentos "a" y "b" son nombres de argumentos formales que se utilizan en el cuerpo de la función, "return a + b".

+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-function-constructor', 'Constructor Function')}}
+ +

Compatibilidad del navegador

+ +
+ + +

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

+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/function/index.html b/files/es/web/javascript/reference/global_objects/function/index.html new file mode 100644 index 0000000000..5b586f3611 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/function/index.html @@ -0,0 +1,118 @@ +--- +title: Function +slug: Web/JavaScript/Referencia/Objetos_globales/Function +tags: + - Clase + - Class + - Declaración + - Expresión + - Function + - JavaScript + - función +translation_of: Web/JavaScript/Reference/Global_Objects/Function +--- +
{{JSRef("Objetos_globales", "Function")}}
+ +

Cada función de JavaScript en realidad es un objeto Function. Esto se puede ver con el código (function() {}).constructor === Function, que devuelve true.

+ +

Constructor

+ +
+
{{jsxref("Function/Function", "Function()", "", 1)}}
+
Crea un nuevo objeto Function. Llamar al constructor directamente puede crear funciones dinámicamente, pero tiene problemas de seguridad y de rendimiento similares (pero mucho menos importantes) para {{jsxref("eval")}}. Sin embargo, a diferencia de eval, el constructor Function crea funciones que solo se ejecutan en el ámbito global.
+
+ +

Propiedades de la instancia

+ +
+
{{jsxref("Function.arguments")}}
+
Un arreglo que corresponde a los argumentos pasados a una función.
+ Esto está obsoleto como propiedad de {{jsxref("Function")}}. En su lugar, utiliza el objeto {{jsxref("Functions/arguments", "arguments", "", 1)}} (disponible dentro de la función).
+
{{jsxref("Function.caller")}}
+
Especifica la función que invocó a la función que se está ejecutando actualmente.
+ Esta propiedad está obsoleta, y solo es funcional para algunas funciones no estrictas.
+
{{jsxref("Function.displayName")}}
+
El nombre a mostrar de la función.
+
{{jsxref("Function.length")}}
+
Especifica el número de argumentos que espera la función.
+
{{jsxref("Function.name")}}
+
El nombre de la función.
+
+ +

Métodos de instancia

+ +
+
{{jsxref("Function.prototype.apply()", "Function.prototype.apply(thisArg [, argsArray])")}}
+
Llama a una función y establece su this en el thisArg proporcionado. Los argumentos se pueden pasar como un objeto {{jsxref("Array")}}.
+
{{jsxref("Function.prototype.bind()", "Function.prototype.bind(thisArg[, arg1[, arg2[, ...argN]]])")}}
+
Crea una nueva función que, cuando se llama, tiene su this configurado en el thisArg. Opcionalmente, una determinada secuencia de argumentos se antepondrá a los argumentos siempre que se llame a la función recién invocada.
+
{{jsxref("Function.prototype.call()", "Function.prototype.call(thisArg[, arg1, arg2, ...argN])")}}
+
Llama a una función y establece su this en el valor proporcionado. Los argumentos se pueden pasar tal cual.
+
{{jsxref("Function.prototype.toString()", "Function.prototype.toString()")}}
+
Devuelve una cadena que representa el código fuente de la función.
+ Redefine el método {{jsxref("Object.prototype.toString()")}}.
+
+ +

Ejemplos

+ +

Diferencia entre el constructor Function y la declaración function

+ +

Las funciones creadas con el constructor Function no crean cierres para sus contextos de creación; siempre se crean en el ámbito global. Al ejecutarlos, solo podrán acceder a sus propias variables locales y globales, no a las del ámbito en el que se creó el constructor Function. Esto es diferente de usar {{jsxref("eval")}} con código para una expresión de función.

+ +
var x = 10;
+
+function createFunction1() {
+    var x = 20;
+    return new Function('return x;'); // esta |x| se refiere a la |x| global
+}
+
+function createFunction2() {
+    var x = 20;
+    function f() {
+        return x; // esta |x| se refiere a la |x| local
+    }
+    return f;
+}
+
+var f1 = createFunction1();
+console.log(f1());          // 10
+var f2 = createFunction2();
+console.log(f2());          // 20
+
+ +

Si bien este código funciona en los navegadores web, f1() producirá un ReferenceError en Node.js, ya que no encontrará a x. Esto se debe a que el ámbito de nivel superior en Node no es el ámbito global, y x será local para el módulo.

+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-function-objects', 'Function')}}
+ +

Compatibilidad del navegador

+ +
+ + +

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

+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/function/length/index.html b/files/es/web/javascript/reference/global_objects/function/length/index.html new file mode 100644 index 0000000000..7638859bba --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/function/length/index.html @@ -0,0 +1,151 @@ +--- +title: Function.length +slug: Web/JavaScript/Referencia/Objetos_globales/Function/length +tags: + - JavaScript + - Propiedad + - función +translation_of: Web/JavaScript/Reference/Global_Objects/Function/length +--- +
{{JSRef("Global_Objects", "Function")}}
+ +

Sumario

+ +

La propiedad length especifica el número de argumentos esperados por la función.

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

Descripción

+ +

length es la propiedad de una función objeto, e indica el número de argumentos que una función requiere, por ejemplo, el número de parámetros formales. Este número no incluye {{jsxref("rest_parameters", "rest parameter", "", 1)}}. En cambio, {{jsxref("Functions_and_function_scope/arguments/length", "arguments.length")}} es local a una función y aporta el número de argumentos actuales pasados a una función.

+ +

Propiedades de la Función constructora

+ +

El {{jsxref("Global_Objects/Function", "Function")}} constructor en sí mismo es {{jsxref("Global_Objects/Function", "Function")}} un objeto. Sú propiedad length tiene el valor 1. Los atributos son: Grabable: false, Enumerable: false, Configurable: true.

+ +

Propiedad de la  Función prototype object

+ +

La propiedad length del {{jsxref("Global_Objects/Function", "Function")}} objeto prototype tiene el valor 0.

+ +

Ejemplos

+ +
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, resto de parámetros no se contemplan */
+console.log((function(a, b = 1, c) {}).length); /* 1, solo parámetros antes del primero con un valor por defecto son contados */
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
ECMAScript 1st Edition.StandardDefinición inicial. Implementado en JavaScript 1.1.
length property of the {{jsxref("Global_Objects/Function", "Function")}} constructor:
+ {{SpecName('ES5.1', '#sec-15.3.3.2', 'Function.length')}}
+ length property of the {{jsxref("Global_Objects/Function", "Function")}} prototype object:
+ {{SpecName('ES5.1', '#sec-properties-of-the-function-prototype-object', 'Function.length')}}
+ length property of {{jsxref("Global_Objects/Function", "Function")}} instances:
+ {{SpecName('ES5.1', '#sec-15.3.5.1', 'Function.length')}}
{{Spec2('ES5.1')}}
length property of the {{jsxref("Global_Objects/Function", "Function")}} constructor:
+ {{SpecName('ES6', '#sec-function.length', 'Function.length')}}
+ length property of the {{jsxref("Global_Objects/Function", "Function")}} prototype object:
+ {{SpecName('ES6', '#sec-15.3.4', 'Function.length')}}
+ length property of {{jsxref("Global_Objects/Function", "Function")}} instances:
+ {{SpecName('ES6', '#sec-function-instances-length', 'Function.length')}}
{{Spec2('ES6')}}El atributo configurable de esta propiedad ahora es true.
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Configurable: true{{CompatUnknown}}{{CompatGeckoDesktop(37)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Configurable: true{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile(37)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/function/name/index.html b/files/es/web/javascript/reference/global_objects/function/name/index.html new file mode 100644 index 0000000000..2440bd60f1 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/function/name/index.html @@ -0,0 +1,223 @@ +--- +title: Function.name +slug: Web/JavaScript/Referencia/Objetos_globales/Function/name +translation_of: Web/JavaScript/Reference/Global_Objects/Function/name +--- +
{{JSRef}}
+ +

La propiedad function.name retorna el nombre de la función o retorna "anonymous" por funciones creadas anónimamente.

+ +
{{js_property_attributes(0,0,1)}}
+ +
Nótese que en implementaciones no estándar previas a ES2015 el atributo configurable también era false.
+ +

Ejemplos

+ +

Nombre de una declaración de función

+ +

La propiedad name retorna el nombre de una declaración de función.

+ +
function doSomething() {}
+
+console.log(doSomething.name); // imprime en pantalla "doSomething"
+
+ +

Nombre de constructor de función

+ +

Las funciones creadas con la sintaxis new Function(...) o simplemente Function(...) tienen como propiedad name una cadena vacía. En los ejemplos a continuación se crean funciones anónimas, tales que su name retorna una cadena vacía:

+ +
var f = function() {};
+var object = {
+  someMethod: function() {}
+};
+
+console.log(f.name == ''); // true
+console.log(object.someMethod.name == ''); // también true
+
+ +

Nombres de función inferidos

+ +

Los navegadores que implementan funciones ES2015 pueden inferir el nombre de una función anónima de su posición sintáctica. Por ejemplo:

+ +
var f = function() {};
+console.log(f.name); // "f"
+ +

Se puede definir una función con un nombre en un {{jsxref("Operators/Function", "function expression", "", 1)}}:

+ +
var object = {
+  someMethod: function object_someMethod() {}
+};
+console.log(object.someMethod.name); // imprime "object_someMethod"
+
+try { object_someMethod } catch(e) { console.log(e); }
+// ReferenceError: object_someMethod is not defined
+
+ +

No se puede cambiar el nombre de una función, esta propiedad es de solo lectura:

+ +
var object = {
+  // anonymous
+  someMethod: function() {}
+};
+
+object.someMethod.name = 'someMethod';
+console.log(object.someMethod.name); // cadena vacía, someMethod es anónimo
+
+ +

Sin embargo, se puede usar {{jsxref("Object.defineProperty()")}} para cambiarlo.

+ +

Nombres de métodos

+ +
var o = {
+  foo(){}
+};
+o.foo.name; // "foo";
+ +

Nombres de funciones atadas (creadas con .bind())

+ +

{{jsxref("Function.bind()")}} produce una función cuyo nombre es igual a "bound " seguido del nombre de la función original.

+ +
function foo() {};
+foo.bind({}).name; // "bound foo"
+ +

Nombres de funciones getters y setters

+ +

Cuando se usan getset, "get" y "set" aparecerán en el nombre de la función.

+ +
var o = {
+  get foo(){},
+  set foo(x){}
+};
+
+var descriptor = Object.getOwnPropertyDescriptor(o, "foo");
+descriptor.get.name; // "get foo"
+descriptor.set.name; // "set foo";
+ +

Ejemplos

+ +

Se puede usar obj.constructor.name para saber cuál es la "clase" de un objeto:

+ +
function a() {}
+
+var b = new a();
+
+console.log(b.constructor.name); // imprime "a"
+
+ +

Polyfill

+ +

Para versiones de IE < 9, se puede usar fn._name() en su lugar. Para IE9 o posteriores se puede usar el siguiente polyfill.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
{{SpecName('ES2015', '#sec-name', 'name')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-name', 'name')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome(33.0)}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Configurable: true{{CompatChrome(43.0)}}{{CompatGeckoDesktop(38)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Nombres inferidos en funciones anónimas{{CompatChrome(51.0)}}{{CompatNo}} [1]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Configurable: true{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile(38)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Nombres inferidos en funciones anónimas{{CompatNo}}{{CompatChrome(51.0)}}{{CompatNo}} [1]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(51.0)}}
+
+ +

[1] See {{bug(883377)}}.

diff --git a/files/es/web/javascript/reference/global_objects/function/tosource/index.html b/files/es/web/javascript/reference/global_objects/function/tosource/index.html new file mode 100644 index 0000000000..3cee3c1d4c --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/function/tosource/index.html @@ -0,0 +1,97 @@ +--- +title: Function.prototype.toSource() +slug: Web/JavaScript/Referencia/Objetos_globales/Function/toSource +translation_of: Web/JavaScript/Reference/Global_Objects/Function/toSource +--- +
{{JSRef}} {{non-standard_header}}
+ +

El método toSource() devuelve un string representando el código fuente del objeto.

+ +

Sintaxis

+ +
function.toSource();
+Function.toSource();
+
+ +

Parámetros

+ +

Ninguno.

+ +

Descripción

+ +

El método toSource devuelve los siguientes valores:

+ + + +

Éste método es usado de forma interna por JavaScript y no explicitamente desde el código. Puedes usar toSource mientras depuras para examinar el contenido de un objeto.

+ +

Especificaciones

+ +

No está reflejado en ningún estándar. Implementaso en JavaScript 1.3.

+ +

Browser compatibility

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

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/function/tostring/index.html b/files/es/web/javascript/reference/global_objects/function/tostring/index.html new file mode 100644 index 0000000000..b5ee70147e --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/function/tostring/index.html @@ -0,0 +1,130 @@ +--- +title: Function.prototype.toString() +slug: Web/JavaScript/Referencia/Objetos_globales/Function/toString +translation_of: Web/JavaScript/Reference/Global_Objects/Function/toString +--- +
{{JSRef}}
+ +

El método toString() retorna una cadena representando el código fuente de la función.

+ +

Sintaxis

+ +
function.toString(indentation)
+ +

Parámetros

+ +
+
indentation {{non-standard_inline}} {{obsolete_inline(17)}}
+
La cantidad de espacios a indentar en la representación de cadena del código fuente. Si indentation es menor o igual a -1, la mayoría de los espacios innecesarios son eliminados.
+
+ +

Descripción

+ +

El objeto {{jsxref("Function")}} reconduce el método {{jsxref("Object.prototype.toString", "toString")}} heredado de  {{jsxref("Object")}}; no hereda {{jsxref("Object.prototype.toString")}}. Para objetos {{jsxref("Function")}}, el método toString retorna una representación de cadena del objeto en forma de declaración de función. Esto es, toString descompila la función y la cadena retornada incluye la palabra clave function, la lista de argumentos, llaves y el código fuente del cuerpo de la función.

+ +

JavaScript llama al método toString automáticamente cuando una {{jsxref("Function")}} va a ser representada como un valor de texto, p.e. cuando una función es concatenada con un valor de cadena (string).

+ +

El método toString() producirá una excepción {{jsxref("TypeError")}} ("Function.prototype.toString called on incompatible object"), si el valor de su objeto this no es un objeto Function. Esto también ocurrirá para objetos {{jsxref("Proxy")}}, por ejemplo:

+ +
Function.prototype.toString.call("foo"); // TypeError
+
+var proxy = new Proxy(function() {}, {});
+Function.prototype.toString.call(proxy); // TypeError
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoObservaciones
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.3.4.2', 'Function.prototype.toString')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-function.prototype.tostring', 'Function.prototype.toString')}}{{Spec2('ES6')}}Añadidos requerimientos más específicos para la representación de cadena.
{{SpecName('ESDraft', '#sec-function.prototype.tostring', 'Function.prototype.toString')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
PrestaciónChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
PrestaciónAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Notas específicas para Gecko

+ + + +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/generator/index.html b/files/es/web/javascript/reference/global_objects/generator/index.html new file mode 100644 index 0000000000..ec92ca413f --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/generator/index.html @@ -0,0 +1,228 @@ +--- +title: Generador +slug: Web/JavaScript/Referencia/Objetos_globales/Generador +tags: + - ECMAScript2015 + - ECMAScript6 + - Generador + - Generador Legado + - Iterador Legado + - JavaScript + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Generator +--- +
{{JSRef}}
+ +
+ +

El objeto Generator es retornado por una {{jsxref("Statements/function*", "función generator", "", 1)}} y es conformado tanto el protocolo iterable como el protocolo iterador.

+ +

Constructor

+ +

Este objeto no puede ser instanciado directamente. En su lugar, una instancia del objeto Generator puede ser devuelta por una función generator:

+ +
	function* gen() {
+	  yield 1;
+	  yield 2;
+	  yield 3;
+	}
+
+	var g = gen(); // "Generator { }"
+ +
+
+ +

Métodos de instanciación

+ +

Tambien hereda propiedades de {{JSxRef("Iterator")}}

+ +
+
{{jsxref("Generator.prototype.next()")}}
+
Retorna el valor ofecido por la expresión {{jsxref("Operators/yield", "yield")}}
+
{{jsxref("Generator.prototype.return()")}}
+
Retorna el valor dado y finaliza el generador.
+
{{jsxref("Generator.prototype.throw()")}}
+
Lanza un error al generador (también finaliza el generador, a menos que sea atrapado desde ese generador)
+
+ +

Propiedades

+ +

Tambien hereda propiedades de {{JSxRef("Iterator")}}

+ +
+
Generator.prototype.constructor
+
Especifica la funciòn que construye el prototipo del objeto.
+
+ +
+
Generator.prototype[@@toStringTag]
+
La cuerda "Generator".
+
+ +

Ejemplo

+ +

Un iterador infinito

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

Objetos generadores legados

+ +

Firefox(SpderMonkey) tambén implementa una versón mas temprana de generadores en JavaScript 1.7, donde el asterisco (*) en la declaración de la funcion no era necesario(sólo use la palabra reservada yield en el cuerpo de la función). Sin embargo, los generadores legados se encuentran depreciados. No los use. Serán removidos ({{bug(1083482)}}).

+ +

Métodos de generadores legados

+ +
+
Generator.prototype.next() {{non-standard_inline}}
+
+
Retorna el valor ofrecido por la expresión {{jsxref("Operators/yield", "yield")}}.  Esto se corresponde con el método next() en el objeto generador de ES2015.
+
+
Generator.prototype.close() {{non-standard_inline}}
+

+ Cierra el generador. Sí el método next() es llamado por la expresión {{jsxref("StopIteration")}}, un error será lanzado. Esto se corresponde con el método return() del objeto generador de ES2015.
+
Generator.prototype.send() {{non-standard_inline}}
+
Utilizado para enviar un valor al generador. El valor es retornado por la expresion {{jsxref("Operators/yield", "yield")}}, y retorna el valor ofrecido por la siguiente expresion {{jsxref("Operators/yield", "yield")}}. send(x) Se corresponde a next(x) en el objeto generador de ECMAScript 2015.
+
Generator.prototype. throw() {{non-standard_inline}}
+
Lanza un error al generador. Esto se corresponde con el metodo throw() en el objeto genererador de ES2015.
+
+ +

Ejemplo de generador legado

+ +
	function fibonacci() {
+	  var a = yield 1;
+	  yield a * 2;
+	}
+
+	var it = fibonacci();
+	console.log(it);          // "Generator {  }"
+	console.log(it.next());   // 1
+	console.log(it.send(10)); // 20
+	console.log(it.close());  // undefined
+	console.log(it.next());   // throws StopIteration (as the generator is now closed)
+	
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-generator-objects', 'Generator objects')}}{{Spec2('ES2015')}}Definición inicial
{{SpecName('ESDraft', '#sec-generator-objects', 'Generator objects')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad con navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FuncionalidadChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte basico{{CompatChrome(39.0)}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
FuncionalidadAndroidAndroid WebviewEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Soporte básico{{CompatNo}}{{CompatChrome(39.0)}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatChrome(39.0)}}
+
+ +

+ +

Vea también

+ +

Generadores Legados

+ + + +

Generadores ES2015

+ + diff --git a/files/es/web/javascript/reference/global_objects/generator/next/index.html b/files/es/web/javascript/reference/global_objects/generator/next/index.html new file mode 100644 index 0000000000..6b6bf61cbe --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/generator/next/index.html @@ -0,0 +1,109 @@ +--- +title: Generator.prototype.next() +slug: Web/JavaScript/Referencia/Objetos_globales/Generador/next +translation_of: Web/JavaScript/Reference/Global_Objects/Generator/next +--- +
{{JSRef}}
+ +

El método next() regresa un objeto con las propiedades done y value. También puedes pasar un parámetro al método next para enviar un valor al generador.

+ +

Sintaxis

+ +
gen.next(valor)
+ +

Parámetros

+ +
+
valor
+
El valor a enviar al generador.
+
+ +

Valor de retorno

+ +

Un {{jsxref("Object")}} con dos propiedades:

+ + + +

Examples

+ +

Using next()

+ +

The following example shows a simple generator and the object that the next method returns:

+ +
function* gen() {
+  yield 1;
+  yield 2;
+  yield 3;
+}
+
+var g = gen(); // "Generator { }"
+g.next();      // "Object { value: 1, done: false }"
+g.next();      // "Object { value: 2, done: false }"
+g.next();      // "Object { value: 3, done: false }"
+g.next();      // "Object { value: undefined, done: true }"
+
+ +

Sending values to the generator

+ +

In this example, next is called with a value. Note that the first call did not log anything, because the generator was not yielding anything initially.

+ +
function* gen() {
+  while(true) {
+    var value = yield null;
+    console.log(value);
+  }
+}
+
+var g = gen();
+g.next(1);
+// "{ value: null, done: false }"
+g.next(2);
+// 2
+// "{ value: null, done: false }"
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-generator.prototype.next', 'Generator.prototype.next')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-generator.prototype.next', 'Generator.prototype.next')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ +
+ + +

{{Compat("javascript.builtins.Generator.next")}}

+
+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/generator/return/index.html b/files/es/web/javascript/reference/global_objects/generator/return/index.html new file mode 100644 index 0000000000..649d5b8dec --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/generator/return/index.html @@ -0,0 +1,102 @@ +--- +title: Generator.prototype.return() +slug: Web/JavaScript/Referencia/Objetos_globales/Generador/return +tags: + - ECMAScript 2015 + - Generador + - JavaScript + - Prototipo + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Generator/return +--- +
{{JSRef}}
+ +

El método return() regresa el valor dado y finaliza al generador.

+ +

Sintaxis

+ +
gen.return(valor)
+ +

Parámetros

+ +
+
valor
+
El valor a regresar.
+
+ +

Valor de retorno

+ +

El valor dado como argumento.

+ +

Ejemplos

+ +

Utilizando return()

+ +

El siguiente ejemplo muestra un generador simple y su método return.

+ +
function* gen() {
+  yield 1;
+  yield 2;
+  yield 3;
+}
+
+var g = gen();
+
+g.next();        // { value: 1, done: false }
+g.return('foo'); // { value: "foo", done: true }
+g.next();        // { value: undefined, done: true }
+
+ +

Si return(valor) es invocado en un generador que ya está en su estado "completado", el generador permanecerá en estado "completado". Si no se da ningún argumento, el objeto regresado es el mismo a que si se invocara .next(). Si se da un argumento, éste se asignará como valor en la propiedad value del objeto regresado.

+ +
function* gen() {
+  yield 1;
+  yield 2;
+  yield 3;
+}
+
+var g = gen();
+g.next(); // { value: 1, done: false }
+g.next(); // { value: 2, done: false }
+g.next(); // { value: 3, done: false }
+g.next(); // { value: undefined, done: true }
+g.return(); // { value: undefined, done: true }
+g.return(1); // { value: 1, done: true }
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-generator.prototype.return', 'Generator.prototype.return')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-generator.prototype.return', 'Generator.prototype.return')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
+ + +

{{Compat("javascript.builtins.Generator.return")}}

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/generator/throw/index.html b/files/es/web/javascript/reference/global_objects/generator/throw/index.html new file mode 100644 index 0000000000..9f4cd76fbe --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/generator/throw/index.html @@ -0,0 +1,94 @@ +--- +title: Generator.prototype.throw() +slug: Web/JavaScript/Referencia/Objetos_globales/Generador/throw +translation_of: Web/JavaScript/Reference/Global_Objects/Generator/throw +--- +
{{JSRef}}
+ +

El método throw() reanuda la ejecución de un generador al lanzar un error en éste y regresar un objeto con las dos propiedades done y value.

+ +

Sintaxis

+ +
gen.throw(excepción)
+ +

Parámetros

+ +
+
excepción
+
La excepción a lanzar. Al hacer depuración, es útil que la excepción cumpla con instanceof {{jsxref("Error")}}.
+
+ +

Valor de retorno

+ +

Un {{jsxref("Object")}} con dos propiedades:

+ + + +

Examples

+ +

Using throw()

+ +

The following example shows a simple generator and an error that is thrown using the throw method. An error can be caught by a try...catch block as usual.

+ +
function* gen() {
+  while(true) {
+    try {
+       yield 42;
+    } catch(e) {
+      console.log('Error caught!');
+    }
+  }
+}
+
+var g = gen();
+g.next();
+// { value: 42, done: false }
+g.throw(new Error('Something went wrong'));
+// "Error caught!"
+// { value: 42, done: false }
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-generator.prototype.throw', 'Generator.prototype.throw')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-generator.prototype.throw', 'Generator.prototype.throw')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ +
+ + +

{{Compat("javascript.builtins.Generator.throw")}}

+
+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/index.html b/files/es/web/javascript/reference/global_objects/index.html new file mode 100644 index 0000000000..9946b3f648 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/index.html @@ -0,0 +1,203 @@ +--- +title: Objetos globales +slug: Web/JavaScript/Referencia/Objetos_globales +tags: + - JavaScript + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects +--- +
{{jsSidebar("Objects")}}
+ +

Este capítulo documenta todo acerca de estándares de Javascript, los objetos integrados en  JavaScript, así como los métodos y propiedades de cada uno.

+ +

El término "objetos globales" (u objetos incorporados estándar) aquí no debe confundirse con el objeto global. Aquí, los objetos globales se refieren a objetos en el ámbito global. Se puede acceder al objeto global en sí usando el operador {{jsxref("Operadores/this", "this")}} en el ámbito global (pero solo si no se usa el modo estricto ECMAScript 5, en ese caso devuelve {{jsxref("undefined")}}). De hecho, el alcance global consiste en las propiedades del objeto global, incluidas las propiedades heredadas, si las hay.

+ +

Otros objetos en el alcance global son creados por el script de usuario o son proporcionados por la aplicación host. Los objetos host disponibles en los contextos del navegador están documentados en la referencia de la API. Para obtener más información acerca de la distinción entre el DOM y el núcleo de JavaScript, vea Introducción a las tecnologías JavaScript.

+ +

Objetos estándar por categoría

+ +

Propiedades de valor

+ +

Estas propiedades globales devuelven un valor simple; ellos no tienen propiedades o métodos.

+ + + +

Propiedades de funciones

+ +

Estas funciones globales -funciones llamadas globalmente en lugar de un objeto- devuelven directamente sus resultados a la persona que llama.

+ + + +

Objetos fundamentales

+ +

Estos son los objetos fundamentales y básicos sobre los que se basan todos los demás objetos. Esto incluye objetos que representan objetos generales, funciones y errores.

+ + + +

Números y fechas

+ +

Estos son los objetos base que representan números, fechas y cálculos matemáticos.

+ + + +

Procesamiento de texto

+ +

Estos objetos representan cadenas y soporte para manipularlos.

+ + + +

Colecciones indexadas

+ +

Estos objetos representan colecciones de datos que están ordenadas por un valor de índice. Esto incluye matrices (tipadas) y construcciones tipo array.

+ + + +

Colecciones con clave

+ +

Estos objetos representan colecciones que usan claves; estos contienen elementos que son iterables en el orden de inserción.

+ + + +

Colecciones de vectores

+ +

Los tipos de datos vectoriales {{Glossary("SIMD")}} son objetos donde los datos se organizan en carriles.

+ + + +

Datos estructurados

+ +

Estos objetos representan e interactúan con los búferes de datos estructurados y los datos codificados utilizando la notación de objetos JavaScript (JSON del inglés JavaScript Object Notation).

+ + + +

Objetos de abstracción de control

+ + + +

Reflexión

+ + + +

Internacionalización

+ +

Adiciones al núcleo de ECMAScript para funcionalidades sensibles al lenguaje.

+ + + +

WebAssembly

+ + + +

Otro

+ + diff --git a/files/es/web/javascript/reference/global_objects/infinity/index.html b/files/es/web/javascript/reference/global_objects/infinity/index.html new file mode 100644 index 0000000000..2a0a716eeb --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/infinity/index.html @@ -0,0 +1,96 @@ +--- +title: Infinity +slug: Web/JavaScript/Referencia/Objetos_globales/Infinity +tags: + - JavaScript +translation_of: Web/JavaScript/Reference/Global_Objects/Infinity +--- +
+ {{jsSidebar("Objects")}}
+

Resumen

+

La propiedad global Infinity es un valor numérico que representa el infinito.

+

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

+

Sintaxis

+
Infinity
+

Description

+

Infinity es una del objeto global, es decir, esta es una variable de alcance global.

+

El valor inicial de Infinity es {{jsxref("Number.POSITIVE_INFINITY")}}. El valor de Infinity (infinito positivo) es mayor que cualquier otro numero incluido el mismo. Este valor se comporta matematicamente como el infinito matemático; por ejemplo, cualquier numero multiplicado por Infinity da como resultado Infinity, y cualquier numero divido por Infinity da como resultado cero.

+

Para la especificación ECMAScript 5, Infinity es de solo lectura (implementado en JavaScript 1.8.5  / Firefox 4).

+

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
ECMAScript 1ra edición.EstándarDefinición inicial. Implementada en 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')}} 
+

Compatibilidad con navegadores

+

{{ CompatibilityTable() }}

+
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico(Si)(Si)(Si)(Si)(Si)
+
+
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico(Si)(Si)(Si)(Si)(Si)(Si)
+
+

Ver también

+ diff --git a/files/es/web/javascript/reference/global_objects/internalerror/index.html b/files/es/web/javascript/reference/global_objects/internalerror/index.html new file mode 100644 index 0000000000..e7754d1575 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/internalerror/index.html @@ -0,0 +1,98 @@ +--- +title: InternalError +slug: Web/JavaScript/Referencia/Objetos_globales/InternalError +tags: + - Clase + - Class + - InternalError + - JavaScript + - Objeto +translation_of: Web/JavaScript/Reference/Global_Objects/InternalError +--- +
{{JSRef}} {{non-standard_header}}
+ +

El objeto InternalError indica un error que se produjo internamente en el motor JavaScript.

+ +

Los principalmente casos de ejemplo son cuando algo es demasiado grande, por ejemplo:

+ + + +

Constructor

+ +
+
{{JSxRef("Global_Objects/InternalError/InternalError", "InternalError()")}}
+
Crea un nuevo objeto InternalError.
+
+ +

Propiedades de la instancia

+ +
+
{{jsxref("Error.prototype.message", "InternalError.prototype.message")}}
+
Mensaje de error. Heredado de {{JSxRef("Error")}}.
+
{{jsxref("Error.prototype.name", "InternalError.prototype.name")}}
+
Nombre del error. Heredado de {{JSxRef("Error")}}.
+
{{jsxref("Error.prototype.fileName", "InternalError.prototype.fileName")}}
+
Ruta al archivo que generó este error. Heredado de {{JSxRef("Error")}}.
+
{{jsxref("Error.prototype.lineNumber", "InternalError.prototype.lineNumber")}}
+
Número de línea en el archivo que generó este error. Heredado de {{JSxRef("Error")}}.
+
{{jsxref("Error.prototype.columnNumber", "InternalError.prototype.columnNumber")}}
+
Número de columna en la línea que generó este error. Heredado de {{JSxRef("Error")}}.
+
{{jsxref("Error.prototype.stack", "InternalError.prototype.stack")}}
+
Seguimiento de la pila. Heredado de {{JSxRef("Error")}}.
+
+ +

Ejemplos

+ +

Demasiada recursividad

+ +

Esta función recursiva se ejecuta 10 veces, según la condición de salida.

+ +
function loop(x) {
+  if (x >= 10) // "x >= 10" es la condición de salida
+    return;
+  // hacer cosas
+  loop(x + 1); // la llamada recursiva
+}
+loop(0);
+ +

Establecer esta condición en un valor extremadamente alto, no funcionará:

+ +
function loop(x) {
+  if (x >= 1000000000000)
+    return;
+  // hacer cosas
+  loop(x + 1);
+}
+loop(0);
+
+// InternalError: demasiada recursividad
+ +

Para obtener más información, consulta {{JSxRef("Errors/Too_much_recursion", "InternalError: demasiada recursividad.")}}

+ +

Especificaciones

+ +

No forma parte de ningún estándar.

+ +

Compatibilidad del navegador

+ +
+
+ + +

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

+
+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/internalerror/internalerror/index.html b/files/es/web/javascript/reference/global_objects/internalerror/internalerror/index.html new file mode 100644 index 0000000000..ba895aaff9 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/internalerror/internalerror/index.html @@ -0,0 +1,55 @@ +--- +title: Constructor InternalError() +slug: >- + Web/JavaScript/Referencia/Objetos_globales/InternalError/Constructor_InternalError +tags: + - Constructor + - JavaScript + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/InternalError/InternalError +--- +
{{JSRef}} {{non-standard_header}}
+ +

El constructor InternalError() crea un error que indica un error que ocurrió internamente en el motor de JavaScript. Por ejemplo: "InternalError: demasiada recursividad".

+ +

Sintaxis

+ +
new InternalError([message[, fileName[, lineNumber]]])
+ +

Parámetros

+ +
+
message
+
Opcional. Una descripción del error legible para los humanos.
+
fileName
+
Opcional. El nombre del archivo que contiene el código que provocó la excepción.
+
lineNumber
+
Opcional. El número de línea del código que provocó la excepción.
+
+ +

Ejemplos

+ +

Crear un nuevo InternalError

+ +
new InternalError("Fallo del motor");
+
+ +

Especificaciones

+ +

No forma parte de ningún estándar.

+ +

Compatibilidad del navegador

+ +
+
+ + +

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

+
+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/intl/index.html b/files/es/web/javascript/reference/global_objects/intl/index.html new file mode 100644 index 0000000000..c1a2a47243 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/intl/index.html @@ -0,0 +1,126 @@ +--- +title: Intl +slug: Web/JavaScript/Referencia/Objetos_globales/Intl +translation_of: Web/JavaScript/Reference/Global_Objects/Intl +--- +
{{JSRef}}
+ +

El objeto de ámbito global Intl es el espacio de nombres para el API de Internacionalización de ECMAScript, éste provee comparación de cadenas y formato de números, fechas y tiempos con sensibilidad al lenguaje. Los constructores para los objetos {{jsxref("Collator")}}, {{jsxref("NumberFormat")}}, y {{jsxref("DateTimeFormat")}} son propiedades del objeto Intl. En ésta página se documentan tales propiedades, así como la funcionalidad común a los constructores de internacionalización y otras funciones sensibles al lenguaje.

+ +

Propiedades

+ +
+
{{jsxref("Global_Objects/Collator", "Intl.Collator")}}
+
Constructor para collators, objetos que permiten la comparación de cadenas con sensibilidad al lenguaje.
+
{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}
+
Constructor para objetos que permiten el formato de fecha y tiempos con sensibilidad al lenguaje.
+
{{jsxref("Global_Objects/NumberFormat", "Intl.NumberFormat")}}
+
Constructor para objetos que permiten el formato de números con sensibilidad al lenguaje.
+
{{jsxref("Global_Objects/PluralRules", "Intl.PluralRules")}}
+
Por definir
+
+ +

Métodos

+ +
+
{{jsxref("Intl.getCanonicalLocales()")}}
+
Método que retorna los nombres canónicos de las diferentes variantes de lenguaje.
+
+ +

Identificación de variantes de lenguaje y negociación

+ +

Los constructores de internacionalización, así como otros metodos de constructores sensibles al lenguaje (listados bajo {{anch("See_also", "Ver más")}}) siguen un mismo patrón para identificar variantes de lenguaje y determinar aquella a utilizar: todos aceptan los argumentos locales y options, y negocian las variantes requeridas contra aquellas que soportan utilizando un algoritmo especificado en la propiedad options.localeMatcher.

+ +

locales

+ +

El argumento locales debe ser tanto una cadena que contenga una  Etiqueta de Idioma BCP 47, o una matriz de etiquetas de dicho idioma. Si el argumento locales no es provisto o es indefinido, será usado la localicacion predeterminada.

+ +

Una etiqueta de idioma BCP 47 define un idioma y minimamente contiene un código primario de idioma. En estos la forma mas comun puede contener, : un código de idioma, un código del sistema de escritura, y un código de país o región, todo separado por guiones. Mientras la etiqueta no es case sensitive, es recomendable usar un titulo para el código del sistema de escritura, mayúsculas para el país y región y minúsculas para todo lo demás.

+ +

Ejemplos:

+ + + +

Las subetiquetas que identifican idiomas, scripts, países (regiones), y (raramente utilizadas) variantes en las etiquetas de idiomas BCP 47 pueden ser encontradas en el Registro de subetiquetas de idioma de la IANA.

+ +

BCP 47 permite también extensiones. Las funciones de internacionalización de JavaScript utilizan la extensión "u" (Unicode), misma que puede emplearse para requerir personalizacioón de los objetos {{jsxref("Collator")}}, {{jsxref("NumberFormat")}}, o {{jsxref("DateTimeFormat")}}. A continuación algunos ejemplos:

+ + + +

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

+ +
+ + +

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

+
+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/intl/numberformat/format/index.html b/files/es/web/javascript/reference/global_objects/intl/numberformat/format/index.html new file mode 100644 index 0000000000..713302ea3c --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/intl/numberformat/format/index.html @@ -0,0 +1,92 @@ +--- +title: Intl.NumberFormat.prototype.format() +slug: Web/JavaScript/Referencia/Objetos_globales/Intl/NumberFormat/format +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format +--- +
{{JSRef}}
+ +

El método Intl.NumberFormat.prototype.format() formatea un número de acuerdo con la configuración regional y las opciones de formato de este objeto {{jsxref("NumberFormat")}}.

+ +
{{EmbedInteractiveExample("pages/js/intl-numberformat-prototype-format.html")}}
+ + + +

Syntax

+ +
numberFormat.format(number)
+ +

Parametros

+ +
+
number
+
A {{jsxref("Number")}} or {{jsxref("BigInt")}} to format.
+
+ +

Descripción

+ +

The format getter function formats a number into a string according to the locale and formatting options of this {{jsxref("NumberFormat")}} object.

+ +

Ejemplos

+ +

Usando format

+ +

Use the format getter function for formatting a single currency value, here for Russia:

+ +
var options = { style: 'currency', currency: 'RUB' };
+var numberFormat = new Intl.NumberFormat('ru-RU', options);
+console.log(numberFormat.format(654321.987));
+// → "654 321,99 руб."
+
+ +

Usando format con map

+ +

Use the format getter function for formatting all numbers in an array. Note that the function is bound to the {{jsxref("NumberFormat")}} from which it was obtained, so it can be passed directly to {{jsxref("Array.prototype.map")}}.

+ +
var a = [123456.789, 987654.321, 456789.123];
+var numberFormat = new Intl.NumberFormat('es-ES');
+var formatted = a.map(numberFormat.format);
+console.log(formatted.join('; '));
+// → "123.456,789; 987.654,321; 456.789,123"
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES Int 1.0', '#sec-11.3.2', 'Intl.NumberFormat.prototype.format')}}{{Spec2('ES Int 1.0')}}Initial definition.
{{SpecName('ES Int 2.0', '#sec-11.3.2', 'Intl.NumberFormat.prototype.format')}}{{Spec2('ES Int 2.0')}}
{{SpecName('ES Int Draft', '#sec-intl.numberformat.prototype.format', 'Intl.NumberFormat.prototype.format')}}{{Spec2('ES Int Draft')}}
+ +

Browser compatibility

+ +
+ + +

{{Compat("javascript.builtins.Intl.NumberFormat.format")}}

+
+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/intl/numberformat/index.html b/files/es/web/javascript/reference/global_objects/intl/numberformat/index.html new file mode 100644 index 0000000000..7ee880d0e8 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/intl/numberformat/index.html @@ -0,0 +1,188 @@ +--- +title: Intl.NumberFormat +slug: Web/JavaScript/Referencia/Objetos_globales/Intl/NumberFormat +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat +--- +
{{JSRef("Global_Objects", "NumberFormat", "Intl,Collator,DateTimeFormat")}}
+ +

Resumen

+ +

El objeto Intl.NumberFormat es un constructor para objetos que permiten un formato numérico sensible al idioma.

+ +

Sintaxis

+ +
new Intl.NumberFormat([locales [, options]])
+
+Intl.NumberFormat.call(this [, locales [, options]])
+ +

Parámetros

+ +
+
locales
+
+

Cadena o arreglo de cadenas identificadoras para el código de idioma, conforme a BCP 47. Para mayor información con respecto a la forma e interpretación del argumento locales, visite el siguiente enlace: página de Intl. Se admite la siguiente clave de extension Unicode:

+ +
+
nu
+
El sistema numérico a ser utilizado. Los siguientes son valores admisibles: "arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt".
+
+
+
options
+
+

Objeto con alguna o todas las propiedas listadas a continuación:

+ +
+
localeMatcher
+
Algoritmo a emplear para establecer el idioma. Los valores admitidos son "lookup" (coincidencia exacta) y "best fit" (mejor coincidencia); el valor por defecto es "best fit". Para mayor información respecto a esta opción visite el siguiente enlace: página de Intl.
+
style
+
El estilo de formato a utilizar. Los valores admisibles son "decimal" para un formato numérico simple, "currency" para un formato de divisa, y "percent" para un formato porcentual; el valor por defecto es "decimal".
+
currency
+
La divisa a utilizar para el formato de divisa. Los valores admisibles son los establecidos en ISO 4217, por ejemplo "USD" para el dólar americano, "EUR" para el euro, o "CNY" para el RMB chino - para mayor información se recomienda visitar el siguiente enlace: lista actual de códigos de divisa y fondos. No existe un valor por defecto, por lo que si es valor del parámetro style es "currency", deberá proveerse también un valor para la propiedad currency.
+
currencyDisplay
+
Descriptor a utilizar para denotar el valor expresado como divisa. Los valores admisibles son "symbol" para utilizar el símbolo local a su contexto, por ejemplo €, "code" para utilizar el código de divisa ISO, "name" para utilizar el nombre local de la divisa, por ejemplo "dollar"; el valor por defecto es "symbol".
+
useGrouping
+
Si deberán emplearse o no separadores para agrupamiento, como es el caso de los separadores para millares o separadores millares/lakh/crore. Los valores admisibles son true y false; el valor por defecto es true.
+
+ +

Las propiedades descritas a continuación se dividen en dos grupos: por un lado minimumIntegerDigits, minimumFractionDigits y maximumFractionDigits, por el otro minimumSignificantDigits y maximumSignificantDigits. Si al menos una propiedad del segundo grupo es definida, todas aquellas del primero serán ignoradas.

+ +
+
minimumIntegerDigits
+
El número mínimo de digitos enteros a utilizar. El rango de valores admisibles va desde 1 hasta 21; el valor por defecto es 1.
+
minimumFractionDigits
+
El número mínimo de digitos fraccionarios a utilizar. El rango de valores admisibles va desde 0 hasta 20; el valor por defecto para formato simple y porcentual es 0; el valor por defecto para formato de divisa es el indicado en la lista de códigos de moneda ISO 4217 para subdivisiones de tal divisa (o 2 si la lista no establece un valor).
+
maximumFractionDigits
+
El número máximo de dígitos de fraccionarios a utilizar. El rango de valores admisibles va desde 0 hasta 20; el valor por defecto para formato simple es el valor más alto admisible en minimumFractionDigits y 3; el valor por defecto para el formato de moneda es el valor más alto admisible en minimumFractionDigits y el indicado en la lista de cógidos de moneda ISO 4217 para subdivisiones de tal divisa (o 2 si la lista no establece un valor); el valor por defecto en el formato porcentual es el valor más alto admisible en minimumFractionDigits y 0.
+
minimumSignificantDigits
+
El número mínimo de dígitos significativos a utilizar. El rango de valores admisibles va desde 1 hasta 21; el valor por defecto es 1.
+
maximumSignificantDigits
+
El número máximo de dígitos significativos a utilizar. El rango de valores admisibles va desde 1 hasta 21; el valor por defecto es minimumSignificantDigits.
+
+
+
+ +

Descripción

+ +

Propiedades

+ +
+
{{jsxref("NumberFormat.prototype", "Intl.NumberFormat.prototype")}}
+
Permite agregar nuevas propiedades a todos los objetos.
+
+ +

Métodos

+ +
+
{{jsxref("NumberFormat.supportedLocalesOf", "Intl.NumberFormat.supportedLocalesOf()")}}
+
Regresa un arreglo con aquellos códigos de idioma proveídos y que son soportados sin necesidad de recurrir a la configuración por defecto en el entorno de ejecucion.
+
+ +

Instancias NumberFormat

+ +

Propiedades

+ +

Toda instancia de NumberFormat hereda las siguientes propiedades de su prototipo:

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

Métodos

+ +
+

Toda instancia de NumberFormat hereda los siguientes métodos de su prototipo:

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

Ejemplos

+ +

Al no especificar un código de idioma, se regresa una cadena con el formato correspondiente al código de idioma y opciones disponibles por defecto en el entorno de ejecución.

+ +
var number = 3500;
+
+alert(new Intl.NumberFormat().format(number));
+// → "3,500" si el código de idioma es US English
+
+ +

Ejemplo: Utilizando locales

+ +

Este ejemplo muestra algunas de las variantes en formato numérico con diferentes contextos locales. A fin de emplear el idioma correspondiente a aquél en la interfaz del usuario para su aplicación, asegúrese de especificar dicho idioma ( y de ser posible alternativas) utilizando el argumento locales:

+ +
var number = 123456.789;
+
+// En el alemán la coma se utiliza como separador decimal y el punto para los millares
+alert(new Intl.NumberFormat("de-DE").format(number));
+// → 123.456,789
+
+// En la mayoría de los países de lengua arábiga se utilizan también símbolos arábigos
+alert(new Intl.NumberFormat("ar-EG").format(number));
+// → ١٢٣٤٥٦٫٧٨٩
+
+// En la India se utilizan separadores millares/lakh/crore
+alert(new Intl.NumberFormat("en-IN").format(number));
+// → 1,23,456.789
+
+// use de nu para establecer un sistema numérico, el sistema decimal chino por ejemplo
+alert(new Intl.NumberFormat("zh-Hans-CN-u-nu-hanidec").format(number));
+// → 一二三,四五六.七八九
+
+// cuando se requiera un lenguaje que pudiera no ser soportado, como es el caso del Balinés
+// se recomienda incluir un lenguaje alternativo, en éste caso Indonesio
+alert(new Intl.NumberFormat(["ban", "id"]).format(number));
+// → 123.456,789
+
+ +

Ejemplo: Utilizando options

+ +

El valor que regresa la función toLocaleString puede ser modificado utilizando el argumento options:

+ +
var number = 123456.789;
+
+// se establece un formato de divisa
+alert(new Intl.NumberFormat("de-DE", {style: "currency", currency: "EUR"}).format(number));
+// → 123.456,79 €
+
+// el yen japonés no tiene ninguna subdivisión
+alert(new Intl.NumberFormat("ja-JP", {style: "currency", currency: "JPY"}).format(number))
+// → ¥123,457
+
+// limitamos a tres los dígitos significativos
+alert(new Intl.NumberFormat("en-IN", {maximumSignificantDigits: 3}).format(number));
+// → 1,23,000
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstado actualComentario
{{SpecName('ES Int 1.0', '#sec-11.1', 'Intl.NumberFormat')}}{{Spec2('ES Int 1.0')}}Definición 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')}}
+ +

Compatibilidad de los navegadores

+ +
+ + +

{{Compat("javascript.builtins.Intl.NumberFormat")}}

+
+ +

Vea también

+ +

{{page('en-US/docs/JavaScript/Reference/Global_Objects/Intl','See_also')}}

diff --git a/files/es/web/javascript/reference/global_objects/intl/relativetimeformat/index.html b/files/es/web/javascript/reference/global_objects/intl/relativetimeformat/index.html new file mode 100644 index 0000000000..fc15049fa6 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/intl/relativetimeformat/index.html @@ -0,0 +1,106 @@ +--- +title: Intl.RelativeTimeFormat +slug: Web/JavaScript/Referencia/Objetos_globales/Intl/RelativeTimeFormat +tags: + - RelatimeTimeFormat +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat +--- +
{{JSRef}}
+ +

El objeto Intl.RelativeTimeFormat te proporciona una manera de formatear tiempos relativos con traducciones.

+ +
{{EmbedInteractiveExample("pages/js/intl-relativetimeformat.html")}}
+ + + +

Constructor

+ +
+
{{jsxref("RelativeTimeFormat.RelativeTimeFormat()", "Intl.RelativeTimeFormat.RelativeTimeFormat()")}}
+
Crea una nueva instancia de Intl.RelativeTimeFormat.
+
+ +

Métodos estáticos

+ +
+
{{jsxref("RelativeTimeFormat.supportedLocalesOf", "Intl.RelativeTimeFormat.supportedLocalesOf()")}}
+
Devuelve un {{jsxref("Array")}} con todos los idiomas disponibles sin necesidad de usar el que hay por defecto.
+
+ +

Métodos de instancia

+ +
+
{{jsxref("RelativeTimeFormat.format", "Intl.RelativeTimeFormat.prototype.format()")}}
+
Formatea value y unit conforme al idioma y las opciones de formateo al crear la instancia con Intl.RelativeTimeFormat.
+
{{jsxref("RelativeTimeFormat.formatToParts", "Intl.RelativeTimeFormat.prototype.formatToParts()")}}
+
Devuelve un {{jsxref("Array")}} de objetos representando el tiempo relativo en partes que pueden ser usadas en traducciones.
+
{{jsxref("RelativeTimeFormat.resolvedOptions", "Intl.RelativeTimeFormat.prototype.resolvedOptions()")}}
+
Devuelve un nuevo objeto con las propiedades que reflejan las opciones de localización y formato usadas durante la inicialización del objeto.
+
+ +

Ejemplos

+ +

Ejemplo básico

+ +

El siguiente ejemplo muestra cómo conseguir el tiempo relativo para el mejor idioma según el usuario.

+ +
// Crea un formateador de tiempo relativo en tu lenguaje
+// con los valores por defectos pasados expresamente.
+const rtf = new Intl.RelativeTimeFormat("en", {
+    localeMatcher: "best fit", // otros valores: "lookup"
+    numeric: "always", // otros valores: "auto"
+    style: "long", // otros valores: "short" or "narrow"
+});
+
+// Formatea el tiempo relativo con valores negativos (-1).
+rtf.format(-1, "day");
+// > "Hace 1 día"
+
+// Formatea el tiempo relativo con valores positivos (1).
+rtf.format(1, "day");
+// > "Dentro de 1 día"
+ +

Usando formatToParts

+ +

El siguiente ejemplo muestra cómo crear un formateador de tiempo relativo que devuelve las partes separadas:

+ +
const rtf = new Intl.RelativeTimeFormat("es", { numeric: "auto" });
+
+// Formatea el tiempo relativo usando día como unidad.
+rtf.formatToParts(-1, "day");
+// > [{ type: "literal", value: "ayer"}]
+
+rtf.formatToParts(100, "day");
+// > [{ type: "literal", value: "Dentro de " },
+// >  { type: "integer", value: "100", unit: "day" },
+// >  { type: "literal", value: " días" }]
+
+ +

Especificaciones

+ + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES Int Draft', '#relativetimeformat-objects', 'RelativeTimeFormat')}}
+ +

Compatibilidad en navegadores

+ + + +

{{Compat("javascript.builtins.Intl.RelativeTimeFormat")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/isfinite/index.html b/files/es/web/javascript/reference/global_objects/isfinite/index.html new file mode 100644 index 0000000000..1227071c44 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/isfinite/index.html @@ -0,0 +1,114 @@ +--- +title: isFinite() +slug: Web/JavaScript/Referencia/Objetos_globales/isFinite +tags: + - Function + - JavaScript + - isFinite() +translation_of: Web/JavaScript/Reference/Global_Objects/isFinite +--- +
+ {{jsSidebar("Objects")}}
+

Resumen

+

La función global isFinite() determina si el valor que se le pasa como argumento es un numero finito. Si es necesario, realiza una conversión a un numero al parametro pasado.

+

Sintaxis

+
isFinite(testValue)
+

Parámetros

+
+
+ testvalue
+
+ Valor a ser evaluado.
+
+

Descripción

+

isFinite es una función de alto nivel y no está asociada a ningún objeto.

+

Puede usar esta función para determinar si un número es un número finito. La función isFinite examina el número de su argumento. Si el argumento es NaN, infinito positivo o infinito negativo, este método devuelve false, de otro modo devuelve true.

+

Ejemplos

+
isFinite(Infinity);    // falso
+isFinite(NaN);         // falso
+isFinite(-Inifinity);  // falso
+
+isFinite(0);           // verdadero
+isFinite(2e64);        // verdadero
+
+isFinite("0");         // verdadero, hubiera sido falso en el caso de usar Number.isFinite("0") que es mas robusta
+

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + +
EspecificacionesEstadoComentarios
ECMAScript 2nd Edition.EstándarDefinición inicial
{{SpecName('ES5.1', '#sec-15.1.2.5', 'isFinite')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-isfinite-number', 'isFinite')}}{{Spec2('ES6')}} 
+

Compatibilidad con navegadores

+

{{ CompatibilityTable() }}

+
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soprte básico(Si)(Si)(Si)(Si)(Si)
+
+
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico(Si)(Si)(Si)(Si)(Si)(Si)
+
+

Vea También

+ diff --git a/files/es/web/javascript/reference/global_objects/isnan/index.html b/files/es/web/javascript/reference/global_objects/isnan/index.html new file mode 100644 index 0000000000..d2607d0134 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/isnan/index.html @@ -0,0 +1,88 @@ +--- +title: isNaN +slug: Web/JavaScript/Referencia/Objetos_globales/isNaN +translation_of: Web/JavaScript/Reference/Global_Objects/isNaN +--- +
{{jsSidebar("Objects")}} +

La función isNaN() determina cuando el valor es {{jsxref("NaN")}} o no. Tenga presente que la coerción dentro de la función isNaN tiene reglas interesantes; tal vez quieras usar de forma alternativa Number.isNaN(), como fue definido en ECMAScript 2015.

+ +
{{EmbedInteractiveExample("pages/js/globalprops-isnan.html")}}
+
+ +

Sintaxis

+ +
isNaN(valor)
+ +

Parámetros

+ +
+
valor
+
El valor a probar o evaluar.
+
+ +

Valor de retorno

+ +

true si es valor dado es {{jsxref("NaN")}}, de otro modo, false.

+ +

Descripción

+ +

isNaN es una función de alto nivel y no está asociada a ningún objeto.

+ +

isNaN intenta convertir el parámetro pasado a un número. Si el parámetro no se puede convertir, devuelve true; en caso contrario, devuelve false.

+ +

Esta función es útil ya que el valor {{jsxref("Objetos_globales/NaN", "NaN")}} no puede se probado correctamente con operadores de igualdad. x == NaN y x === NaN son siempre false, sin importar lo que sea x, incluso si x es NaN. Por ejemplo, tanto 1 == NaN como NaN == NaN devuelven false.

+ +

Ejemplos

+ +
isNaN(NaN) //devuelve true
+isNaN("string") //devuelve true
+isNaN("12") //devuelve false
+isNaN(12) //devuelve false
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial
{{SpecName('ES5.1', '#sec-15.1.2.4', 'isNaN')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-isnan-number', 'isNaN')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-isnan-number', 'isNaN')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad de navegadores

+ + + +

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

+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/json/index.html b/files/es/web/javascript/reference/global_objects/json/index.html new file mode 100644 index 0000000000..2744fb71e5 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/json/index.html @@ -0,0 +1,231 @@ +--- +title: JSON +slug: Web/JavaScript/Referencia/Objetos_globales/JSON +tags: + - JSON + - JavaScript + - NeedsTranslation + - Object + - TopicStub +translation_of: Web/JavaScript/Reference/Global_Objects/JSON +--- +
{{JSRef("Objetos_globales", "JSON")}}
+ +

Resumen

+ +

El objeto JSON contiene métodos para analizar JavaScript Object Notation (JSON) y convertir valores a JSON. No puede ser llamado o construído, y aparte de estas dos propiedades, no tiene funcionalidad interesante por sí mismo.

+ +

Descripción

+ +

JavaScript Object Notation

+ +

JSON es una sintaxis para serializar objetos, arreglos, números, cadenas, booleanos y nulos. Está basado sobre sintaxis JavaScript pero es diferente a ella: algo JavaScript no es JSON, y algo JSON no es JavaScript. Mira también: JSON: The JavaScript subset that isn't.

+ + + + + + + + + + + + + + + + + + + + + + + +
Diferencias entre JavaScript y JSON
Tipo JavaScriptDiferencia JSON
Objetos y arreglos +

Los nombres de las propiedades deben tener doble comilla; las comas finales están prohibidas.

+
NúmerosLos ceros a la izquierda están prohibidos; un punto decimal debe ser seguido al menos por un dígito.
Cadenas +

Solo un limitado conjunto de caracteres pueden ser de escape; ciertos caracteres de control estan prohibidos; los caracteres de separador de linea Unicode (U+2028) y el separador de parrafo (U+2029) son permitidos; las cadenas deben estar entre comillas dobles. Mira el siguiente ejemplo donde {{jsxref("JSON.parse")}} funciona bien y un{{jsxref("SyntaxError")}} es generado cuando se evalua el codigo como JavaScript:

+ +
+var code = '"\u2028\u2029"';
+JSON.parse(code); // works fine
+eval(code); // fails
+
+ +

La sintaxis JSON completa es la siguiente:

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

Espacios en blanco insignificantes pueden estar presentes en cualquier lugar excepto en un JSONNumber (los números no deben contener ningún espacio) o en una JSONString (donde es interpretado como el caracter correspondiente en la cadena, o podría causar un error). Los caracteres de Tabulación (U+0009), de retorno de carro (U+000D), de nueva línea (U+000A), y de espacio (U+0020) son los únicos caracteres de espacios en blanco válidos.

+ +

Métodos

+ +
+
{{jsxref("JSON.parse()")}}
+
Analiza una cadena de texto JSON, opcionalmente transformando el valor producido y sus propiedades, retornando el valor.
+
{{jsxref("JSON.stringify()")}}
+
Devuelve un string JSON correspondiente al valor especificado, incluyendo opcionalmente ciertas propiedades o reemplazando valores de propiedades de la manera definida por el usuario.
+
+ +

Polyfill

+ +

El objeto JSON no es soportado por navegadores antiguos. Se puede solucionar esto insertando el siguiente código al inicio del script, permitiendo usar el objeto JSON en navegadores que no soportan su implementación de forma nativa (por ejemplo en Internet Explorer 6).

+ +

El siguiente algoritmo es una imitación del objeto JSON nativo:

+ +
if (!window.JSON) {
+  window.JSON = {
+    parse: function (sJSON) { return eval("(" + sJSON + ")"); },
+    stringify: function (vContent) {
+      if (vContent instanceof Object) {
+        var sOutput = "";
+        if (vContent.constructor === Array) {
+          for (var nId = 0; nId < vContent.length; sOutput += this.stringify(vContent[nId]) + ",", nId++);
+            return "[" + sOutput.substr(0, sOutput.length - 1) + "]";
+        }
+        if (vContent.toString !== Object.prototype.toString) {
+          return "\"" + vContent.toString().replace(/"/g, "\\$&") + "\"";
+        }
+        for (var sProp in vContent) {
+          sOutput += "\"" + sProp.replace(/"/g, "\\$&") + "\":" + this.stringify(vContent[sProp]) + ",";
+        }
+        return "{" + sOutput.substr(0, sOutput.length - 1) + "}";
+     }
+     return typeof vContent === "string" ? "\"" + vContent.replace(/"/g, "\\$&") + "\"" : String(vContent);
+    }
+  };
+}
+
+ +

Los objectos JSON2 y JSON3 son mas complejos que el objeto JSON ya que manejan polyfills.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.12', 'JSON')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-json-object', 'JSON')}}{{Spec2('ES6')}}
+ +

Compatibilidad con navegadores

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{ CompatVersionUnknown() }}{{ CompatGeckoDesktop("1.9.1") }}8.010.54.0
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatGeckoMobile("1.0") }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +

Basado en Kangax's compat table.

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/json/parse/index.html b/files/es/web/javascript/reference/global_objects/json/parse/index.html new file mode 100644 index 0000000000..d8816fe8ff --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/json/parse/index.html @@ -0,0 +1,178 @@ +--- +title: JSON.parse() +slug: Web/JavaScript/Referencia/Objetos_globales/JSON/parse +tags: + - ECMAScript5 + - JSON + - JavaScript + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/JSON/parse +--- +
{{JSRef("Global_Objects", "JSON")}}
+ +

Resumen

+ +

El método JSON.parse() analiza una cadena de texto como JSON, transformando opcionalmente  el valor producido por el análisis.

+ +

Sintaxis

+ +
JSON.parse(text[, reviver])
+ +

Parámetros

+ +
+
text
+
El texto que se convertirá a JSON. Vea el objeto {{jsxref("JSON")}} para una descripción de la sintaxis JSON.
+
reviver {{optional_inline()}}
+
Si una función, prescribe cómo se transforma el valor producido originalmente por el parsing, antes de retornar.
+
+ +

Returns

+ +

Retorna el objeto que se corresponde con el texto JSON entregado.

+ +

Exceptions

+ +

Lanza una excepción {{jsxref("SyntaxError")}} si la cadena a transformar no es un JSON válido.

+ +

Ejemplos

+ +

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

Ejemplo: Usando el parámetro reviver

+ +

Si se especifica un reviver, el valor computado por el parsing es transformado antes de retornar. Específicamente, el valor computado, y todas sus propiedades (comenzando con las propiedades más anidadas y siguiendo al propio valor original), son individualmente ejecutados a través del reviver, el cual es llamado con el objeto que contiene la propiedad que está siendo procesada como this y con el nombre de la propiedad como cadena y el valor de la propiedad como argumentos. Si la función reviver retorna undefined (o no retorna algún valor, por ejemplo: si la ejecución cae el final de la función), la propiedad es eliminada del objeto. De otra manera, la propiedad es redefinidad para ser el valor de retorno.

+ +

El reviver es llamada último con la cadena vacía y el valor más alto para permitir la transformación del valor más alto. Asegúrese de manejar este caso adecuadamente, por lo general mediante la devolución del valor proporcionado, o JSON.parse will retorna undefined.

+ +
JSON.parse('{"p": 5}', function (k, v) {
+    if(k === "") return v;     // if topmost value, return it,
+    return v * 2;              // else return v * 2.
+});                            // { p: 10 }
+
+JSON.parse('{"1": 1, "2": 2,"3": {"4": 4, "5": {"6": 6}}}', function (k, v) {
+    console.log(k);            // log the current property name, the last is "".
+    return v;                  // return the unchanged property value.
+});
+
+// 1
+// 2
+// 4
+// 6
+// 5
+// 3
+// ""
+
+ +

JSON.parse() no admite comas finales

+ +
// ambos lanzarán un SyntaxError
+JSON.parse('[1, 2, 3, 4, ]');
+JSON.parse('{"foo" : 1, }');
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.12.2', 'JSON.parse')}}{{Spec2('ES5.1')}}Definición inicial.
+ Implementado en JavaScript 1.7.
{{SpecName('ES6', '#sec-json.parse', 'JSON.parse')}}{{Spec2('ES6')}} +

 

+
{{SpecName('ESDraft', '#sec-json.parse', 'JSON.parse')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad de navegadores

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{ CompatVersionUnknown() }}{{ CompatGeckoDesktop("1.9.1") }}8.010.54.0
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatGeckoMobile("1.0") }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +

Based on Kangax's compat table.

+ +

Especificaciones Gecko

+ +

Comenzando con Gecko 29 {{geckoRelease("29")}}, unas cadenas JSON malformadas producen un mensaje de error más detallado que contiene el número de línea y columna que provocó el error de parsing. Esto es útil cuando se está haciendo debug de un JSON grande.

+ +
JSON.parse('[1, 2, 3,]')
+// SyntaxError: JSON.parse: unexpected character at
+// line 1 column 10 of the JSON data
+
+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/global_objects/json/stringify/index.html b/files/es/web/javascript/reference/global_objects/json/stringify/index.html new file mode 100644 index 0000000000..13f508d7f7 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/json/stringify/index.html @@ -0,0 +1,265 @@ +--- +title: JSON.stringify() +slug: Web/JavaScript/Referencia/Objetos_globales/JSON/stringify +tags: + - JSON + - JavaScript + - Method + - stringify +translation_of: Web/JavaScript/Reference/Global_Objects/JSON/stringify +--- +

{{JSRef}}

+ +

El método JSON.stringify() convierte un objeto o valor de JavaScript en una cadena de texto JSON, opcionalmente reemplaza valores si se indica una función de reemplazo, o si se especifican las propiedades mediante un array de reemplazo.

+ +
{{EmbedInteractiveExample("pages/js/json-stringify.html")}}
+ +

Sintaxis

+ +
JSON.stringify(value[, replacer[, space]])
+ +

Parámetros

+ +
+
value
+
El valor que será convertido a una cadena JSON.
+
replacer{{Optional_Inline}}
+
Una función que altera el comportamiento del proceso de conversión a cadena de texto, o un array de objetos {{JSxRef("String")}} o {{JSxRef("Number")}} que representan una lista de elementos válidos que se incluyen en la cadena JSON. Si este valor es {{JSxRef("null")}} o no se define, todas las propiedades del objeto son incluidas en la cadena de texto JSON resultante.
+
space{{Optional_Inline}}
+
Un objeto de tipo {{JSxRef("String")}} o {{JSxRef("Number")}} que se utiliza para insertar un espacio en blanco dentro de la cadena de salida JSON para mejorar su legibilidad. +

Si es de tipo Number, indica el número de espacios a usar como espacios en blanco; este número está limitado se limita a 10 (si es mayor, el valor es sólo 10). Los valores inferiores a 1 indican que no se deben utilizar espacios.

+ +

Si es de tipo String, la cadena de texto (o sus 10 primeros caracteres, si es mayor) se utiliza como espacios en blanco. Si este parámetro no se define o es {{JSxRef("null")}}, no se utilizará ningún espacio en blanco.

+
+
+ +

Valor devuelto

+ +

Una cadena de texto JSON que representa el valor dado.

+ +

Excepciones

+ +

Lanza una excepción {{JSxRef("TypeError")}} ("cyclic object value") cuando encuentra una referencia circular.

+ +

Descripción

+ +

JSON.stringify convierte un valor a notación JSON representándolo:

+ + + +
JSON.stringify({});                    // '{}'
+JSON.stringify(true);                  // 'true'
+JSON.stringify('foo');                 // '"foo"'
+JSON.stringify([1, 'false', false]);   // '[1,"false",false]'
+JSON.stringify([NaN, null, Infinity]); // '[null,null,null]'
+JSON.stringify({ x: 5 });              // '{"x":5}'
+
+JSON.stringify(new Date(2006, 0, 2, 15, 4, 5))
+// '"2006-01-02T15:04:05.000Z"'
+
+JSON.stringify({ x: 5, y: 6 });
+// '{"x":5,"y":6}'
+JSON.stringify([new Number(3), new String('false'), new Boolean(false)]);
+// '[3,"false",false]'
+
+// Elementos de array identificados por string no son enumerables y no tienen sentido en JSON
+let a = ['foo', 'bar'];
+a['baz'] = 'quux';      // a: [ 0: 'foo', 1: 'bar', baz: 'quux' ]
+JSON.stringify(a);
+// '["foo","bar"]'
+
+JSON.stringify({ x: [10, undefined, function(){}, Symbol('')] });
+// '{"x":[10,null,null,null]}'
+
+// Estructuras de datos standard
+JSON.stringify([new Set([1]), new Map([[1, 2]]), new WeakSet([{a: 1}]), new WeakMap([[{a: 1}, 2]])]);
+// '[{},{},{},{}]'
+
+// TypedArray
+JSON.stringify([new Int8Array([1]), new Int16Array([1]), new Int32Array([1])]);
+// '[{"0":1},{"0":1},{"0":1}]'
+JSON.stringify([new Uint8Array([1]), new Uint8ClampedArray([1]), new Uint16Array([1]), new Uint32Array([1])]);
+// '[{"0":1},{"0":1},{"0":1},{"0":1}]'
+JSON.stringify([new Float32Array([1]), new Float64Array([1])]);
+// '[{"0":1},{"0":1}]'
+
+// toJSON()
+JSON.stringify({ x: 5, y: 6, toJSON(){ return this.x + this.y; } });
+// '11'
+
+// Símbolos:
+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';
+  }
+});
+// undefined
+
+// Propiedades no enumerables:
+JSON.stringify( Object.create(null, { x: { value: 'x', enumerable: false }, y: { value: 'y', enumerable: true } }) );
+// '{"y":"y"}'
+
+ +

El parámetro replacer

+ +

El parámetro replacer (de reemplazo) puede ser tanto una función como o un array.

+ +

Como una función toma dos parámetros: el valor y la clave que van a ser procesados. El objeto al cual pertenece la clave representa el parametro this del reemplazo.

+ +

Inicialmente es llamado con una clave vacía y representa el objeto que se va a procesar, y solo después es llamado por cada propiedad en el objeto o array que se va a procesar.

+ +

Devuelve el valor que se va a agregar a la cadena JSON, de la siguiente manera:

+ + + +
Nota: No se puede usar la función de reemplazo para borrar los valores de un array. Si se devuelve undefined o una función, entonces se usara null en su lugar.
+ +

Ejemplo con una función

+ +
function replacer(key, value) {
+  // Filtrando propiedades 
+  if (typeof value === "string") {
+    return undefined;
+  }
+  return value;
+}
+
+var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};
+var jsonString = JSON.stringify(foo, replacer);
+// '{"week":45, "month":7}'
+
+ +

El resultado en una cadena JSON sería:  {"week":45,"month":7}.

+ +

Ejemplo con un array

+ +

Si el reemplazo es un array, los valores indican los nombres de las propiedades del objeto que se va a incluir en la cadena JSON resultado.

+ +
JSON.stringify(foo, ['week', 'month']);  
+// '{"week":45,"month":7}', sólo mantiene las propiedades de "week" y de "month"
+
+ +

Argumento space

+ +

Este argumento puede ser empleado para controlar el espaciado en la cadena final. Si es un número, los niveles sucesivos del proceso serán identados cada uno por tantos espacios como se indique (hasta 10). Si es una cadena, serán identados con dicha cadena (o los primeros diez caracteres de la misma).

+ +
JSON.stringify({ a: 2 }, null, ' ');
+// regresa la cadena de texto:
+// '{
+//  "a": 2
+// }'
+ +

Usar el carácter tabulador simula la apariencia de impresión:

+ +
JSON.stringify({ uno: 1, dos : 2 }, null, '\t')
+// devuelve el string:
+// '{            \
+//     "uno": 1, \
+//     "dos": 2  \
+// }' 
+ +

Comportamiento toJSON()

+ +

Si un objeto que sera estringificado tiene una propiedad llamada toJSON donde su valor es una función, entonces el método toJSON modifica el comportamiento de la estringificación JSON: en lugar del objeto que esta siendo serializado, el valor retornado por el método toJSON será serializado cuando el mismo sea llamado. Por ejemplo:

+ +
var obj = {
+  foo: 'foo',
+  toJSON: function () {
+    return 'bar';
+  }
+};
+var json = JSON.stringify({x: obj}); // '{"x":"bar"}'.
+
+ +

Ejemplo de como usar JSON.stringify() con localStorage

+ +

En dado caso en el cual se requiera que un objeto creado por el usuario y al cual se le permita ser restaurado incluso cuando el navegador ha sido cerrado, el siguiente ejemplo es un modelo de la aplicabilidad del metodo JSON. stringify().

+ +
+

Las funciones no son un tipo de dato valido por lo cual estas no funcionaran. Algunos objetos como tipo DATE, se convertiran a cadenas de texto despues de ejecutar JSON.parse().

+
+ +
// Creando un ejemplo de JSON
+var session = {
+  'screens': [],
+  'state': true
+};
+session.screens.push({ 'name': 'screenA', 'width': 450, 'height': 250 });
+session.screens.push({ 'name': 'screenB', 'width': 650, 'height': 350 });
+session.screens.push({ 'name': 'screenC', 'width': 750, 'height': 120 });
+session.screens.push({ 'name': 'screenD', 'width': 250, 'height': 60 });
+session.screens.push({ 'name': 'screenE', 'width': 390, 'height': 120 });
+session.screens.push({ 'name': 'screenF', 'width': 1240, 'height': 650 });
+
+// Convirte el JSON string con JSON.stringify()
+// entonces guarda con localStorage con el nombre de la sesión
+localStorage.setItem('session', JSON.stringify(session));
+
+// Ejemplo de como transformar el String generado usando
+// JSON.stringify() y guardándolo en localStorage como objeto JSON otra vez
+var restoredSession = JSON.parse(localStorage.getItem('session'));
+
+// Ahora la variable restoredSession contiene el objeto que fue guardado
+// en localStorage
+console.log(restoredSession);
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.12.3', 'JSON.stringify')}}{{Spec2('ES5.1')}}Definición incial.
+ Implementada en JavaScript 1.7.
{{SpecName('ES6', '#sec-json.stringify', 'JSON.stringify')}}{{Spec2('ES6')}} +

 

+
{{SpecName('ESDraft', '#sec-json.stringify', 'JSON.stringify')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +

{{Compat("javascript.builtins.JSON.stringify")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/map/clear/index.html b/files/es/web/javascript/reference/global_objects/map/clear/index.html new file mode 100644 index 0000000000..67e8288ad2 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/map/clear/index.html @@ -0,0 +1,109 @@ +--- +title: Map.prototype.clear() +slug: Web/JavaScript/Referencia/Objetos_globales/Map/clear +translation_of: Web/JavaScript/Reference/Global_Objects/Map/clear +--- +
{{JSRef}}
+ +

El método clear() elimina todos los elementos de un objeto Map.

+ +

Sintaxis

+ +
myMap.clear();
+ +

Ejemplos

+ +

Usando el método clear

+ +
var myMap = new Map();
+myMap.set("bar", "baz");
+myMap.set(1, "foo");
+
+myMap.size;       // 2
+myMap.has("bar"); // true
+
+myMap.clear();
+
+myMap.size;       // 0
+myMap.has("bar")  // false
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoObservaciones
{{SpecName('ES6', '#sec-map.prototype.clear', 'Map.prototype.clear')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-map.prototype.clear', 'Map.prototype.clear')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico.38{{CompatGeckoDesktop("19.0")}}11257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico.{{CompatNo}}38{{CompatGeckoMobile("19.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/map/delete/index.html b/files/es/web/javascript/reference/global_objects/map/delete/index.html new file mode 100644 index 0000000000..cbd6e02a50 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/map/delete/index.html @@ -0,0 +1,114 @@ +--- +title: Map.prototype.delete() +slug: Web/JavaScript/Referencia/Objetos_globales/Map/delete +translation_of: Web/JavaScript/Reference/Global_Objects/Map/delete +--- +
{{JSRef}}
+ +

El método delete() elimina el elemento especificado de un objeto Map.

+ +

Sintaxis

+ +
myMap.delete(clave);
+ +

Parámetros

+ +
+
clave
+
Requerido. La clave del elemento a eliminar del objeto Map.
+
+ +

Valor de retorno

+ +

Retorna true si el elemento existe en el objeto Map objecty fue eliminado, o false si el elemento no existe.

+ +

Ejemplo

+ +

Usando el método delete

+ +
var myMap = new Map();
+myMap.set("bar", "foo");
+
+myMap.delete("bar"); // Retorna true. Eliminado con éxito.
+myMap.has("bar");    // Retorna false. El elemento "bar" ya no está presente.
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoObservaciones
{{SpecName('ES6', '#sec-map.prototype.delete', 'Map.prototype.delete')}}{{Spec2('ES6')}}Definición inicial
{{SpecName('ESDraft', '#sec-map.prototype.delete', 'Map.prototype.delete')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad con navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
PrestaciónChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico38{{CompatGeckoDesktop("13.0")}}11257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
PrestaciónAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatNo}}38{{CompatGeckoMobile("13.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/map/entries/index.html b/files/es/web/javascript/reference/global_objects/map/entries/index.html new file mode 100644 index 0000000000..76a4ca10b7 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/map/entries/index.html @@ -0,0 +1,109 @@ +--- +title: Map.prototype.entries() +slug: Web/JavaScript/Referencia/Objetos_globales/Map/entries +translation_of: Web/JavaScript/Reference/Global_Objects/Map/entries +--- +
{{JSRef}}
+ +

El método entries() retorna un nuevo objeto Iterator que contiene los pares [clave, valor] para cada elemento en el objeto Map en orden de inserción.

+ +

Sintaxis

+ +
myMap.entries()
+ +

Ejemplos

+ +

Usando entries()

+ +
var myMap = new Map();
+myMap.set("0", "foo");
+myMap.set(1, "bar");
+myMap.set({}, "baz");
+
+var mapIter = myMap.entries();
+
+console.log(mapIter.next().value); // ["0", "foo"]
+console.log(mapIter.next().value); // [1, "bar"]
+console.log(mapIter.next().value); // [Object, "baz"]
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoObservaciones
{{SpecName('ES6', '#sec-map.prototype.entries', 'Map.prototype.entries')}}{{Spec2('ES6')}}Definición
{{SpecName('ESDraft', '#sec-map.prototype.entries', 'Map.prototype.entries')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
PrestaciónChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support38{{ CompatGeckoDesktop("20") }}{{CompatNo}}257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
PrestaciónAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico.{{CompatNo}}38{{CompatGeckoMobile("20")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/map/foreach/index.html b/files/es/web/javascript/reference/global_objects/map/foreach/index.html new file mode 100644 index 0000000000..00d8e85ff8 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/map/foreach/index.html @@ -0,0 +1,94 @@ +--- +title: Map.prototype.forEach() +slug: Web/JavaScript/Referencia/Objetos_globales/Map/forEach +translation_of: Web/JavaScript/Reference/Global_Objects/Map/forEach +--- +
{{JSRef}}
+ +

El método forEach() ejecuta una función por cada par clave / valor en el objeto Map, en orden de inserción.

+ +

Sintaxis

+ +
myMap.forEach(callback[, thisArg])
+ +

Parámetros

+ +
+
callback
+
Función ejecutada en cada elemento.
+
thisArg
+
Valor a usar por la funcion callback.
+
+ +

Valor de Retorno

+ +

{{jsxref("undefined")}}.

+ +

Descripción

+ +

El método forEach ejecuta la devolución de llamada (callback) proporcionada una vez para cada clave del mapa que realmente exista. No se invoca para las claves que se han eliminado. Sin embargo, se ejecuta para los valores que están presentes pero tienen el valor indefinido (undefined).

+ +

La función (callback) es invocada con 3 argumentos:

+ + + +

Si se provee un parámetro thisArg al método forEach, pasará al callback cuando sea invocado, para ser utilizado como su valor this. De otra manera, el valor undefined pasará para ser usado como su valor this. El valor this finalmente observable por el callback se determina de acuerdo a las reglas usuales para determinar la visibilidad de this por una función.

+ +

Cada valor es usado una vez, excepto en este caso cuando es eliminado y agregado de nuevo antes de que el forEach haya terminado. callback no es invocado para valores eliminados antes de que sean usados. 

+ +

El método forEach ejecuta la función callback una vez para cada elemento en el objeto Map; No se retornan valores.

+ +

Ejemplos

+ +

Imprimiendo el contenido de un objeto Map

+ +

El siguiente código imprime una línea por cada elemento en el objeto Map:

+ +
function logMapElements(value, key, map) {
+    console.log(`m[${key}] = ${value}`);
+}
+new Map([['foo', 3], ['bar', {}], ['baz', undefined]]).forEach(logMapElements);
+// logs:
+// "m[foo] = 3"
+// "m[bar] = [object Object]"
+// "m[baz] = undefined"
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-map.prototype.foreach', 'Map.prototype.forEach')}}{{Spec2('ES2015')}}Definición Inicial.
{{SpecName('ESDraft', '#sec-map.prototype.foreach', 'Map.prototype.forEach')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad con navegadores

+ + + +

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

+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/global_objects/map/get/index.html b/files/es/web/javascript/reference/global_objects/map/get/index.html new file mode 100644 index 0000000000..7f53d850e3 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/map/get/index.html @@ -0,0 +1,77 @@ +--- +title: Map.prototype.get() +slug: Web/JavaScript/Referencia/Objetos_globales/Map/get +tags: + - JavaScript + - Map +translation_of: Web/JavaScript/Reference/Global_Objects/Map/get +--- +
{{JSRef}}
+ +

El método get() devuelve un elemento específico de un objeto Map.

+ +
{{EmbedInteractiveExample("pages/js/map-prototype-get.html")}}
+ + + +

Sintaxis

+ +
miMapa.get(clave);
+ +

Parametros

+ +
+
clave
+
Requerido. La clave del elemento del objeto Map que queremos obtener.
+
+ +

Valor devuelto

+ +

Devuelve el elemento asociado a la clave indicada o undefined si la clave no ha sido encontrada en el objeto Map.

+ +

Ejemplos

+ +

Usando el método get

+ +
var miMapa = new Map();
+miMapa.set('bar', 'foo');
+
+miMapa.get('bar');  // Devuelve "foo".
+miMapa.get('baz');  // Devuelve undefined.
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
{{SpecName('ES2015', '#sec-map.prototype.get', 'Map.prototype.get')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-map.prototype.get', 'Map.prototype.get')}}{{Spec2('ESDraft')}} 
+ +

Compatiblidad con navegadores

+ + + +

{{Compat("javascript.builtins.Map.get")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/map/has/index.html b/files/es/web/javascript/reference/global_objects/map/has/index.html new file mode 100644 index 0000000000..c556a00dae --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/map/has/index.html @@ -0,0 +1,65 @@ +--- +title: Map.prototype.has() +slug: Web/JavaScript/Referencia/Objetos_globales/Map/has +translation_of: Web/JavaScript/Reference/Global_Objects/Map/has +--- +
{{JSRef}}
+ +

El método has() devuelve un booleano indicando si el elemento con la llave especificada existe o no.

+ +
{{EmbedInteractiveExample("pages/js/map-prototype-has.html")}}
+ + + +

Sintaxis

+ +
myMap.has(key)
+ +

Parameteros

+ +
+
key
+
La llave del elemento a probar si esta presente en el objeto Map.
+
+ +

Valor devuelto

+ +

true si el elemento con la llave especificada existe en el objeto Map; de lo contrario false.

+ +

Ejemplos

+ +

Usando has()

+ +
let myMap = new Map()
+myMap.set('bar', "foo")
+
+myMap.has('bar')   // returns true
+myMap.has('baz')   // returns false
+
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-map.prototype.has', 'Map.prototype.has')}}
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Map.has")}}

+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/map/index.html b/files/es/web/javascript/reference/global_objects/map/index.html new file mode 100644 index 0000000000..e3ad7812b7 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/map/index.html @@ -0,0 +1,213 @@ +--- +title: Map +slug: Web/JavaScript/Referencia/Objetos_globales/Map +tags: + - ECMAScript2015 + - JavaScript + - Map +translation_of: Web/JavaScript/Reference/Global_Objects/Map +--- +
{{JSRef("Global_Objects", "Map")}}
+ +

Resumen

+ +

El objeto Map almacena pares clave/valor. Cualquier valor (tanto objetos como {{Glossary("Primitive", "valores primitivos")}}) pueden ser usados como clave o valor.

+ +

Sintaxis

+ +
new Map([iterable])
+
+ +

Parámetros

+ +
+
iterable
+
Iterable es un array o cualquier otro objeto iterable cuyos elementos son pares clave-valor (arrays de 2 elementos). Cada par clave-valor será agregado al nuevo Map.
+
+ +

Descripción

+ +

Un objeto Map puede iterar sobre sus elementos en orden de inserción. Un bucle for..of devolverá un array de [clave, valor] en cada iteración.

+ +

Cabe destacar que un Map el cual es un mapa de un objeto, especialmente un diccionario de diccionarios, solo se va a mapear en el orden de inserción del objeto — el cual es aleatorio y no ordenado.

+ +

Igualdad de claves

+ +

La igualdad de claves esta basada en el algoritmo "SameValueZero": NaN es considerado lo mismo que NaN (sin importar que NaN !== NaN) y todos los otros operadores son considerados iguales de acuerdo a la semantica del operador ===. En las primeras versiones de ECMAScript 6 -0 y +0 eran considarados distintos (even though -0 === +0), esto fue cambiado en posteriores versiones y ha sido implementado en Gecko 29 {{geckoRelease("29")}} ({{bug("952870")}}) and a recent nightly Chrome.

+ +

Objetos y mapas comparados

+ +

Los {{jsxref("Object", "Objetos")}} son similares a los Maps en cuanto a que ambos permiten establecer claves a valores, recuperar dichos valores, eliminar claves, y detectar si existe algo almacenado en una clave determinada. Por esto, los Objects han sido usados históricamente como Maps; no obstante, hay diferencias importantes entre  Objects y Maps que hacen mejor usar un  Map  en la mayoría de casos.

+ + + +

Propiedades

+ +
+
Map.length
+
El valor de la propiedad de longitud es 0
+
{{jsxref("Map.@@species", "get Map[@@species]")}}
+
La función constructor que se usa para crear objetos derivados.
+
{{jsxref("Map.prototype")}}
+
Representa el prototipo para el constructor de Map. Permite añadir propiedades a todos los objetos Map.
+
+ +

Instancias de Map

+ +

Todas las instancias de Map heredan de {{jsxref("Map.prototype")}}.

+ +

Propiedades

+ +

{{page('es/docs/Web/JavaScript/Referencia/Objetos_globales/Map/prototype','Propiedades')}}

+ +

Métodos

+ +

{{page('es/docs/Web/JavaScript/Referencia/Objetos_globales/Map/prototype','Métodos')}}

+ +

Ejemplos

+ +

Ejemplo: Usando el objeto Map

+ +
var miMapa = new Map();
+
+var claveObj = {},
+    claveFunc = function () {},
+    claveCadena = "una cadena";
+
+// asignando valores
+miMapa.set(claveCadena, "valor asociado con 'una cadena'");
+miMapa.set(claveObj, "valor asociado con claveObj");
+miMapa.set(claveFunc, "valor asociado with claveFunc");
+
+miMapa.size; // 3
+
+// obteniendo los valores
+miMapa.get(claveCadena);    // "valor asociado con 'una cadena'"
+miMapa.get(claveObj);       // "valor asociado con claveObj"
+miMapa.get(claveFunc);      // "valor asociado con claveFunc"
+
+miMapa.get("una cadena");   // ""valor asociado con 'una cadena'"
+                         // porque claveCadena === 'una cadena'
+miMapa.get({});           // undefined, porque claveObj !== {}
+miMapa.get(function() {}) // undefined, porque claveFunc !== function () {}
+
+ +

Ejemplo: Usando NaN como claves de Map

+ +

NaN también puede ser usado como una clave. Aún cuando cada clave NaN no es igual a sí misma (NaN !== NaN es verdadera), el siguiente ejemplo funciona, porque las claves NaNs NaNs no son distinguibles unas de otras:

+ +
var miMapa = new Map();
+miMapa.set(NaN, "no es un número");
+
+miMapa.get(NaN); // "no es un número"
+
+var otroNaN = Number("foo");
+miMapa.get(otroNaN); // "no es un número"
+
+ +

Ejemplo: Iterando Map con for..of

+ +

Los Map pueden ser iterados usando un bucle for..of:

+ +
var miMapa = new Map();
+miMapa.set(0, "cero");
+miMapa.set(1, "uno");
+for (var [clave, valor] of miMapa) {
+  alert(clave + " = " + valor);
+}
+// Mostrará 2 alertas; primero con "0 = cero" y segundo con "1 = uno"
+
+for (var clave of miMapa.keys()) {
+  alert(clave);
+}
+// Mostrará 2 alertas; primero con "0" y segundo con "1"
+
+for (var valor of miMapa.values()) {
+  alert(valor);
+}
+// Mostrará 2 alertas; primero con "cero" y segundo con "uno"
+
+for (var [clave, valor] of miMapa.entries()) {
+  alert(clave + " = " + valor);
+}
+// Mostrará 2 alertas; primero con "0 = cero" y segundo con "1 = uno"
+
+miMapa.forEach(function(valor, clave, miMapa) {
+  alert(clave + " = " + valor);
+})
+// Mostrará 2 alertas; primero con "0 = cero" y segundo con "1 = uno"
+
+ +

Iterando Maps usando forEach()

+ +

Los Map pueden ser iterados usando el método forEach():

+ +
miMapa.forEach(function(valor, clave) {
+  console.log(clave + ' = ' + valor);
+});
+// Mostrará 2 logs; el primero con "0 = cero" y el segundo con "1 = uno"
+ +

Ejemplo: Relación con los objetos Array

+ +
var kvArray = [["clave1", "valor1"], ["clave2", "valor2"]];
+
+// El constructor por defecto de Map para transforar un Array 2D (clave-valor) en un mapa
+var miMapa = new Map(kvArray);
+
+miMapa.get("clave1"); // devuelve "valor1"
+
+// Usando la función Array.from para transformar el mapa a un Array 2D clave-valor.
+console.log(Array.from(miMapa)); // Muestra exactamente el mismo Array que kvArray
+
+// O usando los iteradores de claves o valores y convirtiendo a array.
+console.log(Array.from(miMapa.keys())); // Muestra ["clave1", "clave2"]
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-map-objects', 'Map')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-map-objects', 'Map')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con Navegadores

+ +

 

+ + + +

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

+ +

 

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/map/keys/index.html b/files/es/web/javascript/reference/global_objects/map/keys/index.html new file mode 100644 index 0000000000..6f67e49dee --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/map/keys/index.html @@ -0,0 +1,109 @@ +--- +title: Map.prototype.keys() +slug: Web/JavaScript/Referencia/Objetos_globales/Map/keys +translation_of: Web/JavaScript/Reference/Global_Objects/Map/keys +--- +
{{JSRef}}
+ +

El metodo keys() returna un nuevo objeto Iterator que contiene las llaves/keys por cada elemento en el objeto en orden de insercion.

+ +

Syntax

+ +
myMap.keys()
+ +

Ejemplos

+ +

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

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-map.prototype.keys', 'Map.prototype.keys')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-map.prototype.keys', 'Map.prototype.keys')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ +

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

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/map/set/index.html b/files/es/web/javascript/reference/global_objects/map/set/index.html new file mode 100644 index 0000000000..27faa5a1a6 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/map/set/index.html @@ -0,0 +1,133 @@ +--- +title: Map.prototype.set() +slug: Web/JavaScript/Referencia/Objetos_globales/Map/set +tags: + - ECMAScript6 + - JavaScript + - Mapa + - Prototype + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Map/set +--- +
{{JSRef}}
+ +

El método set() agrega un nuevo elemento al objeto Map con la llave y el valor especificado.

+ +

Syntax

+ +
myMap.set(llave, valor);
+ +

Parámetros

+ +
+
llave
+
Requerido. La llave del elemento a agregar al objeto Map.
+
valor
+
Requerido. El valor del elemento a agregar al objeto Map.
+
+ +

Valor de retorno

+ +

El objeto Map.

+ +

Ejemplos

+ +

Usando el método set

+ +
var miMapa = new Map();
+
+// Agregar nuevos elementos al mapa
+miMapa.set("bar", "foo");
+miMapa.set(1, "foobar");
+
+// Actualizar un elemento en el mapa
+miMapa.set("bar", "baz");
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-map.prototype.set', 'Map.prototype.set')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-map.prototype.set', 'Map.prototype.set')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con Navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracteríticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico38{{CompatGeckoDesktop("13.0")}}11257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracteríticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatNo}}38{{CompatGeckoMobile("13.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Notas de compatibilidad

+ + + +

Véase también

+ + diff --git a/files/es/web/javascript/reference/global_objects/map/size/index.html b/files/es/web/javascript/reference/global_objects/map/size/index.html new file mode 100644 index 0000000000..3ca4d446db --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/map/size/index.html @@ -0,0 +1,110 @@ +--- +title: Map.prototype.size +slug: Web/JavaScript/Referencia/Objetos_globales/Map/size +translation_of: Web/JavaScript/Reference/Global_Objects/Map/size +--- +
{{JSRef}}
+ +

La propiedad evaluada size retorna el número de elementos en un objeto  {{jsxref("Map")}}.

+ +

Descripción

+ +

El valor de size es un entero representando cuántas entradas tiene el objeto Map. No hay definida una función de evalador set  para size; uted no puede cambiar esta propiedad.

+ +

Ejemplos

+ +

Usando size

+ +
var myMap = new Map();
+myMap.set("a", "alpha");
+myMap.set("b", "beta");
+myMap.set("g", "gamma");
+
+myMap.size // 3
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoObservaciones
{{SpecName('ES6', '#sec-get-map.prototype.size', 'Map.prototype.size')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-get-map.prototype.size', 'Map.prototype.size')}}{{Spec2('ESDraft')}} 
+ +

Compatibildad entre navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico38{{ CompatGeckoDesktop("19") }}{{ CompatIE("11") }}257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatNo}}38{{CompatGeckoMobile("19")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Notas específicas para Gecko

+ + + +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/map/values/index.html b/files/es/web/javascript/reference/global_objects/map/values/index.html new file mode 100644 index 0000000000..c81b54dbe7 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/map/values/index.html @@ -0,0 +1,77 @@ +--- +title: Map.prototype.values() +slug: Web/JavaScript/Referencia/Objetos_globales/Map/values +tags: + - ECMAScript 2015 + - Iterador + - JavaScript + - Map + - Prototipo + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Map/values +--- +
{{JSRef}}
+ +

El método values() devuelve un nuevo objeto Iterador que contiene los valores para cada elemento en el objeto Map en el mismo orden de inserción.

+ +
{{EmbedInteractiveExample("pages/js/map-prototype-values.html")}}
+ + + +

Sintaxis

+ +
myMap.values()
+ +

Valor devuelto

+ +

Un nuevo objeto iterador {{jsxref("Map")}}.

+ +

Ejemplos

+ +

Utilizando values()

+ +
var myMap = new Map();
+myMap.set('0', 'foo');
+myMap.set(1, 'bar');
+myMap.set({}, 'baz');
+
+var mapIter = myMap.values();
+
+console.log(mapIter.next().value); // "foo"
+console.log(mapIter.next().value); // "bar"
+console.log(mapIter.next().value); // "baz"
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-map.prototype.values', 'Map.prototype.values')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-map.prototype.values', 'Map.prototype.values')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad en navegadores

+ + + +

{{Compat("javascript.builtins.Map.values")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/abs/index.html b/files/es/web/javascript/reference/global_objects/math/abs/index.html new file mode 100644 index 0000000000..eb286dcc59 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/abs/index.html @@ -0,0 +1,149 @@ +--- +title: Math.abs() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/abs +tags: + - JavaScript + - Math + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Math/abs +--- +
{{JSRef}}
+ +

La función Math.abs() retorna el valor absoluto de un número, que es 

+ +

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}

+ +

Sintaxis

+ +
Math.abs(x)
+ +

Parámetros

+ +
+
x
+
Un número.
+
+

Valor de retorno

+ +

El valor absoluto del número dado.

+ +

+
+
+ +

Descripción

+ +

Como abs() es un método estático de Math, deberías siempre usar Math.abs(), en lugar de un método de un objeto Math que crees (Math no es un constructor).

+ +

Ejemplos

+ +

Comportamiento de Math.abs()

+ +

Pasando un string no-numérico o una variable {{jsxref("undefined")}}/empty retorna {{jsxref("NaN")}}. Pasando {{jsxref("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
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}}
+ +

Compatibilidad en navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/acos/index.html b/files/es/web/javascript/reference/global_objects/math/acos/index.html new file mode 100644 index 0000000000..3280a9b17f --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/acos/index.html @@ -0,0 +1,99 @@ +--- +title: Math.acos() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/acos +tags: + - JavaScript + - Math + - Métodos + - Referências +translation_of: Web/JavaScript/Reference/Global_Objects/Math/acos +--- +
{{JSRef}}
+ +

La función Math.acos() devuelve el arco coseno (en radianes) de un número que es

+ +

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{ the unique } \; y \in [0; \pi] \, \text{such that} \; \cos(y) = x

+ +

Sintaxis

+ +
Math.acos(x)
+ +

Parámetros

+ +
+
x
+
Un número.
+
+ +

Valor devuelto

+ +

El arco coseno (en radianes) de un número dado si se encuentra entre -1 y 1; de otro modo, {{jsxref("NaN")}}.

+ +

Descripción

+ +

El método Math.acos() devuelve un valor numérico entre 0 y π radianes para x entre -1 y 1. Si el valor de x está fuera de este rango, devuelve {{jsxref("NaN")}}.

+ +

Debido a que acos() es un método estático de Math, siempre debe usarse como Math.acos(), en vez de como un método de un objeto Math creado (Math no es un constructor).

+ +

Ejemplos

+ +

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 o mayores que 1, Math.acos() devuelve {{jsxref("NaN")}}.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
+ +

Compatibilidad con navegador

+ + + +

{{Compat("javascript.builtins.Math.acos")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/acosh/index.html b/files/es/web/javascript/reference/global_objects/math/acosh/index.html new file mode 100644 index 0000000000..8819e3c69a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/acosh/index.html @@ -0,0 +1,94 @@ +--- +title: Math.acosh() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/acosh +tags: + - JavaScript + - Math + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Math/acosh +--- +
{{JSRef}}
+ +

La función Math.acosh() retorna el arco coseno hiperbólico de un número que es: 

+ +

Para todo x mayor ó igual a 1,se cumple que : la funcion Math.acosh(x) = arcosh(x) = al único y mayor ó igual a 0 ; tal que; cosh(y) = x

+ +

Sintaxis

+ +
Math.acosh(x)
+ +

Parámetros

+ +
+
x
+
Un número.
+
+ +

Valor retornado

+ +

El arco coseno hiperbólico del número dado. Si el número es menor que 1, {{jsxref("NaN")}}.

+ +

Descripción

+ +

Como acosh() es un método estático de Math, siempre debe ser usado como Math.acosh(), en vez de como un método de un objeto Math creado (Math no es constructor).

+ +

Ejemplos

+ +

Utilizando Math.acosh()

+ +
Math.acosh(-1);  // NaN
+Math.acosh(0);   // NaN
+Math.acosh(0.5); // NaN
+Math.acosh(1);   // 0
+Math.acosh(2);   // 1.3169578969248166
+
+ +

Para valores menores que 1 Math.acosh() retorna {{jsxref("NaN")}}.

+ +

Polyfill

+ +

Para todo x1x mayor ó igual a 1, se tiene que el arcosh(x) = ln(x + la raiz cuadrada de(x cuadrado - 1))  y esto puede ser emulado con la siguiente funcion:

+ +
Math.acosh = Math.acosh || function(x) {
+  return Math.log(x + Math.sqrt(x * x - 1));
+};
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónStatusComentario
{{SpecName('ES6', '#sec-math.acosh', 'Math.acosh')}}{{Spec2('ES6')}}Definición inicial.
{{ SpecName('ESDraft', '#sec-math.acosh', 'Math.acosh')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad de navegador

+ + + +

{{Compat("javascript.builtins.Math.acosh")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/asin/index.html b/files/es/web/javascript/reference/global_objects/math/asin/index.html new file mode 100644 index 0000000000..1a6c78d6a5 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/asin/index.html @@ -0,0 +1,144 @@ +--- +title: Math.asin() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/asin +translation_of: Web/JavaScript/Reference/Global_Objects/Math/asin +--- +
{{JSRef}}
+ +

La Funcion Math.asin() retorna El arco seno (en radianes) de un número, eso es.

+ +

x[-1;1],Math.asin(x)=arcsin(x)= the unique y[-π2;π2]such thatsin(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

+ +

Syntax

+ +
Math.asin(x)
+ +

Parametros

+ +
+
x
+
Un Numero.
+
+ +

Return value

+ +

The arcsine (in radians) of the given number if it's between -1 and 1; otherwise, {{jsxref("NaN")}}.

+ +

Descripcion

+ +

The Math.asin() method returns a numeric value between -π2-\frac{\pi}{2} and π2\frac{\pi}{2} radians for x between -1 and 1. If the value of x is outside this range, it returns {{jsxref("NaN")}}.

+ +

Because asin() is a static method of Math, you always use it as Math.asin(), rather than as a method of a Math object you created (Math is not a constructor).

+ +

Ejemplos

+ +

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

For values less than -1 or greater than 1, Math.asin() returns {{jsxref("NaN")}}.

+ +

Espesificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspesificacionEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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')}} 
+ +

Compatibilidad con Navegadores

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

Ver Mas

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/asinh/index.html b/files/es/web/javascript/reference/global_objects/math/asinh/index.html new file mode 100644 index 0000000000..9a3204a6a8 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/asinh/index.html @@ -0,0 +1,90 @@ +--- +title: Math.asinh() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/asinh +translation_of: Web/JavaScript/Reference/Global_Objects/Math/asinh +--- +
{{JSRef}}
+ +

La función Math.asinh() retorna el arcoseno hyperbólico de un número, es decir

+ +

Math.asinh(x)=arsinh(x)= the unique ysuch thatsinh(y)=x\mathtt{\operatorname{Math.asinh}(x)} = \operatorname{arsinh}(x) = \text{ the unique } \; y \; \text{such that} \; \sinh(y) = x

+ +

Sintáxis

+ +
Math.asinh(x)
+ +

Parámetros

+ +
+
x
+
Un número.
+
+ +

Valor de retorno

+ +

El arcoseno hyperbólico del número dado.

+ +

Descripción

+ +

Debido a que asinh() es un método estático de  Math, siempre hay que usarlo como Math.asinh(), en lugar de como un método del objeto Math que se hayamos creado (Math no es un constructor).

+ +

Ejemplos

+ +

Usos de Math.asinh()

+ +
Math.asinh(1);  // 0.881373587019543
+Math.asinh(0);  // 0
+
+ +

Polyfill

+ +

As a quick and dirty hack the expression arsinh(x)=ln(x+x2+1)\operatorname {arsinh} (x) = \ln \left(x + \sqrt{x^{2} + 1} \right) may be used directly for a coarse emulation by the following function:

+ +
Math.asinh = Math.asinh || function(x) {
+  if (x === -Infinity) {
+    return x;
+  } else {
+    return Math.log(x + Math.sqrt(x * x + 1));
+  }
+};
+
+ +

Been formally correct it suffers from a number of issues related to floating point computations. Accurate result requires special handling of positive/negative, small/large arguments as it done e.g. in glibc or GNU Scientific Library.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-math.asinh', 'Math.asinh')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-math.asinh', 'Math.asinh')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidades de buscadores

+ + + +

{{Compat("javascript.builtins.Math.asinh")}}

+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/atan/index.html b/files/es/web/javascript/reference/global_objects/math/atan/index.html new file mode 100644 index 0000000000..abb0453e6c --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/atan/index.html @@ -0,0 +1,107 @@ +--- +title: Math.atan() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/atan +tags: + - JavaScript + - Matemática + - Math + - Method + - Trigonometría +translation_of: Web/JavaScript/Reference/Global_Objects/Math/atan +--- +
{{JSRef}}
+ +

La función Math.atan() retorna el arcotangente (en radianes) de un number, esto es

+ +

Math.atan(x)=arctan(x)= el único y[-π2;π2] tal quetan(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

+ +
{{EmbedInteractiveExample("pages/js/math-atan.html")}}
+ + + +

Sintaxis

+ +
Math.atan(x)
+ +

Parámetros

+ +
+
x
+
Un número.
+
+ +

Valor de retorno

+ +

El arcotangente (en radianes) de el número dado.

+ +

Descripción

+ +

El método Math.atan() retorna un valor numérico entre -π2-\frac{\pi}{2} y π2\frac{\pi}{2} radianes.

+ +

Dado que atan() es un método estático de Math, siempre debes usarlo como Math.atan(), y no como un método de un objeto Math que hayas creado (Math no es un constructor).

+ +

Ejemplos

+ +

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
+
+// El ángulo que la línea [(0,0);(x,y)] forma con el eje-x en un sistema de coordenadas Cartesianas.
+Math.atan(y / x);
+
+ +

Nota que podrías querer evitar usar ±Infinity por razones de estilo. En este caso, {{jsxref("Math.atan2()")}} con 0 como segundo argumento puede ser una mejor solución.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementada en 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')}} 
+ +

Compatibilidad con el navegador

+ + + +

{{Compat("javascript.builtins.Math.atan")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/atan2/index.html b/files/es/web/javascript/reference/global_objects/math/atan2/index.html new file mode 100644 index 0000000000..7b0dc147da --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/atan2/index.html @@ -0,0 +1,141 @@ +--- +title: Math.atan2() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/atan2 +translation_of: Web/JavaScript/Reference/Global_Objects/Math/atan2 +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Resumen

+ +

La función Math.atan2() retorna la arcotangente del cociente de los argumentos.

+ +

Sintaxis

+ +
Math.atan2(y, x)
+ +

Parámetros

+ +
+
y
+
Primer número.
+
x
+
Segundo número.
+
+ +

Descripción

+ +

El método Math.atan2() retorna un valor númerico entre -π y π representando el ángulo theta de un punto (x, y). Este es un ángulo en sentido antihorario, medido en radianes, entre el eje positivo X, y el punto (x, y). Tenga en cuenta que esta función recibe la coordenada Y como primer argumento y X como segundo.

+ +

A la función Math.atan2() se  le pasan los argumentos x y y por separado, y a Math.atan() se le pasa la relación de los dos argumentos.

+ +

Debido a que  atan2() es un método estatico de Math, siempre se debe usar Math.atan2(), en vez de usarlo como un método creado por el objeto Math (Math no es un contructor).

+ +

Ejemplos

+ +

Ejemplo: Usando 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.
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
ECMAScript 1st Edition.StandardInitial 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')}} 
+ +

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

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/atanh/index.html b/files/es/web/javascript/reference/global_objects/math/atanh/index.html new file mode 100644 index 0000000000..85022b4138 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/atanh/index.html @@ -0,0 +1,87 @@ +--- +title: Math.atanh() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/atanh +translation_of: Web/JavaScript/Reference/Global_Objects/Math/atanh +--- +
{{JSRef}}
+ +

La función Math.atanh() nos retorna un arco hiperbólico de un numero, eso es:

+ +

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{ el unico } \; y \; \text{de tal manera que} \; \tanh(y) = x

+ +
{{EmbedInteractiveExample("pages/js/math-atanh.html")}}
+ + + +

Sintaxis

+ +
Math.atanh(x)
+ +

Parametros

+ +
+
x
+
Un numero.
+
+ +

Retorna un valor

+ +

El arco hiperbolico tangible nos otorga un numero.

+ +

Descripción

+ +

Por que atanh() es un metodo estatico de Math, tu siempre puedes usar eso como Math.atanh(), se puede usar como un metod de Math objeto que tu creaste (Math no es un constructor).

+ +

Polimorfismo

+ +

Para |x|<1\left|x\right| < 1, tenemos artanh(x)=12ln(1+x1-x)\operatorname {artanh} (x) = \frac{1}{2}\ln \left( \frac{1 + x}{1 - x} \right) por lo que esto puede estar emulado con la siguiente función:

+ +
Math.atanh = Math.atanh || function(x) {
+  return Math.log((1+x)/(1-x)) / 2;
+};
+
+ +

Ejemplos

+ +

Using Math.atanh()

+ +
Math.atanh(-2);  // NaN
+Math.atanh(-1);  // -Infinito
+Math.atanh(0);   // 0
+Math.atanh(0.5); // 0.5493061443340548
+Math.atanh(1);   // Infinito
+Math.atanh(2);   // NaN
+
+ +

Para valores mayores a 1 o menores a -1, {{jsxref("NaN")}} retorna.

+ +

Especificaciones

+ + + + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-math.atanh', 'Math.atanh')}}
+ +

Compatibilidad entre navegadores

+ + + +

{{Compat("javascript.builtins.Math.atanh")}}

+ +

Puedes leer

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/cbrt/index.html b/files/es/web/javascript/reference/global_objects/math/cbrt/index.html new file mode 100644 index 0000000000..350bc03054 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/cbrt/index.html @@ -0,0 +1,96 @@ +--- +title: Math.cbrt() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/cbrt +translation_of: Web/JavaScript/Reference/Global_Objects/Math/cbrt +--- +
{{JSRef}}
+ +

La función Math.cbrt() nos retorna la raíz del cubo del numero, eso es

+ +

Math.cbrt(x)=x3=the uniqueysuch thaty3=x\mathtt{Math.cbrt(x)} = \sqrt[3]{x} = \text{un unico} \; y \; \text{de tal manera que} \; y^3 = x

+ +
{{EmbedInteractiveExample("pages/js/math-cbrt.html")}}
+ + + +

Sintaxis

+ +
Math.cbrt(x)
+ +

Parametros

+ +
+
x
+
Un numero
+
+ +

Valor retornado

+ +

La raíz cubica del numero proporcionado

+ +

Descripción

+ +

Al cbrt() ser un metodo estatico de Math, tu siempre la puedes usar como Math.cbrt(),un metodo de Math que es un objeto que se crea (Math no es un constructor).

+ +

Poliformismo

+ +

Para x0x \geq 0, tenemos x3=x1/3\sqrt[3]{x} = x^{1/3} esto puede ser emulado con la siguiente función:

+ +
if (!Math.cbrt) {
+  Math.cbrt = (function(pow) {
+    return function cbrt(x){
+      // Esto asegura que numeros negativos sigan siendo negativos
+      return x < 0 ? -pow(-x, 1/3) : pow(x, 1/3);
+    };
+  })(Math.pow); // Localiza Math.pow para una mayor eficiencía
+}
+
+ +

Ejemplos

+ +

Usando Math.cbrt()

+ +
Math.cbrt(NaN); // NaN
+Math.cbrt(-1); // -1
+Math.cbrt(-0); // -0
+Math.cbrt(-Infinity); // -Infinito
+Math.cbrt(0); // 0
+Math.cbrt(1); // 1
+Math.cbrt(Infinity); // Infinito
+Math.cbrt(null); // 0
+Math.cbrt(2);  // 1.2599210498948732
+
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-math.cbrt', 'Math.cbrt')}}
+ +

Compatibilidad

+ + + + + +

and send us a pull request.

+ +

{{Compat("javascript.builtins.Math.cbrt")}}

+ +

Puedes leer

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/ceil/index.html b/files/es/web/javascript/reference/global_objects/math/ceil/index.html new file mode 100644 index 0000000000..52b43cd3a2 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/ceil/index.html @@ -0,0 +1,166 @@ +--- +title: Math.ceil() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/ceil +tags: + - JavaScript + - Math + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Math/ceil +--- +
{{JSRef}}
+ +

La función Math.ceil() devuelve el entero mayor o igual más próximo a un número dado.

+ +
{{EmbedInteractiveExample("pages/js/math-ceil.html")}}
+ +

Sintaxis

+ +
Math.ceil(x)
+ +

Parámetros

+ +
+
x
+
Un número.
+
+ +

Valor devuelto

+ +

El número entero mayor o igual más próximo que el número dado.

+ +

Descripción

+ +

Como ceil() es un método estático de Math, siempre debe usarlo como Math.ceil(), en lugar de como un método de un objeto que ha creado Math (Math no es un constructor).

+ +

Ejemplos

+ +

Utilizando Math.ceil()

+ +

El siguiente ejemplo muestra el 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() {
+  /**
+   * Ajuste decimal de un número.
+   *
+   * @param {String}  type  El tipo de ajuste.
+   * @param {Number}  value El número.
+   * @param {Integer} exp   El exponente (El logaritmo de ajuste en base 10).
+   * @returns {Number} El valor ajustado.
+   */
+  function decimalAdjust(type, value, exp) {
+    // Si exp es undefined o cero...
+    if (typeof exp === 'undefined' || +exp === 0) {
+      return Math[type](value);
+    }
+    value = +value;
+    exp = +exp;
+    // Si el valor no es un número o exp no es un entero...
+    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
+
+ +

Espicificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.6', 'Math.ceil')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-math.ceil', 'Math.ceil')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-math.ceil', 'Math.ceil')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad en navegadores

+ +

{{Compat("javascript.builtins.Math.ceil")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/cos/index.html b/files/es/web/javascript/reference/global_objects/math/cos/index.html new file mode 100644 index 0000000000..82a0793769 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/cos/index.html @@ -0,0 +1,74 @@ +--- +title: Math.cos() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/cos +translation_of: Web/JavaScript/Reference/Global_Objects/Math/cos +--- +
{{JSRef}}
+ +

La función estática Math.cos() devuelve el coseno del ángulo especificado, que debe ser especificado en radianes. Este valor es longitud adyacente longitud hipotenusa .

+ +
{{EmbedInteractiveExample("pages/js/math-cos.html")}}
+ + + +

Sintaxis

+ +
Math.cos(x)
+ +

Parametros

+ +
+
x
+
El ángulo en radianes por el cual devolverá el coseno.
+
+ +

Valor de retorno

+ +

El coseno del número dado.

+ +

Descripción

+ +

El método Math.cos() retorna un valor numérico entre -1 y 1, que representa el coseno del ángulo.

+ +

Debido a que cos() es un método estático de Math, siempre debes utilizarlo como Math.cos(), en lugar de como un método de un objeto Math que hayas creado (Math no es un constructor).

+ +

Ejemplos

+ +

Usando Math.cos()

+ +
Math.cos(0);           // 1
+Math.cos(1);           // 0.5403023058681398
+
+Math.cos(Math.PI);     // -1
+Math.cos(2 * Math.PI); // 1
+
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-math.cos', 'Math.cos')}}
+ +

Compatibilidad de navegadores

+ + + +

{{Compat("javascript.builtins.Math.cos")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/e/index.html b/files/es/web/javascript/reference/global_objects/math/e/index.html new file mode 100644 index 0000000000..2fdc92d125 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/e/index.html @@ -0,0 +1,83 @@ +--- +title: Math.E +slug: Web/JavaScript/Referencia/Objetos_globales/Math/E +tags: + - JavaScript + - Math + - Property + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Math/E +--- +
{{JSRef}}
+ +

La propiedad Math.E representa la base de los logaritmos naturales, e, 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)}}
+ +

Descripción

+ +

Porque E es una propiedad estática de Math, siempre usted lo usa como Math.E, en lugar de como una propiedad de un objeto Math creado (Math no es un constructor).

+ +

Ejemplos

+ +

Utilizando Math.E

+ +

La función siguiente devuelve e:

+ +
function getNapier() {
+   return Math.E
+}
+
+getNapier(); // 2.718281828459045
+ +

 

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
+ +

Compatibilidad con navegadores

+ +

{{Compat("javascript.builtins.Math.E")}}

+ +

 

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/exp/index.html b/files/es/web/javascript/reference/global_objects/math/exp/index.html new file mode 100644 index 0000000000..ca60758600 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/exp/index.html @@ -0,0 +1,136 @@ +--- +title: Math.exp() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/exp +translation_of: Web/JavaScript/Reference/Global_Objects/Math/exp +--- +
{{JSRef}}
+ +
La función Math.exp() devuelve ex, donde x es el argumento, y e es {{jsxref("Math.E", "El número de Euler (también conocido como la constante de Napier)", "", 1)}}, la base de los algoritmos naturales.
+ +
 
+ +

Sintaxis

+ +
Math.exp(x)
+ +

Parámetros

+ +
+
x
+
Un número.
+
+ +

Valor devuelto

+ +

Un número represetando ex, donde e es {{jsxref("Math.E", "número de Euler", "", 1)}} y x es el argumento.

+ +

Descripción

+ +

Porque exp() es un método estático de Math, siempre úsalo como Math.exp(), en vez de un método de un objeto Math que hayas creado (Math no es un constructor).

+ +

Ejemplos

+ +

Usando Math.exp()

+ +
Math.exp(-1); // 0.36787944117144233
+Math.exp(0);  // 1
+Math.exp(1);  // 2.718281828459045
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}} +

Definición inicial. Implementado en JavaScript 1.0.

+
{{SpecName('ES5.1', '#sec-15.8.2.8', 'Math.exp')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.exp', 'Math.exp')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-math.exp', 'Math.exp')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

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

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/expm1/index.html b/files/es/web/javascript/reference/global_objects/math/expm1/index.html new file mode 100644 index 0000000000..d8679d9230 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/expm1/index.html @@ -0,0 +1,89 @@ +--- +title: Math.expm1() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/expm1 +tags: + - JavaScript + - Matemáticas + - Math + - Method + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Math/expm1 +--- +
{{JSRef}}
+ +

La función Math.expm1() regresa ex - 1, donde x es el argumento, y {{jsxref("Math.E", "e", "", 1)}} la base del logaritmo natural.

+ +
{{EmbedInteractiveExample("pages/js/math-expm1.html")}}
+ + + +

Sintaxis

+ +
Math.expm1(x)
+ +

Parámetos

+ +
+
x
+
Un número.
+
+ +

Valor de retorno

+ +

Un número representando ex - 1, donde e es {{jsxref("Math.E", "Número de Euler", "", 1)}} y  x es el argumento.

+ +

Descripción

+ +

Debido a que expm1() es un método estático de Math, uselo siempre como Math.expm1(), en lugar de como un método del objeto Math que creó (Math no es un constructor).

+ +

Ejemplos

+ +

Usando Math.expm1()

+ +
Math.expm1(-1); // -0.6321205588285577
+Math.expm1(0);  // 0
+Math.expm1(1);  // 1.718281828459045
+
+ +

Polyfill

+ +

Esto puede ser emulado con la ayuda de la función {{jsxref("Math.exp()")}}:

+ +
Math.expm1 = Math.expm1 || function(x) {
+  return Math.exp(x) - 1;
+};
+
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-math.expm1', 'Math.expm1')}}
+ +

Compatibilidad de navegadores

+ + + +

{{Compat("javascript.builtins.Math.expm1")}}

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/floor/index.html b/files/es/web/javascript/reference/global_objects/math/floor/index.html new file mode 100644 index 0000000000..867f3e8dac --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/floor/index.html @@ -0,0 +1,124 @@ +--- +title: Math.floor() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/floor +tags: + - JavaScript + - Math + - Method +translation_of: Web/JavaScript/Reference/Global_Objects/Math/floor +--- +
{{JSRef("Objetos_globales", "Math")}}
+ +

Sumario

+ +

Devuelve el máximo entero menor o igual a un número.

+ +

Sintaxis

+ +
Math.floor(x) 
+ +

Parámetros

+ +
+
x
+
Es número.
+
+ +

Descripción

+ +

Como floor es un método estático de Math, siempre debe usarse como Math.floor(), en lugar de usarlo como un método de un objeto Math creado.

+ +

Ejemplos

+ +

Ejemplo: Usando Math.floor

+ +

La siguiente función devuelve el valor entero redondeado más bajo de la variable x:

+ +
function getFloor(x) {
+   return Math.floor(x);
+}
+ +

Si se pasa 45.95 a getFloor, éste devuelve 45; si se le pasa -45.95,  devuelve -46.

+ +

Ejemplo: Ajuste decimal

+ +
// Cierre
+(function(){
+
+	/**
+	 * Ajuste decimal de un número.
+	 *
+	 * @param	{String}	type	El tipo de ajuste.
+	 * @param	{Number}	value	El número.
+	 * @param	{Integer}	exp		El exponente(el logaritmo en base 10 del ajuste).
+	 * @returns	{Number}			El valor ajustado.
+	 */
+	function decimalAdjust(type, value, exp) {
+		// Si el exp es indefinido o cero...
+		if (typeof exp === 'undefined' || +exp === 0) {
+			return Math[type](value);
+		}
+		value = +value;
+		exp = +exp;
+		// Si el valor no es un número o el exp no es un entero...
+		if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
+			return NaN;
+		}
+		// Cambio
+		value = value.toString().split('e');
+		value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
+		// Volver a cambiar
+		value = value.toString().split('e');
+		return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
+	}
+
+	// Redondeo decimal
+	if (!Math.round10) {
+		Math.round10 = function(value, exp) {
+			return decimalAdjust('round', value, exp);
+		};
+	}
+	// Redondeo hacia abajo
+	if (!Math.floor10) {
+		Math.floor10 = function(value, exp) {
+			return decimalAdjust('floor', value, exp);
+		};
+	}
+	// Redondeo hacia arriba
+	if (!Math.ceil10) {
+		Math.ceil10 = function(value, exp) {
+			return decimalAdjust('ceil', value, exp);
+		};
+	}
+
+})();
+
+// Redondeo
+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
+// Piso
+Math.floor10(55.59, -1); // 55.5
+Math.floor10(59, 1); // 50
+Math.floor10(-55.51, -1); // -55.6
+Math.floor10(-51, 1); // -60
+// Techo
+Math.ceil10(55.51, -1); // 55.6
+Math.ceil10(51, 1); // 60
+Math.ceil10(-55.59, -1); // -55.5
+Math.ceil10(-59, 1); // -50
+
+ +

Ven También

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/fround/index.html b/files/es/web/javascript/reference/global_objects/math/fround/index.html new file mode 100644 index 0000000000..73d773e5b0 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/fround/index.html @@ -0,0 +1,199 @@ +--- +title: Math.fround() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/fround +tags: + - JavaScript + - Math + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Math/fround +--- +
{{JSRef}}
+ +

The Math.fround() function returns the nearest 32-bit single precision float representation of a {{jsxref("Number")}}.

+ +
{{EmbedInteractiveExample("pages/js/math-fround.html")}}
+ + + +

Syntax

+ +
var singleFloat = Math.fround(doubleFloat);
+ +

Parameters

+ +
+
doubleFloat
+
A {{jsxref("Number")}}. If the parameter is of a different type, it will get converted to a number or to {{jsxref("NaN")}} if it cannot be converted.
+
+ +

Return value

+ +

The nearest 32-bit single precision float representation of the given number.

+ +

Description

+ +

JavaScript uses 64-bit double floating-point numbers internally, which offer a very high precision. However, sometimes you may be working with 32-bit floating-point numbers, for example if you are reading values from a {{jsxref("Float32Array")}}. This can create confusion: Checking a 64-bit float and a 32-bit float for equality may fail even though the numbers are seemingly identical.

+ +

To solve this, Math.fround() can be used to cast the 64-bit float to a 32-bit float. Internally, JavaScript continues to treat the number as a 64-bit float, it just performs a "round to even" on the 23rd bit of the mantissa, and sets all following mantissa bits to 0. If the number is outside the range of a 32-bit float, {{jsxref("Infinity")}} or -Infinity is returned.

+ +

Because fround() is a static method of Math, you always use it as Math.fround(), rather than as a method of a Math object you created (Math is not a constructor).

+ +

Examples

+ +

Using Math.fround()

+ +

The number 1.5 can be precisely represented in the binary numeral system, and is identical in 32-bit and 64-bit:

+ +
Math.fround(1.5); // 1.5
+Math.fround(1.5) === 1.5; // true
+
+ +

However, the number 1.337 cannot be precisely represented in the binary numeral system, so it differs in 32-bit and 64-bit:

+ +
Math.fround(1.337); // 1.3370000123977661
+Math.fround(1.337) === 1.337; // false
+
+ +

21502^150 is too big for a 32-bit float, so Infinity is returned:

+ +
2 ** 150; // 1.42724769270596e+45
+Math.fround(2 ** 150); // Infinity
+
+ +

If the parameter cannot be converted to a number, or it is not-a-number (NaN), Math.fround() will return NaN:

+ +
Math.fround('abc'); // NaN
+Math.fround(NaN); // NaN
+
+ +

Polyfill

+ +

This can be emulated with the following function, if {{jsxref("Float32Array")}} are supported:

+ +
Math.fround = Math.fround || (function (array) {
+  return function(x) {
+    return array[0] = x, array[0];
+  };
+})(new Float32Array(1));
+
+ +

Supporting older browsers is slower, but also possible:

+ +
if (!Math.fround) Math.fround = function(arg) {
+  arg = Number(arg);
+  // Return early for ±0 and NaN.
+  if (!arg) return arg;
+  var sign = arg < 0 ? -1 : 1;
+  if (sign < 0) arg = -arg;
+  // Compute the exponent (8 bits, signed).
+  var exp = Math.floor(Math.log(arg) / Math.LN2);
+  var powexp = Math.pow(2, Math.max(-126, Math.min(exp, 127)));
+  // Handle subnormals: leading digit is zero if exponent bits are all zero.
+  var leading = exp < -127 ? 0 : 1;
+  // Compute 23 bits of mantissa, inverted to round toward zero.
+  var mantissa = Math.round((leading - arg / powexp) * 0x800000);
+  if (mantissa <= -0x800000) return sign * Infinity;
+  return sign * powexp * (leading - mantissa / 0x800000);
+};
+ +

Faster Alternative Polyfill (Work In Progress)

+ +

The below polyfill is much faster and uses double-precision rounding errors to emulate the rounding errors caused by floating point narrowing. Although the polyfill higher on the page is good for comprehension, all of the complex Math function that it uses make it terrible slow. Although this polyfill is much faster, it is off by a bit in about 1 out of 2048 of the tests due to the tendency to round upwards like Math.ceil instead of like Math.round in the division of the subnormal-handling section of the code. Because single precision floating points have 23 bits of precision, the mean error deviation from the correct value is roughly 2**-28 or 0.0000000058%. This deviation from the correct value should be insignifigant in most circumstances, however please edit this polyfill if you have some tweaks to increase correctness without bloating the code size too much. NaN is not optimized for because it is most likely (almost certain) that you will not be calling Math.fround with NaN exclusively in a tight loop. Moreover, an additional check just for NaN instead of letting NaN naturally arise would induce a performance penalty for this function in older browsers when not called with NaN. Thus, the code below handles NaN correctly, but inefficiently for good reason.

+ +
const Math_round = Math.round;
+if (!Math.fround) Math.fround = function(x) {
+    if (x > 3.402823669209385e+38) return Infinity; // maximum float is 2**128
+    if (x < -3.402823669209385e+38) return -Infinity; // minimum is -2**128
+    if (-1.1754943508222875e-38 < x && x < 1.1754943508222875e-38) {
+        if (-1.401298464324817e-45 < x && x < 1.401298464324817e-45) return 0;
+        // else, it is a subnormal
+        var mul = Math_round(x/1.4012984643e-45)*1e-323;
+        return mul * 1.418129833677085e+278;
+    }
+
+    var hi = x * 9007199254740992; // 9007199254740992 is 2**53 which is the maximum of double precision
+    var exp = (x + hi) - hi; // adding this number chops off all lower bits, rounding the number.
+    exp /= 16777216; // 8388608 = 2**23 * 2, so preserve 23 bits in x because there are 23 bits in a float
+                     //            The "* 2" compensates for the addition shifting up the bits unwantedly
+    return Math_round(x / exp) * exp;
+}
+
+ +

Below is code used to test for deviations from the correct value. The code below is meant for testing the merit of the function, not for polyfilling older browsers (as evidenced by the fact that the native Math.fround function is used).

+ +
requestIdleCallback(function(){"use strict";
+    const Math_fround = Math.fround;
+    const Math_round = Math.round;
+    function my_fround(x) {
+        if (x > 3.402823669209385e+38) return Infinity; // maximum float is 2**128
+        if (x < -3.402823669209385e+38) return -Infinity; // minimum is -2**128
+        if (-1.1754943508222875e-38 < x && x < 1.1754943508222875e-38) {
+            if (-1.401298464324817e-45 < x && x < 1.401298464324817e-45) return 0;
+            // else, it is a subnormal
+            var mul = Math_round(x/1.4012984643e-45)*1e-323;
+            return mul * 1.418129833677085e+278;
+        }
+
+        var hi = x * 9007199254740992; // 9007199254740992 is 2**53 which is the maximum of double precision
+        var exp = (x + hi) - hi; // adding this number chops off all lower bits, rounding the number.
+        exp /= 16777216; // 8388608 = 2**23 * 2, so preserve 23 bits in x because there are 23 bits in a float
+                         //            The "* 2" compensates for the addition shifting up the bits unwantedly
+        return Math_round(x / exp) * exp;
+    }
+
+    const doublesArray = new Float64Array(8192);
+    const int32s = new Uint32Array(doublesArray.buffer);
+
+    const crypto = window.crypto;
+
+    var hasWarned = false, warnings=0;
+    for (var i=0; i<4; i=i+1|0) {
+        crypto.getRandomValues(int32s);
+        for (var k=0; k<8192; k=k+1|0) {
+            const myValue = my_fround(doublesArray[k]);
+            const froundVal = Math_fround(doublesArray[k]);
+            // quicker version of Object.is because of no function call overhead:
+            if (myValue === myValue ? myValue !== froundVal : froundVal === froundVal) {
+                if (!hasWarned) console.error(doublesArray[k]); // only show the first incorrect number
+                hasWarned = true;
+                warnings = warnings + 1|0;
+            }
+        }
+    }
+    console[warnings > 0 ? "warn" : "log"]( "Total number of mishandled floats: " + warnings );
+});
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-math.fround', 'Math.fround')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-math.fround', 'Math.fround')}}{{Spec2('ESDraft')}}
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Math.fround")}}

+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/hypot/index.html b/files/es/web/javascript/reference/global_objects/math/hypot/index.html new file mode 100644 index 0000000000..21d6850e44 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/hypot/index.html @@ -0,0 +1,124 @@ +--- +title: Math.hypot() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/hypot +tags: + - JavaScript + - Math +translation_of: Web/JavaScript/Reference/Global_Objects/Math/hypot +--- +
{{JSRef}}
+ +

La función Math.hypot() retorna la raíz cuadrada de la suma de los cuadrados de sus argumentos, es decir:

+ +

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}

+ +
{{EmbedInteractiveExample("pages/js/math-hypot.html")}}
+ + + +

Sintaxis

+ +
Math.hypot(valor1, valor2, ..., valorN)
+ +

Parámetros

+ +
+
Valor1, Valor2, ...
+
Números.
+
+ +

Valor de Retorno

+ +

La raíz cuadrada de la suma de los cuadrados de los argumentos proporcionados. Si tan sólo uno de los argumentos no pudiese ser convertido a un número, se retornaría {{jsxref("NaN")}}.

+ +

Descripción

+ +

Para calcular la hipotenusa de un triángulo rectángulo, o la magnitud de un número complejo, se usa el Teorema de Pitágoras, representado en la siguiente fórmula Math.sqrt(v1*v1 + v2*v2) donde v1 y v2 son, o los catetos del triángulo, o los valores reales y complejos usados para hallar la mencionada magnitud. Para calcular distancias de dos o más dimensiones, simplemente añade más valores al cuadrado (multiplicado por sí mismo) dentro de el método sqrt() del objeto Math, algo como: Math.sqrt(v1*v1 + v2*v2 + v3*v3 + v4*v4).  

+ +

Esta función lo hace un poco más fácil y rápido, sólo coloca: Math.hypot(v1, v2) , o Math.hypot(v1, v2, v3, v4, ...) .  

+ +

Esto también evita un problema si la magnitud de tus números es muy elevada. El número más largo que puedes representar en JavaScript es Number.MAX_VALUE = 1.797...e+308 .  Si tus números son mayores que 1e154, tomando el cuadrado de esos valores resultaría en infinito destruyendo así tus resultados. Por ejemplo, Math.sqrt(1e200*1e200 + 1e200*1e200) = Infinito. Si usas hypot() en su lugar, tú obtendrías un buen resultado Math.hypot(1e200, 1e200) = 1.4142...e+200 .  Eso también es verdad con números demasiados pequeños.  Math.sqrt(1e-200*1e-200 + 1e-200*1e-200) = 0, pero si en su lugar, usamos Math.hypot(1e-200, 1e-200) =1.4142...e-200, obtendríamos un buen resultado una vez más.

+ +

Debido a que hypot() es un método estático de Math, siempre úsalo como Math.hypot(), en lugar de un método del objeto Math que hayas creado (Math no es un constructor).

+ +

Si ningún argumento es provisto, el resultado es 0.

+ +

Con sólo un argumento, Math.hypot() retornaría lo mismo que Math.abs().

+ +

Ejemplos

+ +

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, lo mismo que Math.abs(-3)
+
+ +

Polyfill

+ +

Esto puede ser emulado usando la siguiente función:

+ +
Math.hypot = Math.hypot || function() {
+  var y = 0, i = arguments.length;
+  while (i--) y += arguments[i] * arguments[i];
+  return Math.sqrt(y);
+};
+
+ +

Un polyfill que evita subdesbordamientos (underflows) y desbordamientos (overflows):

+ +
Math.hypot = function (x, y) {
+  // https://bugzilla.mozilla.org/show_bug.cgi?id=896264#c28
+  var max = 0;
+  var s = 0;
+  for (var i = 0; i < arguments.length; i += 1) {
+    var arg = Math.abs(Number(arguments[i]));
+    if (arg > max) {
+      s *= (max / arg) * (max / arg);
+      max = arg;
+    }
+    s += arg === 0 && max === 0 ? 0 : (arg / max) * (arg / max);
+  }
+  return max === 1 / 0 ? 1 / 0 : max * Math.sqrt(s);
+};
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-math.hypot', 'Math.hypot')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-math.hypot', 'Math.hypot')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad en navegadores

+ + + +

{{Compat("javascript.builtins.Math.hypot")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/index.html b/files/es/web/javascript/reference/global_objects/math/index.html new file mode 100644 index 0000000000..bdf0d21e74 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/index.html @@ -0,0 +1,196 @@ +--- +title: Math +slug: Web/JavaScript/Referencia/Objetos_globales/Math +tags: + - JavaScript + - Math + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Math +--- +
{{JSRef}}
+ +

Math es un objeto incorporado que tiene propiedades y métodos para constantes y funciones matemáticas. No es un objeto de función.

+ +

Math funciona con el tipo {{jsxref("Number")}}. No funciona con {{jsxref("BigInt")}}.

+ +

Descripción

+ +

A diferencia de los demás objetos globales, el objeto Math no se puede editar. Todas las propiedades y métodos de Math son estáticos. Usted se puede referir a la constante pi como Math.PI y puede llamar a la función seno como Math.sin(x), donde x es el argumento del método. Las constantes se definen con la precisión completa de los números reales en JavaScript.

+ +

Propiedades

+ +
+
{{jsxref("Math.E")}}
+
Constante de Euler, la base de los logaritmos naturales, 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 con base 2, aproximadamente 1.443.
+
{{jsxref("Math.LOG10E")}}
+
Logaritmo de E con base 10, aproximadamente 0.434.
+
{{jsxref("Math.PI")}}
+
Ratio de la circunferencia de un circulo respecto a su diámetro, aproximadamente 3.14159.
+
{{jsxref("Math.SQRT1_2")}}
+
Raíz cuadrada de 1/2; Equivalentemente, 1 sobre la raíz cuadrada de 2, aproximadamente 0.707.
+
{{jsxref("Math.SQRT2")}}
+
Raíz cuadrada de 2, aproximadamente 1.414.
+
+ +

Métodos

+ +
+

Tenga en cuenta que las funciones trigonométricas (sin(), cos(), tan(), asin(), acos(), atan(), atan2()) devuelven ángulos en radianes. Para convertir radianes a grados, divida por (Math.PI / 180), y multiplique por esto para convertir a la inversa.

+
+ +
+

Tenga en cuenta que muchas de las funciones matemáticas tienen una precisión que es dependiente de la implementación. Esto significa que los diferentes navegadores pueden dar un resultado diferente, e incluso el mismo motor de JS en un sistema operativo o arquitectura diferente puede dar resultados diferentes.

+
+ +
+
{{jsxref("Global_Objects/Math/abs", "Math.abs(x)")}}
+
Devuelve el valor absoluto de un número.
+
{{jsxref("Global_Objects/Math/acos", "Math.acos(x)")}}
+
Devuelve el arco coseno de un número.
+
{{jsxref("Global_Objects/Math/acosh", "Math.acosh(x)")}}
+
Devuelve el arco coseno hiperbólico de un número.
+
{{jsxref("Global_Objects/Math/asin", "Math.asin(x)")}}
+
Devuelve el arco seno de un número.
+
{{jsxref("Global_Objects/Math/asinh", "Math.asinh(x)")}}
+
Devuelve el arco seno hiperbólico de un número.
+
{{jsxref("Global_Objects/Math/atan", "Math.atan(x)")}}
+
Devuelve el arco tangente de un número.
+
{{jsxref("Global_Objects/Math/atanh", "Math.atanh(x)")}}
+
Devuelve el arco tangente hiperbólico de un número.
+
{{jsxref("Global_Objects/Math/atan2", "Math.atan2(y, x)")}}
+
Devuelve el arco tangente del cuociente de sus argumentos.
+
{{jsxref("Global_Objects/Math/cbrt", "Math.cbrt(x)")}}
+
Devuelve la raíz cúbica de un número.
+
{{jsxref("Global_Objects/Math/ceil", "Math.ceil(x)")}}
+
Devuelve el entero más pequeño mayor o igual que un número.
+
{{jsxref("Global_Objects/Math/clz32", "Math.clz32(x)")}}
+
Devuelve el número de ceros iniciales de un entero de 32 bits.
+
{{jsxref("Global_Objects/Math/cos", "Math.cos(x)")}}
+
Devuelve el coseno de un número.
+
{{jsxref("Global_Objects/Math/cosh", "Math.cosh(x)")}}
+
Devuelve el coseno hiperbólico de un número.
+
{{jsxref("Global_Objects/Math/exp", "Math.exp(x)")}}
+
Devuelve Ex, donde x es el argumento, y E es la constante de Euler (2.718...), la base de los logaritmos naturales.
+
{{jsxref("Global_Objects/Math/expm1", "Math.expm1(x)")}}
+
Devuelve ex - 1.
+
{{jsxref("Global_Objects/Math/floor", "Math.floor(x)")}}
+
Devuelve el mayor entero menor que o igual a un número.
+
{{jsxref("Global_Objects/Math/fround", "Math.fround(x)")}}
+
Devuelve la representación flotante de precisión simple más cercana de un número.
+
{{jsxref("Global_Objects/Math/hypot", "Math.hypot([x[, y[, …]]])")}}
+
Devuelve la raíz cuadrada de la suma de los cuadrados de sus argumentos.
+
{{jsxref("Global_Objects/Math/imul", "Math.imul(x, y)")}}
+
Devuelve el resultado de una multiplicación de enteros de 32 bits.
+
{{jsxref("Global_Objects/Math/log", "Math.log(x)")}}
+
Devuelve el logaritmo natural (log, también ln) de un número.
+
{{jsxref("Global_Objects/Math/log1p", "Math.log1p(x)")}}
+
Devuelve el logaritmo natural de x + 1 (loge, también ln) de un número.
+
{{jsxref("Global_Objects/Math/log10", "Math.log10(x)")}}
+
Devuelve el logaritmo en base 10 de x.
+
{{jsxref("Global_Objects/Math/log2", "Math.log2(x)")}}
+
Devuelve el logaritmo en base 2 de x.
+
{{jsxref("Global_Objects/Math/max", "Math.max([x[, y[, …]]])")}}
+
Devuelve el mayor de cero o más números.
+
{{jsxref("Global_Objects/Math/min", "Math.min([x[, y[, …]]])")}}
+
Devuelve el más pequeño de cero o más números.
+
{{jsxref("Global_Objects/Math/pow", "Math.pow(x, y)")}}
+
Las devoluciones de base a la potencia de exponente, que es, baseexponent.
+
{{jsxref("Global_Objects/Math/random", "Math.random()")}}
+
Devuelve un número pseudo-aleatorio entre 0 y 1.
+
{{jsxref("Global_Objects/Math/round", "Math.round(x)")}}
+
Devuelve el valor de un número redondeado al número entero más cercano.
+
{{jsxref("Global_Objects/Math/sign", "Math.sign(x)")}}
+
Devuelve el signo de la x, que indica si x es positivo, negativo o cero.
+
{{jsxref("Global_Objects/Math/sin", "Math.sin(x)")}}
+
Devuelve el seno de un número.
+
{{jsxref("Global_Objects/Math/sinh", "Math.sinh(x)")}}
+
Devuelve el seno hiperbólico de un número.
+
{{jsxref("Global_Objects/Math/sqrt", "Math.sqrt(x)")}}
+
Devuelve la raíz cuadrada positiva de un número.
+
{{jsxref("Global_Objects/Math/tan", "Math.tan(x)")}}
+
Devuelve la tangente de un número.
+
{{jsxref("Global_Objects/Math/tanh", "Math.tanh(x)")}}
+
Devuelve la tangente hiperbólica de un número.
+
+
Math.toSource() {{non-standard_inline}}
+
+
Devuelve la cadena "Math".
+
{{jsxref("Global_Objects/Math/trunc", "Math.trunc(x)")}}
+
Devuelve la parte entera del número x, la eliminación de los dígitos fraccionarios.
+
+ +

Extendiendo el objeto Math

+ +

Como muchos de los objetos incluidos en JavaScript, el objeto Math puede ser extendido con propiedades y métodos personalizados. Para extender el objeto Math no se debe usar 'prototype'. Es posible extender directamente Math:

+ +
Math.propName = propValue;
+Math.methodName = methodRef;
+ +

Como demostración, el siguiente ejemplo agrega un método al objeto Math para calcular el máximo común divisor de una lista de argumentos.

+ +
/* Función variádica -- Retorna el máximo común divisor de una lista de argumentos */
+Math.gcd = function() {
+    if (arguments.length == 2) {
+        if (arguments[1] == 0)
+            return arguments[0];
+        else
+            return Math.gcd(arguments[1], arguments[0] % arguments[1]);
+    } else if (arguments.length > 2) {
+        var result = Math.gcd(arguments[0], arguments[1]);
+        for (var i = 2; i < arguments.length; i++)
+            result = Math.gcd(result, arguments[i]);
+        return result;
+    }
+};
+ +

Pruébalo:

+ +
console.log(Math.gcd(20, 30, 15, 70, 40)); // `5`
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición Inicial. Implementado en JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.8', 'Math')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-math-object', 'Math')}}{{Spec2('ES6')}}Nuevos métodos {{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()")}} y {{jsxref("Math.clz32()", "clz32()")}} añadidos.
{{SpecName('ESDraft', '#sec-math-object', 'Math')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad con navegadores

+ +
{{Compat("javascript.builtins.Math")}}
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/ln10/index.html b/files/es/web/javascript/reference/global_objects/math/ln10/index.html new file mode 100644 index 0000000000..8b9f40b77b --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/ln10/index.html @@ -0,0 +1,84 @@ +--- +title: Math.LN10 +slug: Web/JavaScript/Referencia/Objetos_globales/Math/LN10 +tags: + - JavaScript + - Math + - Property + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Math/LN10 +--- +
{{JSRef}}
+ +

La propiedad Math.LN10 representa el logaritmo natural de 10, aproximadamente 2.302:

+ +

Math.LN10=ln(10)2.302\mathtt{\mi{Math.LN10}} = \ln(10) \approx 2.302

+ +
{{EmbedInteractiveExample("pages/js/math-ln10.html")}}
+ +
 
+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Descripción

+ +

Porque LN10 es una propiedad estática de Math, siempre usted lo usa como Math.LN10, en lugar de como una propiedad de un objeto Math creado (Math no es un constructor).

+ +

Ejemplos

+ +

Utilizando Math.LN10

+ +

La función siguiente devuelve el logaritmo natural de 10:

+ +
function getNatLog10() {
+   return Math.LN10
+}
+
+getNatLog10(); // 2.302585092994046
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
+ +

Compatibilidad con navegadores

+ + + +

{{Compat("javascript.builtins.Math.LN10")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/ln2/index.html b/files/es/web/javascript/reference/global_objects/math/ln2/index.html new file mode 100644 index 0000000000..4a447f677a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/ln2/index.html @@ -0,0 +1,83 @@ +--- +title: Math.LN2 +slug: Web/JavaScript/Referencia/Objetos_globales/Math/LN2 +tags: + - JavaScript + - Math + - Property + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Math/LN2 +--- +
{{JSRef}}
+ +

La propiedad Math.LN2 representa el logaritmo natural de 2, aproximadamente 0.693:

+ +

Math.LN2=ln(2)0.693\mathtt{\mi{Math.LN2}} = \ln(2) \approx 0.693

+ +
{{EmbedInteractiveExample("pages/js/math-ln2.html")}}
+ +
 
+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Descripción

+ +

Como LN2 es una propiedad estática de Math, siempre se usa como Math.LN2, en lugar de como una propiedad de un objeto Math que ha creado (Math no es un constructor).

+ +

Ejemplos

+ +

Utilizando Math.LN2

+ +

La función siguiente devuelve el logaritmo natural de 2:

+ +
function getNatLog2() {
+  return Math.LN2;
+}
+
+getNatLog2(); // 0.6931471805599453
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
+ +

Compatibilidad con navegadores

+ + + +

{{Compat("javascript.builtins.Math.LN2")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/log/index.html b/files/es/web/javascript/reference/global_objects/math/log/index.html new file mode 100644 index 0000000000..d243cd0501 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/log/index.html @@ -0,0 +1,112 @@ +--- +title: Math.log() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/log +translation_of: Web/JavaScript/Reference/Global_Objects/Math/log +--- +
{{JSRef}}
+ +

La función Math.log() devuelve la base neutral de un número (base {{jsxref ("Math.E", "e")}})

+ +

x>0,Math.log(x)=ln(x)=the uniqueysuch thatey=x\forall x > 0, \mathtt{\operatorname{Math.log}(x)} = \ln(x) = \text{el unico} \; y \; \text{tal que} \; e^y = x

+ +

 

+ +

La función en JavaScrcrip Math.log() es equivalente a ln(x) en matematicas.

+ +
{{EmbedInteractiveExample("pages/js/math-log.html")}}
+ + + +

Sintaxis

+ +
Math.log(x)
+ +

Parametetros

+ +
+
x
+
Es un numero.
+
+ +

Retorna el valor

+ +

 

+ +

La base natural (base {{jsxref("Math.E", "e")}}) del número dado. Si el número es negativo, se devuelve {{jsxref("NaN")}} 

+ +

Descripcion

+ +

If the value of x is negative, the return value is always {{jsxref("NaN")}}.

+ +

Because log() is a static method of Math, you always use it as Math.log(), rather than as a method of a Math object you created (Math is not a constructor).

+ +

If you need the natural log of 2 or 10, use the constants {{jsxref("Math.LN2")}} or {{jsxref("Math.LN10")}} .  If you need a logarithm to base 2 or 10, use {{jsxref("Math.log2()")}} or {{jsxref("Math.log10()")}} .  If you need a logarithm to other bases, use Math.log(x) / Math.log(otherBase) as in the example below; you might want to precalculate 1 / Math.log(otherBase) .

+ +

Examples

+ +

Using Math.log()

+ +
Math.log(-1); // NaN, out of range
+Math.log(0);  // -Infinity
+Math.log(1);  // 0
+Math.log(10); // 2.302585092994046
+
+ +

Using Math.log() with a different base

+ +

The following function returns the logarithm of y with base x (ie. logxy\log_x y):

+ +
function getBaseLog(x, y) {
+  return Math.log(y) / Math.log(x);
+}
+
+ +

If you run getBaseLog(10, 1000) it returns 2.9999999999999996 due to floating-point rounding, which is very close to the actual answer of 3.

+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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')}} 
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Math.log")}}

+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/log10/index.html b/files/es/web/javascript/reference/global_objects/math/log10/index.html new file mode 100644 index 0000000000..dc97208b63 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/log10/index.html @@ -0,0 +1,137 @@ +--- +title: Math.log10() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/log10 +translation_of: Web/JavaScript/Reference/Global_Objects/Math/log10 +--- +
{{JSRef}}
+ +

Math.log10() funcion que retorna el logaritmo de base 10 de un numero, esto es

+ +

x>0,Math.log10(x)=log10(x)=la unicay tal que10y=x\forall x > 0, \mathtt{\operatorname{Math.log10}(x)} = \log_10(x) = \text{the unique} \; y \; \text{such that} \; 10^y = x

+ +

Sintaxis

+ +
Math.log10(x)
+ +

Parametros

+ +
+
x
+
Un Numero
+
+ +

Valor de Retorno

+ +

El logaritmo de base 10 del numero dado. SI el numero es negativo, {{jsxref("NaN")}} es devuelto.

+ +

Descripción

+ +

Si el valor de x es menor que cero, el valor de retorno siempre es {{jsxref("NaN")}}.

+ +

Porque log10() es un metodo estatico de Math, debe usarse siempre Math.log10(), en vez de usarse como un metodo del objeto math que se ha creado (Math no es un constructor).

+ +

Esta función es equivalente de Math.log(x) / Math.log(10).  Para log10(e) use la constante {{jsxref("Math.LOG10E")}} que es 1 / {{jsxref("Math.LN10")}}.  

+ +

Ejemplos

+ +

usando Math.log10()

+ +
Math.log10(2);      // 0.3010299956639812
+Math.log10(1);      // 0
+Math.log10(0);      // -Infinito
+Math.log10(-2);     // NaN
+Math.log10(100000); // 5
+
+ +

Polyfill

+ +

Puede ser emulada con la siguiente función

+ +
Math.log10 = Math.log10 || function(x) {
+  return Math.log(x) * Math.LOG10E;
+};
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificacionEstadoComentarios
{{SpecName('ES6', '#sec-math.log10', 'Math.log10')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-math.log10', 'Math.log10')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con Navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Vea Tambien

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/log10e/index.html b/files/es/web/javascript/reference/global_objects/math/log10e/index.html new file mode 100644 index 0000000000..755b6ceb1a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/log10e/index.html @@ -0,0 +1,130 @@ +--- +title: Math.LOG10E +slug: Web/JavaScript/Referencia/Objetos_globales/Math/LOG10E +tags: + - JavaScript + - Math + - Propiedad + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Math/LOG10E +--- +
{{JSRef}}
+ +
 
+ +
La propiedad Math.LOG10E representa el logaritmo base 10 de e, el cual es 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)}}
+ +

Descripción

+ +

Debido a que LOG10E es una propiedad estatica del módulo Math, se debe de invocar siempre como Math.LOG10E, en lugar de invocarla como una propiedad de algun objeto Math que hayas creado ( Math no es un constructor ).

+ +

Ejemplos

+ +

Utilizando Math.LOG10E

+ +

La siguiente funcion regresa el logaritmo base 10 de e:

+ +
function getLog10e() {
+  return Math.LOG10E;
+}
+
+getLog10e(); // 0.4342944819032518
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificacionEstatusComentarios
{{SpecName('ES1')}}{{Spec2('ES1')}} +

Definición inicial. Implementado en 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')}} 
+ + + +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Ver tambien

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/log2/index.html b/files/es/web/javascript/reference/global_objects/math/log2/index.html new file mode 100644 index 0000000000..b394270684 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/log2/index.html @@ -0,0 +1,96 @@ +--- +title: Math.log2() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/log2 +translation_of: Web/JavaScript/Reference/Global_Objects/Math/log2 +--- +
{{JSRef}}
+ +

La función Math.log2() retorna el logaritmo base 2 de un número, esto es

+ +

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

+ +
{{EmbedInteractiveExample("pages/js/math-log2.html")}}
+ + + +

Syntax

+ +
Math.log2(x)
+ +

Parámetros

+ +
+
x
+
Un número.
+
+ +

Valor de retorno

+ +

El logaritmo base 2 del número usado como parámetro. Si el número es negativo, {{jsxref("NaN")}} será retornado.

+ +

Descripción

+ +

Si el valor de x es mejor a 0, el valor de retorno es siempre {{jsxref("NaN")}}.

+ +

Debido a que log2() es una función estática de Math, siempre debe ser usado como Math.log2(), en lugar de ser usado como un método del objeto Math (Math no es un constructor).

+ +

Esta función es equivalente a Math.log(x) / Math.log(2).  Para log2(e) use la constante {{jsxref("Math.LOG2E")}} que es 1 / {{jsxref("Math.LN2")}}.  

+ +

Ejemplos

+ +

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

+ +

This Polyfill emulates the Math.log2 function. Note that it returns imprecise values on some inputs (like 1 << 29), wrap into {{jsxref("Math.round()")}} if working with bit masks.

+ +
Math.log2 = Math.log2 || function(x) {
+  return Math.log(x) * Math.LOG2E;
+};
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-math.log2', 'Math.log2')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-math.log2', 'Math.log2')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Math.log2")}}

+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/log2e/index.html b/files/es/web/javascript/reference/global_objects/math/log2e/index.html new file mode 100644 index 0000000000..f9593b4bc6 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/log2e/index.html @@ -0,0 +1,27 @@ +--- +title: Math.LOG2E +slug: Web/JavaScript/Referencia/Objetos_globales/Math/LOG2E +tags: + - JavaScript + - Math + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Math/LOG2E +--- +
+ {{JSRef("Objetos_globales", "Math")}}
+

Resumen

+

El base 2 del logaritmo natural de E (aproximadamente 1.442).

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

Descripción

+

Porque LOG2E es una propiedad estática de Math, siempre usted lo usa como Math.LOG2E, en lugar de una propedad de un objecto de Math usted creó.

+

Ejemplos

+

Ejemplo: Usar Math.LOG2E

+

La función siguiente devuelve el base 2 del logaritmo natural del E:

+
function getLog2e() {
+   return Math.LOG2E
+}
+

Ven También

+ diff --git a/files/es/web/javascript/reference/global_objects/math/max/index.html b/files/es/web/javascript/reference/global_objects/math/max/index.html new file mode 100644 index 0000000000..0e0f82881c --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/max/index.html @@ -0,0 +1,145 @@ +--- +title: Math.max() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/max +tags: + - JavaScript + - Math + - Método(2) + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Math/max +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Resumen

+ +

La función Math.max() devuelve el mayor de cero o más números.

+ +

Sintaxis

+ +
Math.max([valor1[, valor2[, ...]]])
+ +

Parámetros

+ +
+
valor1, valor2, ...
+
Números.
+
+ +

Descripción

+ +

Ya que max() es un método estático de Math, siempre debe usarse como Math.max(), en lugar de un método de un objeto Math instanciado (Math no es un constructor).

+ +

Si no se proporcionan argumentos, el resultado es -{{jsxref("Global_Objects/Infinity", "Infinity")}}.

+ +

Si al menos uno de los argumentos no puede ser convertido a número, el resultado es {{jsxref("Global_Objects/NaN", "NaN")}}.

+ +

Ejemplos

+ +

Ejemplo: Usando Math.max()

+ +
Math.max(10, 20);   //  20
+Math.max(-10, -20); // -10
+Math.max(-10, 20);  //  20
+
+ +

La siguiente función usa {{jsxref("Function.prototype.apply()")}} para encontrar el elemento mayor en un array numérico. getMaxOfArray([1, 2, 3]) es equivalente a Math.max(1, 2, 3), pero se puede usar getMaxOfArray() sobre arreglos construidos programáticamente de cualquier tamaño.

+ +
function getMaxOfArray(numArray) {
+  return Math.max.apply(null, numArray);
+}
+
+ +

O con el nuevo {{jsxref("Operadores/Spread_operator", "spread operator")}}, obtener el máximo de un arreglo se vuelve mucho más fácil.

+ +
var arr = [1, 2, 3];
+var max = Math.max(...arr);
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
ECMAScript 1ra Edición.EstandarDefinición inicial. Implementado en JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.11', 'Math.max')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.max', 'Math.max')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-math.max', 'Math.max')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome para AndroidFirefox Móvil (Gecko)IE MóvilOpera MóvilSafari Móvil
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Ver además

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/min/index.html b/files/es/web/javascript/reference/global_objects/math/min/index.html new file mode 100644 index 0000000000..a2dbf8348a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/min/index.html @@ -0,0 +1,150 @@ +--- +title: Math.min() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/min +tags: + - JavaScript + - Math + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Math/min +--- +
{{JSRef}}
+ +

La función Math.min() devuelve el menor de cero o más números.

+ +

Sintaxis

+ +
Math.min([valor1[, valor2[, ...]]])
+ +

Parámetros

+ +
+
valor1, valor2, ...
+
Números.
+
+ +

Descripción

+ +

Ya que min() es un método estático de Math, siempre debe usarse como Math.min(), en lugar de como un método de un objeto Math instanciado (Math no es un constructor).

+ +

Si no se proporcionan argumentos, el resultado es {{jsxref("Infinity")}}.

+ +

Si al menos uno de los argumentos no puede ser convertido a número, el resultado es {{jsxref("NaN")}}.

+ +

Ejemplos

+ +

Usando Math.min()

+ +

Lo siguiente encuentra el mínimo de x e y y lo asigna a z:

+ +
var x = 10, y = -20;
+var z = Math.min(x, y);
+
+ +

Recortando un valor con Math.min()

+ +

Math.min() es a menudo usado para recortar un valor de tal manera que siempre sea menor o igual a un límite. Este ejemplo

+ +
var x = f(foo);
+
+if (x > limite) {
+  x = limite;
+}
+
+ +

puede ser escrito de la siguiente manera

+ +
var x = Math.min(f(foo), limite);
+
+ +

{{jsxref("Math.max()")}} puede ser usado en una forma similar para recortar un valor en el otro extremo.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementada en 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')}} 
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome para AndroidFirefox Móvil (Gecko)IE MóvilOpera MóvilSafari Móvil
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Ver además

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/pi/index.html b/files/es/web/javascript/reference/global_objects/math/pi/index.html new file mode 100644 index 0000000000..d4428498cd --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/pi/index.html @@ -0,0 +1,126 @@ +--- +title: Math.PI +slug: Web/JavaScript/Referencia/Objetos_globales/Math/PI +tags: + - JavaScript + - Math + - Propiedad + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Math/PI +--- +
{{JSRef}}
+ +
La propiedad Math.PI representa la relacion entre la longitud de la circunferencia de un circulo y su diametro, la cual es aproximadamente 3.14159.
+ +

Math.PI=π3.14159\mathtt{\mi{Math.PI}} = \pi \approx 3.14159

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

Descripción

+ +

Debido a que PI es una propiedad estatica del modulo Math, siempre debes de utilizarla como Math.PI, en lugar de una propiedad de un objeto Math que tu hayas creado ( Math no es un constructor ).

+ +

Ejemplos

+ +

Utilizando Math.PI

+ +

La siguiente función utiliza Math.PI para calcular la longitud de la circunferencia de un circulo mediante el radio del circulo proporcionado como parametro.

+ +
function calculaCircunferencia(radio) {
+  return 2 * Math.PI * radio;
+}
+
+calculaCircunferencia(1);  // 6.283185307179586
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
{{SpecName('ES1')}}{{Spec2('ES1')}} +

Definición inicial. Implementado en 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')}} 
+ + + +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Basico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Basico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Ver tambien

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/pow/index.html b/files/es/web/javascript/reference/global_objects/math/pow/index.html new file mode 100644 index 0000000000..7185cffede --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/pow/index.html @@ -0,0 +1,140 @@ +--- +title: Math.pow() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/pow +translation_of: Web/JavaScript/Reference/Global_Objects/Math/pow +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Resumen

+ +

La función  Math.pow() devuelve la  base elevada al exponente , esto es, baseexponente.

+ +

Sintaxis

+ +
Math.pow(base, exponente)
+ +

Parametros

+ +
+
base
+
El número base.
+
exponente
+
El exponente utilizado para elevar la base.
+
+ +

Descripción

+ +

La función Math.pow() retorna la base elevada al exponente, es decir, baseexponente. La base y el exponente estan en el sistema numérico decimal.

+ +

Puesto que pow() es un método estático de Math, siempre se utiliza como Math.pow(). Si la base es negativa y el exponente no es un número entero, el resultado será NaN.

+ +

Ejemplos

+ +

Ejemplo: Usando Math.pow()

+ +
// simple
+Math.pow(7, 2);    // 49
+Math.pow(7, 3);    // 343
+Math.pow(2, 10);   // 1024
+// exponentes fraccionales
+Math.pow(4, 0.5);  // 2 (raíz cuadrada de 4)
+Math.pow(8, 1/3);  // 2 (raíz cúbica de 8)
+Math.pow(2, 0.5);  // 1.412135623730951 (raíz cuadrada de 2)
+Math.pow(2, 1/3);  // 1.2599210498948732 (raíz cúbica de 2)
+// exponentes con signo
+Math.pow(7, -2);   // 0.02040816326530612 (1/49)
+Math.pow(8, -1/3); // 0.5
+// bases con signo
+Math.pow(-7, 2);   // 49 (los cuadrados son positivos)
+Math.pow(-7, 3);   // -343 (El cubo de una base negativa puede ser negativo)
+Math.pow(-7, 0.5); // NaN (Los números negativos no tienen raíz cuadrada real)
+Math.pow(-7, 1/3); // NaN
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
ECMAScript 1st Edition.EstándarDefinición inicial implementada en 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')}}
+ +

Compatibilidad con navegadores

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

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/random/index.html b/files/es/web/javascript/reference/global_objects/math/random/index.html new file mode 100644 index 0000000000..ace95bc0cf --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/random/index.html @@ -0,0 +1,132 @@ +--- +title: Math.random() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/random +tags: + - JavaScript + - Math + - Números Aleatorios + - Random + - Referências +translation_of: Web/JavaScript/Reference/Global_Objects/Math/random +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Sumario

+ +

La función Math.random() retorna un punto flotante, un número pseudo-aleatorio dentro del rango [0, 1). Esto es, desde el 0 (Incluido) hasta el 1 pero sin incluirlo (excluido), el cual se puede escalar hasta el rango deseado. La implementación selecciona la semilla inicial hasta el algoritmo que genera el número aleatorio; este no puede ser elegido o cambiado por el usuario.

+ +
+

Nota: Math.random() NO provee números aleatorios con seguridad criptográfica. No deben ser usados para algo relacionado con seguridad. En vez de eso, usar la API Web Crypto, y más precisamente el método: {{domxref("RandomSource.getRandomValues()", "window.crypto.getRandomValues()")}}.

+
+ +

Sintaxis

+ +
Math.random()
+ +

Parámetros

+ +

Ninguno.

+ +

Ejemplos

+ +

Ejemplo: Usando Math.random()

+ +

Notar que, como los números en Javascript son números de punto flotante IEEE 754 con redondeo-al-par-más-cercano, los rangos generados por las funciones de abajo (excluyendo a Math.random() en sí misma) no son exactos. Si se eligen límites extremadamente grandes (253 o más), es posible, en casos extremadamente raros, calcular el generalmente-excluído límite superior.

+ +
// Retorna un número aleatorio entre 0 (incluido) y 1 (excluido)
+function getRandom() {
+  return Math.random();
+}
+
+ +
// Retorna un número aleatorio entre min (incluido) y max (excluido)
+function getRandomArbitrary(min, max) {
+  return Math.random() * (max - min) + min;
+}
+
+ +
// Retorna un entero aleatorio entre min (incluido) y max (excluido)
+// ¡Usando Math.round() te dará una distribución no-uniforme!
+function getRandomInt(min, max) {
+  return Math.floor(Math.random() * (max - min)) + min;
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
ECMAScript 1a Edición.{{Spec2('ES1')}}Definición inicial. JavaScript 1.0 (Sólo UNIX) / JavaScript 1.1 (Todas las plataformas).
{{SpecName('ES5.1', '#sec-15.8.2.14', 'Math.random')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.random', 'Math.random')}}{{Spec2('ES6')}} 
+ +

Compatibilidad en navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
diff --git a/files/es/web/javascript/reference/global_objects/math/round/index.html b/files/es/web/javascript/reference/global_objects/math/round/index.html new file mode 100644 index 0000000000..0257148e69 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/round/index.html @@ -0,0 +1,218 @@ +--- +title: Math.round() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/round +translation_of: Web/JavaScript/Reference/Global_Objects/Math/round +--- +
{{JSRef}}
+ +
La función Math.round() retorna el valor de un número redondeado al entero más cercano.
+ +

Sumario

+ +

Devuelve el valor del número dado redondeado al entero más cercano.

+ +

Sintaxis

+ +
Math.round(x)
+ +

Parámetros

+ +
+
Un número.
+
+ +

Valor de Retorno

+ +
+
El valor del número dado redondeado al entero más cercano.
+
+ +

Descripción

+ +

Si la porción fraccionaría del número es 0.5 o mayor, el argumento es redondeado al siguiente número entero superior. Si la porción de la fracción del número es menor a 0.5, el argumento es redondeado al siguiente número entero inferior.

+ +

Debido a que round() es un método estático de Math, siempre se debe utilizar como  Math.round(),  en vez de un método del objeto Math que ha creado. (Math no es un constructor)

+ +

Ejemplos

+ +

Usando Math.round()

+ +
// Retorna el valor 20
+x = Math.round(20.49);
+
+// Retorna el valor 21
+x = Math.round(20.5);
+
+// Retorna el valor -20
+x = Math.round(-20.5);
+
+// Retorna el valor -21
+x = Math.round(-20.51);
+
+// Retorna el valor 1 (!)
+// Note el error de redondeo debido a la inexactitud del punto aritmético.
+// Compare esto con Math.round10(1.005, -2) de el ejemplo de abajo.
+x = Math.round(1.005*100)/100;
+
+ +

Redondeo decimal

+ +
// Conclusión
+(function() {
+  /**
+   * Ajuste decimal de un número.
+   *
+   * @param {String}  tipo  El tipo de ajuste.
+   * @param {Number}  valor El numero.
+   * @param {Integer} exp   El exponente (el logaritmo 10 del ajuste base).
+   * @returns {Number} El valor ajustado.
+   */
+  function decimalAdjust(type, value, exp) {
+    // Si el exp no está definido o es cero...
+    if (typeof exp === 'undefined' || +exp === 0) {
+      return Math[type](value);
+    }
+    value = +value;
+    exp = +exp;
+    // Si el valor no es un número o el exp no es un entero...
+    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
+Math.round10(1.005, -2);   // 1.01 -- compare this with Math.round(1.005*100)/100 above
+// 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
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}} +

Definición inicial. Implementada en JavaScript 1.0.

+
{{SpecName('ES5.1', '#sec-15.8.2.15', 'Math.round')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-math.round', 'Math.round')}}{{Spec2('ES6')}}
+ +

Compatibilidad en navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/sign/index.html b/files/es/web/javascript/reference/global_objects/math/sign/index.html new file mode 100644 index 0000000000..3c48027556 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/sign/index.html @@ -0,0 +1,151 @@ +--- +title: Math.sign() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/sign +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/sign +--- +
{{JSRef}}
+ +

La función Math.sign() retorna el signo de un número, indicando si el número es positivo, negativo o cero.

+ +

Syntaxis

+ +
Math.sign(x)
+ +

Parametros

+ +
+
x
+
Un número.
+
+ +

Valor de retorno.

+ +

Un número representando el signo del argumento dado. Si el argumento es un número positivo, negativo, cero positivo, o cero negativo, la función retornará 1, -1, 0 or -0 respectivamente. De lo contrario, retorna {{jsxref("NaN")}}.

+ +

Descripción

+ +

Como sign() es un método estático de Math, siempre se utiliza como Math.sign(), en vez de un método de un objeto Math que hayas creado. (Math no es un constructor).

+ +

Esta función tiene 5 tipos de valores de retorno, 1, -1, 0, -0, NaN, que representan "número positivo", "número negativo", "cero positivo", "cero negativo" y {{jsxref("NaN")}} respectivamente.

+ +

El argumento pasado a esta función será convertido a tipo x implicitamente.

+ +

Ejemplos

+ +

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) {
+    // Si x es NaN, el resultado es NaN.
+    // Si x es -0, el resultado es -0.
+    // Si x es +0, el resultado es +0.
+    // Si x es negativo y no -0, el resultado es -1.
+    // Si x es positivo y no +0, el resultado es +1.
+    x = +x; // convertir a número
+    if (x === 0 || isNaN(x)) {
+      return Number(x);
+    }
+    return x > 0 ? 1 : -1;
+  };
+}
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-math.sign', 'Math.sign')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-math.sign', 'Math.sign')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
PropiedadChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("9")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
PropiedadAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Ver También

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/sin/index.html b/files/es/web/javascript/reference/global_objects/math/sin/index.html new file mode 100644 index 0000000000..a89a6e635e --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/sin/index.html @@ -0,0 +1,126 @@ +--- +title: Math.sin() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/seno +translation_of: Web/JavaScript/Reference/Global_Objects/Math/sin +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Resumen

+ +

La función Math.sin() devuelve el seno de un número.

+ +

Sintaxis

+ +
Math.sin(x)
+ +

Parámetros

+ +
+
x
+
Un número (en radianes).
+
+ +

Descripción

+ +

El método Math.sin() devuelve  un valor numérico entre -1 y 1, que representa el seno del ángulo dado en radianes.
+ Debido a que sin() es un método estático de Math, siempre se usa como Math.sin(), en vez de  crear un objeto Math y usarlo como un método (Math no es un constructor).

+ +

Ejemplos

+ +

Ejemplo: Usando Math.sin()

+ +
Math.sin(0);           // 0
+Math.sin(1);           // 0.8414709848078965
+
+Math.sin(Math.PI / 2); // 1
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificacionesEstatusComentarios
ECMAScript 1ª Edición.{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
+ +

Compatibilidad con navegadores

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

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/sqrt/index.html b/files/es/web/javascript/reference/global_objects/math/sqrt/index.html new file mode 100644 index 0000000000..a3977c6f08 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/sqrt/index.html @@ -0,0 +1,134 @@ +--- +title: Math.sqrt() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/sqrt +translation_of: Web/JavaScript/Reference/Global_Objects/Math/sqrt +--- +
{{JSRef}}
+ +

La  función Math.sqrt() retorna la raíz cuadrada de un número, que esx0,Math.sqrt(x)=x=the uniquey0such thaty2=x\forall x \geq 0, \mathtt{Math.sqrt(x)} = \sqrt{x} = \text{the unique} \; y \geq 0 \; \text{such that} \; y^2 = x

+ +

Sintaxis

+ +
Math.sqrt(x)
+ +

Parámetros

+ +
+
x
+
Un numero
+
+ +

Valor de Retorno

+ +

La raíz cuadrada del número proporcionado. Si los números son negativos, {{jsxref("NaN")}} es devuelto.

+ +

Descripción

+ +

Si el valor de x es negativo Math.sqrt() retorna {{jsxref("NaN")}}.

+ +

Debido a que sqrt() es un método estático de Math, siempre úsalo como Math.sqrt(), en lugar de un método del objeto Math que hayas creado (Math no es un constructor).

+ +

Ejemplos

+ +

Usando Math.sqrt()

+ +
Math.sqrt(9); // 3
+Math.sqrt(2); // 1.414213562373095
+
+Math.sqrt(1);  // 1
+Math.sqrt(0);  // 0
+Math.sqrt(-1); // NaN
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementada en JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.17', 'Math.sqrt')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.sqrt', 'Math.sqrt')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-math.sqrt', 'Math.sqrt')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad

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

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/sqrt1_2/index.html b/files/es/web/javascript/reference/global_objects/math/sqrt1_2/index.html new file mode 100644 index 0000000000..de9bd99eb9 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/sqrt1_2/index.html @@ -0,0 +1,123 @@ +--- +title: Math.SQRT1_2 +slug: Web/JavaScript/Referencia/Objetos_globales/Math/SQRT1_2 +tags: + - JavaScript + - Math + - Propiedad + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2 +--- +
{{JSRef}}
+ +
La propiedad Math.SQRT1_2 representa la raiz cuadrada de 1/2, la cual es equivalente al inverso de la raiz cuadrada de 2, aproximadadamente 0.707:
+ +

Math.SQRT1_2=12=120.707\mathtt{\mi{Math.SQRT1_2}} = \sqrt{\frac{1}{2}} = \frac{1}{\sqrt{2}} \approx 0.707

+ +

Descripción

+ +

Debido a que SQRT1_2 es una propiedad estatica de Math, siempre debes utilizarla como Math.SQRT1_2, en lugar de invocarla como una propiedad de alguna instancia de Math que hayas creado ( Math no es un constructor ).

+ +

Ejemplos

+ +

Utilizando Math.SQRT1_2

+ +

La siguiente funcion regresa la raiz cuadrada de 1/2:

+ +
function getRoot1_2() {
+  return Math.SQRT1_2;
+}
+
+getRoot1_2(); // 0.7071067811865476
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentarios
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
+ + + +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte basico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte basico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Ver Tambien

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/sqrt2/index.html b/files/es/web/javascript/reference/global_objects/math/sqrt2/index.html new file mode 100644 index 0000000000..7e23295f25 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/sqrt2/index.html @@ -0,0 +1,124 @@ +--- +title: Math.SQRT2 +slug: Web/JavaScript/Referencia/Objetos_globales/Math/SQRT2 +translation_of: Web/JavaScript/Reference/Global_Objects/Math/SQRT2 +--- +
{{JSRef}}
+ +
La propiedad Math.SQRT2 representa la raíz cuadrada de de 2, aproximadamente 1.414:
+ +

Math.SQRT2=21.414\mathtt{\mi{Math.SQRT2}} = \sqrt{2} \approx 1.414

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

Descripción

+ +

Debido a que SQRT2 es una propiedad estática de Math, siempre se utiliza como Math.SQRT2, en lugar de una propiedad de un objeto Math creado.

+ +

Ejemplos

+ +

Utilizando Math.SQRT2

+ +

La siguiente función retorna la raíz cuadrada de 2:

+ +
function getRoot2() {
+  return Math.SQRT2;
+}
+
+getRoot2(); // 1.4142135623730951
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
{{SpecName('ES1')}}{{Spec2('ES1')}} +

Definición inicial. Implementada en 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')}} 
+ +

Compatibilidad en navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

 

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/tan/index.html b/files/es/web/javascript/reference/global_objects/math/tan/index.html new file mode 100644 index 0000000000..8a773b0da5 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/tan/index.html @@ -0,0 +1,82 @@ +--- +title: Math.tan() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/tan +tags: + - Matemáticas + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Math/tan +--- +
{{JSRef}}
+ +

La función Math.tan() retorna la tangente de un número.

+ +
{{EmbedInteractiveExample("pages/js/math-tan.html")}}
+ + + +

Sintaxis

+ +
Math.tan(x)
+ +

Parámetros

+ +
+
x
+
Un número que representa un ángulo en radianes.
+
+ +

Valor de retorno

+ +

La tangente del número proporcionado.

+ +

Descripción

+ +

El método Math.tan() retorna un valor numérico que representa la tangente de un ángulo.

+ +

Dado que tan() es un método estático de Math, siempre debes usarlo como Math.tan(), y no como un método de un objeto Math que hayas creado (Math no es un constructor).

+ +

Ejemplos

+ +

Usando Math.tan()

+ +
Math.tan(1); // 1.5574077246549023
+
+ +

Ya que la función Math.tan() acepta radianes, pero es más fácil trabajar con grados, la siguiente función acepta un valor en grados, lo convierte a radianes, y retorna la tangente de dicho valor.

+ +
function getTanDeg(deg) {
+  var rad = deg * Math.PI/180;
+  return Math.tan(rad);
+}
+
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-math.tan', 'Math.tan')}}
+ +

Compatibilidad con el navegador

+ + + +

{{Compat("javascript.builtins.Math.tan")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/tanh/index.html b/files/es/web/javascript/reference/global_objects/math/tanh/index.html new file mode 100644 index 0000000000..138c466b37 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/tanh/index.html @@ -0,0 +1,95 @@ +--- +title: Math.tanh() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/tanh +tags: + - ECMAScript 2015 + - JavaScript + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Math/tanh +--- +
{{JSRef}}
+ +

La funcion Math.tanh() devuelve la hyperbolica tangente de un numero, esto es 

+ +

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

Sintaxis

+ +
Math.tanh(x)
+ +

Parametros

+ +
+
x
+
Un numero.
+
+ +

Devolver valor

+ +

La hyperbolica tangente del numero obtenido.

+ +

Descripcion

+ +

Porque tanh() es un metodo estatico de Math, siempre se usa como Math.tanh(), en lugar de ser un metodo de Math objeto que creas (Math no es un constructor).

+ +

Ejemplos

+ +

Usando Math.tanh()

+ +
Math.tanh(0);        // 0
+Math.tanh(Infinity); // 1
+Math.tanh(1);        // 0.7615941559557649
+
+ +

Polyfill

+ +

Esto puede ser emulado con ayuda de {{jsxref("Math.exp()")}} funcion:

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

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificacionEstadoComentario
{{SpecName('ES2015', '#sec-math.tanh', 'Math.tanh')}}{{Spec2('ES2015')}} +

Definicion inicial.

+
{{SpecName('ESDraft', '#sec-math.tanh', 'Math.tanh')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ + + +

{{Compat("javascript.builtins.Math.tanh")}}

+ +

 

+ + diff --git a/files/es/web/javascript/reference/global_objects/math/trunc/index.html b/files/es/web/javascript/reference/global_objects/math/trunc/index.html new file mode 100644 index 0000000000..9efe511927 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/math/trunc/index.html @@ -0,0 +1,144 @@ +--- +title: Math.trunc() +slug: Web/JavaScript/Referencia/Objetos_globales/Math/trunc +tags: + - ECMAScript6 + - JavaScript + - Math + - Método(2) + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Math/trunc +--- +
{{JSRef}}
+ +

La función Math.trunc() devuelve la parte entera de un numero removiendo cualquier dígito decimal (dígitos situados después de la coma).

+ +

Sintaxis.

+ +
Math.trunc(x)
+ +

Parámetros.

+ +
+
x
+
Un número.
+
+ +

Valor de retorno.

+ +

La parte entera del número dado.

+ +

Descripción.

+ +

A diferencia de los otros tres métodos de Math: {{jsxref("Math.floor()")}}, {{jsxref("Math.ceil()")}} y {{jsxref("Math.round()")}}, la forma en que Math.trunc() funciona es muy simple.  trunca (corta) el punto y los dígitos a la derecha de él, sin importar si el argumento es un número positivo o negativo.

+ +

Si el argumento es un número positivo, Math.trunc() es equivalente a Math.floor(); de otra forma Math.trunc() es equivalente a Math.ceil().

+ +

El argumento pasado a este método será convertido a un tipo numérico entero.

+ +

Debido a que trunc() es un método estático de Math, siempre úsalo como Math.trunc(), en lugar de como un método de un objeto Math que hayas creado (Math no es un constructor).

+ +

Ejemplos.

+ +

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.

+ +
Math.trunc = Math.trunc || function (x) {
+    return (x < 0 ? Math.ceil(x) : Math.floor(x));
+}
+
+ +

Especificaciones.

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-math.trunc', 'Math.trunc')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-math.trunc', 'Math.trunc')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad con navegadores.

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Vea también.

+ + diff --git a/files/es/web/javascript/reference/global_objects/nan/index.html b/files/es/web/javascript/reference/global_objects/nan/index.html new file mode 100644 index 0000000000..f107f1bb3c --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/nan/index.html @@ -0,0 +1,46 @@ +--- +title: NaN +slug: Web/JavaScript/Referencia/Objetos_globales/NaN +tags: + - JavaScript + - Propiedad + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/NaN +--- +
{{jsSidebar("Objects")}}
+ +
+

La propiedad global NaN es un valor que representa Not-A-Number.

+
+ +

Sumario

+ +

Un valor representando un Not-A-Number (No es Un Número).

+ +

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

+ +

Sintaxis

+ +

NaN

+ +

Descripción

+ +

NaN es una propiedad del global object (objeto global), por ejemplo, es una variable de alcance global.

+ +

El valor inicial de NaN es Not-A-Number (No es Un Número) - lo mismo que el valor de {{jsxref("Number.NaN")}}.

+ +

Keep text below in sync with Number.NaN page NaN nunca es equivalente con cualquier otro número, incluido el mismo NaN; no puedes chequear el valor de un not-a-number comparándolo con Number.NaN. Usar la función {{jsxref("isNaN()")}} para aquello.

+ +

Muchos métodos de JavaScript (como son el {{jsxref("Number")}} constructor, {{jsxref("parseFloat")}} y {{jsxref("parseInt")}}) retornan NaN si el valor especificado en el parámetro no puede ser parseado como un número.

+ +

Puedes utilizar la propiedad NaN para indicar una condición de error para tu función que devuelva un número en caso de éxito.

+ +

JavaScript imprime el valor Number.NaN como NaN.

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/null/index.html b/files/es/web/javascript/reference/global_objects/null/index.html new file mode 100644 index 0000000000..94d1a392c5 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/null/index.html @@ -0,0 +1,129 @@ +--- +title: 'null' +slug: Web/JavaScript/Referencia/Objetos_globales/null +tags: + - JavaScript + - Literal + - Primitivo +translation_of: Web/JavaScript/Reference/Global_Objects/null +--- +
{{jsSidebar("Objects")}}
+ +

Resumen

+ +

El valor null es un literal de Javascript que representa intencionalmente un valor nulo o "vacío". Es uno de los {{Glossary("Primitive", "valores primitivos")}} de Javascript.

+ +
{{EmbedInteractiveExample("pages/js/globalprops-null.html")}}
+ + + +

Sintaxis

+ +
null 
+ +

Descripción

+ +

El valor null es un literal (no una propiedad del objeto global como podría ser {{jsxref("undefined", "undefined")}}). En APIs, se devuelve null normalmente dónde se espera un objeto pero éste no es relevante. Al comparar con null o  {{jsxref("undefined", "undefined")}} hay que tener en cuenta las diferencias entre los operadores de igualdad (==) e identidad (===) (con el primero se realiza una conversión de tipo).

+ +
// foo no existe, no está definido y nunca ha sido inicializado:
+> foo
+"ReferenceError: foo is not defined"
+
+// foo existe, pero no tiene tipo ni valor:
+> var foo = null; foo
+"null"
+
+ +

Diferencias entre nullundefined

+ +
typeof null        // object (bug en ECMAScript, debería ser null)
+typeof undefined   // undefined
+null === undefined // false
+null  == undefined // true
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
ECMAScript 1st Edition.StandardDefinición inicial.
{{SpecName('ES5.1', '#sec-4.3.11', 'null value')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-null-value', 'null value')}}{{Spec2('ES6')}}
+ +

Compatibilidad con 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() }}
+
+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/global_objects/number/index.html b/files/es/web/javascript/reference/global_objects/number/index.html new file mode 100644 index 0000000000..72c1425b8b --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/index.html @@ -0,0 +1,181 @@ +--- +title: Number +slug: Web/JavaScript/Referencia/Objetos_globales/Number +tags: + - JavaScript + - Number + - Referencia + - Referência(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Number +--- +
{{JSRef}}
+ +

Number es un objeto primitivo envolvente que permite representar y manipular valores numéricos cómo 37 o -9.25. El constructor Number contiene constantes y métodos para trabajar con números. Valores de otro tipo pueden ser convertidos a números usando la función Number().

+ +

Sintaxis

+ +
new Number(value);
+var a = new Number('123'); // a === 123 es false
+var b = Number('123'); // b === 123 es true
+a instanceof Number; // es true
+b instanceof Number; // es false
+ +

Parámetros

+ +
+
valor
+
El valor numérico de un objeto que está siendo creado.
+
+ +

Descripción

+ +

Los principales usos del objeto Number(valor) son convertir un string u otro valor a uno de tipo numérico; si el argumento no puede ser convertido a un número, devuelve {{jsxref("NaN")}}.

+ +

Literal syntax

+ +
123    // one-hundred twenty-three
+123.0  // same
+123 === 123.0  // true
+ +

Function syntax

+ +
Number('123')  // retorna el número 123
+Number('123') === 123  // retorna true
+
+Number("unicorn")  // NaN
+Number(undefined)  // NaN
+ +

Constructor

+ +
+
Number()
+
Crea un nuevo valor Numérico ( Number value).
+
+ +

Propiedades

+ +
+
{{jsxref("Number.EPSILON")}}
+
El intervalo más pequeño entre dos números representables
+
{{jsxref("Number.MAX_SAFE_INTEGER")}}
+
El número máximo representable en JavaScript (253 - 1).
+
{{jsxref("Number.MAX_VALUE")}}
+
El número más grande representable.
+
{{jsxref("Number.MIN_SAFE_INTEGER")}}
+
El número mínimo representable en JavaScript (-(253 - 1)).
+
{{jsxref("Number.MIN_VALUE")}}
+
El número más pequeño representable - que es el número positivo más cercano a cero (sin llegar a ser cero)-.
+
{{jsxref("Number.NaN")}}
+
Valor especial "no es número" NaN.
+
{{jsxref("Number.NEGATIVE_INFINITY")}}
+
Valor especial para representar infinitos negativos; retorno de un desborde de pila overflow.
+
{{jsxref("Number.POSITIVE_INFINITY")}}
+
Valor especial para representar infinitos positivos; retorno de un desborde de pila overflow.
+
{{jsxref("Number.prototype")}}
+
Permite la adición de propiedades a un objeto Number.
+
+ +

Métodos

+ +
+
{{jsxref("Number.isNaN()")}}
+
Determina si el valor es NaN.
+
{{jsxref("Number.isFinite()")}}
+
Determina si el valor es un numero infinito.
+
{{jsxref("Number.isInteger()")}}
+
Determina si un numero es entero.
+
{{jsxref("Number.isSafeInteger()")}}
+
Determine si el valor pasado es un entero seguro (número entre -(253 - 1)253 - 1).
+
{{jsxref("Number.toInteger()")}} {{obsolete_inline}}
+
Se usa para evaluar el valor pasado y convertirlo en un entero (or {{jsxref("Global_Objects/Infinity", "Infinity")}}), pero ha sido eliminado.
+
{{jsxref("Number.parseFloat()")}}
+
El valor es el mismo que {{jsxref ("parseFloat", "parseFloat ()")}} del objeto global.
+
{{jsxref("Number.parseInt()")}}
+
El valor es el mismo que {{jsxref("parseInt", "parseInt()")}} del objeto global.
+
+ +

Instancias Number

+ +

Todas las instancias Number heredan de {{jsxref("Number.prototype")}}. El objeto prototipo del constructor de Number puede modificarse para aceptar a todas las instancias de Number.

+ +

Métodos

+ +
+
{{jsxref("Number.prototype.toExponential()" ,"Number.prototype.toExponential(fractionDigits)")}}
+
Devuelve una cadena que representa el número en notación exponencial.
+
+ +
+
{{jsxref("Number.prototype.toFixed()", "Number.prototype.toFixed(digits)")}}
+
Devuelve una cadena que representa el número en notación de punto fijo.
+
{{jsxref("Number.prototype.toLocaleString()", "Number.prototype.toLocaleString([locales [, options]])")}}
+
Devuelve una cadena con una representación sensible al idioma de este número. Invalida el método {{jsxref ("Object.prototype.toLocaleString ()")}}.
+
+ +

Ejemplos

+ +

Ejemplo: Utilizando el objeto Number para asignar valores a variables numéricas

+ +

El siguiente ejemplo utiliza las propiedades del objeto Number para asignar valores a varias variables numéricas:

+ +
const MásgrandeNum    = Number.MAX_VALUE;
+const MáspequeNum     = Number.MIN_VALUE;
+const infinitoNum     = Number.POSITIVE_INFINITY;
+const notInfinitoNum  = Number.NEGATIVE_INFINITY;
+const noEsNum         = Number.NaN;
+
+ +

Intervalo de enteros para Number

+ +

El siguiente ejemplo muestra los valores máximos y minimos que pueden ser representados mediante el objeto Number: 

+ +

Cuando se analizan datos que se han serializado en JSON, se puede esperar que los valores enteros que se encuentran fuera de este rango se corrompan cuando el analizador JSON los coacciona al tipo Number.

+ +

Una posible solución es usar {{jsxref ("String")}} en su lugar.

+ +

Los números más grandes se pueden representar usando el tipo {{jsxref ("BigInt")}}.

+ +
const biggestInt  = Number.MAX_SAFE_INTEGER  //  (253 - 1) =>  9007199254740991
+const smallestInt = Number.MIN_SAFE_INTEGER  // -(253 - 1) => -9007199254740991
+ +

Ejemplo: Utilizando el objeto Number para modificar todos los objetos Number

+ +

El siguiente ejemplo crea un objeto Number, miNúmero, luego añade la propiedad descripción a todos los objetos Number. Luego el valor es asignado a la propiedad descripción del objeto miNúmero.

+ +
miNúmero = new Number(65);
+Number.prototype.descripción = null;
+miNúmero.descripción = "velocidad del viento";
+
+ +

Utilizando el objecto Number para transformar un objeto Date 

+ +

El siguiente ejemplo convierte el objeto {{jsxref ("Date")}} a un valor numérico usando Number  como función:

+ +
var d = new Date('December 17, 1995 03:24:00');
+console.log(Number(d));
+ +

Esto muestra "819199440000".

+ +

Convierte cadenas numéricas a números

+ +
Number('123')     // 123
+Number('12.3')    // 12.3
+Number('123e-1')  // 12.3
+Number('')        // 0
+Number('0x11')    // 17
+Number('0b11')    // 3
+Number('0o11')    // 9
+Number('foo')     // NaN
+Number('100a')    // NaN
+ +
Number('-Infinity') //-Infinity
+ + + +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/number/isfinite/index.html b/files/es/web/javascript/reference/global_objects/number/isfinite/index.html new file mode 100644 index 0000000000..f26af9f671 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/isfinite/index.html @@ -0,0 +1,88 @@ +--- +title: Number.isFinite() +slug: Web/JavaScript/Referencia/Objetos_globales/Number/isFinite +translation_of: Web/JavaScript/Reference/Global_Objects/Number/isFinite +--- +
{{JSRef}}
+ +

El método Number.isFinite() determina si el valor pasado es un número finito.

+ +
{{EmbedInteractiveExample("pages/js/number-isfinite.html")}}
+ + + +

Syntax

+ +
Number.isFinite(valor)
+ +

Parameters

+ +
+
valor
+
El valor cuya finitud será probada.
+
+ +

Return value

+ +

Un {{jsxref("Boolean")}} indicando si el valor dado es finito o no.

+ +

Description

+ +

En comparación con la funcion global {{jsxref("isFinite", "isFinite()")}} , este método no convierte el parámetro forzádamente a un número. Esto significa que solo valores de tipo númerico, que también son finitos, retornan true.

+ +

Ejemplos

+ +
Number.isFinite(Infinity);  // false
+Number.isFinite(NaN);       // false
+Number.isFinite(-Infinity); // false
+
+Number.isFinite(0);         // true
+Number.isFinite(2e64);      // true
+
+Number.isFinite('0');       // false, retornaría true con la función
+                            // global isFinite('0')
+Number.isFinite(null);      // false, retornaría true con la función
+                            // global isFinite(null)
+
+ +

Polyfill

+ +
Number.isFinite = Number.isFinite || function(value) {
+    return typeof value === 'number' && isFinite(value);
+}
+
+ +

Specificaciones

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-number.isfinite', 'Number.isInteger')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-number.isfinite', 'Number.isInteger')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad de navegador

+ + + +

{{Compat("javascript.builtins.Number.isFinite")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/number/isinteger/index.html b/files/es/web/javascript/reference/global_objects/number/isinteger/index.html new file mode 100644 index 0000000000..6fdafca32e --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/isinteger/index.html @@ -0,0 +1,94 @@ +--- +title: Number.isInteger() +slug: Web/JavaScript/Referencia/Objetos_globales/Number/isInteger +tags: + - JavaScript + - Number + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Number/isInteger +--- +
{{JSRef}}
+ +

El método Number.isInteger() determina si el valor pasado es de tipo entero.

+ +
{{EmbedInteractiveExample("pages/js/number-isinteger.html")}}
+ +

Sintaxis

+ +
Number.isInteger(valor)
+ +

Parámetros

+ +
+
valor
+
El valor a ser probado si es un entero.
+
+ +

Valor devuelto

+ +

Un {{jsxref("Boolean")}} indicando si el valor dado es un entero o no.

+ +

Descripción 

+ +

Si el valor seleccionado es un entero, devuelve true, de lo contrario false. Si el valor es {{jsxref("NaN")}} o infinito, devuelve false.

+ +

Ejemplos

+ +
Number.isInteger(0);         // true
+Number.isInteger(1);         // true
+Number.isInteger(-100000);   // true
+Number.isInteger(99999999999999999999999); // true
+
+Number.isInteger(0.1);       // false
+Number.isInteger(Math.PI);   // false
+
+Number.isInteger(NaN);       // false
+Number.isInteger(Infinity);  // false
+Number.isInteger(-Infinity); // false
+Number.isInteger('10');      // false
+Number.isInteger(true);      // false
+Number.isInteger(false);     // false
+Number.isInteger([1]);       // false
+
+ +

Polyfill

+ +
Number.isInteger = Number.isInteger || function(value) {
+  return typeof value === 'number' &&
+    isFinite(value) &&
+    Math.floor(value) === value;
+};
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-number.isinteger', 'Number.isInteger')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-number.isinteger', 'Number.isInteger')}}{{Spec2('ESDraft')}} 
+ +

Compatitibilidad con navegadores

+ +

{{Compat("javascript.builtins.Number.isInteger")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/number/isnan/index.html b/files/es/web/javascript/reference/global_objects/number/isnan/index.html new file mode 100644 index 0000000000..cc9c62274c --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/isnan/index.html @@ -0,0 +1,140 @@ +--- +title: Number.isNaN() +slug: Web/JavaScript/Referencia/Objetos_globales/Number/isNaN +translation_of: Web/JavaScript/Reference/Global_Objects/Number/isNaN +--- +
{{JSRef}}
+ +

El método Number.isNaN() determina si el valor pasado es {{jsxref("NaN")}}. Versión más robusta de la función global {{jsxref("isNaN", "isNaN()")}}.

+ +

Sintaxis

+ +
Number.isNaN(value)
+ +

Parámetros

+ +
+
valor
+
El valor para ser evaluado por {{jsxref("NaN")}}.
+
+ +

Description

+ +

Debido a los dos operadores de igualdad, {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}} y {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}}, evaluando a false cuando al comprobar si {{jsxref("NaN")}} is {{jsxref("NaN")}}, la función Number.isNaN() se ha convertido en necesaria. Esta situación es diferente a las otras comparaciones de valor en JavaScript.

+ +

En comparación a la función global {{jsxref("isNaN", "isNaN()")}}, Number.isNaN() no sufre el problema de forzar la conversión del parámetro a un número. Esto significa que ahora es seguro pasar valores que normalmente se convertirían a {{jsxref("NaN")}}, pero no son del mismo valor que {{jsxref("NaN")}}. Esto también significa que solo los valores de tipo número, que también son {{jsxref("NaN")}}, retornan true.

+ +

Examples

+ +
Number.isNaN(NaN);        // true
+Number.isNaN(Number.NaN); // true
+Number.isNaN(0 / 0)       // true
+
+// e.g. estos hubiesen sido true con la función global isNaN()
+Number.isNaN("NaN");      // false
+Number.isNaN(undefined);  // false
+Number.isNaN({});         // false
+Number.isNaN("blabla");   // false
+
+// Todos retornan false
+Number.isNaN(true);
+Number.isNaN(null);
+Number.isNaN(37);
+Number.isNaN("37");
+Number.isNaN("37.37");
+Number.isNaN("");
+Number.isNaN(" ");
+
+ +

Polyfill

+ +
Number.isNaN = Number.isNaN || function(value) {
+    return typeof value === "number" && isNaN(value);
+}
+
+// O
+Number.isNaN = Number.isNaN || function(value) {
+    return value !== value;
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-number.isnan', 'Number.isnan')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-number.isnan', 'Number.isnan')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad de navegador

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome("25")}}{{CompatGeckoDesktop("15")}}{{CompatNo}}{{CompatVersionUnknown}}9
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatUnknown}}{{CompatGeckoMobile("15")}}{{CompatNo}}{{CompatNo}}9
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/number/issafeinteger/index.html b/files/es/web/javascript/reference/global_objects/number/issafeinteger/index.html new file mode 100644 index 0000000000..b12c4cf4d6 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/issafeinteger/index.html @@ -0,0 +1,99 @@ +--- +title: Number.isSafeInteger() +slug: Web/JavaScript/Referencia/Objetos_globales/Number/isSafeInteger +tags: + - ECMAScript6 + - JavaScript + - Number + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger +--- +
{{JSRef}}
+ +

El método Number.isSafeInteger() determina si el valor provisto es un número que es un entero seguro.

+ +
{{EmbedInteractiveExample("pages/js/number-issafeinteger.html")}}
+ + + +

Un entero seguro es un entero que

+ + + +

Por ejemplo, 253 - 1 es un entero seguro: puede ser exactamente representado y ningún otro entero puede ser redondeado a él bajo cualquier modo de redondeo de IEEE-754. En contraste, 253 no es un entero seguro, puede ser exactamente representado en IEEE-754, pero el entero 253 + 1 no puede ser directamente representado en IEEE-754 pero en su lugar, redondea a 253 bajo los modos de redondeo redondeo-al-más-cercano y redondeo-a-cero.  Los enteros seguros consisten en todos los enteros desde -(253 - 1) inclusivo, hasta 253 - 1 inclusivo (± 9007199254740991 o ± 9,007,199,254,740,991).  

+ +

Manejar valores más grandes o más pequeños que ~9 cuatrillones con presición completa requiere usar una biblioteca de artimética de presición arbitraria.  Ver Lo que todo programador necesita saber sobre aritmética de punto flotante para más información sobre representaciones de punto flotante de los números.

+ +

Sintaxis

+ +
Number.isSafeInteger(valorDePrueba)
+
+ +

Parámetros

+ +
+
valorDePrueba
+
El valor a probar si es un entero seguro.
+
+ +

Valor de retorno

+ +

Un {{jsxref("Boolean")}} que indica si el valor dado es un número que es entero seguro.

+ +

Ejemplos

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

+ +
Number.isSafeInteger = Number.isSafeInteger || function (value) {
+   return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER;
+};
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
{{SpecName('ES2015', '#sec-number.issafeinteger', 'Number.isSafeInteger')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-number.issafeinteger', 'Number.isSafeInteger')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ + + +

{{Compat("javascript.builtins.Number.isSafeInteger")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/number/max_safe_integer/index.html b/files/es/web/javascript/reference/global_objects/number/max_safe_integer/index.html new file mode 100644 index 0000000000..e5fa9df144 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/max_safe_integer/index.html @@ -0,0 +1,68 @@ +--- +title: Number.MAX_SAFE_INTEGER +slug: Web/JavaScript/Referencia/Objetos_globales/Number/MAX_SAFE_INTEGER +tags: + - ECMAScript 2015 + - JavaScript + - Number + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER +--- +
{{JSRef}}
+ +

La constante Number.MAX_SAFE_INTEGER es el número mas grande 'seguro' en JavaScript (253 - 1).

+ +
{{EmbedInteractiveExample("pages/js/number-maxsafeinteger.html")}}
+ + + +
{{js_property_attributes(0, 0, 0)}}
+ +

Descripción

+ +

La constante MAX_SAFE_INTEGER tiene un valor de 9007199254740991 (9,007,199,254,740,991 o ~9 mil billones). El razonamiento detrás de ese número es que JavaScript usa números flotantes de doble precisión tal como está especfificado en IEEE 754 por lo que puedes representar números de forma segura entre -(253 - 1)253 - 1.

+ +

Seguro, en este contexto, se refiere a la habilidad de representar enteros de forma exacta y compararlos de forma correcta. Por ejemplo, Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 evaluará como 'verdadero', lo cual es matemáticamente incorrecto. Ver {{jsxref("Number.isSafeInteger()")}} para más información.

+ +

Debido a que MAX_SAFE_INTEGER es una propiedad estática de {{jsxref("Number")}}, siempre se usa como Number.MAX_SAFE_INTEGER, en lugar de como una propiedad de un objeto {{jsxref("Number")}} que hayas creado.

+ +

Ejemplos

+ +
Number.MAX_SAFE_INTEGER // 9007199254740991
+Math.pow(2, 53) - 1     // 9007199254740991
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
{{SpecName('ES2015', '#sec-number.max_safe_integer', 'Number.MAX_SAFE_INTEGER')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-number.max_safe_integer', 'Number.MAX_SAFE_INTEGER')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ + + +

{{Compat("javascript.builtins.Number.MAX_SAFE_INTEGER")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/number/max_value/index.html b/files/es/web/javascript/reference/global_objects/number/max_value/index.html new file mode 100644 index 0000000000..60c3d04e95 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/max_value/index.html @@ -0,0 +1,131 @@ +--- +title: Number.MAX_VALUE +slug: Web/JavaScript/Referencia/Objetos_globales/Number/MAX_VALUE +translation_of: Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE +--- +
{{JSRef}}
+ +
La propiedad Number.MAX_VALUE representa el valor numérico positivo máximo representable en JavaScript.
+ +
 
+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Descripción

+ +

La propiedad MAX_VALUE tiene un valor aproximado a 1.79E+308. Si el valor es mayor será representado como Infinity.

+ +

Dado que MAX_VALUE es una propiedad estática de {{jsxref("Number")}}, siempre ha de usarse como Number.MAX_VALUE, y no como propiedad del objeto que has creado.

+ +

Ejemplos

+ +

Usando MAX_VALUE

+ +

La función verificarValorMaximo recibe un número como parámetro que se compara con Number.MAX_VALUE. Si el número es menor se imprime por consola "El número no es infinito", de ser mayor "El número es infinito".

+ +
var numero1 = 1.79E+307;
+var numero2 = 1.79E+310;
+
+function verificarValorMaximo(num){
+
+	if (num <= Number.MAX_VALUE) {
+	  console.log("El número no es infinito");
+	} else {
+	  console.log("El número es infinito");
+	}
+
+}
+
+verificarValorMaximo(numero1); // El número no es infinito
+verificarValorMaximo(numero2); // El número es infinito
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.7.3.2', 'Number.MAX_VALUE')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-number.max_value', 'Number.MAX_VALUE')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-number.max_value', 'Number.MAX_VALUE')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad

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

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/number/min_value/index.html b/files/es/web/javascript/reference/global_objects/number/min_value/index.html new file mode 100644 index 0000000000..dadda2e337 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/min_value/index.html @@ -0,0 +1,121 @@ +--- +title: Number.MIN_VALUE +slug: Web/JavaScript/Referencia/Objetos_globales/Number/MIN_VALUE +translation_of: Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE +--- +
{{JSRef}}
+ +

La propiedad Number.MIN_VALUE representa el menor valor positivo numérico representable en JavaScript.

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

Descripción

+ +

La propiedad MIN_VALUE es el número más cercano a 0, no el más negativo, que JavaScript puede representar.

+ +

MIN_VALUE tiene un valor aproximado de 5e-324. Los valores menores que MIN_VALUE (“subdesbordamiento de valores”) son convertidos a 0.

+ +

Ya que MIN_VALUE es una propiedad estática de {{jsxref("Number")}}, debes utilizarla como Number.MIN_VALUE, más que como una propiedad del objeto {{jsxref("Number")}} que has creado.

+ +

Ejemplos

+ +

Usando MIN_VALUE

+ +

El siguiente código divide dos valores numéricos. Si el resultado es mayor o igual a MIN_VALUE, se ejecuta la función func1, si no, se ejecuta la función func2.

+ +
if (num1 / num2 >= Number.MIN_VALUE) {
+  func1();
+} else {
+  func2();
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.7.3.3', 'Number.MIN_VALUE')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-number.min_value', 'Number.MIN_VALUE')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-number.min_value', 'Number.MIN_VALUE')}}{{Spec2('ESDraft')}} 
+ +

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

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/number/nan/index.html b/files/es/web/javascript/reference/global_objects/number/nan/index.html new file mode 100644 index 0000000000..79db15a598 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/nan/index.html @@ -0,0 +1,59 @@ +--- +title: Number.NaN +slug: Web/JavaScript/Referencia/Objetos_globales/Number/NaN +tags: + - JavaScript + - Número + - Propiedad +translation_of: Web/JavaScript/Reference/Global_Objects/Number/NaN +--- +
{{JSRef}}
+ +

La propiedad Number.NaN representa Not-A-Number (No es numero). Equivalente de  {{jsxref("NaN")}}.

+ +
{{EmbedInteractiveExample("pages/js/number-nan.html")}}
+ +

No tienes que crear un objeto {{jsxref("Number")}} para acceder a esta propiedad estática (usa Number.NaN).

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

Ejemplos

+ +

Chequea si los valores son numericos

+ +
function sanitise(x) {
+  if (isNaN(x)) {
+    return Number.NaN;
+  }
+  return x;
+}
+ +

Testing against NaN

+ +

See Testing against NaN on the NaN page.

+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-number.nan', 'Number.NaN')}}
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Number.NaN")}}

+ +

Tambien mira

+ + diff --git a/files/es/web/javascript/reference/global_objects/number/negative_infinity/index.html b/files/es/web/javascript/reference/global_objects/number/negative_infinity/index.html new file mode 100644 index 0000000000..2e2d7d1573 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/negative_infinity/index.html @@ -0,0 +1,117 @@ +--- +title: Number.NEGATIVE_INFINITY +slug: Web/JavaScript/Referencia/Objetos_globales/Number/NEGATIVE_INFINITY +tags: + - JavaScript + - Number + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY +--- +
+ {{JSRef("Objetos_globales", "Number")}}
+

Resumen

+

La propiedad Number.NEGATIVE_INFINITY representa el valor del infinito negativo.

+

No se tiene que crear un objeto {{jsxref("Number")}} para acceder a esta propiedad estática (use Number.NEGATIVE_INFINITY).

+

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

+

Descripción

+

El valor Number.NEGATIVE_INFINITY es el mismo que el valor negativo de la propiedad del objeto global {{jsxref( "Infinity")}}.

+

Este valor tiene un comportamiento ligeramente diferente que el del infinito matematico:

+ +

Muchos métodos JavaScript (tales como el constructor del objeto Number, parseFloat, y parseInt) retornan NaN si el valor especifico en el párametro es significativamente menor a Number.MIN_VALUE.

+

Podrías utilizar la propiedad Number.NEGATIVE_INFINITY para indicar una condición de error que retorne un numero finito en caso de que esto suceda. Note, sin embargo, que isFinite seria mas apropiado en estos casos.

+

Example

+

En el siguiente ejemplo, a la variable smallNumber se le asigna un valor mucho mas pequeño al valor minimo. Cuando la sentencia if es ejecutada, smallNumber tiene el valor "-Infinity", por lo cual a smallNumber le es asignado un valor finito mas manejable antes de continuar.

+
var smallNumber = (-Number.MAX_VALUE) * 2
+
+if (smallNumber === Number.NEGATIVE_INFINITY) {
+ smallNumber = returnFinite();
+}
+
+

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + +
EspecificacionesEstadoComentario
ECMAScript 1ra Edición. Implementado en JavaScript 1.1EstándarDefinición inicial.
{{SpecName('ES5.1', '#sec-15.7.3.5', 'Number.NEGATIVE_INFINITY')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-number.negative_infinity', 'Number.NEGATIVE_INFINITY')}}{{Spec2('ES6')}} 
+

Compatibilidad con navegadores

+

{{ CompatibilityTable() }}

+
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico(Si)(Si)(Si)(Si)(Si)
+
+
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico(Si)(Si)(Si)(Si)(Si)(Si)
+
+

Ver también

+ diff --git a/files/es/web/javascript/reference/global_objects/number/parsefloat/index.html b/files/es/web/javascript/reference/global_objects/number/parsefloat/index.html new file mode 100644 index 0000000000..6285aa9b5a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/parsefloat/index.html @@ -0,0 +1,76 @@ +--- +title: Number.parseFloat() +slug: Web/JavaScript/Referencia/Objetos_globales/Number/parseFloat +tags: + - ECMAScript2015 + - ECMAScript6 + - JavaScript + - Número + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Number/parseFloat +--- +
{{JSRef}}
+ +

El método Number.parseFloat() parsea un argumento cadena y regresa un número de punto flotante. Este método se comporta de igual forma a la función global {{jsxref("parseFloat", "parseFloat()")}} y es parte de ECMAScript 2015 (su propósito es la modularización de los globales).

+ +
{{EmbedInteractiveExample("pages/js/number-parsefloat.html")}}
+ + + +

Sintaxis

+ +
Number.parseFloat(string)
+ +

Parámetros

+ +

{{page("en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat", "Parameters")}}

+ +

Valor de regreso

+ +

{{page("en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat", "Return value")}}

+ +

Descripción

+ +

Por favor ver {{jsxref("parseFloat", "parseFloat()")}} para más detalles y ejemplos.

+ +

Polyfill

+ +
if (Number.parseFloat === void 0) {
+    Number.parseFloat = parseFloat;
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
{{SpecName('ES2015', '#sec-number.parsefloat', 'Number.parseFloat')}}{{Spec2('ES2015')}}Definición inicial
{{SpecName('ESDraft', '#sec-number.parsefloat', 'Number.parseFloat')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad del navegador

+ + + +

{{Compat("javascript.builtins.Number.parseFloat")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/number/parseint/index.html b/files/es/web/javascript/reference/global_objects/number/parseint/index.html new file mode 100644 index 0000000000..e899827599 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/parseint/index.html @@ -0,0 +1,80 @@ +--- +title: Number.parseInt() +slug: Web/JavaScript/Referencia/Objetos_globales/Number/parseInt +tags: + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Number/parseInt +--- +
{{JSRef}}
+ +

The Number.parseInt() method parses a string argument and returns an integer of the specified radix or base.

+ +

The Number.parseInt() El método Number.parseInt () analiza un argumento de cadena y devuelve un entero de la raíz o base especificada.

+ +
{{EmbedInteractiveExample("pages/js/number-parseint.html", "taller")}}
+ + + +

Syntax

+ +
Number.parseInt(string,[ radix])
+ +

Parameters

+ +
+
+
string
+
The value to parse. If this argument is not a string, then it is converted to one using the ToString abstract operation. Leading whitespace in this argument is ignored.
+
radix {{optional_inline}}
+
An integer between 2 and 36 that represents the radix (the base in mathematical numeral systems) of the string. Be careful—this does not default to 10!
+
+
+ +

Return value

+ +

An integer parsed from the given string.

+ +

If the radix is smaller than 2 or bigger than 36, and the first non-whitespace character cannot be converted to a number, {{jsxref("NaN")}} is returned.

+ +

Description

+ +

This method has the same functionality as the global {{jsxref("parseInt", "parseInt()")}} function:

+ +
Number.parseInt === parseInt // true
+ +

and is part of ECMAScript 2015 (its purpose is modularization of globals). Please see {{jsxref("parseInt", "parseInt()")}} for more detail and examples.

+ +

Polyfill

+ +
if (Number.parseInt === undefined) {
+    Number.parseInt = window.parseInt
+}
+
+ +

Specifications

+ + + + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-number.parseint', 'Number.parseInt')}}
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Number.parseInt")}}

+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/number/positive_infinity/index.html b/files/es/web/javascript/reference/global_objects/number/positive_infinity/index.html new file mode 100644 index 0000000000..41d101a569 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/positive_infinity/index.html @@ -0,0 +1,115 @@ +--- +title: Number.POSITIVE_INFINITY +slug: Web/JavaScript/Referencia/Objetos_globales/Number/POSITIVE_INFINITY +tags: + - JavaScript + - Number + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY +--- +

{{JSRef("Objetos_globales", "Number")}}

+

Resumen

+

La propiedad Number.POSITIVE_INFINITY representa el infinito positivo.

+

No se tiene que crear un objeto {{jsxref("Number")}} para acceder a esta propiedad estática (use Number.POSITIVE_INFINITY).

+

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

+

Descripción

+

El valor de Number.POSITIVE_INFINITY es el mismo valor de la propiedad {{jsxref( "Infinity")}} del objeto global.

+

Este valor tiene un comportamiento ligeramente diferente al infinio matemático:

+ +

Muchos métodos de JavaScript (tales como el constructor del objeto Number, parseFloat y parseInt) retornan NaN si el valor especificado en el parámetro es signficativamente mayor a Number.MAX_VALUE.

+

Podrías utilizar la propiedad Number.POSITIVE_INFINITY para indicar una condición de error que retorne un numero finito en caso de que esto suceda. Note, sin embargo, que isFinite seria mas apropiado en estos casos.

+

Ejemplo

+

En el siguiente ejemplo, a la variable bigNumber se le asigna un valor mucho mayor al valor máximo. Cuando la sentencia if es ejecutada, bigNumber tiene el valor "Infinity", por lo cual a bigNumber le es asignado un valor mas manejable antes de continuar.

+
var bigNumber = Number.MAX_VALUE * 2;
+if (bigNumber === Number.POSITIVE_INFINITY) {
+ bigNumber = returnFinite();
+}
+
+

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + +
EspecificacionesEstadoComentario
ECMAScript 1st Edition. Implemented in JavaScript 1.1EstándarDefinición inicial.
{{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')}} 
+

Compatibilidad con navegadores

+

{{ CompatibilityTable() }}

+
+ + + + + + + + + + + + + + + + + + + +
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico(SI)(Si)(Si)(Si)(Si)
+
+
+ + + + + + + + + + + + + + + + + + + + + +
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soprote básico(Si)(Si)(Si)(Si)(Si)(Si)
+
+

Ver también

+ diff --git a/files/es/web/javascript/reference/global_objects/number/tofixed/index.html b/files/es/web/javascript/reference/global_objects/number/tofixed/index.html new file mode 100644 index 0000000000..f11ccc3938 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/tofixed/index.html @@ -0,0 +1,147 @@ +--- +title: Number.prototype.toFixed() +slug: Web/JavaScript/Referencia/Objetos_globales/Number/toFixed +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toFixed +--- +
{{JSRef}}
+ +

El método toFixed() formatea un número usando notación de punto fijo.

+ +
{{EmbedInteractiveExample("pages/js/number-tofixed.html")}}
+ +

Sintaxis

+ +
numObj.toFixed([digitos])
+ +

Parametros

+ +
+
digitos
+
Opcional. El número de digitos que aparecen después del punto decimal; este puede ser un valor entre 0 y 20, inclusive, algunas implementaciones pueden soportar un rango más amplio de valores. Si el argumento es omitido, es tratado como 0.
+
+ +

Valor Devuelto

+ +

Una cadena que representa el número dado, usando notación de punto fijo.

+ +

Excepciones

+ +
+
{{jsxref("RangeError")}}
+
Si digits es demasiado pequeño o demasiado grande. Los valores entre 0 y 20, inclusive, no causarán un error tipo {{jsxref("RangeError")}}. Las implementaciones también pueden admitir valores cada vez más grandes.
+
{{jsxref("TypeError")}}
+
Si este método se invoca en un objeto que no es un {{jsxref("Number")}}.
+
+ +

Descripción

+ +

toFixed() devuelve una representación de cadena de numObj que no usa notación exponencial y tiene exactamente dígitos dígitos después del decimal. El número se redondea si es necesario, y la parte fraccional se rellena con ceros si es necesario para que tenga la longitud especificada.Si numObj es mayor que 1e+21, este metodo llama a {{jsxref("Number.prototype.toString()")}} y retorna una cadena de notacion exponencial.

+ +

Examples

+ +

Using toFixed

+ +
var numObj = 12345.6789;
+
+numObj.toFixed();       // Returns '12346': note rounding, no fractional part
+numObj.toFixed(1);      // Returns '12345.7': note rounding
+numObj.toFixed(6);      // Returns '12345.678900': note added zeros
+(1.23e+20).toFixed(2);  // Returns '123000000000000000000.00'
+(1.23e-10).toFixed(2);  // Returns '0.00'
+2.34.toFixed(1);        // Returns '2.3'
+2.35.toFixed(1);        // Returns '2.4'. Note that it rounds up in this case.
+-2.34.toFixed(1);       // Returns -2.3 (due to operator precedence, negative number literals don't return a string...)
+(-2.34).toFixed(1);     // Returns '-2.3' (...unless you use parentheses)
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES3')}}{{Spec2('ES3')}}Initial definition. Implemented in 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')}}
+ +

Browser compatibility

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

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/number/tolocalestring/index.html b/files/es/web/javascript/reference/global_objects/number/tolocalestring/index.html new file mode 100644 index 0000000000..d0c28b1431 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/tolocalestring/index.html @@ -0,0 +1,155 @@ +--- +title: Number.prototype.toLocaleString() +slug: Web/JavaScript/Referencia/Objetos_globales/Number/toLocaleString +tags: + - Internacionalizacion + - JavaScript + - Número +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toLocaleString +--- +
{{JSRef}}
+ +

El método toLocaleString() retorna una representacion localizada del número en forma de texto

+ +
{{EmbedInteractiveExample("pages/js/number-tolocalestring.html")}}
+ + + +

Syntax

+ +
numObj.toLocaleString([locales [, options]])
+ +

Parametros

+ +

Los argumentos locales y options personalizan el comportamiento de la funcion y permite especificar el lenguaje cuyo formato deberá ser utilizado. En implementaciones, que ignoran los argumentos locales y options la localización utilizada y la forma del texto retornado es enteramente dependiente de la implementación.

+ +
Mira el  constructor Intl.NumberFormat() para ver más detalles sobre los parámetros y como se utilizan.
+ +
+ +

Valor de retorno

+ +

Un texto con una representación localizada del número dado.

+ +

Performance

+ +

Cuando formateas una gran cantidad de números, es mejor crear un objeto {{jsxref("NumberFormat")}} y utilizar la función {{jsxref("NumberFormat.format")}}.

+ +

Ejemplos

+ +

Usando toLocaleString

+ +

Un uso básico sin especificar locales, retorna un texto formateado con el locales y options por defecto.

+ +
var number = 3500;
+
+console.log(number.toLocaleString()); // Muestra "3,500" si se está utilizando la localización U.S. English
+
+ +

Verificando el soporte de los parámetros locales y options

+ +

Los parámetros locales y options no son soportados aún por todos los navegadores. Para verificar el soporte en ES5.1 y posteriores implementaciones, se puede utilizar el hecho que los tags inválidos en la localización son rechazados con una excepción {{jsxref("Global_Objects/RangeError", "RangeError")}}:

+ +
function toLocaleStringSupportsLocales() {
+  var number = 0;
+  try {
+    number.toLocaleString('i');
+  } catch (e) {
+    return e.name === 'RangeError';
+  }
+  return false;
+}
+
+ +

Antes de ES5.1, las implementaciones no requieren devolver una exepción {{jsxref("Global_Objects/RangeError", "RangeError")}} cuando toLocaleString es llamado sin argumentos.

+ +

Para verificar que funciona todos los navegadores, incluyendo aquellos que soportan ECMA-262, anterior a ES5.1, se puede verificar por las funcionalidades especificadas en ECMA-402 que requieren soportar opciones regionales para Number.prototype.toLocaleString directamente:

+ +
function toLocaleStringSupportsOptions() {
+  return !!(typeof Intl == 'object' && Intl && typeof Intl.NumberFormat == 'function');
+}
+
+ +

Esta validación del objeto global Intl , verificar que no es null (nulo) y que tiene la propiedad NumberFormat que es una función.

+ +

Utilizando locales

+ +

Este ejemplo muestra alguna de las variaciones en los formatos de números localizados. Para obtener el formato de la localización utilizada en la interfaz del usuario de tu aplicación, asegurate de especificar la localización (y de ser posible alguna localización de respaldo) utilizando el parámetro locales:

+ +
var number = 123456.789;
+
+// Aleman utiliza comas como separador decimal y puntos miles
+console.log(number.toLocaleString('de-DE'));
+// → 123.456,789
+
+// Arabe en la mayoría de países de habla Arabe utilizan numerales Eastern Arabic
+console.log(number.toLocaleString('ar-EG'));
+// → ١٢٣٤٥٦٫٧٨٩
+
+// India utiliza separadores de miles/lakh/crore
+console.log(number.toLocaleString('en-IN'));
+// → 1,23,456.789
+
+// la extensión nu requiere un sistema numerico, e.g. Decimales Chino
+console.log(number.toLocaleString('zh-Hans-CN-u-nu-hanidec'));
+// → 一二三,四五六.七八九
+
+// cuando solicitas un lenguage que podria no ser soportado, como
+// Balinese, incluye un lenguaje de respaldo, en este caso Indonesio
+console.log(number.toLocaleString(['ban', 'id']));
+// → 123.456,789
+
+ +

Utilizando options

+ +

El resultado proveido por  toLocaleString puede ser personalizado utilizando el parámetro options :

+ +
var number = 123456.789;
+
+// solicitar un formato de moneda
+console.log(number.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }));
+// → 123.456,79 €
+
+// en Japones yen no utiliza una moneda menor
+console.log(number.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' }))
+// → ¥123,457
+
+// limitar a tres digitos el significante
+console.log(number.toLocaleString('en-IN', { maximumSignificantDigits: 3 }));
+// → 1,23,000
+
+// Utilizar el lenguaje por defecto del host con opciones para el formato del número
+var num = 30000.65;
+console.log(num.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}));
+// → "30,000.65" donde English es el lenguaje por defecto, o
+// → "30.000,65" donde Aleman es el lenguaje por defecto, o
+// → "30 000,65" donde French es el lenguaje por defecto
+
+ +

Especificaciones

+ + + + + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-number.prototype.tolocalestring', 'Number.prototype.toLocaleString')}}
{{SpecName('ES Int Draft', '#sup-number.prototype.tolocalestring', 'Number.prototype.toLocaleString')}}
+ +

Compatibilidad de navegadores

+ + + +

{{Compat("javascript.builtins.Number.toLocaleString")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/number/toprecision/index.html b/files/es/web/javascript/reference/global_objects/number/toprecision/index.html new file mode 100644 index 0000000000..7a5110d7a9 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/toprecision/index.html @@ -0,0 +1,102 @@ +--- +title: Number.prototype.toPrecision() +slug: Web/JavaScript/Referencia/Objetos_globales/Number/toPrecision +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toPrecision +--- +
{{JSRef}}
+ +

El método toPrecision() devuelve una cadena que representa un objeto {{jsxref("Number")}} según la precisión especificada.

+ +
{{EmbedInteractiveExample("pages/js/number-toprecision.html")}}
+ +

Sintaxis

+ +
numObj.toPrecision([precision])
+ +

Parámetros

+ +
+
precision
+
Opcional. Un entero que especifica el número de digitos significativos.
+
+ +

Valor devuelto

+ +

Una cadena que representa un objeto {{jsxref("Number")}} en punto fijo o en notación exponencial redondeada a precision de digitos significativos. Vea la discusión acerca del redondeo en la descripción del método {{jsxref("Number.prototype.toFixed()")}} , que además aplica a toPrecision().

+ +

Si el parámetro precision es omitido, se comporta como {{jsxref("Number.prototype.toString()")}}. Si el parámetro precision es un valor no entero, el valor es redondeado al entero más cercano.

+ +

Exceptions

+ +
+
{{jsxref("Global_Objects/RangeError", "RangeError")}}
+
If precision is not between 1 and 100 (inclusive), a {{jsxref("RangeError")}} is thrown. Implementations are allowed to support larger and smaller values as well. ECMA-262 only requires a precision of up to 21 significant digits.
+
+ +

Ejemplos

+ +

Usando 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 bajo algunas circunstancias el valor retornado es en notación exponencial
+console.log((1234.5).toPrecision(2)); // logs '1.2e+3'
+
+ +

Especificaciónes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Primera definición. Implementada en 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')}} 
+ +

Compatibilidad de navegadores

+ + + +

{{Compat("javascript.builtins.Number.toPrecision")}}

+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/number/tostring/index.html b/files/es/web/javascript/reference/global_objects/number/tostring/index.html new file mode 100644 index 0000000000..f911fa271e --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/tostring/index.html @@ -0,0 +1,63 @@ +--- +title: Number.prototype.toString() +slug: Web/JavaScript/Referencia/Objetos_globales/Number/toString +tags: + - JavaScript + - Method + - Number + - Prototype + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toString +--- +
{{JSRef("Objetos_globales", "Number")}}
+ +

Resumen

+ +

Devuelve una cadena que representa al objeto Number especificado

+ +

Sintaxis

+ +

number .toString( {{ mediawiki.external('base ') }} )

+ +

Parámetro

+ +
+
base
+
Un entero entre 2 y 36 especificando la base a usar para representar los valores numéricos.
+
+ +

Devuelve

+ +

Una cadena que representa al objeto.

+ +

Descripción

+ +

El objeto Number sobreescribe el método toString y no lo hereda del objeto {{jsxref("Object")}}; por tanto no hereda {{jsxref("Object.prototype.toString()")}}. Para objetos Number, el método toString devuelve una cadena que representa al objeto en la base especificada.

+ +

El método toString comprueba su primer argumento, e intenta devolver una cadena de representación en la base especificada. Para bases superiores a 10, las letras del alfabeto indican numerales mayores de 9. Por ejemplo, para números hexadecimales (base 16), se utiliza de A hasta F.

+ +

Si no se da a toString una base entre 2 y 36, se lanza una excepción.

+ +

Si no se especifica la base, JavaScript asume la base predefinida, que es 10.

+ +

Ejemplos

+ +
var howMany = 10;
+
+alert("howMany.toString() is " + howMany.toString()); // displays "10"
+
+alert("45 .toString() is " + 45 .toString()); //displays "45"
+
+var x = 7;
+alert(x.toString(2))      // Displays "111"
+
+ + + +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/number/valueof/index.html b/files/es/web/javascript/reference/global_objects/number/valueof/index.html new file mode 100644 index 0000000000..588c421746 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/number/valueof/index.html @@ -0,0 +1,81 @@ +--- +title: Number.prototype.valueOf() +slug: Web/JavaScript/Referencia/Objetos_globales/Number/valueOf +tags: + - JavaScript + - Métodos + - Number + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Number/valueOf +--- +
{{JSRef}}
+ +

El método valueOf() retorna el valor primitivo inserto en un objeto {{jsxref("Number")}}.

+ +

Sintaxis

+ +
numObj.valueOf()
+ +

Valor retornado

+ +

Un número representando al valor primitivo del objeto  {{jsxref("Number")}} especificado.

+ +

Descripción

+ +

Este método es usualmente llamado de forma interna por JavaScript y no es explicitado en el código web.

+ +

Ejemplos

+ +

Utilizando valueOf

+ +
var numObj = new Number(10);
+console.log(typeof numObj); // objeto
+
+var num = numObj.valueOf();
+console.log(num);           // 10
+console.log(typeof num);    // número
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
+ +

Compatibilidad con navegador

+ + + +

{{Compat("javascript.builtins.Number.valueOf")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/__definegetter__/index.html b/files/es/web/javascript/reference/global_objects/object/__definegetter__/index.html new file mode 100644 index 0000000000..fceb708912 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/__definegetter__/index.html @@ -0,0 +1,144 @@ +--- +title: Object.prototype.__defineGetter__() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/__defineGetter__ +tags: + - JavaScript + - Objeto + - Prototipo + - Prototype + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__ +--- +
{{JSRef}}
+ +
+

Esta característica está obsoleta en favor de definir getters usando el object initializer syntax o la API {{jsxref("Object.defineProperty()")}}.

+ +

En todo caso, como es ampliamente implementada y usada en la Web,  es poco probable que los navegadores dejen de implementarla.

+
+ +

El método __defineGetter__ enlaza una propiedad de un objeto a una función a ser llamada cuando esa propiedad es buscada.

+ +

Sintaxis

+ +
obj.__defineGetter__(prop, func)
+ +

Parámetros

+ +
+
prop
+
Un texto (string) que contiene el nombre de la propiedad para enlazar la función dada.
+
func
+
A function to be bound to a lookup of the specified property.
+
+ +

Descripción

+ +

The __defineGetter__ allows a {{jsxref("Operators/get", "getter", "", 1)}} to be defined on a pre-existing object.

+ +

Ejemplos

+ +
// Forma no-estándar y obsoleta
+
+var o = {};
+o.__defineGetter__('gimmeFive', function() { return 5; });
+console.log(o.gimmeFive); // 5
+
+
+// Formas compatibles con el estándar
+
+// Usando el 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
+
+ +

Especificaciones

+ + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('JavaScript', '#object.prototype.__definegetter__', 'Object.prototype.__defineGetter__()')}}{{Spec2('JavaScript')}} 
+ +

Compatibilidad de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatIE("11")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Mira también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/__lookupgetter__/index.html b/files/es/web/javascript/reference/global_objects/object/__lookupgetter__/index.html new file mode 100644 index 0000000000..8292222a38 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/__lookupgetter__/index.html @@ -0,0 +1,84 @@ +--- +title: Object.prototype.__lookupGetter__() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/__lookupGetter__ +translation_of: Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__ +--- +
{{JSRef}} {{deprecated_header}}
+ +

Los __lookupGetter__ metodos retornan la funcion  enlazada como un getter para especificar la propiedad.

+ +

Syntax

+ +
obj.__lookupGetter__(sprop)
+ +

Parameters

+ +
+
sprop
+
A string containing the name of the property whose getter should be returned.
+
+ +

Return value

+ +

The function bound as a getter to the specified property.

+ +

Description

+ +

If a getter has been defined for an object's property, it's not possible to reference the getter function through that property, because that property refers to the return value of that function. __lookupGetter__ can be used to obtain a reference to the getter function.

+ +

It is now possible to do this in a standardized way using {{jsxref("Object.getOwnPropertyDescriptor()")}} and {{jsxref("Object.getPrototypeOf()")}}.

+ +

Examples

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

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-object.prototype.__lookupGetter__', 'Object.prototype.__lookupGetter__()')}}{{Spec2('ESDraft')}}Included in the (normative) annex for additional ECMAScript legacy features for Web browsers (note that the specification codifies what is already in implementations).
+ +

Browser compatibility

+ +
+ + +

{{Compat("javascript.builtins.Object.lookupGetter")}}

+
+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/assign/index.html b/files/es/web/javascript/reference/global_objects/object/assign/index.html new file mode 100644 index 0000000000..17de417d75 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/assign/index.html @@ -0,0 +1,274 @@ +--- +title: Object.assign() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/assign +tags: + - ECMAScript 2015 + - JavaScript + - Objeto + - Referencia + - metodo + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Object/assign +--- +
{{JSRef}}
+ +

El método Object.assign() copia todas las propiedades enumerables de uno o más objetos fuente a un objeto destino. Devuelve el objeto destino. 

+ +
{{EmbedInteractiveExample("pages/js/object-assign.html")}}
+ +

Sintaxis

+ +
Object.assign(objetivo, ...fuentes)
+ +

Parámetros

+ +
+
objetivo
+
El objeto destino.
+
fuentes
+
Los objetos origen.
+
+ +

Valor devuelto

+ +

El objeto destino.

+ +

Descripción

+ +

Las propiedades en el objeto destino serán sobrescritas por las propiedades en las fuentes si tienen la misma clave. Propiedades posteriores de las fuentes podrán sobrescribir las anteriores.

+ +

El método Object.assign() copia sólo las propiedades enumerables y propias del objeto origen a un objeto destino. Usa [[Get]] en la origen y [[Set]] en el destino, por lo que invocará los métodos de acceso y establecimiento (getters y setters). Por consiguiente asignará propiedades frente a sólo copiar o definir propiedades nuevas. Esto puede hacer que sea inadecuado para fusionar propiedades nuevas en un prototipo si los objetos fuente contienen métodos de acceso (getters). Para copiar definiciones de propiedades en prototipos, incluyendo su enumerabilidad, se deben usar {{jsxref("Object.getOwnPropertyDescriptor()")}} y {{jsxref("Object.defineProperty()")}}.

+ +

Tanto las propiedades {{jsxref("String")}} como {{jsxref("Symbol")}} son copiadas.

+ +

En caso de un error, por ejemplo si una propiedad es de solo lectura, se lanza un {{jsxref("TypeError")}}, y el objeto destino se mantendrá sin cambios.

+ +

Note que Object.assign() no lanza excepciones al encontrar en las fuentes propiedades {{jsxref("null")}} o {{jsxref("undefined")}}.

+ +

Ejemplos

+ +

Clonando un objeto

+ +
var obj = { a: 1 };
+var copy = Object.assign({}, obj);
+console.log(copy); // { a: 1 }
+
+ +

Advertencia para clonado profundo

+ +

Para un clonado profundo, necesitamos usar otra alternativa ya que Object.assign() copia valores de propiedades. Si el valor en la fuente es una referencia a un objeto, solo se copia la referencia en sí, como valor de la propiedad.

+ +
function test() {
+  'use strict';
+
+  let obj1 = { a: 0 , b: { c: 0}};
+  let obj2 = Object.assign({}, obj1);
+  console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}
+
+  obj1.a = 1;
+  console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}
+  console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}
+
+  obj2.a = 2;
+  console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}
+  console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 0}}
+
+  obj2.b.c = 3;
+  console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 3}}
+  console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 3}}
+
+  // Deep Clone
+  obj1 = { a: 0 , b: { c: 0}};
+  let obj3 = JSON.parse(JSON.stringify(obj1));
+  obj1.a = 4;
+  obj1.b.c = 4;
+  console.log(JSON.stringify(obj3)); // { a: 0, b: { c: 0}}
+}
+
+test();
+ +

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

Fusionando objetos con las mismas propiedades

+ +
var o1 = { a: 1, b: 1, c: 1 };
+var o2 = { b: 2, c: 2 };
+var o3 = { c: 3 };
+
+var obj = Object.assign({}, o1, o2, o3);
+console.log(obj); // { a: 1, b: 2, c: 3 }
+ +

Las propiedades también son sobreescritas por otros objetos que aparecen posteriormente en la lista de parámetros y que tienen propiedades con el mismo nombre.

+ +

Copiando propiedades de tipo símbolo

+ +
var o1 = { a: 1 };
+var o2 = { [Symbol('foo')]: 2 };
+
+var obj = Object.assign({}, o1, o2);
+console.log(obj); // { a : 1, [Symbol("foo")]: 2 } (cf. bug 1207182 on Firefox)
+Object.getOwnPropertySymbols(obj); // [Symbol(foo)]
+
+ +

Las propiedades heredadas y las no enumerables no pueden ser copiadas

+ +
var obj = Object.create({ foo: 1 }, { // foo es una propiedad heredada.
+  bar: {
+    value: 2  // bar es una propiedad no enumerable.
+  },
+  baz: {
+    value: 3,
+    enumerable: true  // baz es una propiedad propia enumerable.
+  }
+});
+
+var copy = Object.assign({}, obj);
+console.log(copy); // { baz: 3 }
+
+ +

Los tipos primitivos serán encapsulados en objetos

+ +
var v1 = 'abc';
+var v2 = true;
+var v3 = 10;
+var v4 = Symbol('foo')
+
+var obj = Object.assign({}, v1, null, v2, undefined, v3, v4);
+// Los tipos primitivos son encapsulados en objetos y se ignoran las propiedades con valor null o undefined.
+// Nótese que sólo los wrappers de cadenas tienen propiedades enumerables:
+console.log(obj); // { "0": "a", "1": "b", "2": "c" }
+
+ +

Las excepciones interrumpen la tarea de copiado

+ +
var target = Object.defineProperty({}, 'foo', {
+  value: 1,
+  writeable: false
+}); // target.foo es una propiedad de sólo lectura
+
+Object.assign(target, { bar: 2 }, { foo2: 3, foo: 3, foo3: 3 }, { baz: 4 });
+// TypeError: "foo" es de sólo lectura
+// La excepción se lanza cuando se intenta asignar un valor a target.foo
+
+console.log(target.bar);  // 2, la primera fuente fue copiada.
+console.log(target.foo2); // 3, la primera propiedad del segundo objeto fuente se copió correctamente.
+console.log(target.foo);  // 1, se lanza la excepción.
+console.log(target.foo3); // undefined, el método assign ha finalizado, no se copiará foo3.
+console.log(target.baz);  // undefined, tampoco se copiará el tercer objecto fuente.
+
+ +

Copiando métodos de acceso

+ +
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 that copies full descriptors
+function completeAssign(target, ...sources) {
+  sources.forEach(source => {
+    let descriptors = Object.keys(source).reduce((descriptors, key) => {
+      descriptors[key] = Object.getOwnPropertyDescriptor(source, key);
+      return descriptors;
+    }, {});
+    // by default, Object.assign copies enumerable Symbols too
+    Object.getOwnPropertySymbols(source).forEach(sym => {
+      let descriptor = Object.getOwnPropertyDescriptor(source, sym);
+      if (descriptor.enumerable) {
+        descriptors[sym] = descriptor;
+      }
+    });
+    Object.defineProperties(target, descriptors);
+  });
+  return target;
+}
+
+var copy = completeAssign({}, obj);
+console.log(copy);
+// { foo:1, get bar() { return 2 } }
+
+ +

Polyfill

+ +

Este {{Glossary("Polyfill","polyfill")}} no soporta propiedades símbolo, ya que ES5 no tiene símbolos.

+ +
if (typeof Object.assign != 'function') {
+  // Must be writable: true, enumerable: false, configurable: true
+  Object.defineProperty(Object, "assign", {
+    value: function assign(target, varArgs) { // .length of function is 2
+      'use strict';
+      if (target == null) { // TypeError if undefined or null
+        throw new TypeError('Cannot convert undefined or null to object');
+      }
+
+      var to = Object(target);
+
+      for (var index = 1; index < arguments.length; index++) {
+        var nextSource = arguments[index];
+
+        if (nextSource != null) { // Skip over if undefined or null
+          for (var nextKey in nextSource) {
+            // Avoid bugs when hasOwnProperty is shadowed
+            if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
+              to[nextKey] = nextSource[nextKey];
+            }
+          }
+        }
+      }
+      return to;
+    },
+    writable: true,
+    configurable: true
+  });
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-object.assign', 'Object.assign')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-object.assign', 'Object.assign')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad con navegadores

+ +
+

{{Compat("javascript.builtins.Object.assign")}}

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/constructor/index.html b/files/es/web/javascript/reference/global_objects/object/constructor/index.html new file mode 100644 index 0000000000..3871c41fe3 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/constructor/index.html @@ -0,0 +1,161 @@ +--- +title: Object.prototype.constructor +slug: Web/JavaScript/Referencia/Objetos_globales/Object/constructor +tags: + - JavaScript + - Object + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Object/constructor +--- +
{{JSRef("Objetos_globales", "Object")}}
+ +

Resumen

+ +

Retorna una referencia a la función del {{jsxref("Object")}} que creó el objeto de la instancia. Note que el valor de esta propiedad es una referencia a la función misma, no a un string conteniendo el nombre de la función. El valor es sólo de lectura para valores primitivos tales como 1, true y 'test'.

+ +

Descripción

+ +

Todos los objetos tienen una propiedad constructor. Los objetos creados sin explicitar el uso de una función (como son los objetos y las cadenas literales) tendrán una propiedad de constructor que apunta al tipo de constructor del Objeto Fundamento para ese objeto.

+ +
var o = {};
+o.constructor === Object; // true
+
+var a = [];
+a.constructor === Array; // true
+
+var n = new Number(3);
+n.constructor === Number; // true
+ +

Ejemplos

+ +

Ejemplo: Mostrando el constructor de un objeto.

+ +

El siguiente ejemplo crea un prototipo, Tree, y un objeto de este tipo, theTree. El ejemplo muestra entonces la propiedad constructor para el objeto theTree.

+ +
function Tree (name) {
+   this.name = name;
+}
+
+var theTree = new Tree( "Redwood" );
+console.log( "theTree.constructor is " + theTree.constructor );
+ +

Este ejemplo muestra la siguiente salida:

+ +
theTree.constructor is function Tree (name) {
+    this.name = name;
+}
+ +

Ejemplo: Cambiando el constructor de un objeto.

+ +

El siguiente ejemplo demuestra como modificar el valor del constructor de objetos genéricos. Solo true, 1 y "test" no serán afectados ya que ellos tienen constructores nativos de solo lectura. Este ejemplo demuestra que no siempre es seguro confiar en la propiedad constructor de un objeto.

+ +
function Type () {}
+
+var types = [
+    new Array(),
+    [],
+    new Boolean(),
+    true,             // no cambia
+    new Date(),
+    new Error(),
+    new Function(),
+    function () {},
+    Math,
+    new Number(),
+    1,                // no cambia
+    new Object(),
+    {},
+    new RegExp(),
+    /(?:)/,
+    new String(),
+    "test"            // no cambia
+];
+
+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" ) );
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificacionesEstatusComentario
ECMAScript 1ra. Edición. Implementado en JavaScript 1.1Estandar.Definición inicial.
{{SpecName('ES5.1', '#sec-15.2.4.1', 'Objectprototype.constructor')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-object.prototype.constructor', 'Object.prototype.constructor')}}{{Spec2('ES6')}} 
+ +

Compatibilidad con Navegadores

+ +

{{ CompatibilityTable() }}

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

 

diff --git a/files/es/web/javascript/reference/global_objects/object/create/index.html b/files/es/web/javascript/reference/global_objects/object/create/index.html new file mode 100644 index 0000000000..94608d1c58 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/create/index.html @@ -0,0 +1,377 @@ +--- +title: Object.create() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/create +tags: + - ECMAScript5 + - JavaScript + - 'Null' + - Objeto + - Referencia + - metodo + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Object/create +--- +
{{JSRef}}
+ +

El método Object.create() crea un objeto nuevo, utilizando un objeto existente como el prototipo del nuevo objeto creado.

+ +
{{EmbedInteractiveExample("pages/js/object-create.html")}}
+ +
+ +
La fuente de este ejemplo interactivo se almacena en un repositorio de GitHub. Si desea contribuir al proyecto de ejemplos interactivos, clone https://github.com/mdn/interactive-examples y envíenos una solicitud de extracción (pull request).
+ +

Sintaxis

+ +
Object.create(proto[, propertiesObject])
+ +

Parámetros

+ +
+
proto
+
Objeto el cual debe ser el prototipo del nuevo objeto creado.
+
propertiesObject
+
Opcional. Si se especifica y no es {{jsxref("undefined")}}, un objeto cuyas propiedades enumerables propias (es decir, aquellas propiedades definidas sobre si mismo y no son propiedades enumerable a lo largo de su cadena de prototipos) espefica descriptores de propiedad para ser agregadas al objeto recien creado, con los nombres de propiedad correspondiente. Estas propiedades corresponden al segundo argumento de {{jsxref("Object.defineProperties")}}.
+
+ +

Valor devuelto

+ +

Un nuevo objeto con el prototipo y propiedades del objeto especificado.

+ +

Excepciones

+ +

Una excepción {{jsxref("TypeError")}} si el parámetro propertiesObject es {{jsxref("null")}} o un objeto envolvente no primitivo.

+ +

Ejemplos

+ +

Herencia clásica con Object.create()

+ +

Debajo se encuentra un ejemplo de cómo usar Object.create() para lograr herencia clásica. Este es para herencia simple, la cual es todo lo que soporta JavaScript.

+ +
// Shape - superclase
+function Shape() {
+  this.x = 0;
+  this.y = 0;
+}
+
+// método de la superclase
+Shape.prototype.move = function(x, y) {
+    this.x += x;
+    this.y += y;
+    console.info("Shape moved.");
+};
+
+// Rectangle - subclase
+function Rectangle() {
+  Shape.call(this); // llama al contructor de la superclase.
+}
+
+// subclase extiende superclase
+Rectangle.prototype = Object.create(Shape.prototype);
+Rectangle.prototype.constructor = Rectangle;
+
+var rect = new Rectangle();
+
+console.log('¿Es rect una instancia de Rectangle?',
+  rect instanceof Rectangle); // true
+console.log('¿Es rect una instancia de Shape?',
+  rect instanceof Shape); // true
+rect.move(1, 1); // Imprime, 'Shape moved.'
+
+ +

Si desea heredar desde múltiples objetos, entonces los mixins son una posibilidad.

+ +
function MyClass() {
+  SuperClass.call(this);
+  OtherSuperClass.call(this);
+}
+
+// inherit one class
+MyClass.prototype = Object.create(SuperClass.prototype);
+// mixin another
+Object.assign(MyClass.prototype, OtherSuperClass.prototype);
+// re-assign constructor
+MyClass.prototype.constructor = MyClass;
+
+MyClass.prototype.myMethod = function() {
+  // do something
+};
+
+ +

{{jsxref("Object.assign()")}} copia las propiedades del prototipo OtherSuperClass al prototipo de MyClass, haciéndolas disponibles en todas las instancias de MyClass. Object.assign() se introdujo con ES2015 y tiene polyfill. Si el soporte para navegadores antiguos es necesario, se puede utilizar jQuery.extend()_.assign().

+ +

Usando el argumento propertiesObject con Object.create()

+ +
var o;
+
+// crea un objeto con un prototipo como null
+o = Object.create(null);
+
+
+o = {};
+// esto equivale a:
+o = Object.create(Object.prototype);
+
+
+// Ejemplo en donde creamos un objeto con un par de propiedades de ejemplo.
+// (Note que el segundo parámetro mapea claves para los *descriptores de propiedad*.)
+o = Object.create(Object.prototype, {
+  // foo es un habitual "propiedad de valor"
+  foo: { writable:true, configurable:true, value: "hello" },
+  // bar es una propiedad getter-and-setter (de acceso)
+  bar: {
+    configurable: false,
+    get: function() { return 10 },
+    set: function(value) { console.log("Setting `o.bar` to", value) }
+}});
+
+
+function Constructor(){}
+o = new Constructor();
+// es equivalente a:
+o = Object.create(Constructor.prototype);
+// Por supuesto, si hay un código de inicialización en la
+// función Constructor, el Object.create no puede reflejar esta.
+
+
+// crear un nuevo objeto cuyo prototipo es un nuevo, objeto vacío
+// y agregar una única propiedad 'p', con el valor 42
+o = Object.create({}, { p: { value: 42 } })
+
+// por defecto las propiedades NO SON editables, enumerables o configurables:
+o.p = 24
+o.p
+// 42
+
+o.q = 12
+for (var prop in o) {
+   console.log(prop)
+}
+// "q"
+
+delete o.p
+// false
+
+// para especificar una propiedad en ES3
+
+o2 = Object.create({}, { p: {
+      value: 42,
+      writable: true,
+      enumerable: true,
+      configurable: true }
+});
+
+ +

Objetos personalizados y nulos

+ +

Un objeto nuevo creado de un objeto completamente personalizado (especialmente uno creado de un objeto nulo, que es básicamente un objeto personalizado sin miembros) puede comportarse de manera inesperada. Esto es especialmente cierto cuando se depura, ya que las funciones comunes  de conversión/detección de propiedad de objeto pueden generar errores, o simplemente perder información (especialmente si se atrapan excepciones de manera silenciosa que ignoran los errores). Por ejemplo, aquí hay dos objetos:

+ +
oco = Object.create( {} );   // Crea un objeto normal
+ocn = Object.create( null ); // Crea un objeto "null"
+
+> console.log(oco) // {} -- Parece normal
+> console.log(ocn) // {} -- Parece normal aquí también, hasta este momento
+
+oco.p = 1; // Crea una propiedad simple en un objeto normal
+ocn.p = 0; // Crea una propiedad simple en un objeto "null"
+
+> console.log(oco) // {p: 1} -- Todavía parece normal
+> console.log(ocn) // {p: 0} --Todavía parece normal aquí también. PERO ESPERA...
+
+ +

Como se muestra arriba, todo parece normal hasta ahora. Sin embargo, al intentar usar estos objetos, sus diferencias se hacen evidentes rápidamente:

+ +
> "oco is: " + oco // Muestra "ocn is: [object Object]"
+
+> "ocn is: " + ocn // Arroja error: Cannot convert object to primitive value
+
+ +

Probar solo algunas de las funciones incorporadas más básicas muestra la magnitud del problema más claramente:

+ +
> alert(oco) // Muestra: [object Object]
+> alert(ocn) // Arroja error: Cannot convert object to primitive value
+
+> oco.toString() // Muestra [object Object]
+> ocn.toString() // Arroja error: ocn.toString is not a function
+
+> oco.valueOf() // Muestra{}
+> ocn.valueOf() // Arroja error: ocn.valueOf is not a function
+
+> oco.hasOwnProperty("p") // Muestra "true"
+> ocn.hasOwnProperty("p") // Arroja error: ocn.hasOwnProperty is not a function
+
+> oco.constructor // Muestra "Object() { [native code] }"
+> ocn.constructor // Muestra "undefined"
+
+ +

Como se dijo, estas diferencias pueden hacer que la depuración e incluso problemas aparentemente simples se pierdan rápidamente. Por ejemplo:

+ +

Una función simple de depuración:

+ +
// mostrar nombre de propiedad de nivel superior: pares de valores de un objeto dado
+function ShowProperties( b ){
+  for( var i in b ){  console.log( i + ": " + b[i] + "\n" )  }
+}
+ +

Resultados no tan simples: (especialmente si la captura silenciosa de errores había ocultado los mensajes de error)

+ +
ob={}; ob.po=oco; ob.pn=ocn; // crear un objeto compuesto usando los objetos de prueba de arriba como valores de propiedad
+
+> ShowProperties( ob ) // Muestra propiedades de nivel superior
+- po: [object Object]
+- Error: Cannot convert object to primitive value
+
+Tenga en cuenta que solo se muestra la primera propiedad.
+
+ +

(Pero si se crea el mismo objeto simplemente en un orden diferente, al menos en algunas implementaciones ...)

+ +
ob={}; ob.pn=ocn; ob.po=oco; // cree el mismo objeto compuesto nuevamente, pero cree las mismas propiedades en un orden diferente
+
+> ShowProperties( ob ) // Muestra propiedades de nivel superior
+- Error: Cannot convert object to primitive value
+
+Tenga en cuenta que ninguna propiedad se muestra.
+ +

Tenga en cuenta que un orden tan diferente puede surgir estáticamente a través de codificaciones fijas dispares, como aquí, pero también dinámicamente a través del orden en que se ejecutan dichas ramas de código de adición de propiedades en tiempo de ejecución, ya que depende de entradas y / o variables aleatorias. Por otra parte, el orden de iteración real no está garantizado, independientemente de cómo son agregados los miembros.

+ +

Algunas NO-soluciones

+ +

A good solution for the missing object-methods is not immediately apparent.

+ +

Adding the missing object-method directly from the standard-object does NOT work:

+ +
ocn = Object.create( null ); // create "null" object (same as before)
+
+ocn.toString = Object.toString; // since new object lacks method then try assigning it directly from standard-object
+
+> ocn.toString // shows "toString() { [native code] }" -- missing method seems to be there now
+> ocn.toString == Object.toString // shows "true" -- method seems to be same as the standard object-method
+
+> ocn.toString() // error: Function.prototype.toString requires that 'this' be a Function
+
+ +


+ Adding the missing object-method directly to new object's "prototype" does not work either, since new object does not have a real prototype (which is really the cause of ALL these problems) and one cannot be directly added:

+ +
ocn = Object.create( null ); // create "null" object (same as before)
+
+ocn.prototype.toString = Object.toString; // Error: Cannot set property 'toString' of undefined
+
+ocn.prototype = {};                       // try to create a prototype
+ocn.prototype.toString = Object.toString; // since new object lacks method then try assigning it from standard-object  
+
+> ocn.toString() // error: ocn.toString is not a function
+
+ +


+ Adding the missing object-method by using the standard-object as new object's prototype does not work either:

+ +
ocn = Object.create( null );        // create "null" object (same as before)
+Object.setPrototypeOf(ocn, Object); // set new object's prototype to the standard-object
+
+> ocn.toString() // error: Function.prototype.toString requires that 'this' be a Function
+
+ +

Algunas soluciones aceptables

+ +

Again, adding the missing object-method directly from the standard-object does NOT work. However, adding the generic method directly, DOES:

+ +
ocn = Object.create( null ); // create "null" object (same as before)
+
+ocn.toString = toString; // since new object lacks method then assign it directly from generic version
+
+> ocn.toString() // shows "[object Object]"
+> "ocn is: " + ocn // shows "ocn is: [object Object]"
+
+
+ob={}; ob.pn=ocn; ob.po=oco; // create a compound object (same as before)
+
+> ShowProperties(ob) // display top-level properties
+- po: [object Object]
+- pn: [object Object]
+
+ +

However, setting the generic prototype as the new object's prototype works even better:

+ +
ocn = Object.create( null );                  // create "null" object (same as before)
+Object.setPrototypeOf(ocn, Object.prototype); // set new object's prototype to the "generic" object (NOT standard-object)
+
+ +

(In addition to all the string-related functions shown above, this also adds:)

+ +
> ocn.valueOf() // shows {}
+> ocn.hasOwnProperty("x") // shows "false"
+> ocn.constructor // shows "Object() { [native code] }"
+
+// ...and all the rest of the properties and methods of Object.prototype.
+
+ +

As shown, objects modified this way now look very much like ordinary objects.

+ +

Polyfill

+ +

Este polyfill cubre el caso de uso principal  el cual es la creación de un nuevo objeto para el prototipo que ha sido escogido pero no toma el segundo argumento en cuenta.

+ +

Note that while the setting of null as [[Prototype]] is supported in the real ES5 Object.create, this polyfill cannot support it due to a limitation inherent in versions of ECMAScript lower than 5.

+ +
 if (typeof Object.create !== "function") {
+    Object.create = function (proto, propertiesObject) {
+        if (typeof proto !== 'object' && typeof proto !== 'function') {
+            throw new TypeError('Object prototype may only be an Object: ' + proto);
+        } else if (proto === null) {
+            throw new Error("This browser's implementation of Object.create is a shim and doesn't support 'null' as the first argument.");
+        }
+
+        if (typeof propertiesObject != 'undefined') {
+            throw new Error("This browser's implementation of Object.create is a shim and doesn't support a second argument.");
+        }
+
+        function F() {}
+        F.prototype = proto;
+
+        return new F();
+    };
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.2.3.5', 'Object.create')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.8.5
{{SpecName('ES6', '#sec-object.create', 'Object.create')}}{{Spec2('ES2015')}}
{{SpecName('ESDraft', '#sec-object.create', 'Object.create')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad con navegadores

+ +
{{Compat("javascript.builtins.Object.create")}}
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/defineproperties/index.html b/files/es/web/javascript/reference/global_objects/object/defineproperties/index.html new file mode 100644 index 0000000000..3002dd200d --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/defineproperties/index.html @@ -0,0 +1,194 @@ +--- +title: Object.defineProperties() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/defineProperties +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Método(2) + - Objeto +translation_of: Web/JavaScript/Reference/Global_Objects/Object/defineProperties +--- +
{{JSRef("Objetos_globales", "Object")}}
+ +

Sumario

+ +

El metodo Object.defineProperties() define nuevas o modifica propiedades existentes directamente en el objeto, retornando el objeto.

+ +

Sintáxis

+ +
Object.defineProperties(obj, propiedades)
+ +

Parámetros

+ +
+
obj
+
El objeto sobre el cual se crearán o modificaran sus propiedades.
+
propiedades
+
Un objeto cuyas propiedades enumerables propias consituyen descriptores para las propiedades a ser definidas o modificadas.
+
+ +

Descripción

+ +

Object.defineProperties, en escencia, define todas las propiedades correspondientes a las propiedades propias con capacidad de enumeración de props en el objeto objrops.

+ +

Ejemplo

+ +
Object.defineProperties(obj, {
+  "property1": {
+    value: true,
+    writable: true
+  },
+  "property2": {
+    value: "Hello",
+    writable: false
+  }
+  // etc. etc.
+});
+ +

Polyfill

+ +

Asumiendo una ejecución pristina del entorno con todos los nombres y propiedades referidas a sus valores iniciales, Object.defineProperties es casi completamente equivalente (note el comentario en isCallable) a la siguiente reimplementación de 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 = !!obj.enumerable;
+    if (hasProperty(desc, "configurable"))
+      d.configurable = !!obj.configurable;
+    if (hasProperty(desc, "value"))
+      d.value = obj.value;
+    if (hasProperty(desc, "writable"))
+      d.writable = !!desc.writable;
+    if ( hasProperty(desc, "get") ) {
+      var g = desc.get;
+
+      if (!isCallable(g) && g !== "undefined")
+        throw new TypeError("bad get");
+      d.get = g;
+    }
+    if ( hasProperty(desc, "set") ) {
+      var s = desc.set;
+      if (!isCallable(s) && s !== "undefined")
+        throw new TypeError("bad set");
+      d.set = s;
+    }
+
+    if (("get" in d || "set" in d) && ("value" in d || "writable" in d))
+      throw new TypeError("identity-confused descriptor");
+
+    return d;
+  }
+
+  if (typeof obj !== "object" || obj === null)
+    throw new TypeError("bad obj");
+
+  properties = Object(properties);
+
+  var keys = Object.keys(properties);
+  var descs = [];
+
+  for (var i = 0; i < keys.length; i++)
+    descs.push([keys[i], convertToDescriptor(properties[keys[i]])]);
+
+  for (var i = 0; i < descs.length; i++)
+    Object.defineProperty(obj, descs[i][0], descs[i][1]);
+
+  return obj;
+}
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.2.3.7', 'Object.defineProperties')}}{{Spec2('ES5.1')}}Definición inicial. Implementada en JavaScript 1.8.5
{{SpecName('ES6', '#sec-object.defineproperties', 'Object.defineProperties')}}{{Spec2('ES6')}} 
+ +

Compatibilidad de navegadores

+ +

Basado en Kangax's compat tables.

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracteristicaFirefox (Gecko)ChromeInternet ExplorerOperaSafari
Soporte básico{{CompatGeckoDesktop("2")}}5 (previous versions untested)911.605
+
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracteristicaFirefox Mobile (Gecko)AndroidIE MobileOpera MobileSafari Mobile
Soporte básico{{CompatGeckoMobile("2")}}{{CompatVersionUnknown}}{{CompatUnknown}}11.50{{CompatVersionUnknown}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/defineproperty/index.html b/files/es/web/javascript/reference/global_objects/object/defineproperty/index.html new file mode 100644 index 0000000000..f971d5a131 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/defineproperty/index.html @@ -0,0 +1,419 @@ +--- +title: Object.defineProperty() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/defineProperty +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Método(2) + - Objeto +translation_of: Web/JavaScript/Reference/Global_Objects/Object/defineProperty +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Resumen

+ +

El  método estático Object.defineProperty() define una nueva propiedad sobre un objeto, o modifica una ya existente, y devuelve el objeto modificado.

+ +
+

Nota: Ud. puede llamar a este método directamente mediante el constructor {{jsxref("Object")}} en vez de crear una instancia del tipo Object.

+
+ +

Sintaxis

+ +
Object.defineProperty(obj, prop, descriptor)
+ +

Parámetros

+ +
+
obj
+
El objeto sobre el cual se define la propiedad.
+
prop
+
El nombre de la propiedad a ser definida o modificada.
+
descriptor
+
El descriptor de la propiedad que está siendo definida o modificada.
+
+ +

Descripción

+ +

Este método permite añadir o modificar una propiedad en un objeto.

+ +

La adición normal de una propiedad a través de la asignación crea propiedades que aparecen durante la enumeración de propiedades en el bucle ({{jsxref("Sentencias/for...in", "for...in")}} o el método {{jsxref("Object.keys")}}), cuyos valores pueden modificarse y pudiendo incluso eliminar la propiedad del objeto mediante el método {{jsxref("Operadores/delete", "delete")}}.

+ +

Este método nos permite modificar el comportamiento por defecto de las propiedades. Es decir, nos permite definir una propiedad como no enumerable, no modificable o incluso evitar que pueda ser eliminada del objeto.

+ +

Existen dos tipos de descriptores: De datos y de acceso.  Un descriptor de datos define una propiedad que tiene un valor, el cual puede ser o no modificado. Un descriptor de acceso define una propiedad mediante un par de funciones getter-setter que describe como se obtiene o se modifica el contenido de dicha propiedad. Un descriptor debe de ser de uno de estos dos tipos; no puede ser ambos.

+ +

Ambos tipos de descriptores son objetos y comparten las siguientes claves opcionales:

+ +
+
configurable
+
true si y solo si el tipo de descriptor de propiedad puede modificarse y si la propiedad puede ser eliminada del correspondiente objeto.
+ Por defecto es false.
+
enumerable
+
true si y solo si dicha propiedad se muestra durante la enumeración de las propiedades del objeto correspondiente.
+ Por defecto es false.
+
+ +

Un descriptor de datos tiene además las siguientes claves opcionales:

+ +
+
value
+
El valor asociado a la propiedad. Puede ser cualquier tipo valido de JavaScript  (number, object, function, etc).
+ Por defecto es {{jsxref("Objetos_Globales/undefined", "undefined")}}.
+
writable
+
true Indica si el valor de la propiedad puede modificarse con el  {{jsxref("Operators/Assignment_Operators", "operador de asignación", "", 1)}}.
+ Defaults to false.
+
+ +

Un descriptor de acceso además tiene las siguientes claves opcionales:

+ +
+
get
+
Una función cuyo valor retornado será el que se use como valor de la propiedad.
+ Defaults to {{jsxref("Objetos_Globales/undefined", "undefined")}}.
+
set
+
Una función que recibe como único argumento el nuevo valor que se desea asignar a la propiedad y que devuelve el valor que se almacenará finalmente en el objeto.
+ Defaults to {{jsxref("Objetos_Globales/undefined", "undefined")}}.
+
+ +

Hay que tener en cuenta que estas opciones también pueden heredarse; es decir, las opciones de la propiedad se han podido establecer en el prototipo de una clase de la que hereda el objeto. De modo que si queremos asegurarnos unos valores por defecto tenemos tres opciones: fijar el {{jsxref("Object.prototype")}} con {{jsxref("Object.freeze")}}, definir todas las opciones explicitamente, o establecer a {{jsxref("Objetos_Globales/null", "null")}} la propiedad {{jsxref("Object.prototype.__proto__", "__proto__")}}.

+ +
// Usando __proto__
+Object.defineProperty(obj, 'key', {
+  __proto__: null, // no aceptar propiedades heredadas
+  value: 'static'  // no enumerable
+                   // no configurable
+                   // no modificable
+                   // como opciones por defecto
+});
+
+// Definiendo todo explicitamente
+Object.defineProperty(obj, 'key', {
+  enumerable: false,
+  configurable: false,
+  writable: false,
+  value: 'static'
+});
+
+// Reciclando el mismo objeto
+function withValue(value) {
+  var d = withValue.d || (
+    withValue.d = {
+      enumerable: false,
+      writable: false,
+      configurable: false,
+      value: null
+    }
+  );
+  d.value = value;
+  return d;
+}
+// ... y ...
+Object.defineProperty(obj, 'key', withValue('static'));
+
+// Si está disponible freeze, previene añadir o eliminar
+//del prototipo del objeto las propiedades
+// (value, get, set, enumerable, writable, configurable)
+(Object.freeze || Object)(Object.prototype);
+
+ +

Ejemplos

+ +

Si quiere ver algunos ejemplos de utilización del método Object.defineProperty con una sintaxis tipo binary-flags, vea ejemplos adicionales.

+ +

Ejemplo: Creando una propiedad

+ +

Cuando la propiedad especificada no existe en el objeto, Object.defineProperty() crea una nueva. En el descriptor pueden omitirse campos, a los cuales se les asignará el valor por defecto. A todos los que sean de tipo Booleano se les asignará el valor falso. Los campos value, get y set se establecerán por defecto a {{jsxref("Objetos_Globales/undefined", "undefined")}}. Una propiedad definida sin indicar  get/set/value/writable es denominada “genérica” y  “tipificada” como un descriptor de datos.

+ +
var o = {}; // Creates a new object
+
+// Example of an object property added with defineProperty with a data property descriptor
+Object.defineProperty(o, 'a', {
+  value: 37,
+  writable: true,
+  enumerable: true,
+  configurable: true
+});
+// 'a' property exists in the o object and its value is 37
+
+// Example of an object property added with defineProperty with an accessor property descriptor
+var bValue = 38;
+Object.defineProperty(o, 'b', {
+  get: function() { return bValue; },
+  set: function(newValue) { bValue = newValue; },
+  enumerable: true,
+  configurable: true
+});
+o.b; // 38
+// 'b' property exists in the o object and its value is 38
+// The value of o.b is now always identical to bValue, unless o.b is redefined
+
+// You cannot try to mix both:
+Object.defineProperty(o, 'conflict', {
+  value: 0x9f91102,
+  get: function() { return 0xdeadbeef; }
+});
+// throws a TypeError: value appears only in data descriptors, get appears only in accessor descriptors
+
+ +

Ejemplo: Modificando una propiedad

+ +

Cuando la propiedad realmente existe, Object.defineProperty() intenta modificar la propiedad de acuerdo a los valores en la descripción y la configuración actual del objeto. Si la descripción antigüa tenía su atributo de configuración establecido en false (la propiedad se dice "sin capacidad de configuración"), entonces ningún atributo además de los que tienen capacidad de escritura pueden ser cambiados. En ese caso, no es posible cambiar hacía atras o hacía delante entre datos y métodos de acceso de tipos de propiedades.

+ +

Si una propiedad no tiene capacidad de configuración, su atributo writabble solo puede ser cambiada to false.

+ +

Un {{jsxref("Global_Objects/TypeError", "TypeError")}} es arrojado cuando se intenta cambiar las propiedades de atributos sin capacidad de configuración (adeḿas del atributo writable) a menos que el valor actual y el valor nuevo sean los mismos.

+ +

Atributo writable

+ +

Cuando la propiedad de un atributo writable es establecido to false, la propiedad se dice esta "sin capacidad de escritura". No puede ser reasignada.

+ +
var o = {}; // Crea un objeto nuevo
+
+Object.defineProperty(o, 'a', {
+  value: 37,
+  writable: false
+});
+
+console.log(o.a); // logs 37
+o.a = 25; // Ningún error arrojado (lo tiraría en modo estricto, aún si el valor fuera el mismo)
+console.log(o.a); // muestra 37. La asignación no funcionó
+
+ +

Como es visto en el ejemplo anterior, intentar escribir en una propiedad "sin capacidad de  escritura" no la cambia pero sí arroja un error.

+ +

Atributo enumerable

+ +

El atributo de la propiedad enumerable se define si la propiedad aparece en un ciclo {{jsxref("Statements/for...in", "for...in")}} y {{jsxref("Object.keys()")}} o no.

+ +
var o = {};
+Object.defineProperty(o, 'a', { value: 1, enumerable: true });
+Object.defineProperty(o, 'b', { value: 2, enumerable: false });
+Object.defineProperty(o, 'c', { value: 3 }); // enumerable defaults to false
+o.d = 4; // enumerable defaults to true when creating a property by setting it
+
+for (var i in o) {
+  console.log(i);
+}
+// logs 'a' and 'd' (in undefined order)
+
+Object.keys(o); // ['a', 'd']
+
+o.propertyIsEnumerable('a'); // true
+o.propertyIsEnumerable('b'); // false
+o.propertyIsEnumerable('c'); // false
+
+ +

Atributo configurable

+ +

El atributo configurable define si la propiedad puede ser eliminada del objeto, y si sus atributos (excepto writable) pueden ser modificados

+ +
var o = {};
+Object.defineProperty(o, 'a', {
+  get: function() { return 1; },
+  configurable: false
+});
+
+Object.defineProperty(o, 'a', { configurable: true }); // arroja TypeError
+Object.defineProperty(o, 'a', { enumerable: true }); //  arroja  TypeError
+Object.defineProperty(o, 'a', { set: function() {} }); //  arroja  TypeError (set estaba definido como undefined)
+Object.defineProperty(o, 'a', { get: function() { return 1; } }); // arroja TypeError (incluso aunque los get hacen lo mismo)
+Object.defineProperty(o, 'a', { value: 12 }); // arroja TypeError
+
+console.log(o.a); // logs 1
+delete o.a; // No hace nada
+console.log(o.a); // logs 1
+
+ +

Si o.a tuviese configurable  a true, no se habrían arrojado errores y la propiedad habría sido eliminada. 

+ +

Ejemplo: Añadiendo propiedades y valores por defecto

+ +

Es importante tener en cuenta la forma en la se aplican los valores por defecto de los atributos. Suele haber diferencias entre simplemente usar la notación con '.' y usar Object.defineProperty(), como se muestra en el siguiente ejemplo:

+ +
var o = {};
+
+o.a = 1;
+// es equivalente a :
+Object.defineProperty(o, 'a', {
+  value: 1,
+  writable: true,
+  configurable: true,
+  enumerable: true
+});
+
+
+// Sin embargo,
+Object.defineProperty(o, 'a', { value: 1 });
+// es equivalente a :
+Object.defineProperty(o, 'a', {
+  value: 1,
+  writable: false,
+  configurable: false,
+  enumerable: false
+});
+
+ +

Ejemplo: Setters y Getters a medida

+ +

Example below shows how to implement a self-archiving object. When temperature property is set, the archive array gets a log entry.

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

or

+ +
var pattern = {
+    get: function () {
+        return 'I always return this string, whatever you have assigned';
+    },
+    set: function () {
+        this.myname = 'this is my name string';
+    }
+};
+
+
+function TestDefineSetAndGet() {
+    Object.defineProperty(this, 'myproperty', pattern);
+}
+
+
+var instance = new TestDefineSetAndGet();
+instance.myproperty = 'test';
+console.log(instance.myproperty); // I always return this string, whatever you have assigned
+
+console.log(instance.myname); // this is my name string
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES5.1', '#sec-15.2.3.6', 'Object.defineProperty')}}{{Spec2('ES5.1')}}Initial definition. Implemented in JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.defineproperty', 'Object.defineProperty')}}{{Spec2('ES6')}} 
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaFirefox (Gecko)ChromeInternet ExplorerOperaSafari
Soporte Básico{{CompatGeckoDesktop("2")}}{{CompatChrome("5")}} (versiones previas sin testear){{CompatIE("9")}} ({{CompatIE("8")}}, pero solo con objetos DOM y con muchos comportamientos no estándares  See below.){{CompatOpera("11.60")}}{{CompatSafari("5.1")}} ({{CompatSafari("5")}}, but not on DOM objects)
+
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaFirefox Mobile (Gecko)AndroidIE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatGeckoMobile("2")}}{{CompatVersionUnknown}}{{CompatIE("9")}} and above{{CompatOperaMobile("11.50")}}{{CompatVersionUnknown}}
+
+ +

Based on Kangax's compat tables.

+ +

Redefining the length property of an Array object

+ +

It is possible to redefine the {{jsxref("Array.length", "length")}} property of arrays, subject to the usual redefinition restrictions. (The {{jsxref("Array.length", "length")}} property is initially non-configurable, non-enumerable, and writable. Thus on an unaltered array it is possible to change the {{jsxref("Array.length", "length")}} property's value, or to make it non-writable. It is not allowed to change its enumerability or configurability, or if it is non-writable to change its value or writability.) However, not all browsers permit this redefinition.

+ +

Firefox 4 through 22 will throw a {{jsxref("Global_Objects/TypeError", "TypeError")}} on any attempt whatsoever (whether permitted or not) to redefine the {{jsxref("Array.length", "length")}} property of an array.

+ +

Versions of Chrome which implement Object.defineProperty() in some circumstances ignore a length value different from the array's current {{jsxref("Array.length", "length")}} property. In some circumstances changing writability seems to silently not work (and not throw an exception). Also, relatedly, some array-mutating methods like {{jsxref("Array.prototype.push")}} don't respect a non-writable length.

+ +

Versions of Safari which implement Object.defineProperty() ignore a length value different from the array's current {{jsxref("Array.length", "length")}} property, and attempts to change writability execute without error but do not actually change the property's writability.

+ +

Only Internet Explorer 9 and later, and Firefox 23 and later, appear to fully and correctly implement redefinition of the {{jsxref("Array.length", "length")}} property of arrays. For now, don't rely on redefining the {{jsxref("Array.length", "length")}} property of an array to either work, or to work in a particular manner. And even when you can rely on it, there's really no good reason to do so.

+ +

Particularidades de Internet Explorer 8

+ +

El método Object.defineProperty() de Internet Explorer sólo puede ser usado en objetos del DOM. Algunas explicaciones al respecto:

+ + + +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/entries/index.html b/files/es/web/javascript/reference/global_objects/object/entries/index.html new file mode 100644 index 0000000000..98aff1178a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/entries/index.html @@ -0,0 +1,161 @@ +--- +title: Object.entries() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/entries +translation_of: Web/JavaScript/Reference/Global_Objects/Object/entries +--- +
{{JSRef}}
+ +

El método Object.entries() devuelve una matriz de pares propios de una propiedad enumerable [key, value] de un objeto dado, en el mismo orden que es proporcionado por {{jsxref("Sentencias/for...in", "for...in")}} (La diferencia es que un bucle for-in enumera las propiedades en la cadena de prototipos).

+ +

Sintaxis

+ +
Object.entries(obj)
+ +

Parámetros

+ +
+
obj
+
The object whose enumerable own property [key, value] pairs are to be returned.
+
+ +

Valor de retorno

+ +

An array of the given object's own enumerable property [key, value] pairs.

+ +

Descripción

+ +

Object.entries() returns an array whose elements are arrays corresponding to the enumerable property [key, value] pairs found directly upon object. The ordering of the properties is the same as that given by looping over the property values of the object manually.

+ +

Ejemplos

+ +
var obj = { foo: 'bar', baz: 42 };
+console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]
+
+// array like object
+var obj = { 0: 'a', 1: 'b', 2: 'c' };
+console.log(Object.entries(obj)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]
+
+// array like object with random key ordering
+var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
+console.log(Object.entries(an_obj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]
+
+// getFoo is property which isn't enumerable
+var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
+my_obj.foo = 'bar';
+console.log(Object.entries(my_obj)); // [ ['foo', 'bar'] ]
+
+// non-object argument will be coerced to an object
+console.log(Object.entries('foo')); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]
+
+// iterate through key-value gracefully
+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"
+}
+
+// Or, using array extras
+Object.entries(obj).forEach(([key, value]) => {
+    console.log(key + ' ' + value); // "a 5", "b 7", "c 9"
+});
+
+ +

Converting an Object to a Map

+ +

The {{jsxref("Map", "new Map()")}} constructor accepts an iterable of entries. With Object.entries, you can easily convert from {{jsxref("Object")}} to {{jsxref("Map")}}:

+ +
var obj = { foo: 'bar', baz: 42 };
+var map = new Map(Object.entries(obj));
+console.log(map); // Map { foo: "bar", baz: 42 }
+ +

Polyfill

+ +

To add compatible Object.entries support in older environments that do not natively support it, you can find a Polyfill in the tc39/proposal-object-values-entries or in the es-shims/Object.entries repositories.

+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-object.entries', 'Object.entries')}}{{Spec2('ESDraft')}}Initial definition.
{{SpecName('ES8', '#sec-object.entries', 'Object.entries')}}{{Spec2('ES8')}}
+ +

Browser compatibility

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(54)}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(47)}}{{CompatNo}}{{CompatNo}}{{CompatSafari(10.1)}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroid WebviewChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatChrome(54)}}{{CompatChrome(54)}}{{CompatVersionUnknown}}{{CompatGeckoMobile(47)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/freeze/index.html b/files/es/web/javascript/reference/global_objects/object/freeze/index.html new file mode 100644 index 0000000000..890d0d07b4 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/freeze/index.html @@ -0,0 +1,174 @@ +--- +title: Object.freeze() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/freeze +translation_of: Web/JavaScript/Reference/Global_Objects/Object/freeze +--- +
{{JSRef}}
+ +

El método Object.freeze() congela un objeto, es decir: impide que se le agreguen nuevas propiedades; impide que se puedan eliminar las propiedades ya existentes; impide que dichas propiedades, o su capacidad de enumeración, configuración, o escritura, puedan ser modificadas; impide también que se pueda modificar su prototipo. El método devuelve el objeto recibido.

+ +
{{EmbedInteractiveExample("pages/js/object-freeze.html")}}
+ + + +

Sintaxis

+ +
Object.freeze(obj)
+ +

Parámetros

+ +
+
obj
+
El objeto a congelar.
+
+ +

Valor devuelto

+ +

El mismo objeto

+ +

Descripción

+ +

Nada puede ser agregado o removido de las propiedades establecidas de un objeto congelado. Cualquier intento de hacerlo fallará, ya sea de manera silenciosa o arrojando una excepción {{jsxref("TypeError")}} (más comunmente, pero no exclusivamente, en {{jsxref("Strict_mode", "strict mode", "", 1)}}).

+ +

Los valores no pueden ser cambiados por propiedades de datos. Propiedades de acceso (getters y setters) funcionan igual (y aún dan la ilusión de que estas cambiando el valor). Note que los valores que son objetos aún pueden ser modificados, a menos que esten congelados tambien.

+ +

La función retorna el mismo objeto pasado en ella, no crea una copia congelada

+ +

Ejemplos

+ +

Congelando Objetos

+ +
var obj = {
+  prop: function() {},
+  foo: 'bar'
+};
+
+// Nuevas propiedades pueden ser agregadas,
+// propiedades existentes pueden cambiar o removerse
+obj.foo = 'baz';
+obj.lumpy = 'woof';
+delete obj.prop;
+
+// Ambos, el objeto pasado como argumento tanto como el que se regresa
+// serán congelados
+// Es innecesario salvar el objeto que es regresado en orden de congelar
+// el original.
+var o = Object.freeze(obj);
+
+assert(Object.isFrozen(obj) === true);
+
+// Ahora cualquier cambio fallará
+obj.foo = 'quux'; // No hace nada de manera silenciosa
+obj.quaxxor = 'the friendly duck'; // No agrega una nueva propiedad, de manera silenciosa
+
+// ...y en modo estrico tal intento arrojará TypeErrors
+function fail(){
+  'use strict';
+  obj.foo = 'sparky'; // arroja un TypeError
+  delete obj.quaxxor; // arroja un TypeError
+  obj.sparky = 'arf'; // arroja un TypeError
+}
+
+fail();
+
+// Los intentos utilizando Object.defineProperty tambien arrojarán una excepción...
+Object.defineProperty(obj, 'ohai', { value: 17 }); // arroja un TypeError
+Object.defineProperty(obj, 'foo', { value: 'eit' }); // arroja un TypeError
+
+// Es imposible cambiar un prototipo
+// Estos ejemplos retornan un error TypeError
+Object.setPrototype(obj,{x:20})
+obj.__proto__ = {x:20}
+
+ +

El siguiente ejemplo muestra que los valores de objetos en un objeto congelado pueden ser mutados (la congelación es superficial).

+ +
obj1 = {
+  internal: {}
+};
+
+Object.freeze(obj1);
+obj1.internal.a = 'aValue';
+
+obj1.internal.a // 'aValue'
+
+// Para hacer obj completamente inmutable, congelamos cada objeto en obj.
+// Para hacerlo, usamos esta función.
+function deepFreeze(obj) {
+
+  // Recuperamos el nombre de las propiedades en obj
+  var propNames = Object.getOwnPropertyNames(obj);
+
+  // Congelamos las propiedades antes de congelar a obj
+  propNames.forEach(function(name) {
+    var prop = obj[name];
+
+    // Si la propiedad es un objeto, llamaremos a deepFreezze para que congele las propiedades de ese objeto
+    if (typeof prop == 'object' && prop !== null && !Object.isFrozen(prop))
+      deepFreeze(prop);
+  });
+
+  // congelamos a obj
+  return Object.freeze(obj);
+}
+
+obj2 = {
+  internal: {}
+};
+
+deepFreeze(obj2);
+obj2.internal.a = 'anotherValue';
+obj2.internal.a; // undefined
+
+ +

Notas

+ +

En ES5, si el argumento pasado a este método no es un objeto (un primitivo), entonces causará un {{jsxref("TypeError")}}. En ES6, un argumento no-objeto será tratado como si fuera un objeto congelado cualquiera, simplemente lo regresa.

+ +
> Object.freeze(1)
+TypeError: 1 is not an object // Código ES5
+
+> Object.freeze(1)
+1                             // Código ES6
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES5.1', '#sec-15.2.3.9', 'Object.freeze')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.freeze', 'Object.freeze')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-object.freeze', 'Object.freeze')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad de navegadores

+ +

{{Compat("javascript.builtins.Object.freeze")}}

+ +

Mira también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/fromentries/index.html b/files/es/web/javascript/reference/global_objects/object/fromentries/index.html new file mode 100644 index 0000000000..023cc5f8ca --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/fromentries/index.html @@ -0,0 +1,106 @@ +--- +title: Object.fromEntries() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/fromEntries +tags: + - JavaScript + - Objeto + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/fromEntries +--- +
{{JSRef}}
+ +

El método Object.fromEntries() transforma una lista de pares con [clave-valor] en un objeto.

+ +
{{EmbedInteractiveExample("pages/js/object-fromentries.html")}}
+ + + +

Sintaxis

+ +
Object.fromEntries(iterable);
+ +

Parámetros

+ +
+
iterador
+
Un iterador como {{jsxref("Array")}}, {{jsxref("Map")}} u otros objetos que implementen el protocolo iterable.
+
+ +

Valor de retorno

+ +

Un nuevo objeto cuyas propiedades son dadas por las entradas del iterador.

+ +

Descripción

+ +

El método Object.fromEntries() toma una lista de pares con clave-valor y devuelve un nuevo objeto cuyas propiedades son dadas por éstas entradas. El argumento iterador se espera que sea un objeto que implemente un método @@iterator, que devuelve un objeto iterador, que produce un objeto tipo array de dos elementos, donde el primer elemento es un valor que se usará como la clave de la propiedad, y el segundo elemento es el valor a asociar con esa clave de propiedad.

+ +

Object.fromEntries() realiza lo inverso de {{jsxref("Object.entries()")}}.

+ +

Ejemplos

+ +

Convirtiendo un Map en un Objeto

+ +

Con Object.fromEntries, puedes convertir de un {{jsxref("Map")}} a un {{jsxref("Object")}}:

+ +
const map = new Map([ ['foo', 'bar'], ['baz', 42] ]);
+const obj = Object.fromEntries(map);
+console.log(obj); // { foo: "bar", baz: 42 }
+
+ +

Convirtiendo un Arreglo en un Objeto

+ +

Con Object.fromEntries, puedes convertir de un {{jsxref("Array")}} a un {{jsxref("Object")}}:

+ +
const arr = [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ];
+const obj = Object.fromEntries(arr);
+console.log(obj); // { 0: "a", 1: "b", 2: "c" }
+
+ +

Transformación de Objetos

+ +

Con Object.fromEntries, su método inverso {{jsxref("Object.entries()")}}, y array métodos de manipulaciín de arreglos, puedes transformar objetos así:

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

Especificaciones

+ + + + + + + + + + + + + + +
EspecificaciónEstado
{{SpecName('ESDraft', '#sec-object.fromentries', 'Object.fromEntries')}}Etapa 4
+ +

Compatibilidad de navegadores

+ + + +

{{Compat("javascript.builtins.Object.fromEntries")}}

+ +

Véase tambien

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html b/files/es/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html new file mode 100644 index 0000000000..fb2eaf68da --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html @@ -0,0 +1,161 @@ +--- +title: Object.getOwnPropertyDescriptor() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/getOwnPropertyDescriptor +tags: + - ECMAScript5 + - JavaScript + - Método(2) + - Objeto +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor +--- +
{{JSRef}}
+ +

El método Object.getOwnPropertyDescriptor() regresa como descripción de propiedad para una propiedad propia (eso es, una presente directamente en el objeto, no presente por la fuerza a través de la cadena de prototipo del objeto) de un objeto dado.

+ +

Síntaxis

+ +
Object.getOwnPropertyDescriptor(obj, prop)
+ +

Parametros

+ +
+
obj
+
El objeto en el que se busca la propiedad.
+
prop
+
El nombre de la propiedad del cuál se obtendrá la descripción.
+
+ +

Valor de retorno

+ +

Un descriptor de propiedad de una propiedad dada si existe en el objeto,  {{jsxref("undefined")}} en cualquier otro caso.

+ +

Descripción

+ +

Éste método permite la examinación precisa de la descripción de una propiedad. Una propiedad en JavaScript consiste de el nombre de una cadena de valor y un descriptor de propiedad. Información más detallada acerca de los tipos de descripciones y sus atributos puede ser encontrada en {{jsxref("Object.defineProperty()")}}.

+ +

Una descripción de propiedad es un registro con alguno de los siguientes atributos:

+ +
+
value
+
El valor asociado con la propiedad (descriptores de datos unicamente).
+
writable
+
true si y solo si el valor asociado con la propiedad puede ser cambiada (descriptores de datos unicamente).
+
get
+
Una función que sirve como método de acceso para la propiedad, o {{jsxref("undefined")}} si no hay método de acceso (métodos de acceso de descripciones unicamente).
+
set
+
Una función que sirve como método de establecimiento para la propieda, o {{jsxref("undefined")}} si no hay método de establecimiento (métodos de establecimiento de descripciones unicamente).
+
configurable
+
true si y solo si el tipo de ésta descripción de propiedad puede ser cambiada y si la propiedad puede ser eliminada del objeto correspondiente.
+
enumerable
+
true si y solo si ésta propiedad aparece durante la enumeración de las propiedades del objeto correspondiente.
+
+ +

Ejemplos

+ +
var o, d;
+
+o = { get foo() { return 17; } };
+d = Object.getOwnPropertyDescriptor(o, 'foo');
+// d is { configurable: true, enumerable: true, get: /* la función de acceso */, set: undefined }
+
+o = { bar: 42 };
+d = Object.getOwnPropertyDescriptor(o, 'bar');
+// d is { 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 es { value: 8675309, writable: false, enumerable: false, configurable: false }
+
+ +

Notas

+ +

En ES5, si el primer argumento que se le pasa a éste método no es un objeto (primitivo), entonces causará un {{jsxref("TypeError")}}. En ES6, un no-objeto pasado como primer argumento será convertido (coerción) a un objeto en primera instancia.

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

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.2.3.3', 'Object.getOwnPropertyDescriptor')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.getownpropertydescriptor', 'Object.getOwnPropertyDescriptor')}}{{Spec2('ES6')}}
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("5")}}{{CompatGeckoDesktop("2")}}{{CompatIE("8")}}{{CompatOpera("12")}}{{CompatSafari("5")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html b/files/es/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html new file mode 100644 index 0000000000..9585fa80e8 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html @@ -0,0 +1,117 @@ +--- +title: Object.getOwnPropertyDescriptors() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/getOwnPropertyDescriptors +tags: + - JavaScript + - Objeto + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors +--- +
{{JSRef}}
+ +

El métodoObject.getOwnPropertyDescriptors() regresa todos los descriptores de propiedad propios de un objeto dado.

+ +
{{EmbedInteractiveExample("pages/js/object-getownpropertydescriptors.html")}}
+ +

Sintáxis

+ +
Object.getOwnPropertyDescriptors(obj)
+ +

Parámetros

+ +
+
obj
+
El objeto para el cual obtener todos los descriptores de propiedad.
+
+ +

Valores devueltos

+ +

Un objeto que contiene todos los descriptores de propiedad propios de un objeto.

+ +

Descripción

+ +

Este método permite la examinación de la descripción precisa de todas las propiedades de un objeto. Una propiedad en JavaScript consiste en un valor-cadena nombre y un descriptor de propiedad. Más información acerca de los tipos de descriptores de propiedad y sus atributos pueden ser encontrados en {{jsxref("Object.defineProperty()")}}.

+ +

Un descriptor de propiedad es un registro con algunos de los siguientes atributos:

+ +
+
value
+
El valor asociado con la propiedad (solo descriptores de datos).
+
writable
+
true si y solo si el valor asociado con la propiedad puede ser cambiado (solo descriptores de datos).
+
get
+
Un función que sirve como un getter para la propiedad, o {{jsxref("undefined")}} si no hay getter (solo descriptores de acceso).
+
set
+
Una función que sirve como un setter para la propiedad, o {{jsxref("undefined")}} si no hay setter (solo descriptores de acceso).
+
configurable
+
true si y solo si el tipo de este descriptor de propiedad puede ser cambiado y si la propiedad puede ser borrada de el objeto correspondiente.
+
enumerable
+
true si y solo si esta propiedad aparece durante la enumeración de las propiedad en el objeto correspondiente.
+
+ +

Ejemplos

+ +

Creando un clon superficial

+ +

Mientras el método {{jsxref("Object.assign()")}} solo copiará las propiedades enumerables y propias de un objeto fuente a un objeto destino, puedes usar este método y {{jsxref("Object.create()")}} para una copia superficial entre dos objetos desconocidos:

+ +
Object.create(
+  Object.getPrototypeOf(obj),
+  Object.getOwnPropertyDescriptors(obj)
+);
+
+ +

Creando una subclase

+ +

Una manera típica de crear una subclase es definir la subclase, establecer su prototipo a una instancia de la superclase, y después definir propiedades en esa instancia. Esto puede ponerse incómodo especialmente por los getters y setters. En cambio, tú puedes usar este código para establecer el prototipo:

+ +
function superclass() {}
+superclass.prototype = {
+  // Define tus métodos y propiedades aquí
+};
+function subclass() {}
+subclass.prototype = Object.create(
+  superclass.prototype,
+  {
+    // Define tus métodos y propiedades aquí
+  }
+);
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-object.getownpropertydescriptors', 'Object.getOwnPropertyDescriptors')}}{{Spec2('ESDraft')}}Definición inicial en ECMAScript 2017.
{{SpecName('ES2017', '#sec-object.getownpropertydescriptors', 'Object.getOwnPropertyDescriptors')}}{{Spec2('ES2017')}} 
+ +

Browser compatibility

+ +
+ + +

{{Compat("javascript.builtins.Object.getOwnPropertyDescriptors")}}

+
+ +

Ver también:

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/getownpropertynames/index.html b/files/es/web/javascript/reference/global_objects/object/getownpropertynames/index.html new file mode 100644 index 0000000000..5c3819045a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/getownpropertynames/index.html @@ -0,0 +1,163 @@ +--- +title: Object.getOwnPropertyNames() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/getOwnPropertyNames +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames +--- +
+ {{JSRef("Global_Objects", "Object")}}
+

Resumen

+

El método Object.getOwnPropertyNames() devuelve un array con todas las propiedades (numerables o no) encontradas en un objeto dado.

+

Sintaxis

+
Object.getOwnPropertyNames(obj)
+

Parámetros

+
+
+ obj
+
+ El objeto cuyas propiedades directas, numerables y no-numerables, serán devueltas.
+
+

Descripción

+

Object.getOwnPropertyNames devuelve un array cuyos elementos son strings correspondientes a cada una de las propiedades encontradas directamente en obj. El orden de las propiedades numerables en el array coincide con el expuesto para for...in loop (o para {{jsxref("Object.keys")}}) con respecto a las propiedades del object. El orden de las propiedades no-numerables del array, y de éstas respecto a las numerables, no está definido.

+

Ejemplos

+
var arr = ["a", "b", "c"];
+print(Object.getOwnPropertyNames(arr).sort()); // imprime "0,1,2,length"
+
+// Objeto similar a Array
+var obj = { 0: "a", 1: "b", 2: "c"};
+print(Object.getOwnPropertyNames(obj).sort()); // imprime "0,1,2"
+
+// Imprime nombres de variables y valores usando Array.forEach
+Object.getOwnPropertyNames(obj).forEach(function(val, idx, array) {
+  print(val + " -> " + obj[val]);
+});
+// imprime
+// 0 -> a
+// 1 -> b
+// 2 -> c
+
+// propiedad no-numerable
+var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; }, enumerable: false } });
+my_obj.foo = 1;
+
+print(Object.getOwnPropertyNames(my_obj).sort()); // imprime "foo, getFoo"
+
+

Si se quiere solo las propiedades numerables, ver {{jsxref("Object.keys")}} o usar un for...in loop (aunque esto devolvería propiedades numerables no directas del objeto pertenecientes a la cadena de prototype a la que pertenezca, a menos que finalmente se filtre con hasOwnProperty()).

+

Items de la cadena prototype no se listan:

+
function ParentClass () {
+}
+ParentClass.prototype.inheritedMethod = function () {
+};
+
+function ChildClass () {
+  this.prop = 5;
+  this.method = function () {};
+}
+ChildClass.prototype = new ParentClass;
+ChildClass.prototype.prototypeMethod = function () {
+};
+
+alert(
+  Object.getOwnPropertyNames(
+    new ChildClass() // ["prop", "method"]
+  )
+)
+
+

Get Non-Enumerable Only

+

Aquí se usa la función Array.prototype.filter para quitar las keys numerables (obtenidas con Object.keys) de una lista con todas las keys (obtenida con Object.getOwnPropertynames) dejando solo las no-numerables.

+
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) {
+    //no encontrada en las keys de enum_only, por lo que se trata de una key numerable, se devuelve true para mantenerla en filter
+    return true;
+  } else {
+    return false;
+  }
+});
+
+console.log(nonenum_only);
+
+

Especificaciones

+ + + + + + + + + + + + + + + + + + +
EspecificaciónStatusComentario
{{SpecName('ES5.1', '#sec-15.2.3.4', 'Object.getOwnPropertyNames')}}{{Spec2('ES5.1')}}Initial definition.
+ Implemented in JavaScript 1.8.5
{{SpecName('ES6', '#sec-object.getownpropertynames', 'Object.getOwnPropertyNames')}}{{Spec2('ES6')}} 
+

 Compatibilidad con Navegadores

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
FeatureFirefox (Gecko)ChromeInternet ExplorerOperaSafari
Basic support4 (2.0)59125
+
+
+ + + + + + + + + + + + + + + + + + + +
FeatureFirefox Mobile (Gecko)AndroidIE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+

Based on Kangax's compat table.

+

SpiderMonkey-specific notes

+ +

Ver también

+ diff --git a/files/es/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html b/files/es/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html new file mode 100644 index 0000000000..cf8be23f59 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html @@ -0,0 +1,123 @@ +--- +title: Object.getOwnPropertySymbols() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/getOwnPropertySymbols +tags: + - ECMAScript6 + - Experimental + - JavaScript + - Método(2) + - Objeto +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols +--- +
{{JSRef}}
+ +

El método Object.getOwnPropertySymbols() regresa una colección de todos las propiedades de los simbolos encontrados directamente en un objeto dado.

+ +

Síntaxis

+ +
Object.getOwnPropertySymbols(obj)
+ +

Parametros

+ +
+
obj
+
El objeto del cual los simbolos de propiedades son devueltos.
+
+ +

Descripción

+ +

Similar a {{jsxref("Object.getOwnPropertyNames()")}}, puedes obtener todas las propiedades de simbolos de un objeto dado como una colección de simbolos. Note que {{jsxref("Object.getOwnPropertyNames()")}} no contiene en sí mismo las propiedades de simbolos de un objeto y solo contiene las propiedades de cadenas.

+ +

Cómo todos los objetos no tienen inicialmente propiedades simbolos propios, Object.getOwnPropertySymbols() regresa una colección vacia a menos que tengas propiedades de simbolos establecidas en tu objeto.

+ +

Ejemplos

+ +
var obj = {};
+var a = Symbol('a');
+var b = Symbol.for('b');
+
+obj[a] = 'localSymbol';
+obj[b] = 'globalSymbol';
+
+var objectSymbols = Object.getOwnPropertySymbols(obj);
+
+console.log(objectSymbols.length); // 2
+console.log(objectSymbols);        // [Symbol(a), Symbol(b)]
+console.log(objectSymbols[0]);     // Symbol(a)
+
+ +

Especificaciones

+ + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-object.getownpropertysymbols', 'Object.getOwnPropertySymbols')}}{{Spec2('ES6')}}Definición inicial.
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome(38)}}{{CompatGeckoDesktop("36.0")}}{{CompatNo}}259
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico5.1{{CompatChrome(38)}}{{CompatGeckoMobile("36.0")}}{{CompatNo}}259
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/getprototypeof/index.html b/files/es/web/javascript/reference/global_objects/object/getprototypeof/index.html new file mode 100644 index 0000000000..a9b50ec2ec --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/getprototypeof/index.html @@ -0,0 +1,137 @@ +--- +title: Object.getPrototypeOf() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/getPrototypeOf +tags: + - ECMAScript5 + - JavaScript + - Objeto + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Resumen

+ +

El método Object.getPrototypeOf() devuelve el prototipo (es decir, el valor de la propiedad interna [[Prototype]]) del objeto especificado.

+ +

Sintaxis

+ +
Object.getPrototypeOf(obj)
+ +

Parámetros

+ +
+
obj
+
El objeto cuyo prototipo va a ser devuelto.
+
+ +

Valor Devuelto

+ +

El prototipo del objeto dado. Si no existen propiedades heredadas se devolverá {{jsxref("null")}}.

+ +

Ejemplos

+ +
var proto = {};
+var obj= Object.create(proto);
+Object.getPrototypeOf(obj) === proto; // true
+
+ +

Notas

+ +

En ES5, lanzará una excepción {{jsxref("Global_Objects/TypeError", "TypeError")}} si el parámetro obj no es un objeto. en ES6, El parámetro será forzado a un {{jsxref("Global_Objects/Object", "Object")}}.

+ +
> Object.getPrototypeOf('foo')
+TypeError: "foo" is not an object  // ES5 code
+> Object.getPrototypeOf('foo')
+String.prototype                   // ES6 code
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.2.3.2', 'Object.getPrototypeOf')}}{{Spec2('ES5.1')}}Definición inicial.
{{SpecName('ES6', '#sec-object.getprototypeof', 'Object.getProtoypeOf')}}{{Spec2('ES6')}} 
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("5")}}{{CompatGeckoDesktop("1.9.1")}}{{CompatIE("9")}}{{CompatOpera("12.10")}} (tal vez en las últimas versiones){{CompatSafari("5")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Based on Kangax's compat table.

+ +

Notas espécificas sobre Opera

+ +

A pesar de que las versiones anteriores de opera no soportan aun Object.getPrototypeOf(), Opera soporta la propiedad no estándar {{jsxref("Object.proto", "__proto__")}} desde Opera 10.50.

+ +

Mira también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/hasownproperty/index.html b/files/es/web/javascript/reference/global_objects/object/hasownproperty/index.html new file mode 100644 index 0000000000..d84e5d6a52 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/hasownproperty/index.html @@ -0,0 +1,186 @@ +--- +title: Object.prototype.hasOwnProperty() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/hasOwnProperty +tags: + - JavaScript + - Method + - Object + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty +--- +
{{JSRef("Objetos_globales", "Object")}}
+ +

Resumen

+ +

El método hasOwnProperty() devuelve un booleano indicando si el objeto tiene la propiedad especificada.

+ +

Sintaxis

+ +
obj.hasOwnProperty(prop)
+ +

Parámetros

+ +
+
prop
+
El nombre de la propiedad a buscar.
+
+ +

Descripción

+ +

Todo objeto descendiente de Object hereda el método hasOwnProperty. Este método puede ser usando para determinar si un objeto tiene la propiedad especificada como una propiedad directa de ese objeto; a diferencia del operador {{jsxref("Operators/in", "in")}}, este método no verifica la cadena prototipo del objeto.

+ +

Ejemplos

+ +

Ejemplo: usar hasOwnProperty para comprobar la existencia de una propiedad

+ +

El siguiente ejemplo determina si el objeto o contiene una propiedad llamada prop:

+ +
o = new Object();
+o.prop = 'exists';
+
+function changeO() {
+  o.newprop = o.prop;
+  delete o.prop;
+}
+
+o.hasOwnProperty('prop');   // returns true
+changeO();
+o.hasOwnProperty('prop');   // returns false
+ +

Ejemplo: Directo versus propiedades heredadas

+ +

El siguiente ejemplo diferencia entre propiedades directas y propiedades heredadas a través de la cadena prototype:

+ +
o = new Object();
+o.prop = 'exists';
+o.hasOwnProperty('prop');             // returns true
+o.hasOwnProperty('toString');         // returns false
+o.hasOwnProperty('hasOwnProperty');   // returns false
+ +

Ejemplo: Iterando sobre las propiedades de un objeto

+ +

El siguiente ejemplo muestra como iterar sobre las propiedades de un objeto sin ejecutar sobre propiedades heredadas. Observe que el bucle for..in ya está no solo iterando elementos enumerables, por consiguiente uno no debería asumir que basado en la falta de propiedades no numerales mostrando en el bucle que hasOwnProperty por si misma no está solo es estrictamente para iterar elementos numerados (como con {{jsxref("Object.getOwnPropertyNames()")}}).

+ +
var buz = {
+    fog: 'stack'
+};
+
+for (var name in buz) {
+    if (buz.hasOwnProperty(name)) {
+        alert("this is fog (" + name + ") for sure. Value: " + buz[name]);
+    }
+    else {
+        alert(name); // toString or something else
+    }
+}
+ +

Ejemplo: hasOwnProperty como una propiedad

+ +

JavaScript no protege el nombre de la propiedad hasOwnProperty; en consecuencia, si existe la posibilidad  de que un objeto pudiera tener la propiedad con ese nombre, es necesario usar un externo hasOwnProperty para obtener los correctos resultados:

+ +
var foo = {
+    hasOwnProperty: function() {
+        return false;
+    },
+    bar: 'Here be dragons'
+};
+
+foo.hasOwnProperty('bar'); // always returns false
+
+// Use another Object's hasOwnProperty and call it with 'this' set to foo
+({}).hasOwnProperty.call(foo, 'bar'); // true
+
+// It's also possible to use the hasOwnProperty property from the Object property for this purpose
+Object.prototype.hasOwnProperty.call(foo, 'bar'); // true
+
+ +

Observe que en el último caso no han habido nuevos objetos creados.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificacionesEstadoComentario
ECMAScript 3rd Edition. Implemented in JavaScript 1.5StandardInitial definition.
{{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')}} 
+ +

Compatibilidad 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() }}
+
+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/index.html b/files/es/web/javascript/reference/global_objects/object/index.html new file mode 100644 index 0000000000..99089bd28e --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/index.html @@ -0,0 +1,187 @@ +--- +title: Object +slug: Web/JavaScript/Referencia/Objetos_globales/Object +tags: + - Constructor + - JavaScript + - Objeto + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Object +--- +
{{JSRef}}
+ +
La clase Object representa uno de los tipos de datos de Javascript. Es es usado para guardar una colección de datos definidos y entidades más complejas. Los objetos pueden ser creados utilzando el constructor {{jsxref("Object/Object", "Object()")}} o la sintaxis literal de objeto. 
+ +

El constructor Object crea una envoltura al objeto.

+ +

Sintaxis

+ + + +
// Object initialiser or literal
+{ [ nameValuePair1[, nameValuePair2[, ...nameValuePairN] ] ] }
+
+// Called as a constructor
+new Object([value])
+ +

Parámetros

+ +
+
nameValuePair1, nameValuePair2, ... nameValuePairN
+
Los pares de nombres (strings) y los valores (cualquier valor) donde los nombres son separados por una coma.
+
valor
+
Cualquier valor.
+
+ +

Description

+ +

El constructor Object crea una envoltura de objeto  al valor dado.  Si el valor es  {{jsxref("null")}} o {{jsxref("undefined")}}, creará y retornará un objeto vacío, de otra forma, retornará un objeto de un tipo que corresponda al valor dado. Si el valor ya es un objeto devolverá el valor.

+ +

Cuando es llamano en un contexto non-constructor, Object se comportará indenticamente a new Object().

+ +

Ver object initializer / literal syntax.

+ +

Propiedades del constructor Object

+ +
+
Object.length
+
Tiene un valor de 1.
+
{{jsxref("Object.prototype")}}
+
Permite añadir propiedades a todos los objetos del tipo Object.
+
+ +

Métodos del constructor  Object

+ +
+
{{jsxref("Object.assign()")}}
+
Copia los valores de todas sus propiedades enumerables desde uno o más objetos fuente a un objeto destino.
+
{{jsxref("Object.create()")}}
+
Crea un nuevo objeto con el prototipo objeto y propiedades específicadas.
+
{{jsxref("Object.defineProperty()")}}
+
Añade la propiedad nombrada descrita por un descriptor dado a un objeto.
+
{{jsxref("Object.defineProperties()")}}
+
Agrega las propiedades nombradas descritas por los descriptores dados a un objeto.
+
{{jsxref("Object.entries()")}}
+
Returns an array containing all of the [key, value] pairs of a given object's own enumerable string properties.
+
{{jsxref("Object.freeze()")}}
+
Freezes an object: other code can't delete or change any properties.
+
{{jsxref("Object.fromEntries()")}}
+
Returns a new object from an iterable of key-value pairs (reverses {{jsxref("Object.entries")}}).
+
{{jsxref("Object.getOwnPropertyDescriptor()")}}
+
Returns a property descriptor for a named property on an object.
+
{{jsxref("Object.getOwnPropertyDescriptors()")}}
+
Returns an object containing all own property descriptors for an object.
+
{{jsxref("Object.getOwnPropertyNames()")}}
+
Returns an array containing the names of all of the given object's own enumerable and non-enumerable properties.
+
{{jsxref("Object.getOwnPropertySymbols()")}}
+
Returns an array of all symbol properties found directly upon a given object.
+
{{jsxref("Object.getPrototypeOf()")}}
+
Returns the prototype of the specified object.
+
{{jsxref("Object.is()")}}
+
Compares if two values are the same value. Equates all NaN values (which differs from both Abstract Equality Comparison and Strict Equality Comparison).
+
{{jsxref("Object.isExtensible()")}}
+
Determines if extending of an object is allowed.
+
{{jsxref("Object.isFrozen()")}}
+
Determines if an object was frozen.
+
{{jsxref("Object.isSealed()")}}
+
Determines if an object is sealed.
+
{{jsxref("Object.keys()")}}
+
Returns an array containing the names of all of the given object's own enumerable string properties.
+
{{jsxref("Object.preventExtensions()")}}
+
Prevents any extensions of an object.
+
{{jsxref("Object.seal()")}}
+
Prevents other code from deleting properties of an object.
+
{{jsxref("Object.setPrototypeOf()")}}
+
Sets the prototype (i.e., the internal [[Prototype]] property).
+
{{jsxref("Object.values()")}}
+
Returns an array containing the values that correspond to all of a given object's own enumerable string properties.
+
+ +

Object instances and Object prototype object

+ +

All objects in JavaScript are descended from Object; all objects inherit methods and properties from {{jsxref("Object.prototype")}}, although they may be overridden. For example, other constructors' prototypes override the constructor property and provide their own toString() methods. Changes to the Object prototype object are propagated to all objects unless the properties and methods subject to those changes are overridden further along the prototype chain.

+ +

Properties

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

Methods

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

Deleting a property from an object

+ +

There isn't any method in an Object itself to delete its own properties (e.g. like Map.prototype.delete()). To do so one has to use the delete operator.

+ +

Examples

+ +

Using Object given undefined and null types

+ +

The following examples store an empty Object object in o:

+ +
var o = new Object();
+
+ +
var o = new Object(undefined);
+
+ +
var o = new Object(null);
+
+ +

Using Object to create Boolean objects

+ +

The following examples store {{jsxref("Boolean")}} objects in o:

+ +
// equivalent to o = new Boolean(true);
+var o = new Object(true);
+
+ +
// equivalent to o = new Boolean(false);
+var o = new Object(Boolean());
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.2', 'Object')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-object-objects', 'Object')}}{{Spec2('ES6')}}Added Object.assign, Object.getOwnPropertySymbols, Object.setPrototypeOf, Object.is
{{SpecName('ESDraft', '#sec-object-objects', 'Object')}}{{Spec2('ESDraft')}}Added Object.entries, Object.values and Object.getOwnPropertyDescriptors.
+ +

Browser compatibility

+ +
+ + +

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

+
+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/is/index.html b/files/es/web/javascript/reference/global_objects/object/is/index.html new file mode 100644 index 0000000000..926357d0ab --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/is/index.html @@ -0,0 +1,172 @@ +--- +title: Object.is() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/is +tags: + - Comparación + - Condición + - ECMAScript2015 + - JavaScript + - Objeto + - condicional + - igualdad + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/is +--- +
{{JSRef}}
+ +

El método Object.is() determina si dos valores son iguales.

+ +

Síntaxis

+ +
Object.is(valor1, valor2);
+ +

Parámetros

+ +
+
valor1
+
Primer valor a comparar.
+
valor2
+
Segundo valor a comparar.
+
+ +

Valor return del método

+ +

Este método devuelve un valor de tipo {{jsxref("Boolean")}} indicando si los valores pasados como parámetros son iguales o no.

+ +

Descripción

+ +

Object.is() determina si dos valores son iguales. Dos valores son iguales si se puede asegurar que:

+ + + +

Esta comparación no es igual a la que realiza el operador {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}}. El operador {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}} aplica varias coerciones(comprobaciones) en ambos sentidos (si no tienen el mismo Type) antes de probar la igualdad (lo que resulta en comportamientos como  "" == false siendo true), pero Object.is no obliga a niguno de los valores.

+ +

Esta tampoco es igual a la que realiza el operador {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}}. El operador {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}} (y el operador {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}}) trata los valores -0 y +0 como iguales, y además, trata {{jsxref("Number.NaN")}} como no igual a {{jsxref("NaN")}}.

+ +

Ejemplos

+ +
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
+
+// Special Cases
+Object.is(0, -0);            // false
+Object.is(-0, -0);           // true
+Object.is(NaN, 0/0);         // true
+
+ +

Polyfill para navegadores no ES6

+ +

Object.is() es una adición propuesta en el estandar ECMA-262; y como tal, puede no estar presente en todos los navegadores. Para los casos en que no tenga disponible este método, podría utilizar este código haciendolo que se cargue antes que cualquier otro script. Esto permite que puedas utilizar Object.is() en los navegadores que no lo llevan incluído.

+ +
if (!Object.is) {
+  Object.is = function(x, y) {
+    // SameValue algorithm
+    if (x === y) { // Steps 1-5, 7-10
+      // Steps 6.b-6.e: +0 != -0
+      return x !== 0 || 1 / x === 1 / y;
+    } else {
+      // Step 6.a: NaN == NaN
+      return x !== x && y !== y;
+    }
+  };
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-object.is', 'Object.is')}}{{Spec2('ES6')}}Definición inicial.
+ +

Compatibilidad en navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome("30")}}{{CompatGeckoDesktop("22")}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatUnknown}}{{CompatGeckoMobile("22")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/isextensible/index.html b/files/es/web/javascript/reference/global_objects/object/isextensible/index.html new file mode 100644 index 0000000000..30082032ea --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/isextensible/index.html @@ -0,0 +1,144 @@ +--- +title: Object.isExtensible() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/isExtensible +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Objeto + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/isExtensible +--- +
{{JSRef}}
+ +

El método Object.isExtensible() determina si un objeto es extendible (si puede tener propiedades nuevas agregadas a éste).

+ +

Síntaxis

+ +
Object.isExtensible(obj)
+ +

Parametros

+ +
+
obj
+
El objeto a ser revisado.
+
+ +

Descripción

+ +

Los objetos son extendibles por defecto: ellos pueden tener propiedades nuevas agregadas a ellos, y (en motores que soportan {{jsxref("Object.proto", "__proto__")}} {{deprecated_inline}} la propiedad __proto__) pueden ser modificados. Un objeto puede ser marcado como no extendible usando {{jsxref("Object.preventExtensions()")}}, {{jsxref("Object.seal()")}}, o {{jsxref("Object.freeze()")}}.

+ +

Ejemplos

+ +
// Los Objetos nuevos son extendibles (por defecto).
+var empty = {};
+Object.isExtensible(empty); // === true
+
+// ...pero eso puede cambiar.
+Object.preventExtensions(empty);
+Object.isExtensible(empty); // === false
+
+// Objetos sellados por definición son no-extendibles.
+var sealed = Object.seal({});
+Object.isExtensible(sealed); // === false
+
+// Objetos congelados también por definición son no-extendibles.
+var frozen = Object.freeze({});
+Object.isExtensible(frozen); // === false
+
+ +

Notas

+ +

En ES5, si el argumento pasado a éste método no es un objeto (primitivo), entonces regresará {{jsxref("TypeError")}}. En ES6, un no-objeto pasado como argumento será tratado como si fuera un objeto no-extendible ordinario, simplemente regresa false.

+ +
Object.isExtensible(1);
+// TypeError: 1 is not an object (ES5 code)
+
+Object.isExtensible(1);
+// false                         (ES6 code)
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.2.3.13', 'Object.isExtensible')}}{{Spec2('ES5.1')}}Definición inicial. Implementada en JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.isextensible', 'Object.isExtensible')}}{{Spec2('ES6')}} 
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("6")}}{{CompatGeckoDesktop("2.0")}}{{CompatIE("9")}}{{CompatOpera("12")}}{{CompatSafari("5.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporote básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/isfrozen/index.html b/files/es/web/javascript/reference/global_objects/object/isfrozen/index.html new file mode 100644 index 0000000000..9a2bc2ee94 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/isfrozen/index.html @@ -0,0 +1,190 @@ +--- +title: Object.isFrozen() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/isFrozen +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Objeto + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/isFrozen +--- +
{{JSRef}}
+ +

El método Object.isFrozen() determina si un objeto está congelado.

+ +

Síntaxis

+ +
Object.isFrozen(obj)
+ +

Parametros

+ +
+
obj
+
El objeto a ser revisado.
+
+ +

Descripción

+ +

Un objeto está congelado si y solo si no es {{jsxref("Object.isExtensible()", "extendible", "", 1)}}, todas sus propiedades son no-configurables, y todos los datos de sus propiedades no tienen capacidad de escritura.

+ +

Ejemplos

+ +
// Un objeto nuevo es extendible, así que no está congelado.
+Object.isFrozen({}); // === false
+
+// Un objeto vacio el cuál no es extendible está congelado vacuamente.
+var vacuouslyFrozen = Object.preventExtensions({});
+Object.isFrozen(vacuouslyFrozen); // === true
+
+// Un objeto nuevo con una propiedad es tabién extendible, ergo no congelado.
+var oneProp = { p: 42 };
+Object.isFrozen(oneProp); // === false
+
+// Prevenir la extensión de un objeto no lo congela.
+// porque la propiedad sigue teniendo capacidad de configuración (y capacidad de escritura).
+Object.preventExtensions(oneProp);
+Object.isFrozen(oneProp); // === false
+
+// ...pero eliminar la propiedad congela el objeto vacuamente.
+delete oneProp.p;
+Object.isFrozen(oneProp); // === true
+
+// Un ojbeto no-extendible con una propiedad sin capacidad de escritura pero si con capacidad de configuración no está congelado.
+var nonWritable = { e: 'plep' };
+Object.preventExtensions(nonWritable);
+Object.defineProperty(nonWritable, 'e', { writable: false }); // Le quita la capacidad de escritura.
+Object.isFrozen(nonWritable); // === false
+
+// Quitarle la capacidad de configuración a una propiedad congela el objeto.
+Object.defineProperty(nonWritable, 'e', { configurable: false }); // le quita la capacidad de configuración.
+Object.isFrozen(nonWritable); // === true
+
+// Un objeto no-extendible con una propiedad sin capacidad de configuración pero con capacidad de escritura no congela a dicho objeto.
+var nonConfigurable = { release: 'the kraken!' };
+Object.preventExtensions(nonConfigurable);
+Object.defineProperty(nonConfigurable, 'release', { configurable: false });
+Object.isFrozen(nonConfigurable); // === false
+
+// Quitarle la capacidad de configuración a esa propiedad congela el objeto.
+Object.defineProperty(nonConfigurable, 'release', { writable: false });
+Object.isFrozen(nonConfigurable); // === true
+
+// A non-extensible object with a configurable accessor property isn't frozen.
+var accessor = { get food() { return 'yum'; } };
+Object.preventExtensions(accessor);
+Object.isFrozen(accessor); // === false
+
+// ...but make that property non-configurable and it becomes frozen.
+Object.defineProperty(accessor, 'food', { configurable: false });
+Object.isFrozen(accessor); // === true
+
+// But the easiest way for an object to be frozen is if Object.freeze has been called on it.
+var frozen = { 1: 81 };
+Object.isFrozen(frozen); // === false
+Object.freeze(frozen);
+Object.isFrozen(frozen); // === true
+
+// By definition, a frozen object is non-extensible.
+Object.isExtensible(frozen); // === false
+
+// Also by definition, a frozen object is sealed.
+Object.isSealed(frozen); // === true
+
+ +

Notas

+ +

En ES5, si el argumento pasado a éste método no es un objeto (primitivo), entonces causará un {{jsxref("TypeError")}}. En ES6, un no-objeto pasado como argumento será tratado como si fuera un objeto ordinario congelado, simplemente regresa true.

+ +
Object.isFrozen(1);
+// TypeError: 1 is not an object (ES5 code)
+
+Object.isFrozen(1);
+// true                          (ES6 code)
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.2.3.12', 'Object.isFrozen')}}{{Spec2('ES5.1')}} +

Definición inicial. Implementada en JavaScript 1.8.5.

+
{{SpecName('ES6', '#sec-object.isfrozen', 'Object.isFrozen')}}{{Spec2('ES6')}} 
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracteristicasChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("6")}}{{CompatGeckoDesktop("2.0")}}{{CompatIE("9")}}{{CompatOpera("12")}}{{CompatSafari("5.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracteristicasAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/isprototypeof/index.html b/files/es/web/javascript/reference/global_objects/object/isprototypeof/index.html new file mode 100644 index 0000000000..8275ebafac --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/isprototypeof/index.html @@ -0,0 +1,158 @@ +--- +title: Object.prototype.isPrototypeOf() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/isPrototypeOf +translation_of: Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf +--- +
{{JSRef}}
+ +

El método isPrototypeOf() comprueba si un objeto se encuentra en la cadena de prototipado de otro.

+ +
+

Nota: isPrototypeOf difiere del operador {{jsxref("Operators/instanceof", "instanceof")}}. En la expresión "object instanceof AFunction", la cadena de prototipado de object es comprobada contra AFunction.prototype, no contra la propia AFunction.

+
+ +

Sintaxis

+ +
prototypeObj.isPrototypeOf(obj)
+ +

Parámetros

+ +
+
prototypeObj
+
Un objeto para ver comprobado contra cada vínculo en la cadena de prototipado del argumento object.
+
object
+
El object sobre cuya cadena de prototipado se realizará la búsqueda.
+
+ +

Descripción

+ +

El método isPrototypeOf permite comprobar si un objetyo existe o no en la cadena de prototipado de otro.

+ +

Por ejemplo, considerese la siguiente cadena de prototipado:

+ +
function Fee() {
+  // ...
+}
+
+function Fi() {
+  // ...
+}
+Fi.prototype = new Fee();
+
+function Fo() {
+  // ...
+}
+Fo.prototype = new Fi();
+
+function Fum() {
+  // ...
+}
+Fum.prototype = new Fo();
+
+ +

Al final de la secuencia, si se instanci Fum y se necesita verificar si el prototipo de Fi existe en la cadena de prototipado de Fum prototype chain, puede hacerse esto:

+ +
var fum = new Fum();
+// ...
+
+if (Fi.prototype.isPrototypeOf(fum)) {
+  // do something safe
+}
+
+ +

Esto, junto con el operador {{jsxref("Operators/instanceof", "instanceof")}} resulta especialmente útil si se tiene código que sólo puede operar cuando se trata de objetos descendientes de una cadena de prototipado específica, p.e., para garantizar que ciertos métodos o propiedades estén presentes en dichos objetos.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoObservaciones
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición 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')}} 
{{SpecName('ESDraft', '#sec-object.prototype.hasownproperty', 'Object.prototype.hasOwnProperty')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
PrestaciónChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
PrestaciónAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/issealed/index.html b/files/es/web/javascript/reference/global_objects/object/issealed/index.html new file mode 100644 index 0000000000..c28437561a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/issealed/index.html @@ -0,0 +1,140 @@ +--- +title: Object.isSealed() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/isSealed +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Objeto + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/isSealed +--- +
{{JSRef}}
+ +

El método Object.isSealed() si el objeto está sellado.

+ +
{{EmbedInteractiveExample("pages/js/object-issealed.html")}}
+ + + +

Syntax

+ +
Object.isSealed(obj)
+ +

Parámetros

+ +
+
obj
+
El objeto que debe ser verificado.
+
+ +

Valor devuelto

+ +

Un {{jsxref("Boolean")}} indicando si el objeto dado está sellado.

+ +

Descripción

+ +

Devuelve true si el objeto está sellado, de lo contrario devuelve false. Un objeto está sellado si no es {{jsxref("Object.isExtensible", "extensible", "", 1)}} y si todas sus propiedades no se pueden configurar y por lo tanto no removibles (pero no necesariamente no modificables).

+ +

Ejemplos

+ +
// Los objetos no están sellados por defecto
+var empty = {};
+Object.isSealed(empty); // === false
+
+// Si haces un objeto vacío no extendible,
+// está vacíamente sellado
+Object.preventExtensions(empty);
+Object.isSealed(empty); // === true
+
+// Lo mismo no es vedad sobre un objeto no vacío,
+// a menos que sus propiedades son todas no configurables.
+var hasProp = { fee: 'fie foe fum' };
+Object.preventExtensions(hasProp);
+Object.isSealed(hasProp); // === false
+
+// Pero hazlas todas no configurables
+// y el objeto se vuelve sellado.
+Object.defineProperty(hasProp, 'fee', {
+  configurable: false
+});
+Object.isSealed(hasProp); // === true
+
+// La manerá más facil de sellar un objeto, por supuesto,
+// es Object.seal
+var sealed = {};
+Object.seal(sealed);
+Object.isSealed(sealed); // === true
+
+// Un objeto sellado es, por definición, no extendible.
+Object.isExtensible(sealed); // === false
+
+// Un objeto sellado puodría estar congelado,
+// pero no tiene que ser.
+Object.isFrozen(sealed); // === true
+// (Todas las propiedades también no modificables)
+
+var s2 = Object.seal({ p: 3 });
+Object.isFrozen(s2); // === false
+// ('p' todavía es modificable)
+
+var s3 = Object.seal({ get p() { return 0; } });
+Object.isFrozen(s3); // === true
+// (solo la configurabilidad es importante para las propiedades de acceso)
+
+ +

Notes

+ +

En ES5, si el argumento de este método no es un objeto (primitivo), entonces causará un {{jsxref("TypeError")}}. En ES2015, un argumento que no sea un objeto será tratado como si fuera un objeto sellado ordinario, simplemente devuelve true.

+ +
Object.isSealed(1);
+// TypeError: 1 no es un objeto (ES5 code)
+
+Object.isSealed(1);
+// true                          (ES2015 code)
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES5.1', '#sec-15.2.3.11', 'Object.isSealed')}}{{Spec2('ES5.1')}}Definición inicial. Implementada en JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.issealed', 'Object.isSealed')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-object.issealed', 'Object.isSealed')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ +
+ + +

{{Compat("javascript.builtins.Object.isSealed")}}

+
+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/keys/index.html b/files/es/web/javascript/reference/global_objects/object/keys/index.html new file mode 100644 index 0000000000..d6bd068f2f --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/keys/index.html @@ -0,0 +1,156 @@ +--- +title: Object.keys() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/keys +translation_of: Web/JavaScript/Reference/Global_Objects/Object/keys +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Resumen

+ +

El método Object.keys() devuelve un array de las propiedades names de un objeto, en el mismo orden como se obtienen en un loop normal

+ +

Sintaxis

+ +
Object.keys(obj)
+ +

Parámetros

+ +
+
obj
+
El objeto cuyas propiedades enumerables serán devueltas.
+
+ +

Valor de retorno

+ +

Un array de strings que representan toda las propiedades  del objeto

+ +

Descripción

+ +

Object.keys devuelve un array cuyos elementos son strings correspondientes a las propiedades enumerables que se encuentran directamente en el object. El orden de las propiedades es el mismo que se proporciona al iterar manualmente sobre las propiedades del objeto.

+ +

Ejemplos

+ +
var arr = ['a', 'b', 'c'];
+console.log(Object.keys(arr)); // console: ['0', '1', '2']
+
+// arreglo como objeto
+var obj = { 0: 'a', 1: 'b', 2: 'c' };
+console.log(Object.keys(obj)); // console: ['0', '1', '2']
+
+// arreglo como objeto con nombres ordenados aleatoriamente
+var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
+console.log(Object.keys(an_obj)); // console: ['2', '7', '100']
+
+// getFoo es una propiedad no enumerable
+var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
+my_obj.foo = 1;
+
+console.log(Object.keys(my_obj)); // console: ['foo']
+
+ +

Si quieres todas las propiedades, incluso las no enumerables, mira {{jsxref("Object.getOwnPropertyNames()")}}.

+ +

Notas

+ +

En ES5, si el argumento para este método no es un objeto (uno primitivo), causará un {{jsxref("Global_Objects/TypeError", "TypeError")}}. En ES2015, un argumento no-objeto será coaccionado hacia un objeto.

+ +
> Object.keys("foo")
+// TypeError: "foo" is not an object  (ES5)
+
+> Object.keys("foo")
+// ["0", "1", "2"]                    (ES2015)
+ +

Polyfill

+ +

Para añadir soporte Object.keys en entornos más antiguos que no lo soportan de forma nativa, copia el siguiente fragmento:

+ +
// 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 called on non-object');
+      }
+
+      var result = [], prop, i;
+
+      for (prop in obj) {
+        if (hasOwnProperty.call(obj, prop)) {
+          result.push(prop);
+        }
+      }
+
+      if (hasDontEnumBug) {
+        for (i = 0; i < dontEnumsLength; i++) {
+          if (hasOwnProperty.call(obj, dontEnums[i])) {
+            result.push(dontEnums[i]);
+          }
+        }
+      }
+      return result;
+    };
+  }());
+}
+
+ +

Ten en cuenta que el código anterior incluye claves no-enumerables en IE7 (y quizás IE8), al pasar en un objeto desde una ventana diferente.

+ +

Para un simple Polyfill del Navegador, mira Javascript - Compatibilidad de Object.keys en Navegadores.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
{{SpecName('ES5.1', '#sec-15.2.3.14', 'Object.keys')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.8.5.
{{SpecName('ES2015', '#sec-object.keys', 'Object.keys')}}{{Spec2('ES2015')}}
{{SpecName('ESDraft', '#sec-object.keys', 'Object.keys')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad con navegadores

+ +
{{Compat("javascript.builtins.Object.keys")}}
+ + + +

Mira también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/preventextensions/index.html b/files/es/web/javascript/reference/global_objects/object/preventextensions/index.html new file mode 100644 index 0000000000..50f51214a8 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/preventextensions/index.html @@ -0,0 +1,176 @@ +--- +title: Object.preventExtensions() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/preventExtensions +translation_of: Web/JavaScript/Reference/Global_Objects/Object/preventExtensions +--- +
{{JSRef}}
+ +

El método Object.preventExtensions() previene que nuevas propiedades sean agregadas a un objeto (p.e. previene la extensión futuras al objeto).

+ +

Sintaxis

+ +
Object.preventExtensions(obj)
+ +

Parametros

+ +
+
obj
+
El objeto que debería hacerse inextendible.
+
+ +

Descripción

+ +

Un objeto es extendible si propiedades nuevas pueden ser agregadas a este. Object.preventExtensions() marca un objecto como no extendible, así nunca más tendrá propiedades más allá de las tenía en el momento en que fue marcado como no extendible. Note que las propiedades de un objeto no-extendible, en general, aún pueden ser eliminadas. Los intentos de agregar propiedades nuevas a un objeto no-extendible fallarán, ya sea de manera silenciosa o arrojando una excepción {{jsxref("TypeError")}} (comunmente, pero no de manera exclusiva, en {{jsxref("Functions_and_function_scope/Strict_mode", "strict mode", "", 1)}}).

+ +

Object.preventExtensions() solo previene la adición de propiedades propias. Las propiedades aún pueden ser agregadas a object.prototype. Sin embargo, llamar Object.preventExtensions() sobre un objeto tambien prevendrá extensiones sobre la propiedad {{jsxref("Object.proto", "__proto__")}} {{deprecated_inline}}.

+ +

Si hay una manera de cambiar un objeto extendible a uno no-extendible, hay una manera de hacer lo opuesto en ECMAScript 5.

+ +

Ejemplos

+ +
// Object.preventExtensions regresa el objeto hecho no-extendible.
+var obj = {};
+var obj2 = Object.preventExtensions(obj);
+obj === obj2; // true
+
+// Los Objetos son extendibles por defecto.
+var empty = {};
+Object.isExtensible(empty); // === true
+
+// ...pero pueden ser cambiados.
+Object.preventExtensions(empty);
+Object.isExtensible(empty); // === false
+
+// Object.defineProperty arroja una excepción cuando se agrega
+// una propiedad nueva a un objeto no-extendible.
+var nonExtensible = { removable: true };
+Object.preventExtensions(nonExtensible);
+Object.defineProperty(nonExtensible, 'new', { value: 8675309 }); // arroja TypeError
+
+// En modo estricto, tratar de agregar propiedades nuevas
+// a un objeto no-extensible arroja una excepción TypeError.
+function fail() {
+  'use strict';
+  nonExtensible.newProperty = 'FAIL'; // arroja TypeError
+}
+fail();
+
+// EXTENSION (solo funciona en motores que soporten __proto__
+// (el cual esta obsoleto. Usar Object.getPrototypeOf en su lugar)):
+// La propiedad prototype de un objeto no-extendible es inmutable.
+var fixed = Object.preventExtensions({});
+fixed.__proto__ = { oh: 'hai' }; // arroja TypeError
+
+ +

Notas

+ +

En ES5, si el argumento pasado a este método no es un objeto (primitivo), entonces causará un {{jsxref("TypeError")}}. En ES6, un argumento no-objeto será tratado como si fuera un objeto ordinario no-extendible, simplemente lo regresa.

+ +
Object.preventExtensions(1);
+// TypeError: 1 is not an object (ES5 code)
+
+Object.preventExtensions(1);
+// 1                             (ES6 code)
+
+ +

Especificación

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.2.3.10', 'Object.preventExtensions')}}{{Spec2('ES5.1')}}Definición inicial. Implementada en JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.preventextensions', 'Object.preventExtensions')}}{{Spec2('ES6')}} 
+ +

Compatibilidad de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("6")}}{{CompatGeckoDesktop("2.0")}}{{CompatIE("9")}}{{CompatOpera("12")}}{{CompatSafari("5.1")}}
Comportamiento en ES6 para un no-objeto pasado como argumento{{CompatChrome("44")}}{{CompatGeckoDesktop("35.0")}}{{CompatIE("11")}}{{CompatOpera("31")}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Comportamiento en ES6 para no-objetos pasados como argumentos{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile("35.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Mira también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/propertyisenumerable/index.html b/files/es/web/javascript/reference/global_objects/object/propertyisenumerable/index.html new file mode 100644 index 0000000000..b2ede9dd60 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/propertyisenumerable/index.html @@ -0,0 +1,185 @@ +--- +title: Object.prototype.propertyIsEnumerable() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/propertyIsEnumerable +tags: + - JavaScript + - Objecto + - Property + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable +--- +
{{JSRef}}
+ +

El método propertyIsEnumerable() regresa un Boleano indicando si la propiedad especificada es enumerable.

+ +

Sintaxis

+ +
obj.propertyIsEnumerable(prop)
+ +

Parametros

+ +
+
prop
+
Nombre de la propiedad a probar.
+
+ +

Descripción

+ +

Todos los objetos tienen un método propertyIsEnumerable. Este método puede determinar si la propiedad especificada en el objeto puede ser enumerada por un ciclo {{jsxref("Statements/for...in", "for...in")}}, con la excepción de propiedades heredadas a través de prototype. Si el objeto no tiene la propiedad especificada, este método regresa un valor false.

+ +

Ejemplo

+ +

Uso básico de propertyIsEnumerable

+ +

El siguiente ejemplo muestra el uso de propertyIsEnumerable en objetos y arrays:

+ +
var o = {};
+var a = [];
+o.prop = 'es enumerable';
+a[0] = 'es enumerable';
+
+o.propertyIsEnumerable('prop');   // regresa true
+a.propertyIsEnumerable(0);        // regresa true
+
+ +

Definidas por usuario vs predefinidas

+ +

El siguiente ejemplo demuestra la enumerabilidad de las propiedades definidas por el usuario contra las predefinidas:

+ +
var a = ['es enumerable'];
+
+a.propertyIsEnumerable(0);          // regresa true
+a.propertyIsEnumerable('length');   // regresa false
+
+Math.propertyIsEnumerable('random');   // regresa false
+this.propertyIsEnumerable('Math');     // regresa false
+
+ +

Directa vs  heredadas

+ +
var a = [];
+a.propertyIsEnumerable('constructor');         // regresa false
+
+function primerConstructor() {
+  this.propiedad = 'no es enumerable';
+}
+
+primerConstructor.prototype.primerMetodo = function() {};
+
+function segundoConstructor() {
+  this.metodo = function() { return 'es enumerable'; };
+}
+
+secondConstructor.prototype = new primerConstructor;
+secondConstructor.prototype.constructor = segundoConstructor;
+
+var o = new segundoConstructor();
+o.propiedadArbitraria = 'is enumerable';
+
+o.propertyIsEnumerable('propiedadArbitraria ');   // regresa true
+o.propertyIsEnumerable('metodo');                 // regresa true
+o.propertyIsEnumerable('propiedad');              // regresa false
+
+o.propiedad = 'es enumerable';
+
+o.propertyIsEnumerable('propiedad');              // regresa true
+
+// Regresan false por estar en el prototipo el cual no es
+// considerado por propertyIsEnumerable (a pesar de que las dos ultimas son
+// iterables con un for-in)
+o.propertyIsEnumerable('prototype');   // regresa false (como en JS 1.8.1/FF3.6)
+o.propertyIsEnumerable('constructor'); // regresa false
+o.propertyIsEnumerable('firstMethod'); // regresa false
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial.
{{SpecName('ES5.1', '#sec-15.2.4.7', 'Object.prototype.propertyIsEnumerable')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-object.prototype.propertyisenumerable', 'Object.prototype.propertyIsEnumerable')}}{{Spec2('ES6')}} 
+ +

Compatibilidad de navegadores

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

Notas específicas para Gecko

+ +

Al inicio de JavaScript 1.8.1 (in Firefox 3.6), propertyIsEnumerable('prototype') regresa false en lugar de true; esto hace que el resultado cumpla con la especificación de ECMAScript 5.

+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/proto/index.html b/files/es/web/javascript/reference/global_objects/object/proto/index.html new file mode 100644 index 0000000000..24055ac261 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/proto/index.html @@ -0,0 +1,128 @@ +--- +title: Object.prototype.__proto__ +slug: Web/JavaScript/Referencia/Objetos_globales/Object/proto +translation_of: Web/JavaScript/Reference/Global_Objects/Object/proto +--- +
+

Advertencia: Cambiar la propiedad [[Prototype]] de un objeto es, por como los navegadores modernos optimizan las propiedades de acceso, una operación muy lenta en todos los navegadores y motores JavaScript. Los efectos en el rendimiento de alterar la herencia son muchos y delicados, y no se limita simplemente al tiempo que necesita la asignación obj.__proto__ = ... sentencia,  sin embargo afecta a  cualquier código que tiene acceso a  cualquier objeto cuya propiedad [[Prototype]] ha sido alterada, por lo que se debe de tener mucho cuidado.

+ +

Si el rendimiento en tu aplicación es necesario, deberías evitar modificar la propiedad [[Prototype]] de un objeto. En su lugar, crea un objecto nuevo con la propiedad [[Prototype]] deseada usando {{jsxref("Object.create()")}}.

+
+ +
+

Advertencia: Mientras Object.prototype.__proto__ es soportado hoy día por la mayoría de navegadores, su existencia y comportamiento exacto solo ha sido estandarizado en la especificación ECMAScript 6 como una característica de legado y para asegurar la compatibilidad entre los navegadores web. Para tener un mejor soporte, es recomendable que se utilice {{jsxref("Object.getPrototypeOf()")}} para obtener el prototipo de un objeto.

+
+ +
{{JSRef}}
+ +

La propiedad __proto__ de {{jsxref("Object.prototype")}} es una propiedad llamada de acceso (una función getter y también función setter) que provee acceso al interior de [[Prototype]] (ya sea un objeto o {{jsxref("Global_Objects/null", "null")}}) del objeto a través del cual se accede a ella.

+ +

El uso de la propiedad __proto__ es polémico actualmente, y está rechazado. Originalmente, nunca fué incluído en la especificación de EcmaScript, pero los navegadores modernos decidieron implementarla de todas maneras. Sólo actualmente, la propiedad __proto__ ha sido estandarizada en la especificación del lenguaje ECMAScript 6, para asegurar la compatibilidad entre navegadores, por lo tanto, esta será soportada en el futuro. Actualmente está obsoleta  en favor de {{jsxref("Object.getPrototypeOf")}}/{{jsxref("Reflect.getPrototypeOf")}} y {{jsxref("Object.setPrototypeOf")}}/{{jsxref("Reflect.setPrototypeOf")}} (aunque todavía establecer el [[Prototype]] de un objeto es una operación muy lenta, por lo que si nos preocupa el rendimiento, debemos de evitarlo).

+ +

La propiedad __proto__ puede ser usada también en un objeto definido de forma literal, para establecer el [[Prototype]] en la creación de este, como alternativa a {{jsxref("Object.create()")}}. Ver: object initializer / literal syntax.

+ +

Síntaxis

+ +
var shape = {};
+var circle = new Circle();
+
+// Establecer el objeto prototype.
+// OBSOLETO. Esto es solo un ejemplo. NO HACER ESTO en código real.
+shape.__proto__ = circle;
+
+// Obtener el objeto prototype
+console.log(shape.__proto__ === circle); // true
+
+ +

Nota: esto es, dos guiones bajos, seguidos de cinco carácteres "proto", seguido de dos guiones bajos mas.

+ +

Descripción

+ +

La función getter __proto__el valor interno del [[Prototype]] de un objeto. Para objetos creados usando un objeto literal, el valor es {{jsxref("Object.prototype")}}. Para objetos creados usando literales de array, este valor es {{jsxref("Array.prototype")}}. Para funciones, este valor {{jsxref("Function.prototype")}}. Para objetos creados utilizando el operador new fun, donde fun es una función constructora incluída en JavaScript  ({{jsxref("Array")}}, {{jsxref("Boolean")}}, {{jsxref("Date")}}, {{jsxref("Number")}}, {{jsxref("Object")}}, {{jsxref("String")}}, etcétera—incluyendo nuevos contrusctores conforme JavaScript evoluciona), este valor es fun.prototype.  (Esto es, si el constructor no devuelve un objeto de forma explícita, o el fun.prototype ha sido reasignado desde que la instancia fué creada).

+ +

El __proto__ setter la mutación del objeto [[Prototype]] de un objeto. El objeto debe ser extensible según {{jsxref("Object.isExtensible()")}}: si no, un {{jsxref("Global_Objects/TypeError", "TypeError")}} es lanzado. El valor proveído debe ser un objeto o {{jsxref("Global_Objects/null", "null")}}. Provetendo otro tipo de valor no hará nada.

+ +

Para entender como los prototipos son usados para herencia, ver el artículo Inheritance and the prototype chain.

+ +

La propiedad __proto__ es una simple propiedad de acceso a {{jsxref("Object.prototype")}} que consiste en una función getter y setter. Un acceso a la propiedad  __proto__ que eventualmente consulta {{jsxref("Object.prototype")}} encontrará esta propiedad, pero un acceso que no consulta {{jsxref("Object.prototype")}} no lo encontrará. Si alguna otra propiedad __proto__ es encontrada antes {{jsxref("Object.prototype")}} es consultada, esta propiedad sera ocultada por la encontrada en {{jsxref("Object.prototype")}}.

+ +

Especificaciones

+ + + + + + + + + + + + + + +
EspecificacionesEstadoComentario
{{SpecName('ES6', '#sec-additional-properties-of-the-object.prototype-object', 'Object.prototype.__proto__')}}{{Spec2('ES6')}}Incluída en el anexo (normativa) para características de legado ECMAScript para navegadores web (observar que la especificación de codificación es lo que ya está en las implementaciones).
+ +

Compatibilidad de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatIE("11")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Notas de compatibilidad

+ +

Mientras la especificación ECMAScript 2015 (ES6) dicta que el soporte para __proto__ es requerido solo para navegadores web (a pesar de ser normativo), otros medios pueden soportarlo por uso de legado.

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/seal/index.html b/files/es/web/javascript/reference/global_objects/object/seal/index.html new file mode 100644 index 0000000000..42c89175a3 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/seal/index.html @@ -0,0 +1,167 @@ +--- +title: Object.seal() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/seal +translation_of: Web/JavaScript/Reference/Global_Objects/Object/seal +--- +
{{JSRef}}
+ +

El método Object.seal() sella un objeto, previniendo que puedan añadirse nuevas propiedades al mismo, y marcando todas las propiedades existentes como no-configurables. Los valores de las propiedades presentes permanecen pudiendo cambiarse en tanto en cuanto dichas propiedades sean de escritura.

+ +

Sintaxis

+ +
Object.seal(obj)
+ +

Parámetros

+ +
+
obj
+
El objeto que ha de ser sellado.
+
+ +

Descripción

+ +

Por defecto, los objetos son {{jsxref("Object.isExtensible()", "extensibles", "", 1)}} (pueden añadirse nuevas propiedades a los mismos). Sellar un objeto previene que nuevas propiedades puedan ser añadidas y marca todas las propiedades existentes como no-configurables. Esto tiene el efecto de hacer fijo e inmutable el juego de propiedades del objeto. Al hacer todas las propiedades no-configurables previene también que se puedan convertir propiedades de datos en propiedades de acceso y viceversa, pero no evita que los valores de las propiedades de datos puedan ser modificados. Intentar eliminar o añadir propiedades a un objeto sellado, o convertir una propiedad de datos en una propiedad de acceso fallará, bien silenciadamente o bien produciendo un {{jsxref("TypeError")}} (más frecuentemente, aunque no exclusivamente, con código en {{jsxref("Strict_mode", "modo estricto", "", 1)}}).

+ +

La cadena de prototiado permanece inalterada. No obstante, la propiedad {{jsxref("Object.proto", "__proto__")}} {{deprecated_inline}} es también sellada.

+ +

Retorna una referencia al Objeto pasado.

+ +

Ejemplos

+ +
var obj = {
+  prop: function() {},
+  foo: 'bar'
+};
+
+// Pueden añadirse nuevas propiedades, propiedades existentes pueden cambiarse o eliminarse.
+obj.foo = 'baz';
+obj.lumpy = 'woof';
+delete obj.prop;
+
+var o = Object.seal(obj);
+
+o === obj; // true
+Object.isSealed(obj); // === true
+
+// Sigue permitido modificar valores de propiedades en un objeto sellado.
+obj.foo = 'quux';
+
+// Pero no puedes convertir propiedades de datos en propiedades de acceso, ni viveversa
+Object.defineProperty(obj, 'foo', { get: function() { return 'g'; } }); // produce un TypeError
+
+// Ahora, cualquier cambio que no sea modificar valores de propiedades fallará
+obj.quaxxor = 'the friendly duck'; // silenciosamente, no añadirá la propiedad
+delete obj.foo; // silenciosamente, no eliminará la propiedad
+
+// ...y en modo estricto esos intentos producirán TypeErrors.
+function fail() {
+  'use strict';
+  delete obj.foo; // genera un TypeError
+  obj.sparky = 'arf'; // genera un TypeError
+}
+fail();
+
+// Intentar añadir propiedades mediante Object.defineProperty también fallará.
+Object.defineProperty(obj, 'ohai', { value: 17 }); // genera un TypeError
+Object.defineProperty(obj, 'foo', { value: 'eit' }); // cambia el valor exisitente
+
+ +

Notas

+ +

En ES5, si el argumento de este método no es un objeto (una primitiva), se generará un {{jsxref("TypeError")}}. En ES6, un argumento no-objeto será tratado como si se sellase un objeto ordinario, símplemente retornándolo.

+ +
Object.seal(1);
+// TypeError: 1 no es un objeto (código ES5)
+
+Object.seal(1);
+// 1                             (código ES6)
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoObservaciones
{{SpecName('ES5.1', '#sec-15.2.3.8', 'Object.seal')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en  JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.seal', 'Object.seal')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-object.seal', 'Object.seal')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
PrestaciónChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("6")}}{{CompatGeckoDesktop("2.0")}}{{CompatIE("9")}}{{CompatOpera("12")}}{{CompatSafari("5.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
PrestiaciónAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/setprototypeof/index.html b/files/es/web/javascript/reference/global_objects/object/setprototypeof/index.html new file mode 100644 index 0000000000..ff32fc5738 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/setprototypeof/index.html @@ -0,0 +1,237 @@ +--- +title: Object.setPrototypeOf() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/setPrototypeOf +tags: + - ECMAScript6 + - Experimental + - JavaScript + - Método(2) + - Objeto +translation_of: Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf +--- +

{{JSRef}}

+ +

El método Object.setPrototypeOf() establece el prototipo (p.e., la propiedad interna [[Prototype]]) de un objeto especificado a otro objeto o sino establece {{jsxref("null")}}.

+ +
+

Adverdencia: Cambiar la propiedad [[Prototype]] de un objeto, debido a la naturaleza de la optimización del acceso a propiedades de los motores modernos de JavaScript, es una operación bastante lenta, en todo todo navegador y motor de JavaScript. Los efectos sobre el rendimiento al alterar la herencia son sutiles y vastos., y no están limitados a simplemente el tiempo gastado en la sentencia obj.__proto___ = ...,  but may extend to any code that has access to any object whose [[Prototype]] has been altered. If you care about performance you should avoid setting the [[Prototype]] of an object. Instead, create a new object with the desired [[Prototype]] using {{jsxref("Object.create()")}}.

+
+ +

Sintaxis

+ +
Object.setPrototypeOf(obj, prototype);
+ +

Parámetros

+ +
+
obj
+
El objeto al que se ha de establecer el prototipo.
+
prototype
+
El nuevo prototipo del objeto, (un objeto o {{jsxref("null")}}).
+
+ +

Descripción

+ +

Arroja una excepción del tipo {{jsxref("TypeError")}} si el objeto cuyo [[Prototype]] se va a modificar no es extensible de acuerdo con {{jsxref("Object.isExtensible()")}}. No hace nada si el parametro prototype no es un objeto o {{jsxref("null")}} (p.e., número, cadena, booleano, o {{jsxref("undefined")}}). De cualquier otra forma, este método cambia la propiedad [[Prototype]] del obj al valor nuevo.

+ +

Object.setPrototypeOf() está en el último borrador del estandar ECMAScript6. Es considerado generalmente la manera adecuada de establecer el prototipo de un objeto, contra la propiedad más controversial {{jsxref("Object.prototype.__proto__")}}.

+ +

Ejemplos

+ +
var dict = Object.setPrototypeOf({}, null);
+
+ +

Polyfill

+ +

Utilizando la vieja propiedad {{jsxref("Object.prototype.__proto__")}}, podemos definir facilmente Object.setPrototypeOf si aún no está disponible:

+ +
// Solo funciona en Chrome y FirefoxOnly works in Chrome y FireFox, no funciona en IE:
+Object.setPrototypeOf = Object.setPrototypeOf || function(obj, proto) {
+  obj.__proto__ = proto;
+  return obj;
+}
+
+ +

Agregando cadenas de prototipo

+ +

Una combinación de Object.getPrototypeOf() y {{jsxref("Object.proto", "Object.prototype.__proto__")}} permite agregar una nueva cadena de prototipos al nuevo  prototipo del objeto.

+ +
/**
+*** Object.appendChain(@object, @prototype)
+*
+* Agrega el primer prototipo no-nativo de una cadena a un nuevo prototipo.
+* Retorna @object (si es Primitivo (Primitive value) será transoformado a 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")
+*
+*  Agrega el primer prototipo no-nativo de una cadena a la Function.prototype nativa del objeto, luego agrega una
+* ueva Function(["@arg"(s)], "@function_body") a la cadena.
+* Retorna la función.
+*
+**/
+
+Object.appendChain = function(oChain, oProto) {
+  if (arguments.length < 2) {
+    throw new TypeError('Object.appendChain - Not enough arguments');
+  }
+  if (typeof oProto === 'number' || typeof oProto === 'boolean') {
+    throw new TypeError('second argument to Object.appendChain must be an object or a string');
+  }
+
+  var oNewProto = oProto,
+      oReturn = o2nd = oLast = oChain instanceof this ? oChain : new oChain.constructor(oChain);
+
+  for (var o1st = this.getPrototypeOf(o2nd);
+    o1st !== Object.prototype && o1st !== Function.prototype;
+    o1st = this.getPrototypeOf(o2nd)
+  ) {
+    o2nd = o1st;
+  }
+
+  if (oProto.constructor === String) {
+    oNewProto = Function.prototype;
+    oReturn = Function.apply(null, Array.prototype.slice.call(arguments, 1));
+    this.setPrototypeOf(oReturn, oLast);
+  }
+
+  this.setPrototypeOf(o2nd, oNewProto);
+  return oReturn;
+}
+
+ +

Uso

+ +

Primer ejemplo: Agregar una cadena a un prototipo

+ +
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 ejemplo: Transofrmando un valor Primitivo en una instancia de su constructor y agregar su cadena al prototipo

+ +
function Symbol() {
+  this.isSymbol = 'yes';
+}
+
+var nPrime = 17;
+
+console.log(typeof nPrime); // 'number'
+
+var oPrime = Object.appendChain(nPrime, new Symbol());
+
+console.log(oPrime); // '17'
+console.log(oPrime.isSymbol); // 'yes'
+console.log(typeof oPrime); // 'object'
+
+ +

Tercer ejemplo: Agregando una cadena a la Function.prototype de un objeto y agregando una nueva función a la cadena

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

Especificaciones

+ + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-object.setprototypeof', 'Object.setProtoypeOf')}}{{Spec2('ES6')}}Initial definition.
+ +

Compatibilidad del navegador

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome("34")}}{{CompatGeckoDesktop("31")}}{{CompatIE("11")}}{{CompatVersionUnknown}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("31")}}{{CompatUnknown}}{{CompatNo}}{{CompatNo}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/tolocalestring/index.html b/files/es/web/javascript/reference/global_objects/object/tolocalestring/index.html new file mode 100644 index 0000000000..d0de708b98 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/tolocalestring/index.html @@ -0,0 +1,106 @@ +--- +title: Object.prototype.toLocaleString() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/toLocaleString +translation_of: Web/JavaScript/Reference/Global_Objects/Object/toLocaleString +--- +
{{JSRef}}
+ +

El método toLocaleString() devuelve un string que representa a un objeto. Este método está pensado para ser redefinido en los objetos derivados, para los propósitos específicos de cada configuración regional.

+ +
{{EmbedInteractiveExample("pages/js/object-prototype-tolocalestring.html")}}
+ + + +

Sintaxis

+ +
objeto.toLocaleString()
+ +

Valor de retorno

+ +

Un string que representa al objeto.

+ +

Descripción

+ +

{{jsxref("Object")}}'s toLocaleString devuelve el resultado de llamar a {{jsxref("Object.toString", "toString()")}}.

+ +

Se proporciona esta función para que los objetos dispongan de un método toLocaleString genérico, aunque puede que no todos la utilicen. Véase la lista siguiente.

+ +

Objetos que redefinen toLocaleString

+ + + +

Ejemplos

+ +

Redefinición de toLocaleString() en Array

+ +

En los objetos Array se puede utilizar toLocaleString() para imprimir los valores del array como un string, con indicadores opcionales de configuración regional (como símbolos de moneda) aplicados.

+ +

Por ejemplo:

+ +
const unArray = [4, 7, 10];
+
+let preciosEnEuros = unArray.toLocaleString('fr', { style: 'currency', currency: 'EUR'});
+// "4,00 €,7,00 €,10,00 €"
+ +

Redefinición de toLocaleString() para Date

+ +

En los objetos Date se usa toLocaleString() para imprimir fechas en un formato adecuado a la configuración regional.

+ +

Por ejemplo:

+ +
const unaFecha = new Date(Date.now());
+// "2020-07-07T19:51:44.046Z"
+
+let fechaAleman = unaFecha.toLocaleString('de');
+// "7.7.2020, 21:55:22"
+
+var fechaFrances= unaFecha.toLocaleString('fr');
+//"07/07/2020 à 21:55:22"
+ +

Redefinición de toLocaleString() para Number

+ +

En los objetos Number se usa toLocaleString() para imprimir números de forma adecuada a la configuración regional, p. ej. para usar los separadores de miles correctos.

+ +

Por ejemplo:

+ +
const unNumero = 2901234564;
+// "2901234564"
+
+let numeroAleman = unNumero.toLocaleString('de');
+// "2.901.234.564"
+
+let numeroFrances = unNumero.toLocaleString('fr');
+// "2 901 234 564"
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-object.prototype.tolocalestring', 'Object.prototype.toLocaleString')}}
+ +

Compatibilidad con navegadores

+ + + +

{{Compat("javascript.builtins.Object.toLocaleString")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/tosource/index.html b/files/es/web/javascript/reference/global_objects/object/tosource/index.html new file mode 100644 index 0000000000..713a176b0b --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/tosource/index.html @@ -0,0 +1,126 @@ +--- +title: Object.prototype.toSource() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/toSource +translation_of: Web/JavaScript/Reference/Global_Objects/Object/toSource +--- +
{{JSRef}} {{non-standard_header}}
+ +

El método toSource() regresa una cadena representando el código fuente del objeto.

+ +

Syntax

+ +
Object.toSource();
+obj.toSource();
+
+ +

Return value

+ +

Una cadena representando el código fuente del objeto.

+ +

Description

+ +

EL método toSource() regresa los siguientes valores:

+ + + +

Puedes llamar el método toSource() durante el depurado para examinar el contenido de un objeto.

+ +

Sobreescribir el método toSource()

+ +

Es seguro para los objetos sobreescribir el método toSource(). Por ejemplo:

+ +
function Person(name) {
+  this.name = name;
+}
+
+Person.prototype.toSource = function Person_toSource() {
+  return 'new Person(' + uneval(this.name) + ')';
+};
+
+console.log(new Person('Joe').toSource()); // ---> nueva Person("Joe")
+
+ +

Métodos de toSource() incorporados

+ +

Cada tipo fundamental de JavaScript tiene su propio método toSource().  Éstos objetos son:

+ + + +

Limitaciones en objetos cíclicos

+ +

EN el caso de los objetos que contienen referencia a ellos mismos, por ejemplo, una lista enlazada cíclicamente o un árbol que puede ser atravesado en ambas formas, toSource() no recreará la referencia a sí mismo, a partir de Firefox 24. Por ejemplo:

+ +
var obj1 = {};
+var obj2 = { a: obj1 };
+obj1.b = obj2;
+
+console.log('Ciclico: ' + (obj1.b.a == obj1));
+
+var objSource = obj1.toSource(); // regresa "({b:{a:{}}})"
+
+obj1 = eval(objSource);
+
+console.log('Ciclico: ' + (obj1.b.a == obj1));
+
+ +

Si una estructura cíclica es usada y se necesita el método toSource(), el objeto debe proveer la sobreescritura de toSource(), ya sea usando una referencia a un constructor o proveyendo una función anónima.

+ +

Ejemplos

+ +

Usando toSource()

+ +

El código siguiente define el objeto tipo Dog y crea a theDog, un objeto 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');
+
+ +

Llamando al método toSource() de theDog muestra el código JavaScript que define al objeto:

+ +
theDog.toSource();
+// returns ({name:"Gabby", breed:"Lab", color:"chocolate", sex:"female"})
+
+ +

Especificaciones

+ +

No es parte de ningún estándar. Implementado en JavaScript 1.3.

+ +

Compatibilidad en navegadores

+ +
+ + +

{{Compat("javascript.builtins.Object.toSource")}}

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/tostring/index.html b/files/es/web/javascript/reference/global_objects/object/tostring/index.html new file mode 100644 index 0000000000..a9ffc11535 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/tostring/index.html @@ -0,0 +1,70 @@ +--- +title: Object.prototype.toString() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/toString +tags: + - JavaScript + - Method + - Object + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Object/toString +--- +
{{JSRef("Objetos_globales", "Object")}}
+ +

Resumen

+ +

Devuelve una cadena que representa al objeto.

+ +

Sintaxis

+ +

toString()

+ +

Descripción

+ +

Todos los objetos tienen un método toString que se llama automáticamente cuando el objeto se representa como un valor de texto o cuando un objeto se referencia de tal manera que se espera una cadena. Por defecto, el método toString es heredado por todos los objetos que descienden de Object. Si este método no se sobreescribe en el objeto personalizado, toString devuelve {{ mediawiki.external('objecttype ') }}, donde type es el tipo de objeto. El siguiente código ilustra esto:

+ +
var objeto = new Object();
+objeto.toString(); // Devuelve [object Object]
+
+ +

Ejemplos

+ +

Sobreescribir el método por defecto toString

+ +

Puede crear una función que sea llamada en lugar del método predeterminado toString. El método toString no toma argumentos y debería devolver una cadena. El método toString que cree puede ser cualquier valor que quiera, pero será más útil si aporta información sobre el objeto.

+ +

El siguiente código define el tipo de objeto Perro y crea elPerro, un objeto de tipo Perro:

+ +
function Perro(nombre,criadero,color,sexo) {
+   this.nombre=nombre;
+   this.criadero=criadero;
+   this.color=color;
+   this.sexo=sexo;
+}
+
+elPerro = new Perro("Gabby","Laboratorio","chocolate","femenino")
+
+ +

Si llama al método toString en el objeto personalizado, devuelve el valor predeterminado heredado de Object:

+ +
elPerro.toString() //devuelve [object Object]
+
+ +

El siguiente código crea y asigna perroToString para sobreescribir el método predeterminado toString. Esta función genera una cadena que contiene nombre, criadero, color, y sexo del objeto, en la forma "propiedad = valor;".

+ +
Perro.prototype.toString = function perroToString() {
+  var retorno = "Perro " + this.nombre + " es " + this.sexo + " " + this.color + " " + this.criadero;
+  return retorno;
+}
+
+ +

Con el código precedente en su lugar, cualquier vez que se use elDog en un contexto de una cadena, JavaScript automáticamente llamará a la función perroToString, la cuál devuelve la siguiente cadena:

+ +
Perro Gabby es femenino chocolate Laboratorio
+
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/valueof/index.html b/files/es/web/javascript/reference/global_objects/object/valueof/index.html new file mode 100644 index 0000000000..5cf466078d --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/valueof/index.html @@ -0,0 +1,157 @@ +--- +title: Object.prototype.valueOf() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/valueOf +translation_of: Web/JavaScript/Reference/Global_Objects/Object/valueOf +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

El método valueOf() retorna el valor primitivo del objeto especificado.

+ +

Sintaxis

+ +
object.valueOf()
+ +

Valor de retorno

+ +

El valor primitivo del objeto especificado.

+ +

 

+ +

{{EmbedInteractiveExample("pages/js/object-prototype-valueof.html")}}

+ +

 

+ +

Descripción

+ +

JavaScript utiliza el método valueOf para convertir un objeto a un valor primitivo. Raramente usted necesitará invocar el método valueOf por su cuenta; JavaScript lo realizará de forma automática cuando encuentre un objeto, donde un valor primitivo es esperado.

+ +

Por defecto, el método valueOf es heredado por cada objeto descendiente de {{jsxref("Object")}}. Cada objeto incorporado en el núcleo del lenguaje sobreescribe este método para retornar un valor apropiado. Si un objeto no tiene un valor primitivo, valueOf devuelve el objeto en sí.

+ +

Puede utilizar valueOf dentro de su propio código para convertir un objeto incorporado en el núcleo del lenguaje en un valor primitivo. Cuando usted crea un objeto personalizado, puede sobreescribir el comportamiento de Object.prototype.valueOf() para invocar un método personalizado, en vez de utilizar el método por defecto {{jsxref("Object")}}.

+ +

Sobreescribiendo valueOf para objetos personalizados

+ +

Puede crear una función para ser invocada en lugar de utilizar el método valueOf por defecto. Su función no debe contener ningún parámetro.

+ +

Suponga que tiene un objeto de tipo myNumberType y usted quiere crear un método valueOf para este. El código a continuación asigna una función personalizada al método valueOf:

+ +
myNumberType.prototype.valueOf = function() { return customPrimitiveValue; };
+ +

Al tener el código anterior funcionando, cada vez que un objeto de tipo myNumberType es utilizado en un contexto donde deba ser representado por un valor primitivo, JavaScript automáticamente invocará la función definida en el código anterior.

+ +

El método valueOf es invocado usualmente por JavaScript pero usted puede invocarlo directamente como sigue a continuación:

+ +
myNumber.valueOf()
+ +
+

Nota: Objetos en contextos de string realizan la conversión a string a través del método {{jsxref("Object.toString", "toString()")}} , el cual, es diferente de {{jsxref("String")}} para convertir objetos a primitivos string utilizando el método valueOf. Todos los objetos pueden ser convertidos a string, si solo "[object type]". Pero muchos objetos no se pueden convertir a number, boolean o function.

+
+ +

Ejemplos

+ +

Utilizando valueOf

+ +
function myNumberType(n) {
+    this.number = n;
+}
+
+myNumberType.prototype.valueOf = function() {
+    return this.number;
+};
+
+myObj = new myNumberType(4);
+myObj + 3; // 7
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoCommentario
ECMAScript 1ra Edición.EstándarDefinición inicial. Implementado en 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')}}    
+ +

Compatibilidad con Navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ElementoChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ElementoAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/object/values/index.html b/files/es/web/javascript/reference/global_objects/object/values/index.html new file mode 100644 index 0000000000..81b56ef1e0 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/values/index.html @@ -0,0 +1,97 @@ +--- +title: Object.values() +slug: Web/JavaScript/Referencia/Objetos_globales/Object/values +tags: + - JavaScript + - Objeto + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/values +--- +
{{JSRef}}
+ +

El método Object.values() devuelve un array con los valores correspondientes a las propiedades enumerables de un objeto. Las propiedades son devueltas en el mismo orden a como lo haría un bucle {{jsxref("Statements/for...in", "for...in")}} (la única diferencia es que un bucle for-in también enumera las propiedades en la cadena de prototipo de un objeto).

+ +

{{EmbedInteractiveExample("pages/js/object-values.html")}}

+ +

Sintaxis

+ +
Object.values(obj)
+ +

Parámetros

+ +
+
obj
+
Objeto cuyas propiedades enumerables serán devueltas.
+
+ +

Valor devuelto

+ +

Un array con las propiedades enumerables del objeto pasado como parámetro.

+ +

Descripción

+ +

El método Object.values() devuelve un array cuyos elementos son valores de propiedades enumarables que se encuentran en el objeto. El orden de las propiedades es el mismo que el dado cuando se recorre el objeto de forma manual.

+ +

Ejemplos

+ +
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 con una ordenación aleatoria de las claves
+var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
+console.log(Object.values(an_obj)); // ['b', 'c', 'a']
+
+// getFoo no es una propiedade enumerable, por lo que como se observa, no se devuelve
+var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
+my_obj.foo = 'bar';
+console.log(Object.values(my_obj)); // ['bar']
+
+// parámetros que no son Objetos se fuerzan a que se comporten como tal
+console.log(Object.values('foo')); // ['f', 'o', 'o']
+
+ +

Polyfill

+ +

Para dar soporte compatible con  Object.values() a entornos antiguos que no la soportan de forma nativa, puedes encontrar un Polyfill en tc39/proposal-object-values-entries o en los repositorios es-shims/Object.values.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ESDraft', '#sec-object.values', 'Object.values')}}{{Spec2('ESDraft')}}Definición inicial.
{{SpecName('ES8', '#sec-object.values', 'Object.values')}}{{Spec2('ES8')}}
+ +

Compatibilidad en navegadores

+ +
{{Compat("javascript.builtins.Object.values")}}
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/parsefloat/index.html b/files/es/web/javascript/reference/global_objects/parsefloat/index.html new file mode 100644 index 0000000000..16510d882d --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/parsefloat/index.html @@ -0,0 +1,58 @@ +--- +title: parseFloat() +slug: Web/JavaScript/Referencia/Objetos_globales/parseFloat +translation_of: Web/JavaScript/Reference/Global_Objects/parseFloat +--- +
{{jsSidebar("Objects")}}
+ +

Resumen

+ +

Convierte (parsea) un argumento de tipo cadena y devuelve un número de punto flotante.

+ +

Sintaxis

+ +

parseFloat(cadena )

+ +

Parámetros

+ +
+
cadena
+
Una cadena que representa al valor que se desea convertir.
+
+ +

Descripción

+ +

parseFloat es una función de alto nivel y no está asociada a ningún objeto.

+ +

parseFloat convierte su argumento, una cadena, y devuelve un número de punto flotante. Si encuentra un carácter diferente al signo (+ o -), numerales (0-9), un punto decimal o un exponente, devuelve el valor hasta ese punto e ignora ese carácter y todos los correctos siguientes. Se permiten espacios anteriores y posteriores.

+ +

Si el primer carácter no se puede convertir a número, parseFloat devuelve NaN.

+ +

Para fines aritméticos, el valor NaN no es un número para ninguna base. Puede llamar a la función {{jsxref("isNaN")}} para determinar si el resultado de parseFloat es NaN. Si se pasa NaN en operaciones aritméticas, la operación resultante también será NaN.

+ +

Ejemplos

+ +

Ejemplo: parseFloat devolviendo un número

+ +

Todos los siguientes ejemplos devuelven 3.14.

+ +
parseFloat("3.14");
+parseFloat("314e-2");
+parseFloat("0.0314E+2"); v
+var cadena = "3.14"; parseFloat(cadena);
+parseFloat("3.14más caracteres no dígitos");
+ +

Example: parseFloat returning NaN

+ +

El siguiente ejemplo devuelve NaN:

+ +
parseFloat("FF2");
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/parseint/index.html b/files/es/web/javascript/reference/global_objects/parseint/index.html new file mode 100644 index 0000000000..30e3874a34 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/parseint/index.html @@ -0,0 +1,89 @@ +--- +title: parseInt() +slug: Web/JavaScript/Referencia/Objetos_globales/parseInt +translation_of: Web/JavaScript/Reference/Global_Objects/parseInt +--- +
{{jsSidebar("Objects")}}
+ +

Resumen

+ +

Convierte (parsea) un argumento de tipo cadena y devuelve un entero de la base especificada.

+ +

Sintaxis

+ +
parseInt(string, base);
+ +

Parámetros

+ +
+
cadena
+
Una cadena que representa el valor que se desea convertir.
+
+ +
+
base
+
Un entero que representa la base de la mencionada cadena.
+
+ +

Descripción

+ +

parseInt es una función de alto nivel y no está asociada a ningún objeto.

+ +

La función parseInt comprueba el primer argumento, una cadena, e intenta devolver un entero de la base especificada. Por ejemplo, una base de 10 indica una conversión a número decimal, 8 octal, 16 hexadecimal, y así sucesivamente. Para bases superiores a 10, las letras del alfabeto indican numerales mayores que 9. Por ejemplo, para números hexadecimales (base 16), se utiliza de la A hasta la F.

+ +

Si parseInt encuentra un carácter que no es un numeral de la base especificada, lo ignora a él y a todos los caracteres correctos siguientes, devolviendo el valor entero obtenido hasta ese punto. parseInt trunca los números en valores enteros. Se permiten espacios anteriores y posteriores.

+ +

Si no se especifica la base o se especifica como 0, JavaScript asume lo siguiente:

+ + + +

Si el primer carácter no se puede convertir en número, parseInt devuelve NaN.

+ +

Para fines aritméticos, el valor NaN no es un número en ninguna base. Puede llamar a la función {{jsxref("Objetos_globales/isNaN", "isNaN")}} para determinar se el resultado de parseInt es NaN. Si se pasa NaN en operaciones aritméticas, la operación resultante también será NaN.

+ +

Para convertir números a su literal cadena en una base en particular, utilice intValue.toString(base).

+ +

Ejemplos

+ +

Ejemplo: Usando parseInt

+ +

Todos los siguientes ejemplos devuelven 15:

+ +
parseInt("F", 16);
+parseInt("17", 8);
+parseInt("15", 10);
+parseInt(15.99, 10);
+parseInt("FXX123", 16);
+parseInt("1111", 2);
+parseInt("15*3", 10);
+parseInt("12", 13);
+
+ +

Todos los siguientes ejemplos devuelven NaN:

+ +
parseInt("Hello", 8); // No es un número en absoluto
+parseInt("0x7", 10);  // No es de base 10
+parseInt("546", 2);   // Los dígitos no son válidos para representaciones binarias.
+
+ +

Incluso aunque la base especificada es diferente, todos los siguientes ejemplos devuelven 17 ya que el argumento cadena comienza por "0x".

+ +
parseInt("0x11", 16);
+parseInt("0x11", 0);
+parseInt("0x11");
+
+ +

Véase También

+ + diff --git a/files/es/web/javascript/reference/global_objects/promise/all/index.html b/files/es/web/javascript/reference/global_objects/promise/all/index.html new file mode 100644 index 0000000000..79a16aadc6 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/promise/all/index.html @@ -0,0 +1,123 @@ +--- +title: Promise.all() +slug: Web/JavaScript/Referencia/Objetos_globales/Promise/all +tags: + - ECMAScript6 + - JavaScript + - Método(2) + - Promesa + - Promise +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/all +--- +
{{JSRef}}
+ +

El método Promise.all(iterable) devuelve una promesa que termina correctamente cuando todas las promesas en el argumento iterable han sido concluídas con éxito, o bien rechaza la petición con el motivo pasado por la primera promesa que es rechazada.

+ +

Sintaxis

+ +
Promise.all(iterable);
+ +
+
iterable
+
Un objeto iterable, por ejemplo un {{jsxref("Array")}}. Vea iterable.
+
+ +

Valor devuelto

+ +

Una {{jsxref("Promise")}}  que se cumplirá cuando todas las promesas del argumento iterable hayan sido cumplidas, o bien se rechazará cuando alguna de ellas se rechace.

+ +

Descripción

+ +

Promise.all  se cumple cuando todas las promesas del iterable dado se han cumplido, o es rechazada si alguna promesa no se cumple. {{jsxref("Promise.resolve")}}.

+ +

Si alguna de las promesas pasadas en el argumento iterable falla, la promesa all es rechazada inmediatamente con el valor de la promesa que fué rechazada, descartando todas las demás promesas hayan sido o no cumplidas. Si se pasa un array vacío a all , la promesa se cumple inmediatamente.

+ +

Ejemplos

+ +

Uso de Promise.all

+ +

Promise.all espera a que todo se cumpla (o bien al primer rechazo).

+ +
var p1 = Promise.resolve(3);
+var p2 = 1337;
+var p3 = new Promise((resolve, reject) => {
+  setTimeout(resolve, 100, "foo");
+});
+
+Promise.all([p1, p2, p3]).then(values => {
+  console.log(values); // [3, 1337, "foo"]
+});
+ +

Promise.all comportamiento de fallo-rápido

+ +

Promise.all se rechaza si uno de los elementos ha sido rechazado y Promise.all falla rápido: Si tienes cuatro promesas que se resuelven después de un timeout y una de ellas falla inmediatamente, entonces Promise.all se rechaza inmediatamente.

+ +
var p1 = new Promise((resolve, reject) => {
+  setTimeout(resolve, 1000, "one");
+});
+var p2 = new Promise((resolve, reject) => {
+  setTimeout(resolve, 2000, "two");
+});
+var p3 = new Promise((resolve, reject) => {
+  setTimeout(resolve, 3000, "three");
+});
+var p4 = new Promise((resolve, reject) => {
+  setTimeout(resolve, 4000, "four");
+});
+var p5 = new Promise((resolve, reject) => {
+  reject("reject");
+});
+
+Promise.all([p1, p2, p3, p4, p5]).then(values => {
+  console.log(values);
+}, reason => {
+  console.log(reason)
+});
+
+//From console:
+//"reject"
+
+// Evenly, it's possible to use .catch
+Promise.all([p1, p2, p3, p4, p5]).then(values => {
+  console.log(values);
+}).catch(reason => {
+  console.log(reason)
+});
+
+//From console:
+//"reject"
+
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónStatusComentario
{{SpecName('ES6', '#sec-promise.all', 'Promise.all')}}{{Spec2('ES6')}}Initial definition in an ECMA standard.
{{SpecName('ESDraft', '#sec-promise.all', 'Promise.all')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad entre navegadores

+ +

{{Compat("javascript/promise","Promise.all")}}

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/promise/catch/index.html b/files/es/web/javascript/reference/global_objects/promise/catch/index.html new file mode 100644 index 0000000000..a99a071979 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/promise/catch/index.html @@ -0,0 +1,183 @@ +--- +title: Promise.prototype.catch() +slug: Web/JavaScript/Referencia/Objetos_globales/Promise/catch +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/catch +--- +
{{JSRef}}
+ +

El método catch() retorna una Promise y solo se ejecuta en los casos en los que la promesa se marca como Reject. Se comporta igual que al llamar {{jsxref("Promise.then", "Promise.prototype.then(undefined, onRejected)")}} (de hecho, al llamar obj.catch(onRejected) internamente llama a obj.then(undefined, onRejected)).

+ +

Síntaxis

+ +
p.catch(onRejected);
+
+p.catch(function(reason) {
+   // rejection
+});
+
+ +

Parámetros

+ +
+
onRejected
+
Una {{jsxref("Function")}} llamada cuando la Promise es rechazada. Esta función tiene un argumento: +
+
reason
+
La razón del rechazo.
+
+ La promesa devuelta por catch() es rechazada si onRejected lanza un error o retorna una Promise que a su vez se rechaza, de cualquier otra manera la Promise es resuelta.
+
+ +

Valor de Retorno (Return)

+ +

Internamente llama a Promise.prototype.then en el objeto sobre el que se llama, pasándole el parámetro undefined y el manejador onRejected recibido; luego devuelve un valor de esa llamada (que es una {{jsxref("Promise")}}).

+ +

Demostración de la llamada interna:

+ +
// overriding original Promise.prototype.then/catch just to add some logs
+(function(Promise){
+    var originalThen = Promise.prototype.then;
+    var originalCatch = Promise.prototype.catch;
+
+    Promise.prototype.then = function(){
+        console.log('> > > > > > called .then on %o with arguments: %o', this, arguments);
+        return originalThen.apply(this, arguments);
+    };
+    Promise.prototype.catch = function(){
+        console.log('> > > > > > called .catch on %o with arguments: %o', this, arguments);
+        return originalCatch.apply(this, arguments);
+    };
+
+})(this.Promise);
+
+
+
+// calling catch on an already resolved promise
+Promise.resolve().catch(function XXX(){});
+
+// logs:
+// > > > > > > called .catch on Promise{} with arguments: Arguments{1} [0: function XXX()]
+// > > > > > > called .then on Promise{} with arguments: Arguments{2} [0: undefined, 1: function XXX()]
+
+ +

Descripción

+ +

El método catch puede ser muy útil para el manejo de errores en tu código con promesas.

+ +

Ejemplos

+ +

Usando y encadenando el método catch

+ +
var p1 = new Promise(function(resolve, reject) {
+  resolve('Success');
+});
+
+p1.then(function(value) {
+  console.log(value); // "Success!"
+  throw 'oh, no!';
+}).catch(function(e) {
+  console.log(e); // "oh, no!"
+}).then(function(){
+  console.log('after a catch the chain is restored');
+}, function () {
+  console.log('Not fired due to the catch');
+});
+
+// The following behaves the same as above
+p1.then(function(value) {
+  console.log(value); // "Success!"
+  return Promise.reject('oh, no!');
+}).catch(function(e) {
+  console.log(e); // "oh, no!"
+}).then(function(){
+  console.log('after a catch the chain is restored');
+}, function () {
+  console.log('Not fired due to the catch');
+});
+
+ +

Trucos cuando lanzamos errores

+ +
// Hacer un throw llamará al método catch
+var p1 = new Promise(function(resolve, reject) {
+  throw 'Uh-oh!';
+});
+
+p1.catch(function(e) {
+  console.log(e); // "Uh-oh!"
+});
+
+// Los errores que se lancen dentro de funciones asíncronas actuarán como errores no capturados
+var p2 = new Promise(function(resolve, reject) {
+  setTimeout(function() {
+    throw 'Uncaught Exception!';
+  }, 1000);
+});
+
+p2.catch(function(e) {
+  console.log(e); // Nunca será llamado
+});
+
+// Errores lanzados después de resolve() serán omitidos
+var p3 = new Promise(function(resolve, reject) {
+  resolve();
+  throw 'Silenced Exception!';
+});
+
+p3.catch(function(e) {
+   console.log(e); // Nunca será llamado
+});
+ +

Si se resuelve la promesa

+ +
// Crea una promesa que no llamará a onReject
+var p1 = Promise.resolve("calling next");
+
+var p2 = p1.catch(function (reason) {
+    // Nunca será llamado
+    console.log("catch p1!");
+    console.log(reason);
+});
+
+p2.then(function (value) {
+    console.log("next promise's onFulfilled"); /* next promise's onFulfilled */
+    console.log(value); /* calling next */
+}, function (reason) {
+    console.log("next promise's onRejected");
+    console.log(reason);
+});
+ +

Especificación

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-promise.prototype.catch', 'Promise.prototype.catch')}}{{Spec2('ES2015')}}Definición inicial en el standar ECMA.
{{SpecName('ESDraft', '#sec-promise.prototype.catch', 'Promise.prototype.catch')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad de navegadores

+ + + +

{{Compat("javascript.builtins.promise.catch")}}

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/promise/finally/index.html b/files/es/web/javascript/reference/global_objects/promise/finally/index.html new file mode 100644 index 0000000000..8d21aa785a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/promise/finally/index.html @@ -0,0 +1,95 @@ +--- +title: Promise.prototype.finally() +slug: Web/JavaScript/Referencia/Objetos_globales/Promise/finally +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/finally +--- +
{{JSRef}}
+ +

El método finally() devuelve una {{jsxref("Promise")}}. Cuando la promesa se resuelve, sea exitosa o rechazada, la función de callback específicada será ejecutada. Esto ofrece una forma de ejecutar código sin importar como se haya resuelto la promesa.

+ +

Esto ayuda a evitar tener código duplicado tanto en el {{jsxref("Promise.then", "then()")}} como en el {{jsxref("Promise.catch", "catch()")}}.

+ +

Sintaxis

+ +
p.finally(alFinalizar);
+
+p.finally(function() {
+   // finalizada (exitosa o rechazada)
+});
+
+ +

Parámetros

+ +
+
alFinalizar
+
Una {{jsxref("Function")}} llamada cuando la Promise se resuelve con éxito o falla.
+
+ +

Valor de retorno

+ +

Devuelve una {{jsxref("Promise")}} cuyo finally fue fijado a la función específicada en alFinalizar.

+ +

Descripción

+ +

El método finally() puede ser de utilidad si quieres hacer algún proceso o limpieza una vez que la promesa termina, sin importar su resultado.

+ +

Utilizar finally() es muy similar a llamar .then(onFinally, onFinally), sin embargo tiene algunas diferencias:

+ + + +
+

Nota: Un throw (o retornar una promesa rechazada) en el callback finally va a rechazar la nueva promesa con la razón de rechazo especificada al llamar throw().

+
+ +

Ejemplos

+ +
let isLoading = true;
+
+fetch(myRequest).then(function(response) {
+    var contentType = response.headers.get("content-type");
+    if(contentType && contentType.includes("application/json")) {
+      return response.json();
+    }
+    throw new TypeError("Oops, no hemos obtenido un JSON!");
+  })
+  .then(function(json) { /* procesar el JSON */ })
+  .catch(function(error) { console.log(error); /* esta línea podría arrojar error, e.g. cuando console = {} */ })
+  .finally(function() { isLoading = false; });
+
+
+ +

Especificaciones

+ + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ESDraft', '#sec-promise.prototype.finally', 'Promise.prototype.finally')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad en navegador

+ + + +

{{Compat("javascript.builtins.Promise.finally")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/promise/index.html b/files/es/web/javascript/reference/global_objects/promise/index.html new file mode 100644 index 0000000000..58a2319c2f --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/promise/index.html @@ -0,0 +1,222 @@ +--- +title: Promise +slug: Web/JavaScript/Referencia/Objetos_globales/Promise +tags: + - ECMAScript6 + - JavaScript + - Promesa + - Promise +translation_of: Web/JavaScript/Reference/Global_Objects/Promise +--- +
{{JSRef}}
+ +

El objeto Promise (Promesa) es usado para computaciones asíncronas. Una promesa representa un valor que puede estar disponible ahora, en el futuro, o nunca.

+ +

Sintaxis

+ +
new Promise( /* ejecutor */ function(resolver, rechazar) { ... } );
+ +

Parámetros

+ +
+
ejecutor
+
Una función con los argumentos resolver y rechazar. La función ejecutor es ejecutada inmediatamente por la implementación de la Promesa, pasándole las funciones resolver y rechazar (el ejecutor es llamado incluso antes de que el constructor de la Promesa devuelva el objeto creado). Las funciones resolver y rechazar, al ser llamadas, resuelven o rechazan la promesa, respectivamente. Normalmente el ejecutor inicia un trabajo asíncrono, y luego, una vez que es completado, llama a la función resolver para resolver la promesa o la rechaza si ha ocurrido un error.
+ Si un error es lanzado en la función ejecutor, la promesa es rechazada y el valor de retorno del ejecutor es rechazado.
+
+ +

Descripción

+ +

Una Promesa es un proxy para un valor no necesariamente conocido en el momento que es creada la promesa. Permite asociar manejadores que actuarán asincrónicamente sobre un eventual valor en caso de éxito, o la razón de falla en caso de una falla. Esto permite que métodos asíncronos devuelvan valores como si fueran síncronos: en vez de inmediatamente retornar el valor final, el método asíncrono devuelve una promesa de suministrar el valor en algún momento en el futuro.

+ +

Una Promesa se encuentra en uno de los siguientes estados:

+ + + +

Una promesa pendiente puede ser cumplida con un valor, o rechazada con una razón (error). Cuando cualquiera de estas dos opciones sucede, los métodos asociados, encolados por el método then de la promesa, son llamados. (Si la promesa ya ha sido cumplida o rechazada en el momento que es anexado su correspondiente manejador, el manejador será llamado, de tal manera que no exista una condición de carrera entre la operación asíncrona siendo completada y los manejadores siendo anexados)

+ +

Como los métodos {{jsxref("Promise.then", "Promise.prototype.then()")}} y {{jsxref("Promise.catch", "Promise.prototype.catch()")}} retornan promesas, éstas pueden ser encadenadas.

+ +

+ +
+

No confundir con: Varios lenguajes tienen mecanismos para evaluar perezosamente y postergar una computación, a los que también les llaman "promesas" - p.ej.: Scheme. Las promesas en JavaScript representan procesos que ya están sucediendo, y pueden ser encadenados con funciones callback. Si lo que se busca es evaluar perezosamente una expresión, se debe considerar la función flecha (arrow function) sin argumentos: f = () => expresión para crear la expresión evaluada perezosamente, y f() para evaluar.

+
+ +
+

Nota: Una promesa se dice que está determinada (settled) si se ha cumplido o si se ha rechazado, pero no está pendiente. Con promesas también se usa el término resuelta — esto significa que la promesa está determinada, o que se encuentra bloqueada dentro de una cadena de promesas. States and fates de Domenic Denicola contiene mas detalles sobre la terminología de las promesas.

+
+ +

Propiedades

+ +
+
Promise.length
+
Propiedad longitud cuyo valor es siempre 1 (numero de argumentos del constructor).
+
{{jsxref("Promise.prototype")}}
+
Representa el prototipo del constructor Promise.
+
+ +

Métodos

+ +
+
{{jsxref("Promise.all", "Promise.all(iterable)")}}
+
Devuelve una de dos promesas: una que se cumple cuando todas las promesas en el argumento iterable han sido cumplidas, o una que se rechaza tan pronto como una de las promesas del argumento iterable es rechazada. Si la promesa retornada es cumplida, lo hace con un arreglo de los valores de las promesas cumplidas en el mismo orden definido en el iterable. Si la promesa retornada es rechazada, es rechazada con la razón de la primera promesa rechazada en el iterable. Este método puede ser útil para agregar resultados de múltiples promesas
+
{{jsxref("Promise.race", "Promise.race(iterable)")}}
+
Devuelve una promesa que se cumple o rechaza tan pronto como una de las promesas del iterable se cumple o rechaza, con el valor o razón de esa promesa.
+
+ +
+
{{jsxref("Promise.reject", "Promise.reject(reason)")}}
+
Devuelve un objeto Promise que es rechazado con la razón dada.
+
+ +
+
{{jsxref("Promise.resolve", "Promise.resolve(value)")}}
+
Devuelve un objeto Promise que es resuelto con el valor dado. Si el valor es un thenable (p.ej. tiene un método then), la promesa devuelta "seguirá" este thenable, adoptando su eventual estado; de lo contrario la promesa devuelta será cumplida con el valor. Generalmente, si se quiere saber si un valor es una promesa o no, se podría usar - {{jsxref("Promise.resolve", "Promise.resolve(value)")}} y trabajar con el valor devuelto como una promesa.
+
+ +

Prototipo Promise

+ +

Propiedades

+ +

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

+ +

Métodos

+ +

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

+ +

Ejemplos

+ +

Súper simple (¡10 líneas!)

+ +
let miPrimeraPromise = new Promise((resolve, reject) => {
+  // Llamamos a resolve(...) cuando lo que estabamos haciendo finaliza con éxito, y reject(...) cuando falla.
+  // En este ejemplo, usamos setTimeout(...) para simular código asíncrono.
+  // En la vida real, probablemente uses algo como XHR o una API HTML5.
+  setTimeout(function(){
+    resolve("¡Éxito!"); // ¡Todo salió bien!
+  }, 250);
+});
+
+miPrimeraPromise.then((successMessage) => {
+  // succesMessage es lo que sea que pasamos en la función resolve(...) de arriba.
+  // No tiene por qué ser un string, pero si solo es un mensaje de éxito, probablemente lo sea.
+  console.log("¡Sí! " + successMessage);
+});
+ +

Creando una Promise

+ +

Este pequeño ejemplo muestra el mecanismo de una Promise. El método testPromise() se llama cada vez que se pulsa el {{HTMLElement("button")}}. Esto crea una promesa que se cumplirá, aplicando {{domxref("window.setTimeout()")}}, al contador de la promesa (partiendo desde 1) aleatoriamente cada 1-3 segundos. El constructor de la Promise() es usado para crear dicha promesa.

+ +

El cumplimiento de la promesa simplemente se registra, a través de una llamada de retorno al cumplirse utilizando {{jsxref("Promise.prototype.then()","p1.then()")}}. A los pocos registros muestra cómo la parte síncrona del método se desacopla de la finalización asíncrona de la promesa.

+ +
'use strict';
+var promiseCount = 0;
+
+function testPromise() {
+  var thisPromiseCount = ++promiseCount;
+
+  var log = document.getElementById('log');
+  log.insertAdjacentHTML('beforeend', thisPromiseCount +
+    ') Comenzó (<small>Comenzó el código sincrónico</small>)<br/>');
+
+  // Hacemos una promesa: prometemos un contador numérico de esta promesa,
+  // empezando por 1 (después de esperar 3s)
+  var p1 = new Promise(
+    // La función resolvedora es llamada con la
+    // habilidad de resolver o rechazar la promesa
+    function(resolve, reject) {
+      log.insertAdjacentHTML('beforeend', thisPromiseCount +
+        ') Comenzó la promesa (<small>Código asíncrono comenzó</small>)<br/>');
+
+      // Esto es solo un ejemplo para crear asincronismo
+      window.setTimeout(
+        function() {
+          // ¡Cumplimos la promesa!
+          resolve(thisPromiseCount);
+        }, Math.random() * 2000 + 1000);
+    }
+  );
+
+  // Definimos qué hacer cuando la promesa es resuelta/cumplida con la llamada
+  // al método then(). La llamada al método catch() define qué hacer si
+  // la promesa es rechazada
+  p1.then(
+    // Registrar el valor de la promesa cumplida
+    function(val) {
+      log.insertAdjacentHTML('beforeend', val +
+        ') Promesa cumplida (<small>Código asíncrono terminado.</small>)<br/>');
+    })
+  .catch(
+    // Registrar la razón del rechazo
+    function(reason) {
+      console.log('Manejar promesa rechazada ('+reason+') aquí.');
+    });
+
+  log.insertAdjacentHTML('beforeend', thisPromiseCount +
+    ') Promesa hecha (<small>Código síncrono terminado. </small>)<br/>');
+}
+
+ + + +

Este ejemplo es ejecutado cuando pulsas el botón. Necesitas un navegador que soporte Promise. Al pulsar el botón varias veces en un período corto de tiempo, verás las diferentes promesas siendo cumplidas una tras otra.

+ +

{{EmbedLiveSample("Creando_una_Promise", "500", "200")}}

+ +

Cargando una imagen con XHR

+ +

Otro ejemplo sencillo utilizando Promise y XMLHttpRequest para cargar una imagen está disponible en el repositorio js-examples de MDN en GitHub. También puedes verlo en acción. Cada paso está comentado y te permite seguir de cerca la arquitectura detrás de las Promesas y XHR.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-promise-objects', 'Promise')}}{{Spec2('ES2015')}}Initial definition in an ECMA standard.
{{SpecName('ESDraft', '#sec-promise-objects', 'Promise')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad de navegadores

+ + + +

{{Compat("javascript/promise")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/promise/race/index.html b/files/es/web/javascript/reference/global_objects/promise/race/index.html new file mode 100644 index 0000000000..f24be82a9c --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/promise/race/index.html @@ -0,0 +1,112 @@ +--- +title: Promise.race() +slug: Web/JavaScript/Referencia/Objetos_globales/Promise/race +tags: + - ECMAScript2015 + - ECMAScript6 + - JavaScript + - Promesa + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/race +--- +
{{JSRef}}
+ +

El método Promise.race(iterable) retorna una promesa que se cumplirá o no tan pronto como una de las promesas del argumento iterable se cumpla o se rechace, con el valor o razón de rechazo de ésta.

+ +

Sintaxis

+ +
Promise.race(iterable);
+ +

Parámetros

+ +
+
iterable
+
Un objeto iterable , como por ejemplo un {{jsxref("Array")}}. Vea iterable.
+
+ +

Retorna

+ +

Una {{jsxref("Promise")}} que se cumple o se rechaza tan pronto como una de las promesas dadas en el argumento iterable se cumple o se rechaza.

+ +

Descripción

+ +

La función race retorna una Promise que se comporta como tal. Se cumple o se rechaza, lo que suceda antes en alguno de sus argumentos (iterable).

+ +

Ejemplos

+ +

Usando Promise.race – ejemplos con setTimeout

+ +
var p1 = new Promise( (resolve, reject) => {
+    setTimeout(resolve, 500, "uno");
+});
+var p2 = new Promise( (resolve, reject) => {
+    setTimeout(resolve, 100, "dos");
+});
+
+Promise.race([p1, p2]).then( value => {
+  console.log(value); // "dos"
+  // Ambas se resuelven, pero la p2 antes.
+});
+
+  // Ejemplo con un resolve y un reject en el mismo método race.
+var p3 = new Promise( (resolve, reject) => {
+    setTimeout(resolve, 100, "tres");
+});
+var p4 = new Promise( (resolve, reject) => {
+    setTimeout(reject, 500, "cuatro");
+});
+
+Promise.race([p3, p4]).then( value => {
+  console.log(value); // "tres"
+  // p3 es mas rápida, así que se resuelve el race
+}, reason => {
+  // No es llamado
+});
+
+var p5 = new Promise( (resolve, reject) => {
+    setTimeout(resolve, 500, "cinoc");
+});
+var p6 = new Promise( (resolve, reject) => {
+    setTimeout(reject, 100, "seis");
+});
+
+Promise.race([p5, p6]).then( value => {
+  // No es llamado
+}, reason => {
+  console.log(reason); // "seis"
+  // p6 es mas rápida, así que se rechaza
+});
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónStatusComentar
{{SpecName('ES6', '#sec-promise.race', 'Promise.race')}}{{Spec2('ES6')}}Initial definition in an ECMA standard.
{{SpecName('ESDraft', '#sec-promise.race', 'Promise.race')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad entre navegadores

+ +

{{Compat}}

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/promise/reject/index.html b/files/es/web/javascript/reference/global_objects/promise/reject/index.html new file mode 100644 index 0000000000..70505d7471 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/promise/reject/index.html @@ -0,0 +1,80 @@ +--- +title: Promise.reject() +slug: Web/JavaScript/Referencia/Objetos_globales/Promise/reject +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/reject +--- +
{{JSRef}}
+ +

El método Promise.reject(reason) retorna un objeto Promise que es rechazado por la razón específicada.

+ +
{{EmbedInteractiveExample("pages/js/promise-reject.html")}}
+ + + + + + + +

Sintaxis

+ +
Promise.reject(reason);
+ +

Parámetros

+ +
+
reason
+
Razón por la cual esta {jsxref("Promise")}} fue rechazada.
+
+ +

Return value

+ +

Un objeto {{jsxref("Promise")}} que es rechazado por la razón específicada.

+ +

Descripción

+ +

La función estática Promise.reject retorna un objecto {{jsxref("Promise")}} que es rechazado. Para fines de depuración y captura selectiva de error, se suele pasar por el parámetro reason un  instanceof {{jsxref("Error")}}.

+ +

Ejemplos

+ +

Usando el método estático Promise.reject()

+ +
Promise.reject(new Error('fail')).then(function() {
+  // no entra en esta función
+}, function(error) {
+  console.log(error); // Stacktrace
+});
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-promise.reject', 'Promise.reject')}}{{Spec2('ES2015')}}Initial definition in an ECMA standard.
{{SpecName('ESDraft', '#sec-promise.reject', 'Promise.reject')}}{{Spec2('ESDraft')}}
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Promise.reject")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/promise/resolve/index.html b/files/es/web/javascript/reference/global_objects/promise/resolve/index.html new file mode 100644 index 0000000000..e91dc7b80d --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/promise/resolve/index.html @@ -0,0 +1,150 @@ +--- +title: Promise.resolve() +slug: Web/JavaScript/Referencia/Objetos_globales/Promise/resolve +tags: + - ECMAScript 2015 + - JavaScript + - Promise + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/resolve +--- +
{{JSRef}}
+ +

El método Promise.resolve(value) retorna un objeto {{jsxref("Promise")}} que es resuelto con el valor dado. Si el valor es una promise, esa promise es devuelta; si el valor es un thenable (si tiene un {{jsxref("Promise.then", "método \"then\"")}}), el valor devuelto le seguirá a ese thenable, adoptando su estado; de otro modo la promise devuelta estará completada con el valor.

+ +
{{EmbedInteractiveExample("pages/js/promise-resolve.html")}}
+ + + +

Sintáxis

+ +
Promise.resolve(value);
+Promise.resolve(promise);
+Promise.resolve(thenable);
+
+ +

Parámetros

+ +
+
value
+
Argumento por resolver por esta Promise. También puede ser una Promise o un thenable por resolver.
+
+ +

Valor retornado

+ +

Una {{jsxref("Promise")}} que es resuelta con el valor dado, o con la promise pasada como valor, si el valor era un objeto promise.

+ +

Descripción

+ +

La función estática Promise.resolve retorna una Promise que es resuelta.

+ +

Ejemplos

+ +

Utilizando el método estático Promise.resolve

+ +
Promise.resolve('Éxito').then(function(value) {
+  console.log(value); // "Éxito"
+}, function(value) {
+  // no es llamada
+});
+
+ +

Resolviendo un arreglo

+ +
var p = Promise.resolve([1,2,3]);
+p.then(function(v) {
+  console.log(v[0]); // 1
+});
+ +

Resolviendo otra Promise

+ +
var original = Promise.resolve(33);
+var cast = Promise.resolve(original);
+cast.then(function(value) {
+  console.log('valor: ' + value);
+});
+console.log('original === cast ? ' + (original === cast));
+
+// registros, en orden:
+// original === cast ? true
+// valor: 33
+
+ +

El orden invertido de los registros se debe al hecho de que los handler then sean llamados asíncronamente. Vea cómo funciona then aquí.

+ +

Resolviendo thenables y arrojando Errores

+ +
// Resolviendo un objeto thenable
+var p1 = Promise.resolve({
+  then: function(onFulfill, onReject) { onFulfill('¡Completada!'); }
+});
+console.log(p1 instanceof Promise) // true, objeto convertido en una Promise
+j
+p1.then(function(v) {
+    console.log(v); // "¡Completada!"
+  }, function(e) {
+    // no es llamada
+});
+
+// Thenable arroja antes del callback
+// Rechaza la Promise
+var thenable = { then: function(resolve) {
+  throw new TypeError('Arrojando');
+  resolve('Resolviendo');
+}};
+
+var p2 = Promise.resolve(thenable);
+p2.then(function(v) {
+  // no es llamada
+}, function(e) {
+  console.log(e); // TypeError: Arrojando
+});
+
+// Thenable arroja después del callback
+// Resuelve la Promise
+var thenable = { then: function(resolve) {
+  resolve('Resolviendo');
+  throw new TypeError('Arrojando');
+}};
+
+var p3 = Promise.resolve(thenable);
+p3.then(function(v) {
+  console.log(v); // "Resolviendo"
+}, function(e) {
+  // no es llamada
+});
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-promise.resolve', 'Promise.resolve')}}{{Spec2('ES2015')}}Definición inicial en un estándar de ECMA.
{{SpecName('ESDraft', '#sec-promise.resolve', 'Promise.resolve')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ + + +

{{Compat("javascript.builtins.Promise.resolve")}}

+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/global_objects/promise/then/index.html b/files/es/web/javascript/reference/global_objects/promise/then/index.html new file mode 100644 index 0000000000..8998f3b180 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/promise/then/index.html @@ -0,0 +1,302 @@ +--- +title: Promise.prototype.then() +slug: Web/JavaScript/Referencia/Objetos_globales/Promise/then +tags: + - ECMAScript 2015 + - JavaScript + - Method + - Promise + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/then +--- +
{{JSRef}}
+ +

El método then() retorna una {{domxref("Promesa")}}. Recibe dos argumentos: funciones callback  para los casos de éxito y fallo de Promise.

+ +

Nota: Si ambos argumentos son omitidos, o se proveen métodos que no sean funciones, se creará una nueva Promesa sin handlers adicionales, que simplemente adoptan el estado final de la Promesa que entonces es llamado. Si el primer argumento es omitido o se provee una no-función, el nuevo Promise que es creado simplemente adopta el  estado cumplido del Promise que entonces es llamado (si se convierte en fulfilled). Si el segundo argument es omitido o se provee una no-función, el nuevo Promise que es creado simplemente adopta  el estado de rechazo del Promesa que entonces es llamado (si se convierte en rechazado).

+ +

Sintaxis

+ +
p.then(alCumplir[, enRechazo]);
+
+p.then(function(value) {
+   // cumplimiento
+  }, function(reason) {
+  // rechazo
+});
+
+ +

Parámetros

+ +

Retorna un Promise el cual es determinado por las funciones input:

+ + + +
+
alCumplir {{optional_inline}}
+
Una Función es llamada si la Promesa se cumple. Esta función tiene un argumento, el valor de cumplimiento. Si no es una función, se reemplaza internamente con una función de "Identidad"  (devuelve el argumento recibido).
+
enRechazo {{optional_inline}}
+
Una Función es llamada si la Promesa es rechazada. Esta función tiene un argumento, la razón de rechazo. Si no es una función, se reemplaza internamente con una función "Lanzador" (lanza un error que recibió como argumento).
+
+ +

Valor de retorno

+ +

Un Promise en estado pendiente. La función de control (alCumplir o enRechazo) es llamada de forma asíncrona (tan pronto como el stack se vacíe). Después de la invocación de la función de control pueden darse diferentes casos:

+ + + +

Veamos un ejemplo para demostrar la asincronía del método then.

+ +
// al usar una promesa revuelta, el bloque 'then' se lanzará automáticamente,
+// pero sus funciones controladoras se lanzarán asíncronamente,
+// como demuestran los console.logs
+var promResuelta = Promise.resolve(33);
+
+var thenProm = promResuelta.then(función(valor){
+    console.log("ésto será invocado cuando acabe el stack principal. El valor recibido y devuelto es: " + valor);
+    return valor;
+});
+// imprimimos al momento el valor de thenProm()
+console.log(thenProm);
+
+// usando setTimeout podemos posponer la ejecución de una función al momento en el que el stack quede vacío.
+setTimeout(función(){
+    console.log(thenProm);
+});
+
+
+// logs, en orden:
+// Promise {[[EstadoPromise¡]]: "pendiente", [[ValorPromise]]: undefined}
+// "ésto será invocado cuando acabe el stack principal. El valor recibido y devuelto es: "33"
+// Promise {[[EstadoPromise]]: "resuelta", [[ValorPromise]]: 33}
+ +

Descripción

+ +

Ya que los métodos then y {{jsxref("Promise.prototype.catch()")}} devuelven promesas, pueden ser encadenados — una operación llamada composición.

+ +

Ejemplos

+ +

Usando el metodo 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!
+});
+
+ +

Encadenamiento

+ +

El método then devuelve una Promise que permite encadenar métodos.

+ +

Puedes pasar una lambda a then y si devuelve una promesa, una Promise equivalente será expuesta al then subsecuente en la cadena de métodos. El fragmento incluido debajo simula un código asíncrono mediante la función setTimeout

+ +
Promise.resolve('foo')
+  // 1. Recibe "foo", concatena "bar" con él, y resuelve la cadena con el siguiente 'then'
+  .then(función(hilo) {
+    return new Promise(function(resolve, reject) {
+      setTimeout(función() {
+        hilo += 'bar';
+        resolve(hilo);
+      }, 1);
+    });
+  })
+  // 2. recibe "foobar", registra una función de llamada para opear sobre ese hilo
+  // e imprimirlo en la consola, pero no antes de devolver el hilo sin modificar
+  // en la resolución del siguiente 'then'
+  .then(función(hilo) {
+    setTimeout(función() {
+      hilo += 'baz';
+      console.log(hilo);
+    }, 1)
+    return hilo;
+  })
+  // 3. imprime mensajes útiles sobre cómo funcionará el código en esta sección
+  // antes de que el hilo se procese por el código de prueba
+  // antes del bloque 'then'.
+  .then(función(hilo) {
+    console.log("Último Then:  oops... no me he molestado en instanciar y devolver " +
+                "una promesa en el then anterior, así que la secuencia puede ser un poco " +
+                "sorprendente");
+
+    // Observemos que `string` no incluye el trozo 'baz' en éste punto. Ésto ocurre
+    // porque lo hemos contruido para que ocurra asíncronamente con una función setTimeout
+    console.log(hilo);
+});
+ +

Cuando un valor sencillamente se devuelve desde un lambda then , devolverá un Promise.resolve(<valor devuelto por el controlador que haya sido invocado>).

+ +
var p2 = nueva Promise(function(resolver, rechazar) {
+  resolver(1);
+});
+
+p2.then(función(valor) {
+  console.log(valor); // 1
+  return valor + 1;
+}).then(function(value) {
+  console.log(valor + '- Este uso síncrono es prácticamente inútil'); // 2- Este uso síncrono es prácticamente inútil
+});
+
+p2.then(función(valor) {
+  console.log(valor); // 1
+});
+
+ +

Una llamada a  then devolverá una promesa rechazada si la función lanza un error o devuelve una Promise rechazada.

+ +
Promise.resolve()
+  .then( () => {
+    // Hace que .then() devuelva una promera rechazada
+    throw new Error('Oh no!');
+  })
+  .then( () => {
+    console.log( 'No invocada.' );
+  }, error => {
+    console.error( 'Función de rechazo llamada: ', error );
+});
+ +

En cualquier otro caso, una Promise en resolución será devuelta. El el siguiente ejemplo, el primer then() devolverá un 42 dentro de una Promise en resolución, aunque la Promise de la cadena fue rechazada.

+ +
Promise.reject()
+  .then( () => 99, () => 42 ) // enRechazo devuelve 42, que está dentro de una Promise en resolución
+  .then( respuesta => console.log( 'Resuelta con ' + respuesta ) ); // Resuelta con 42
+ +

En la práctica, suele ser preferible capturar promesas rechazadas en lugar de utilizar la sintaxis de dos casos de then, como demostramos abajo.

+ +
Promise.resolve()
+  .then( () => {
+    // Hace que .then() devuelva una promesa rechazada
+    throw new Error('Oh no!');
+  })
+  .catch( error => {
+    console.error( 'función enRechazo invocada: ', error );
+  })
+  .then( () => {
+    console.log( "Siempre soy invocada, incluso si la promesa del then previo es rechazada" );
+  });
+ +


+ También puedes usar encadenamiento para implementar una función con una API basada en promesas, sobre una función del mismo tipo.

+ +
function traer_datos_actuales() {
+  // La función fetch() de la API devuelve una Promesa. Esta función
+  // expone una API similar, pero el valor de cumplimiento
+  // de la Promesa de esta función tiene más tareas
+  // implementadas sobre ella.
+  return fetch('datos_actuales.json').then((response) => {
+    if (response.headers.get('content-type') != 'application/json') {
+      throw new TypeError();
+    }
+    var j = response.json();
+    // podríamos hacer algo con j
+    return j; // valor de cumplimiento asignado al usuario de
+              // fetch_datos_actuales().then()
+  });
+}
+
+ +

Si alCumplir devuelve una promesa, el valor de retorno de then será resuelto o rechazado por la promesa.

+ +
function resolverDespues(resolver, reject) {
+  setTimeout(función () {
+    resolver(10);
+  }, 1000);
+}
+function rechazarDespues(resolver, reject) {
+  setTimeout(function () {
+    resolver(new Error('Error'));
+  }, 1000);
+}
+
+var p1 = Promise.resolve('foo');
+var p2 = p1.then(función() {
+  // Devuelve la promesa aquí, que será resuelta igualada a 10 tras 1 segundo
+  return new Promise(resolverDespues);
+});
+p2.then(función(v) {
+  console.log('resuelta', v);  // "resuelta", 10
+}, función(e) {
+  // no invocada
+  console.log('rechazada', e);
+});
+
+var p3 = p1.then(funcion() {
+ // Devuelve la promesa aquí, que será rechazada con 'Error' despues de 1 segundo
+ return new Promise(rechazarDespues);
+});
+p3.then(funcion(v) {
+ // no invocada
+  console.log('resuelta', v);
+}, funcion(e) {
+  console.log('rechazada', e); // "rechazada", 'Error'
+});
+
+ +

window.setImmediate estilo polyfill basado en promesas

+ +

Usar un método {{jsxref("Function.prototype.bind()")}}Reflect.apply ({{jsxref("Reflect.apply()")}}) para crear un (non-cancellable) setImmediate-style function.

+ +
const nextTick = (() => {
+  const noop = () => {}; // literally
+  const nextTickPromise = () => Promise.resolve().then(noop);
+
+  const rfab = Reflect.apply.bind; // (thisArg, fn, thisArg, [...args])
+  const nextTick = (fn, ...args) => (
+    fn !== undefined
+    ? Promise.resolve(args).then(rfab(null, fn, null))
+    : nextTickPromise(),
+    undefined
+  );
+  nextTick.ntp = nextTickPromise;
+
+  return nextTick;
+})();
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-promise.prototype.then', 'Promise.prototype.then')}}{{Spec2('ES2015')}}Definición inicial en el estándar ECMA.
{{SpecName('ESDraft', '#sec-promise.prototype.then', 'Promise.prototype.then')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad en navegador

+ + + +

{{Compat("javascript/promise","Promise.prototype.then")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/proxy/handler/getownpropertydescriptor/index.html b/files/es/web/javascript/reference/global_objects/proxy/handler/getownpropertydescriptor/index.html deleted file mode 100644 index 6c050f7f0a..0000000000 --- a/files/es/web/javascript/reference/global_objects/proxy/handler/getownpropertydescriptor/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: handler.getOwnPropertyDescriptor() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/getOwnPropertyDescriptor -tags: - - ECMAScript 2015 - - JavaScript - - Proxy - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor ---- -
{{JSRef}}
- -
El método handler.getOwnPropertyDescriptor() captura {{jsxref("Object.getOwnPropertyDescriptor()")}}.
- -

Sintaxis

- -
var p = new Proxy(target, {
-  getOwnPropertyDescriptor: function(target, prop) {
-  }
-});
-
- -

Parámetros

- -

El método getOwnPropertyDescriptor recibe los siguiente parámetros. this está asociado al handler del proxy.

- -
-
target
-
El objeto destino.
-
prop
-
El nombre de la propiedad cuya descripción ha de ser devuelta.
-
- -

Valor Devuelto

- -

El método getOwnPropertyDescriptor debe devolver un objeto o  undefined.

- -

Descripción

- -

El método handler.getOwnPropertyDescriptor() captura {{jsxref("Object.getOwnPropertyDescriptor()")}}.

- -

Intercepciones

- -

Este método intercepta las siguientes operaciones:

- - - -

Invariantes

- -

Si los siguientes invariantes son violados, el proxy lanzará {{jsxref("TypeError")}}:

- - - -

Ejemplos

- -

El siguiente código captura {{jsxref("Object.getOwnPropertyDescriptor()")}}.

- -
var p = new Proxy({ a: 20}, {
-  getOwnPropertyDescriptor: function(target, prop) {
-    console.log('called: ' + prop);
-    return { configurable: true, enumerable: true, value: 10 };
-  }
-});
-
-console.log(Object.getOwnPropertyDescriptor(p, 'a').value); // "called: a"
-                                                            // 10
-
- -

El siguiente código viola uno de los invariantes definidos previamente.

- -
var obj = { a: 10 };
-Object.preventExtensions(obj);
-var p = new Proxy(obj, {
-  getOwnPropertyDescriptor: function(target, prop) {
-    return undefined;
-  }
-});
-
-Object.getOwnPropertyDescriptor(p, 'a'); // TypeError is thrown
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-getownproperty-p', '[[GetOwnProperty]]')}}{{Spec2('ES2015')}}Definición Inicial.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-getownproperty-p', '[[GetOwnProperty]]')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con buscadores

- -
- - -

{{Compat("javascript.builtins.Proxy.handler.getOwnPropertyDescriptor")}}

-
- -

Ver también

- - diff --git a/files/es/web/javascript/reference/global_objects/proxy/handler/index.html b/files/es/web/javascript/reference/global_objects/proxy/handler/index.html deleted file mode 100644 index 2be6abb116..0000000000 --- a/files/es/web/javascript/reference/global_objects/proxy/handler/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Proxy handler -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler -tags: - - ECMAScript 2015 - - JavaScript - - NeedsTranslation - - Proxy - - TopicStub -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy -translation_of_original: Web/JavaScript/Reference/Global_Objects/Proxy/handler ---- -
{{JSRef}}
- -

The proxy's handler object is a placeholder object which contains traps for {{jsxref("Proxy", "proxies", "", 1)}}.

- -

Methods

- -

All traps are optional. If a trap has not been defined, the default behavior is to forward the operation to the target.

- -
-
{{jsxref("Global_Objects/Proxy/handler/getPrototypeOf", "handler.getPrototypeOf()")}}
-
A trap for {{jsxref("Object.getPrototypeOf")}}.
-
{{jsxref("Global_Objects/Proxy/handler/setPrototypeOf", "handler.setPrototypeOf()")}}
-
A trap for {{jsxref("Object.setPrototypeOf")}}.
-
{{jsxref("Global_Objects/Proxy/handler/isExtensible", "handler.isExtensible()")}}
-
A trap for {{jsxref("Object.isExtensible")}}.
-
{{jsxref("Global_Objects/Proxy/handler/preventExtensions", "handler.preventExtensions()")}}
-
A trap for {{jsxref("Object.preventExtensions")}}.
-
{{jsxref("Global_Objects/Proxy/handler/getOwnPropertyDescriptor", "handler.getOwnPropertyDescriptor()")}}
-
A trap for {{jsxref("Object.getOwnPropertyDescriptor")}}.
-
{{jsxref("Global_Objects/Proxy/handler/defineProperty", "handler.defineProperty()")}}
-
A trap for {{jsxref("Object.defineProperty")}}.
-
{{jsxref("Global_Objects/Proxy/handler/has", "handler.has()")}}
-
A trap for the {{jsxref("Operators/in", "in")}} operator.
-
{{jsxref("Global_Objects/Proxy/handler/get", "handler.get()")}}
-
A trap for getting property values.
-
{{jsxref("Global_Objects/Proxy/handler/set", "handler.set()")}}
-
A trap for setting property values.
-
{{jsxref("Global_Objects/Proxy/handler/deleteProperty", "handler.deleteProperty()")}}
-
A trap for the {{jsxref("Operators/delete", "delete")}} operator.
-
{{jsxref("Global_Objects/Proxy/handler/ownKeys", "handler.ownKeys()")}}
-
A trap for {{jsxref("Object.getOwnPropertyNames")}} and {{jsxref("Object.getOwnPropertySymbols")}}.
-
{{jsxref("Global_Objects/Proxy/handler/apply", "handler.apply()")}}
-
A trap for a function call.
-
{{jsxref("Global_Objects/Proxy/handler/construct", "handler.construct()")}}
-
A trap for the {{jsxref("Operators/new", "new")}} operator.
-
- -

Some non-standard traps are obsolete and have been removed.

- -

Specifications

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots', 'Proxy Object Internal Methods and Internal Slots')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots', 'Proxy Object Internal Methods and Internal Slots')}}{{Spec2('ESDraft')}}The enumerate handler has been removed.
- -

Browser compatibility

- - - -

{{Compat("javascript.builtins.Proxy.handler")}}

- -

See also

- - diff --git a/files/es/web/javascript/reference/global_objects/proxy/handler/set/index.html b/files/es/web/javascript/reference/global_objects/proxy/handler/set/index.html deleted file mode 100644 index ee5ac155e7..0000000000 --- a/files/es/web/javascript/reference/global_objects/proxy/handler/set/index.html +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: handler.set() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/set -tags: - - ECMAScript 2015 - - JavaScript - - Proxy - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set ---- -
{{JSRef}}
- -

El método handler.set() captura las asignaciones de un valor a una determinada propiedad.

- -

Sintaxis

- -
var p = new Proxy(target, {
-  set: function(target, property, value, receiver) {
-  }
-});
-
- -

Parámetros

- -

El método set recibe los siguientes parámetros.this se asocia al handler.

- -
-
target
-
El objeto objetivo.
-
property
-
El nombre de la propiedad a la que se le asignará el valor.
-
value
-
El nuevo valor asignado a la propiedad.
-
receiver
-
El objeto al que originalmente iba dirigida la asignación. Normalmente es el proxy. Sin embargo el manejador o set handler puede ser llamado de forma indirecta a través de un prototipo entre otros.
-
Por ejemplo, suponga que un escript ejecuta la sentencia obj.name = "jen", y obj no es un proxy, y no posee la propiedad .name, pero tiene un proxy en su cadena de prototipos. El manejador set de este proxy será llamado y  obj será pasado como el receiver.
-
- -

Valor Devuelto

- -

El método set debe devolver un valor booleano. Devolverá true para indicar que la asignación se ha llevado a cabo con éxito. Si devuelve false, y la asignación tiene lugar en modo estricto, se lanzará un error de tipo TypeError.

- -

Descripción

- -

El método handler.set captura la asignación de un valor a una propiedad.

- -

Qué intercepta

- -

Las siguientes operaciones son capturadas:

- - - -

Invariantes

- -

Si los siguientes invariantes son violados, el proxy lanzará un {{jsxref("TypeError")}}:

- - - -

Ejemplos

- -

El siguiente código captura la asignación de un valor a una propiedad.

- -
var p = new Proxy({}, {
-  set: function(target, prop, value, receiver) {
-    target[prop] = value
-    console.log('property set: ' + prop + ' = ' + value)
-    return true
-  }
-})
-
-console.log('a' in p)  // false
-
-p.a = 10               // "propiedad asignada: a = 10"
-console.log('a' in p)  // true
-console.log(p.a)       // 10
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver', '[[Set]]')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver', '[[Set]]')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con los buscadores

- -
- - -

{{Compat("javascript.builtins.Proxy.handler.set")}}

-
- -

Ver también

- - diff --git a/files/es/web/javascript/reference/global_objects/proxy/index.html b/files/es/web/javascript/reference/global_objects/proxy/index.html new file mode 100644 index 0000000000..1469b1f138 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/proxy/index.html @@ -0,0 +1,439 @@ +--- +title: Proxy +slug: Web/JavaScript/Referencia/Objetos_globales/Proxy +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy +--- +
+
{{JSRef}}
+
+ +

El objeto Proxy se usa para definir un comportamiento personalizado para operaciones fundamentales (por ejemplo, para observar propiedades, cuando se asignan, enumeración, invocación de funciones, etc).

+ +

Terminología

+ +
+
handler
+
Objeto que gestiona las intercepciones a las propiedades del objeto proxy.
+
traps
+
Son los métodos interceptores que proveen acceso a las propiedades. Es análogo al concepto de traps en los sistemas operativos.
+
target
+
El objeto que virtualiza este objeto. Suele usarse como backend de almacenamiento del proxy. Invariantes (semántica que no acepta cambios) respecto a la no extensibilidad del objeto o propiedades no configurables se verifican contra este target.
+
+ +

Sintaxis

+ +
var p = new Proxy(target, handler);
+
+ +

Parámetros

+ +
+
target
+
Un objeto target (puede ser cualquier órden de objetos, incluyendo un array nativa, funcion o incluso otro proxy) o función que contenga el Proxy
+
handler
+
Un objeto cuyas propiedades son funciones que definen el comportamiento del proxy cuando una operación es realizada en él.
+
+ +

Métodos

+ +
+
{{jsxref("Proxy.revocable()")}}
+
Crea un objeto Proxy revocable
+
+ +

Métodos del objeto handler

+ +

The handler object is a placeholder object which contains traps for Proxy.

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

Ejemplos

+ +

Ejemplo básico

+ +

En este simple ejemplo el número 37 se devuelve como valor predeterminado cuando la propiedad name no se encuentra en el objeto. Se utilizando el manejador 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
+
+ +

No-op forwarding proxy

+ +

In this example, we are using a native JavaScript object to which our proxy will forward all operations that are applied to it.

+ +
var target = {};
+var p = new Proxy(target, {});
+
+p.a = 37; // operation forwarded to the target
+
+console.log(target.a); // 37. The operation has been properly forwarded
+
+ +

Validación

+ +

Con un Proxy, puedes validar fácilmente el valor puesto a un objeto. Este ejemplo usa el handler (manejador) 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');
+      }
+    }
+
+    // The default behavior to store the value
+    obj[prop] = value;
+  }
+};
+
+let person = new Proxy({}, validator);
+
+person.age = 100;
+console.log(person.age); // 100
+person.age = 'young'; // Throws an exception
+person.age = 300; // Throws an exception
+
+ +

Extending constructor

+ +

A function proxy could easily extend a constructor with a new constructor. This example uses the construct and apply handlers.

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

Manipular nodos del DOM

+ +

A veces queremos cambiar el atributo clase de dos elementos diferentes. Aquí se muestra cómo usando el handler (manejador) 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');
+      }
+    }
+
+    // The default behavior to store the value
+    obj[prop] = newval;
+  }
+});
+
+let i1 = view.selected = document.getElementById('item-1');
+console.log(i1.getAttribute('aria-selected')); // 'true'
+
+let i2 = view.selected = document.getElementById('item-2');
+console.log(i1.getAttribute('aria-selected')); // 'false'
+console.log(i2.getAttribute('aria-selected')); // 'true'
+
+ +

Value correction and an extra property

+ +

The products proxy object evaluates the passed value and convert it to an array if needed. The object also supports an extra property called latestBrowser both as a getter and a setter.

+ +
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];
+    }
+
+    // The default behavior to return the value
+    return obj[prop];
+  },
+  set: function(obj, prop, value) {
+    // An extra property
+    if (prop === 'latestBrowser') {
+      obj.browsers.push(value);
+      return;
+    }
+
+    // Convert the value if it is not an array
+    if (typeof value === 'string') {
+      value = [value];
+    }
+
+    // The default behavior to store the value
+    obj[prop] = value;
+  }
+});
+
+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'
+
+ +

Finding an array item object by its property

+ +

This proxy extends an array with some utility features. As you see, you can flexibly "define" properties without using Object.defineProperties. This example can be adapted to find a table row by its cell. In that case, the target will be table.rows.

+ +
let products = new Proxy([
+  { name: 'Firefox', type: 'browser' },
+  { name: 'SeaMonkey', type: 'browser' },
+  { name: 'Thunderbird', type: 'mailer' }
+],
+{
+  get: function(obj, prop) {
+    // The default behavior to return the value; prop is usually an integer
+    if (prop in obj) {
+      return obj[prop];
+    }
+
+    // Get the number of products; an alias of 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];
+      }
+    }
+
+    // Get a product by name
+    if (result) {
+      return result;
+    }
+
+    // Get products by type
+    if (prop in types) {
+      return types[prop];
+    }
+
+    // Get product types
+    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
+
+ +

A complete traps list example

+ +

Now in order to create a complete sample traps list, for didactic purposes, we will try to proxify a non native object that is particularly suited to this type of operation: the docCookies global object created by the "little framework" published on the document.cookie page.

+ +
/*
+  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;
+  },
+});
+
+/* Cookies test */
+
+console.log(docCookies.my_cookie1 = "First value");
+console.log(docCookies.getItem("my_cookie1"));
+
+docCookies.setItem("my_cookie1", "Changed value");
+console.log(docCookies.my_cookie1);
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-proxy-objects', 'Proxy')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-proxy-objects', 'Proxy')}}{{Spec2('ESDraft')}}
+ +

Browser compatibility

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(49.0)}}13 (10586){{ CompatGeckoDesktop("18") }}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatChrome(49.0)}}{{ CompatGeckoDesktop("18") }}13 (10586){{CompatUnknown}}{{CompatUnknown}}
+
+ +

Gecko specific notes

+ + + +

See also

+ + + +

Licensing note

+ +

Some content (text, examples) in this page has been copied or adapted from the ECMAScript wiki which content is licensed CC 2.0 BY-NC-SA.

diff --git a/files/es/web/javascript/reference/global_objects/proxy/proxy/getownpropertydescriptor/index.html b/files/es/web/javascript/reference/global_objects/proxy/proxy/getownpropertydescriptor/index.html new file mode 100644 index 0000000000..6c050f7f0a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/proxy/proxy/getownpropertydescriptor/index.html @@ -0,0 +1,129 @@ +--- +title: handler.getOwnPropertyDescriptor() +slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/getOwnPropertyDescriptor +tags: + - ECMAScript 2015 + - JavaScript + - Proxy + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor +--- +
{{JSRef}}
+ +
El método handler.getOwnPropertyDescriptor() captura {{jsxref("Object.getOwnPropertyDescriptor()")}}.
+ +

Sintaxis

+ +
var p = new Proxy(target, {
+  getOwnPropertyDescriptor: function(target, prop) {
+  }
+});
+
+ +

Parámetros

+ +

El método getOwnPropertyDescriptor recibe los siguiente parámetros. this está asociado al handler del proxy.

+ +
+
target
+
El objeto destino.
+
prop
+
El nombre de la propiedad cuya descripción ha de ser devuelta.
+
+ +

Valor Devuelto

+ +

El método getOwnPropertyDescriptor debe devolver un objeto o  undefined.

+ +

Descripción

+ +

El método handler.getOwnPropertyDescriptor() captura {{jsxref("Object.getOwnPropertyDescriptor()")}}.

+ +

Intercepciones

+ +

Este método intercepta las siguientes operaciones:

+ + + +

Invariantes

+ +

Si los siguientes invariantes son violados, el proxy lanzará {{jsxref("TypeError")}}:

+ + + +

Ejemplos

+ +

El siguiente código captura {{jsxref("Object.getOwnPropertyDescriptor()")}}.

+ +
var p = new Proxy({ a: 20}, {
+  getOwnPropertyDescriptor: function(target, prop) {
+    console.log('called: ' + prop);
+    return { configurable: true, enumerable: true, value: 10 };
+  }
+});
+
+console.log(Object.getOwnPropertyDescriptor(p, 'a').value); // "called: a"
+                                                            // 10
+
+ +

El siguiente código viola uno de los invariantes definidos previamente.

+ +
var obj = { a: 10 };
+Object.preventExtensions(obj);
+var p = new Proxy(obj, {
+  getOwnPropertyDescriptor: function(target, prop) {
+    return undefined;
+  }
+});
+
+Object.getOwnPropertyDescriptor(p, 'a'); // TypeError is thrown
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-getownproperty-p', '[[GetOwnProperty]]')}}{{Spec2('ES2015')}}Definición Inicial.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-getownproperty-p', '[[GetOwnProperty]]')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con buscadores

+ +
+ + +

{{Compat("javascript.builtins.Proxy.handler.getOwnPropertyDescriptor")}}

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/proxy/proxy/index.html b/files/es/web/javascript/reference/global_objects/proxy/proxy/index.html new file mode 100644 index 0000000000..2be6abb116 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/proxy/proxy/index.html @@ -0,0 +1,84 @@ +--- +title: Proxy handler +slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler +tags: + - ECMAScript 2015 + - JavaScript + - NeedsTranslation + - Proxy + - TopicStub +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy +translation_of_original: Web/JavaScript/Reference/Global_Objects/Proxy/handler +--- +
{{JSRef}}
+ +

The proxy's handler object is a placeholder object which contains traps for {{jsxref("Proxy", "proxies", "", 1)}}.

+ +

Methods

+ +

All traps are optional. If a trap has not been defined, the default behavior is to forward the operation to the target.

+ +
+
{{jsxref("Global_Objects/Proxy/handler/getPrototypeOf", "handler.getPrototypeOf()")}}
+
A trap for {{jsxref("Object.getPrototypeOf")}}.
+
{{jsxref("Global_Objects/Proxy/handler/setPrototypeOf", "handler.setPrototypeOf()")}}
+
A trap for {{jsxref("Object.setPrototypeOf")}}.
+
{{jsxref("Global_Objects/Proxy/handler/isExtensible", "handler.isExtensible()")}}
+
A trap for {{jsxref("Object.isExtensible")}}.
+
{{jsxref("Global_Objects/Proxy/handler/preventExtensions", "handler.preventExtensions()")}}
+
A trap for {{jsxref("Object.preventExtensions")}}.
+
{{jsxref("Global_Objects/Proxy/handler/getOwnPropertyDescriptor", "handler.getOwnPropertyDescriptor()")}}
+
A trap for {{jsxref("Object.getOwnPropertyDescriptor")}}.
+
{{jsxref("Global_Objects/Proxy/handler/defineProperty", "handler.defineProperty()")}}
+
A trap for {{jsxref("Object.defineProperty")}}.
+
{{jsxref("Global_Objects/Proxy/handler/has", "handler.has()")}}
+
A trap for the {{jsxref("Operators/in", "in")}} operator.
+
{{jsxref("Global_Objects/Proxy/handler/get", "handler.get()")}}
+
A trap for getting property values.
+
{{jsxref("Global_Objects/Proxy/handler/set", "handler.set()")}}
+
A trap for setting property values.
+
{{jsxref("Global_Objects/Proxy/handler/deleteProperty", "handler.deleteProperty()")}}
+
A trap for the {{jsxref("Operators/delete", "delete")}} operator.
+
{{jsxref("Global_Objects/Proxy/handler/ownKeys", "handler.ownKeys()")}}
+
A trap for {{jsxref("Object.getOwnPropertyNames")}} and {{jsxref("Object.getOwnPropertySymbols")}}.
+
{{jsxref("Global_Objects/Proxy/handler/apply", "handler.apply()")}}
+
A trap for a function call.
+
{{jsxref("Global_Objects/Proxy/handler/construct", "handler.construct()")}}
+
A trap for the {{jsxref("Operators/new", "new")}} operator.
+
+ +

Some non-standard traps are obsolete and have been removed.

+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots', 'Proxy Object Internal Methods and Internal Slots')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots', 'Proxy Object Internal Methods and Internal Slots')}}{{Spec2('ESDraft')}}The enumerate handler has been removed.
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Proxy.handler")}}

+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/proxy/proxy/set/index.html b/files/es/web/javascript/reference/global_objects/proxy/proxy/set/index.html new file mode 100644 index 0000000000..ee5ac155e7 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/proxy/proxy/set/index.html @@ -0,0 +1,122 @@ +--- +title: handler.set() +slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/set +tags: + - ECMAScript 2015 + - JavaScript + - Proxy + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set +--- +
{{JSRef}}
+ +

El método handler.set() captura las asignaciones de un valor a una determinada propiedad.

+ +

Sintaxis

+ +
var p = new Proxy(target, {
+  set: function(target, property, value, receiver) {
+  }
+});
+
+ +

Parámetros

+ +

El método set recibe los siguientes parámetros.this se asocia al handler.

+ +
+
target
+
El objeto objetivo.
+
property
+
El nombre de la propiedad a la que se le asignará el valor.
+
value
+
El nuevo valor asignado a la propiedad.
+
receiver
+
El objeto al que originalmente iba dirigida la asignación. Normalmente es el proxy. Sin embargo el manejador o set handler puede ser llamado de forma indirecta a través de un prototipo entre otros.
+
Por ejemplo, suponga que un escript ejecuta la sentencia obj.name = "jen", y obj no es un proxy, y no posee la propiedad .name, pero tiene un proxy en su cadena de prototipos. El manejador set de este proxy será llamado y  obj será pasado como el receiver.
+
+ +

Valor Devuelto

+ +

El método set debe devolver un valor booleano. Devolverá true para indicar que la asignación se ha llevado a cabo con éxito. Si devuelve false, y la asignación tiene lugar en modo estricto, se lanzará un error de tipo TypeError.

+ +

Descripción

+ +

El método handler.set captura la asignación de un valor a una propiedad.

+ +

Qué intercepta

+ +

Las siguientes operaciones son capturadas:

+ + + +

Invariantes

+ +

Si los siguientes invariantes son violados, el proxy lanzará un {{jsxref("TypeError")}}:

+ + + +

Ejemplos

+ +

El siguiente código captura la asignación de un valor a una propiedad.

+ +
var p = new Proxy({}, {
+  set: function(target, prop, value, receiver) {
+    target[prop] = value
+    console.log('property set: ' + prop + ' = ' + value)
+    return true
+  }
+})
+
+console.log('a' in p)  // false
+
+p.a = 10               // "propiedad asignada: a = 10"
+console.log('a' in p)  // true
+console.log(p.a)       // 10
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver', '[[Set]]')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver', '[[Set]]')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con los buscadores

+ +
+ + +

{{Compat("javascript.builtins.Proxy.handler.set")}}

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/rangeerror/prototype/index.html b/files/es/web/javascript/reference/global_objects/rangeerror/prototype/index.html deleted file mode 100644 index fa75157c9d..0000000000 --- a/files/es/web/javascript/reference/global_objects/rangeerror/prototype/index.html +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: RangeError.prototype -slug: Web/JavaScript/Reference/Global_Objects/RangeError/prototype -tags: - - Error - - JavaScript - - Propiedad - - Prototipo - - Prototype - - RangeError -translation_of: Web/JavaScript/Reference/Global_Objects/RangeError -translation_of_original: Web/JavaScript/Reference/Global_Objects/RangeError/prototype ---- -
{{JSRef}}
- -

La propiedad RangeError.prototype representa el prototipo de {{jsxref("RangeError")}}.

- -
{{js_property_attributes(0, 0, 0)}}
- -

Descripción

- -

Todas las instancias de {{jsxref("RangeError")}} heredan de RangeError.prototype. Puede utilizar el prototipo para añadir propiedades o métodos a todas las instancias.

- -

Propiedades

- -
-
RangeError.prototype.constructor
-
Especifica la función que crea instancias del prototipo.
-
{{jsxref("Error.prototype.message", "RangeError.prototype.message")}}
-
Mensaje de error. Aunque ECMA-262 especifica que {{jsxref("RangeError")}} debe procurar su propio message, en SpiderMonkey, se hereda de {{jsxref("Error.prototype.message")}}.
-
{{jsxref("Error.prototype.name", "RangeError.prototype.name")}}
-
Nombre del error. Heredada de {{jsxref("Error")}}.
-
{{jsxref("Error.prototype.fileName", "RangeError.prototype.fileName")}}
-
Ruta al fichero en el que se produjo el error. Heredada de {{jsxref("Error")}}.
-
{{jsxref("Error.prototype.lineNumber", "RangeError.prototype.lineNumber")}}
-
Número de línea en el fichero en el que se produjo el error. Heredada de {{jsxref("Error")}}.
-
{{jsxref("Error.prototype.columnNumber", "RangeError.prototype.columnNumber")}}
-
Número de columna de la línea en la que se produjo. Heredada de {{jsxref("Error")}}.
-
{{jsxref("Error.prototype.stack", "RangeError.prototype.stack")}}
-
Pila de llamadas. Heredada de {{jsxref("Error")}}.
-
- -

Métodos

- -

Aunque el prototipo del objeto {{jsxref("RangeError")}} no contiene métodos propios, las instancias de {{jsxref("RangeError")}} heredan algunos a través de la cadena de prototipos.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoCommentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial.
{{SpecName('ES5.1', '#sec-15.11.7.6', 'NativeError.prototype')}}{{Spec2('ES5.1')}}Definido como NativeError.prototype.
{{SpecName('ES6', '#sec-nativeerror.prototype', 'NativeError.prototype')}}{{Spec2('ES6')}}Definido como NativeError.prototype.
- -

Compatibilidad de navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Vea también

- - diff --git a/files/es/web/javascript/reference/global_objects/referenceerror/index.html b/files/es/web/javascript/reference/global_objects/referenceerror/index.html new file mode 100644 index 0000000000..5b48497b5d --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/referenceerror/index.html @@ -0,0 +1,99 @@ +--- +title: ReferenceError +slug: Web/JavaScript/Referencia/Objetos_globales/ReferenceError +tags: + - Clase + - Class + - JavaScript + - Object + - Objeto + - ReferenceError + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/ReferenceError +--- +
{{JSRef("Objetos_globales", "ReferenceError")}}
+ +

El objeto ReferenceError representa un error cuando se hace referencia a una variable inexistente.

+ +

Constructor

+ +
+
ReferenceError()
+
Crea un nuevo objeto ReferenceError.
+
+ +

Propiedades de la instancia

+ +
+
{{jsxref("Error.prototype.message", "ReferenceError.prototype.message")}}
+
Mensaje de error. Aunque ECMA-262 especifica que {{jsxref("ReferenceError")}} debe proporcionar su propia propiedad message, en SpiderMonkey, hereda {{jsxref("Error.prototype.message")}}.
+
{{jsxref("Error.prototype.name", "ReferenceError.prototype.name")}}
+
Nombre del error. Heredado de {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.fileName", "ReferenceError.prototype.fileName")}}
+
Ruta al archivo que generó este error. Heredado de {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.lineNumber", "ReferenceError.prototype.lineNumber")}}
+
Número de línea en el archivo que generó este error. Heredado de {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.columnNumber", "ReferenceError.prototype.columnNumber")}}
+
Número de columna en la línea que generó este error. Heredado de {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.stack", "ReferenceError.prototype.stack")}}
+
Seguimiento de la pila. Heredado de {{jsxref("Error")}}.
+
+ +

Ejemplos

+ +

Capturar un ReferenceError

+ +
try {
+  let a = undefinedVariable
+} catch (e) {
+  console.log(e instanceof ReferenceError)  // true
+  console.log(e.message)                    // "undefinedVariable no 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"
+}
+
+ +

Crear un ReferenceError

+ +
try {
+  throw new ReferenceError('Hola', 'someFile.js', 10)
+} catch (e) {
+  console.log(e instanceof ReferenceError)  // true
+  console.log(e.message)                    // "Hola"
+  console.log(e.name)                       // "ReferenceError"
+  console.log(e.fileName)                   // "someFile.js"
+  console.log(e.lineNumber)                 // 10
+  console.log(e.columnNumber)               // 0
+  console.log(e.stack)                      // "@Scratchpad/2:2:9\n"
+}
+
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-referenceerror', 'ReferenceError')}}
+ +

Compatibilidad del navegador

+ +
+ + +

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

+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/regexp/compile/index.html b/files/es/web/javascript/reference/global_objects/regexp/compile/index.html new file mode 100644 index 0000000000..0bce81a56d --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/regexp/compile/index.html @@ -0,0 +1,93 @@ +--- +title: RegExp.prototype.compile() +slug: Web/JavaScript/Referencia/Objetos_globales/RegExp/compile +tags: + - Desaprovado + - Expresion Regular + - JavaScript + - Obsoleto + - Prototype + - Referencia + - RegExp + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/compile +--- +
{{JSRef}} {{deprecated_header}}
+ +

El método obsoleto compile() es usado para (re-)compilar una expresión regular durante la ejecución del script. Es básicamente lo mismo que el constructor RegExp.

+ +

Sintaxis

+ +
regexObj.compile(patrón, flags)
+ +

Parámetros

+ +
+
patrón
+
El texto de la expresión regular.
+
flags
+
+

Si es especificado, las flags pueden tener cualquier combinación de los siguientes valores:

+ +
+
g
+
búsqueda global (global match)
+
i
+
ignorar mayúsculas o minúsculas
+
m
+
Tratar caracteres de inicio y fin (^ y $) como multiples líneas de texto(por ejemplo: encontrar el inicio o fin de cada línea delimitada por \n o \r, no sólo al inicio o fin de toda la entrada de texto)
+
y
+
sticky; busca solamente desde el índice indicado por la propiedad lastIndex de esta expresión regular en la cadena objetivo (y no intenta buscar desde ningún índice posterior).
+
+
+
+ +

Descripción

+ +

 El método compile es obsoleto. Puedes simplemente utilizar el constructor RegExp para lograr el mismo efecto.

+ +

Ejemplos

+ +

Usando compile()

+ +

El siguiente ejemplo muestra como recompilar una expresión regultar con un nuevo patrón y nuevas flags.

+ +
var regexObj = new RegExp('foo', 'gi');
+regexObj.compile('new foo', 'g');
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoCommentario
{{SpecName('ES6', '#sec-regexp.prototype.compile', 'RegExp.prototype.compile')}}{{Spec2('ES6')}}Definición inicial. Definido en la (norma) Annex B ECMAScript para Características Adicionales para Navegadores Web.
{{SpecName('ESDraft', '#sec-regexp.prototype.compile', 'RegExp.prototype.compile')}}{{Spec2('ESDraft')}}Definido en la (norma) Annex B ECMAScript para Características Adicionales para Navegadores Web.
+ +

Compatiblidad con navegadores

+ +
+ + +

{{Compat("javascript.builtins.RegExp.compile")}}

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/regexp/exec/index.html b/files/es/web/javascript/reference/global_objects/regexp/exec/index.html new file mode 100644 index 0000000000..1925e63b67 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/regexp/exec/index.html @@ -0,0 +1,238 @@ +--- +title: RegExp.prototype.exec() +slug: Web/JavaScript/Referencia/Objetos_globales/RegExp/exec +tags: + - Expresiones Regulares + - JavaScript + - Prototipo + - Referencia + - RegExp + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/exec +--- +
{{JSRef}}
+ +

El método exec() ejecuta una busqueda sobre las coincidencias de una expresión regular en una cadena especifica. Devuelve el resultado como array, o {{jsxref("null")}}.

+ +

Si está ejecutando una expresión regular solo para buscar si algo se cumple o no, usa el método {{jsxref("RegExp.prototype.test()")}} o el método {{jsxref("String.prototype.search()")}}.

+ +

Sintaxis

+ +
regexObj.exec(cadena)
+ +

Parametros

+ +
+
cadena
+
Cadena sobre la cual se quiere aplicar la expresión regular
+
+ +

Valor devuelto

+ +

Si se encuentran coincidencial, el método exec() devuelve un array y actualiza las propiedades del objecto de la expresión regular. El array devuelto contiene los elementos encontrados en su primer elemento, y un elemento por cada parte de la expresión regular que se encuentra entre parentesis y se encuentra dentro del texto que fué capturado.

+ +

Si la busqueda falla, el método exec() devuelve {{jsxref("null")}}.

+ +

Descripción

+ +

Considerando el siguiente ejemplo:

+ +
// Busca "quick brown" seguido de "jumps", ignorando los caracteres que se
+// encuentren entre medias.
+// Recuerda "brown" y "jumps"
+// Ignora mayusculas y minusculas
+var re = /quick\s(brown).+?(jumps)/ig;
+var result = re.exec('The Quick Brown Fox Jumps Over The Lazy Dog');
+
+ +

La siguiente tabla muestra el resultado de este script:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ObjetoPropiedad/ÍndiceDescripciónEjemplo
result[0]Todas las partes de la cadena que cumplen la expresión regularQuick Brown Fox Jumps
[1],...[n] +

Las subcadenas entre parentesis que han sido encontradas, si hay alguna. El número de subcadenas encontradas es ilimitado

+
[1] = Brown
+ [2] = Jumps
indexEl índice de base-0 del elemento encontrado en la cadena.4
inputLa cadena original.The Quick Brown Fox Jumps Over The Lazy Dog
relastIndexEl índice sobre el cual empieza la siguiente busqueda. Cuando no se usa g (busqueda global), esto va a ser siempre 0.25
ignoreCaseIndica si la bandera "i" ha sido usada para ignorar mayusculas y minusculas.true
globalIndica si la bandera "g" fue usada para hacer una busqueda global.true
multilineIndica si la bandera "m" fue usada para buscar en cadenas sobre multiples lineasfalse
sourceEl texto del patrón de busquedaquick\s(brown).+?(jumps)
+ +

Ejemplos

+ +

Encontrando coincidencias sucesivas

+ +

Si tu expresión regular contiene la bandera "g", puedes usar el método exec() varias veces para encontrar coincidencias sucesivas en la misma cadena. Cuando lo haces, la busqueda empieza en la subcadena str especificada por la propiedad {{jsxref("RegExp.lastIndex", "lastIndex")}} de la expresión regular ({{jsxref("RegExp.prototype.test()", "test()")}} también movera hacia adelante el indice de la propiedad {{jsxref("RegExp.lastIndex", "lastIndex")}}). Por ejemplo, asumiendo que tienes este script:

+ +
var myRe = /ab*/g;
+var str = 'abbcdefabh';
+var myArray;
+while ((myArray = myRe.exec(str)) !== null) {
+  var msg = 'Se ha encontrado ' + myArray[0] + '. ';
+  msg += 'La siguiente coincidencia empieza en el indice ' + myRe.lastIndex;
+  console.log(msg);
+}
+
+ +

Este script muestra el siguiente texto:

+ +
Se ha encontrado abb. La siguiente coincidencia empieza en el indice 3
+Se ha encontrado ab. La siguiente coincidencia empieza en el indice 9
+
+ +

Nota: No uses la expresión regular literalmente (o el constructor {{jsxref("RegExp")}}) dentro de la condición del bucle while o se creará un bucle infinito si hay una coincidencia, por culpa de que la propiedad {{jsxref("RegExp.lastIndex", "lastIndex")}} va a ser reiniciada por cada iteración del bucle. Además asegurate de que has usado la bandera de busqueda global "g" o se creará un bucle también.

+ +

Usando exec() con RegExp literales

+ +

También se puede usar exec() sin crear un objeto de  {{jsxref("RegExp")}}:

+ +
var matches = /(hola \S+)/.exec('Esto es un hola mundo!');
+console.log(matches[1]);
+
+ +

Esto logueará un mensaje que contiene 'hola mundo!'.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónStatusComment
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial. Implementado en 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')}} 
+ +

Compatiblidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FuncionalidadChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FuncionalidadAndroidChrome for AndroidEdgeFirefox Móvil (Gecko)IE MóvilOpera MóvilSafari Móvil
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/regexp/ignorecase/index.html b/files/es/web/javascript/reference/global_objects/regexp/ignorecase/index.html new file mode 100644 index 0000000000..9073d631d1 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/regexp/ignorecase/index.html @@ -0,0 +1,142 @@ +--- +title: RegExp.prototype.ignoreCase +slug: Web/JavaScript/Referencia/Objetos_globales/RegExp/ignoreCase +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase +--- +
{{JSRef}}
+ +

La propiedad ignoreCase indica si la expresión regular está usando la bandera "i". ignoreCase es una propiedad de sólo lectura de una instancia de expresión regular.

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

Descripción

+ +

El valor de ignoreCase es un {{jsxref("Boolean")}} y true si la bandera "i" fue usada. De otra manera es false. La bandera "i" indica que el se debe ignorar la capitalización al tratar de encontrar los equivalentes en un texto.

+ +

No se puede cambiar esta propiedad directamente.

+ +

Ejemplos

+ +

Usando ignoreCase

+ +
var regex = new RegExp('foo', 'i');
+
+console.log(regex.ignoreCase); // true
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial. Implementado en JavaScript 1.2. JavaScript 1.5: ignoreCase es una propiedad de la instancia  {{jsxref("RegExp")}}, y no del objecto {{jsxref("RegExp")}}.
{{SpecName('ES5.1', '#sec-15.10.7.3', 'RegExp.prototype.ignoreCase')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-get-regexp.prototype.ignorecase', 'RegExp.prototype.ignoreCase')}}{{Spec2('ES6')}}ignoreCase es ahora una propiedad accesora del prototipo en lugar de una propiedad de dato de una instancia.
{{SpecName('ESDraft', '#sec-get-regexp.prototype.ignorecase', 'RegExp.prototype.ignoreCase')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Propiedad accesor del Prototipo{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoDesktop(38)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome para AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Propiedad accesor del Prototipo{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile(38)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/regexp/index.html b/files/es/web/javascript/reference/global_objects/regexp/index.html new file mode 100644 index 0000000000..9a26edead0 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/regexp/index.html @@ -0,0 +1,264 @@ +--- +title: RegExp +slug: Web/JavaScript/Referencia/Objetos_globales/RegExp +tags: + - Clase + - Expresiones Regulares + - JavaScript + - Referencia + - RegExp +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp +--- +
{{JSRef}}
+ +

El objeto RegExp se utiliza para hacer coincidir texto con un patrón.

+ +

Para obtener una introducción a las expresiones regulares, lee el {{JSxRef("../Guide/Regular_Expressions", "capítulo sobre expresiones regulares")}} en la {{JSxRef("../Guide/Regular_Expressions", "Guía de JavaScript")}}.

+ +

Descripción

+ +

Notación literal y constructor

+ +

Hay dos formas de crear un objeto RegExp: una notación literal y un constructor.

+ + + +

Las siguientes tres expresiones crean el mismo objeto de expresión regular:

+ +
let er = /ab+c/i; // notación literal
+let er = new RegExp('ab+c', 'i') // constructor con patrón de cadena como primer argumento
+let er = new RegExp(/ab+c/, 'i') // constructor con expresión regular literal como primer argumento (a partir de ECMAScript 6)
+
+ +

La notación literal da como resultado la compilación de la expresión regular cuando se evalúa la expresión. Utiliza la notación literal cuando la expresión regular permanecerá constante. Por ejemplo, si usas notación literal para construir una expresión regular usada en un bucle, la expresión regular no se volverá a compilar en cada iteración.

+ +

El constructor del objeto de expresión regular, por ejemplo, new RegExp('ab+c'), da como resultado la compilación en tiempo de ejecución de la expresión regular. Utiliza la función constructora cuando sepas que el patrón de expresión regular cambiará, o no conozcas el patrón y lo obtienes de otra fuente, tal como la entrada del usuario.

+ +

Banderas en el constructor

+ +

A partir de ECMAScript 6, new RegExp(/ab+c/, 'i') ya no arroja un {{JSxRef("TypeError")}} ("no puedes proporcionar banderas cuando construyes una expresión regular a partir de otra") cuando el primer argumento es una RegExp y el segundo argumento flags está presente. En su lugar, se crea una nueva RegExp a partir de los argumentos.

+ +

Cuando se utiliza la función constructora, las reglas de escape de cadenas normales (antes de los caracteres especiales con \ cuando se incluyen en una cadena) son necesarias.

+ +

Por ejemplo, los siguientes son equivalentes:

+ +
let er = /\w+/
+let er = new RegExp('\\w+')
+
+ +

Propiedades de expresiones regulares similares a Perl

+ +

Ten en cuenta que varias de las propiedades de {{JSxRef("RegExp")}} tienen nombres largos y cortos (tipo Perl). Ambos nombres siempre se refieren al mismo valor. (Perl es el lenguaje de programación a partir del cual JavaScript modeló sus expresiones regulares). Consulta también las propiedades {{JSxRef("Características_Desaprobadas", "en desuso de RegExp", "#Propiedades_de_RegExp")}}

+ +

Constructor

+ +
+
{{JSxRef("Objetos_globales/RegExp/RegExp", "RegExp()")}}
+
Crea un nuevo objeto RegExp.
+
+ +

Propiedades estáticas

+ +
+
{{JSxRef("RegExp.@@species", "get RegExp[@@species]")}}
+
La función constructora utilizada para crear objetos derivados.
+
{{JSxRef("RegExp.lastIndex")}}
+
El índice en el que comenzará la siguiente búsqueda.
+
+ +

Propiedades de la instancia

+ +
+
{{JSxRef("RegExp.prototype.flags")}}
+
Una cadena que contiene las banderas del objeto RegExp.
+
{{JSxRef("RegExp.prototype.dotAll")}}
+
Si el "." coincide con nuevas líneas o no.
+
{{JSxRef("RegExp.prototype.global")}}
+
Si se debe probar o no la expresión regular con todas las posibles ocurrencias en una cadena, o solo con la primera.
+
{{JSxRef("RegExp.prototype.ignoreCase")}}
+
Si se deben o no ignorar las mayúsculas/minúsculas al buscar en una cadena.
+
{{JSxRef("RegExp.prototype.multiline")}}
+
Si buscar o no en cadenas multilínea.
+
{{JSxRef("RegExp.prototype.source")}}
+
El texto del patrón.
+
{{JSxRef("RegExp.prototype.sticky")}}
+
Si la búsqueda es pegajosa o no.
+
{{JSxRef("RegExp.prototype.unicode")}}
+
Si las funciones Unicode están habilitadas o no.
+
+ +

Métodos de instancia

+ +
+
{{JSxRef("RegExp.prototype.compile()")}}
+
(Re)compila una expresión regular durante la ejecución de un script.
+
{{JSxRef("RegExp.prototype.exec()")}}
+
Ejecuta una búsqueda de una coincidencia en su parámetro de cadena.
+
{{JSxRef("RegExp.prototype.test()")}}
+
Prueba una coincidencia en su parámetro de cadena.
+
{{JSxRef("RegExp.prototype.toString()")}}
+
Devuelve una cadena que representa el objeto especificado. Redefine el método {{JSxRef("Object.prototype.toString()")}}.
+
{{JSxRef("RegExp.prototype.@@match()", "RegExp.prototype[@@match]()")}}
+
Realiza la coincidencia con la cadena dada y devuelve el resultado de la coincidencia.
+
{{JSxRef("RegExp.prototype.@@matchAll()", "RegExp.prototype[@@matchAll]()")}}
+
Devuelve todas las coincidencias de la expresión regular con una cadena.
+
{{JSxRef("RegExp.prototype.@@replace()", "RegExp.prototype[@@replace]()")}}
+
Reemplaza las coincidencias en una cadena dada con una nueva subcadena.
+
{{JSxRef("RegExp.prototype.@@search()", "RegExp.prototype[@@search]()")}}
+
Busca la coincidencia en la cadena dada y devuelve el índice del patrón encontrado en la cadena.
+
{{JSxRef("RegExp.prototype.@@split()", "RegExp.prototype[@@split]()")}}
+
Divide la cadena dada en un arreglo separando la cadena en subcadenas.
+
+ +

Ejemplos

+ +

Usar una expresión regular para cambiar el formato de los datos

+ +

El siguiente script usa el método {{JSxRef("String.prototype.replace()", "replace()")}} de la instancia {{JSxRef("Objetos_globales/String", "String")}} para hacer coincidir una nombre en el formato primero último y enviarlo en el formato último, primero.

+ +

En el texto de reemplazo, el script usa $1 y $2 para indicar los resultados de los correspondientes paréntesis coincidentes en el patrón de expresión regular.

+ +
let er = /(\w+)\s(\w+)/
+let str = 'John Smith'
+let newstr = str.replace(er, '$2, $1')
+console.log(newstr)
+
+ +

Esto muestra "Smith, John".

+ +

Uso de expresiones regulares para dividir líneas con diferentes finales de línea/saltos de línea

+ +

El final de línea predeterminado varía según la plataforma (Unix, Windows, etc.). La división de líneas proporcionada en este ejemplo funciona en todas las plataformas.

+ +
let texto = 'Un poco de texto\ny un poco más\r\ny aún\reste es el final'
+let lineas = texto.split(/\r\n|\r|\n/)
+console.log(lineas) // logs [ 'Un poco de texto', 'y un poco más', 'y aún', 'este es el final' ]
+
+ +

Ten en cuenta que el orden de los patrones en la expresión regular es importante.

+ +

Usar expresiones regulares en varias líneas

+ +
let s = '¡Por favor, sí\nhazme el día!'
+
+s.match(/sí.*día/);
+// Devuelve null
+
+s.match(/sí[^]*día/);
+// Devuelve ["sí\nhazme el día"]
+
+ +

Usar una expresión regular con la bandera pegajosa

+ +

La bandera {{JSxRef("Objetos_globales/RegExp/sticky", "sticky")}} indica que la expresión regular realiza una coincidencia permanente en la cadena de destino al intentar hacer coincidir a partir de {{JSxRef("RegExp.prototype.lastIndex")}}.

+ +
let str = '#foo#'
+let regex = /foo/y
+
+regex.lastIndex = 1
+regex.test(str)      // true
+regex.lastIndex = 5
+regex.test(str)      // false (lastIndex se tiene en cuenta con una bandera pegajosa)
+regex.lastIndex      // 0 (restablecer después de un error de coincidencia)
+ +

La diferencia entre la bandera pegajosa y la bandera global

+ +

Con la bandera pegajosa y, la siguiente coincidencia tiene que ocurrir en la posición lastIndex, mientras que con la bandera global g, la coincidencia puede ocurrir en la posición lastIndex o posterior:

+ +
er = /\d/y;
+while (r = re.exec("123 456")) console.log(r, "Y er.lastIndex", er.lastIndex);
+
+// [ '1', index: 0, input: '123 456', groups: undefined ] AND er.lastIndex 1
+// [ '2', index: 1, input: '123 456', groups: undefined ] AND er.lastIndex 2
+// [ '3', index: 2, input: '123 456', groups: undefined ] AND er.lastIndex 3
+//   ... y no más coincidencias.
+ +

Con la bandera global g, coincidirían los 6 dígitos, no solo 3.

+ +

Expresión regular y caracteres Unicode

+ +

\w y \W solo coincide con caracteres basados en ASCII; por ejemplo, a a z, A a Z, 0 a 9 y _.

+ +

Para hacer coincidir caracteres de otros idiomas como Cirílico o Hebreo, usa \uhhhh, donde hhhh es el Valor Unicode en hexadecimal.

+ +

Este ejemplo demuestra cómo se pueden separar los caracteres Unicode de una palabra.

+ +
let texto = 'Образец texto на русском языке'
+let regex = /[\u0400-\u04FF]+/g
+
+let match = regex.exec(text)
+console.log(match[0])        // registra 'Образец'
+console.log(regex.lastIndex) // registra '7'
+
+let match2 = regex.exec(texto)
+console.log(match2[0])       // registra 'на' [no registró 'texto']
+console.log(regex.lastIndex) // registra '15'
+
+// y así sucesivamente
+
+ +

La función {{JSxRef("../Guide/Regular_Expressions/Unicode_Property_Escapes", "Escapes de propiedad Unicode")}} presenta una solución, al permitir una declaración tan simple como \p{scx=Cyrl}.

+ +

Extraer el nombre de subdominio de la URL

+ +
let url = 'http://xxx.dominio.com'
+console.log(/[^.]+/.exec(url)[0].substr(7)) // registra 'xxx'
+
+ +
+

En lugar de utilizar expresiones regulares para analizar las URL, normalmente es mejor utilizar el analizador de URL integrado en los navegadores mediante la API URL.

+
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-regexp-regular-expression-objects', 'RegExp')}}
+ +

Compatibilidad del navegador

+ +
+ + +

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

+
+ +

Notas específicas de Firefox

+ +

A partir de Firefox 34, en el caso de un grupo de captura con cuantificadores que impiden su ejercicio, el texto coincidente para un grupo de captura ahora es undefined en lugar de una cadena vacía:

+ +
// Firefox 33 o anterior
+'x'.replace(/x(.)?/g, function(m, group) {
+  console.log("'grupo: " + group + "'");
+});
+// 'grupo: '
+
+// Firefox 34 o más reciente
+'x'.replace(/x(.)?/g, function(m, group) {
+  console.log("'grupo: " + group + "'");
+});
+// 'grupo: undefined'
+
+ +

Ten en cuenta que, debido a la compatibilidad web, RegExp.$N seguirá devolviendo una cadena vacía en lugar de undefined ({{bug(1053944)}}).

+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/regexp/regexp/index.html b/files/es/web/javascript/reference/global_objects/regexp/regexp/index.html new file mode 100644 index 0000000000..ad3a8c90e9 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/regexp/regexp/index.html @@ -0,0 +1,114 @@ +--- +title: Constructor RegExp() +slug: Web/JavaScript/Referencia/Objetos_globales/RegExp/RegExp +tags: + - Constructor + - JavaScript + - Referencia + - RegExp +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/RegExp +--- +
{{JSRef}}
+ +

El constructor RegExp crea un objeto de expresión regular para hacer coincidir el texto con un patrón.

+ +

Para ver la introducción a las expresiones regulares, lee el {{JSxRef("../Guide/Regular_Expressions", "capítulo sobre expresiones regulares")}} en la {{JSxRef("../Guide", "Guía de JavaScript")}}.

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

Sintaxis

+ +

Son posibles las notaciones literal, constructor y de fábrica:

+ +
/patrón/banderas
+new RegExp(patrón[, banderas])
+RegExp(patrón[, banderas])
+
+ +

Parámetros

+ +
+
patrón
+
El texto de la expresión regular.
+
A partir de ES5, también puede ser otro objeto o RegExp literal (solo para las dos notaciones del constructor RegExp). Los patrones pueden incluir {{JSxRef("../Guide/Regular_Expressions", "caracteres especiales", "#Usar_caracteres_especiales")}} para que coincidan con un rango de valores más amplio que el de una cadena literal.
+
banderas
+
+

Si se especifica, banderas es una cadena que contiene las banderas para agregar.

+ +

Alternativamente, si se proporciona un objeto para el patrón, la cadena banderas reemplazará cualquiera de las banderas de ese objeto (y lastIndex se restablecerá a 0) (a partir de ES2015).

+ +

Si no se especifica banderas y se proporciona un objeto de expresiones regulares, las banderas de ese objeto (y el valor de lastIndex) se copiarán.

+ +

banderas puede contener cualquier combinación de los siguientes caracteres:

+ +
+
g (coincidencia global)
+
Encuentra todas las coincidencias en lugar de detenerse después de la primera.
+
i (ignorar mayúsculas y minúsculas)
+
Si el indicador u también está habilitado, utiliza el plegado de mayúsculas y minúsculas Unicode.
+
m (multilínea)
+
Trata los caracteres iniciales y finales (^ y $) como si estuvieran trabajando en varias líneas. En otras palabras, hace coincidir el principio o el final de cada línea (delimitada por \n o \r), no solo al principio o final de toda la cadena de entrada.
+
sdotAll» o punto para todo)
+
Permite que el punto (. coincida con nuevas líneas o no.
+
u (unicode)
+
Trata el patrón como una secuencia de puntos de código Unicode. (Consulta también Cadenas binarias).
+
y (sticky)
+
Coincide solo con el índice indicado por la propiedad lastIndex de esta expresión regular en la cadena destino. No intenta coincidir con índices posteriores.
+
+
+
+ +

Ejemplos

+ +

Notación literal y constructor

+ +

Hay dos formas de crear un objeto RegExp: una notación literal y un constructor.

+ + + +

Las siguientes tres expresiones crean la misma expresión regular:

+ +
/ab+c/i
+new RegExp(/ab+c/, 'i') // notación literal
+new RegExp('ab+c', 'i') // constructor
+
+ +

La notación literal da como resultado la compilación de la expresión regular cuando se evalúa la expresión. Utiliza la notación literal cuando la expresión regular permanecerá constante. Por ejemplo, si usas notación literal para construir una expresión regular usada en un bucle, la expresión regular no se volverá a compilar en cada iteración.

+ +

El constructor del objeto de expresión regular, por ejemplo, new RegExp('ab+c'), da como resultado la compilación en tiempo de ejecución de la expresión regular. Usa la función constructora cuando sepas que el patrón de la expresión regular cambiará, o no conoces el patrón y lo obtienes de otra fuente, como la entrada del usuario.

+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-regexp-constructor', 'RegExp constructor')}}
+ +

Compatibilidad del navegador

+ +
+ + +

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

+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/regexp/rightcontext/index.html b/files/es/web/javascript/reference/global_objects/regexp/rightcontext/index.html new file mode 100644 index 0000000000..39530ee1b5 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/regexp/rightcontext/index.html @@ -0,0 +1,54 @@ +--- +title: RegExp.rightContext ($') +slug: Web/JavaScript/Referencia/Objetos_globales/RegExp/rightContext +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/rightContext +--- +
{{JSRef}} {{non-standard_header}}
+ +

La propiedad rightContext (No es estándar) es una propiedad estática y de solo lectura de expresiones regulares que contiene la subcadena que sigue a la coincidencia más reciente. el alias para esta propiedad es RegExp.$'.

+ +

Sintaxis

+ +
RegExp.rightContext
+RegExp["$'"]
+
+ +

Descripción

+ +

La propiedad rightContext es estática, no es una propiedad de un objeto de expresión regular individual. Debe usarse como RegExp.rightContextRegExp["$'"].

+ +

El valor de la propiedad rightContext es de solo lectura y se modifica cada que hay una coincidencia exitosa.

+ +

Tenga presente que no puede usar la abreviatura (RegExp.$'), porque el analizador espera una cadena de inicio, si lo hace optendra un error de sintaxis {{jsxref("SyntaxError")}} , para este caso, usted debe usar corchetes. consulte notación de paréntesis para acceso a la propiedad.

+ +

Ejemplos

+ +

Usando rightContext y $'

+ +
var re = /hola/g;
+re.test('hola mundo!');
+RegExp.rightContext; // " mundo!"
+RegExp["$'"];       // " mundo!"
+
+ +

Especificaciones

+ +

No estándar. No forma parte de ninguna especificación actual.

+ + + +
+ + +

{{Compat("javascript.builtins.RegExp.rightContext")}}

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/regexp/test/index.html b/files/es/web/javascript/reference/global_objects/regexp/test/index.html new file mode 100644 index 0000000000..4507b57c97 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/regexp/test/index.html @@ -0,0 +1,152 @@ +--- +title: RegExp.prototype.test() +slug: Web/JavaScript/Referencia/Objetos_globales/RegExp/test +tags: + - Expresion Regular + - Prototipo + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/test +--- +
{{JSRef}}
+ +

El método test() ejecuta la búsqueda de una ocurrencia entre una expresión regular y una cadena especificada. Devuelve true o false.

+ +

Sintaxis

+ +
regexObj.test(cadena)
+ +

Parámetros

+ +
+
cadena
+
La cadena a comparar contra la expresión regular.
+
+ +

Valor de Retorno

+ +

Retorna true si existe una coincidencia entre la expresión regular y la cadena especificada; de lo contrario retorna false.

+ +

Descripción

+ +

Use test() cuando desee saber si existe la ocurrencia de un patrón en una cadena (similar al método {{jsxref("String.prototype.search()")}}, la diferencia es que test() devuelve un booleano, mientras que search() devuelve el índice de la coincidencia (si la encuentra) o -1 si no la encuentra).

+ +

Si requiere más información (a coste de una ejecución más lenta) utilice el método {{jsxref("RegExp.prototype.exec()", "exec()")}}. Al igual que este último, multiples llamadas a test() sobre la misma instancia global de una expresión regular avanzará desde de la ocurrencia anterior.

+ +

Ejemplos

+ +

Usando test()

+ +

Ejemplo simple que prueba si "hello" está contenido al principio de una cadena y devuelve un valor booleano.

+ +
var cadena = "hello world!";
+var result = /^hello/.test(cadena);
+console.log(result); // true
+
+ +

El siguiente ejemplo registra un mensaje que depende del éxito de la prueba:

+ +
function probarEntrada(regexp, cadena){
+  var subcadena;
+  if (regexp.test(cadena)) {
+    subcadena = ' contiene ';
+  } else {
+    subcadena = ' no contiene ';
+  }
+  console.log(cadena + subcadena + regexp.source);
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definition inicial. Implementado en 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')}} 
{{SpecName('ESDraft', '#sec-regexp.prototype.test', 'RegExp.test')}}{{Spec2('ESDraft')}} 
+ +

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

Notas específicas para Gecko

+ +

Antes de Gecko 8.0 {{geckoRelease("8.0")}}, test() estaba incorrectamente implementado; cuando era llamado sin parámetros, buscaba emparejar contra el valor de la entrada anterior (la propiedad RegExp.input) en lugar de hacerlo contra la cadena "undefined". Esto ha sido corregido; ahora /undefined/.test() resulta correctamente en true, en lugar de un error.

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/regexp/tostring/index.html b/files/es/web/javascript/reference/global_objects/regexp/tostring/index.html new file mode 100644 index 0000000000..50c10d2bb2 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/regexp/tostring/index.html @@ -0,0 +1,171 @@ +--- +title: RegExp.prototype.toString() +slug: Web/JavaScript/Referencia/Objetos_globales/RegExp/toString +tags: + - Expresion Regular + - Prototipo + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/toString +--- +
{{JSRef}}
+ +

El método toString() devuelve una cadena que representa el patrón de la expresión regular.

+ +

Sintaxis

+ +
regexObj.toString();
+ +

Valor de Retorno

+ +

Una cadena que representa el objeto dado.

+ +

Descripción

+ +

El objeto {{jsxref("RegExp")}} reemplaza el método toString() del objeto {{jsxref("Object")}}; no hereda de {{jsxref("Object.prototype.toString()")}}. Para objetos {{jsxref("RegExp")}}, el método toString() retorna una cadena que representa el patrón de la expresión regular.

+ +

Ejemplos

+ +

Usando toString()

+ +

El siguiente ejemplo muestra la cadena de representación de un objeto {{jsxref("RegExp")}}:

+ +
var myExp = new RegExp('a+b+c');
+console.log(myExp.toString());  // '/a+b+c/'
+
+var foo = new RegExp('bar', 'g');
+console.log(foo.toString());    // '/bar/g'
+
+ +

Expresiones regulares vacías y escapado

+ +

A partir de ECMAScript 5, una expresión regular vacía devuelve la cadena "/(?:)/" y los terminadores de línea tales como "\n" son escapados:

+ +
new RegExp().toString(); // "/(?:)/"
+
+new RegExp('\n').toString() === "/\n/";  // true, antes de ES5
+new RegExp('\n').toString() === "/\\n/"; // true, desde ES5
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial. Implementado en JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.9.5.2', 'RegExp.prototype.toString')}}{{Spec2('ES5.1')}}Agregado de la definición para escapado de caracteres especiales y "(?:)" para expresiones regulares vacías.
{{SpecName('ES6', '#sec-regexp.prototype.tostring', 'RegExp.prototype.toString')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-regexp.prototype.tostring', 'RegExp.prototype.toString')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad en Navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Escaping{{CompatVersionUnknown}}{{CompatGeckoDesktop(38)}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Generic function{{CompatUnknown}}{{CompatGeckoDesktop(39)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Escaping{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile(38)}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Generic function{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile(39)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/set/@@iterator/index.html b/files/es/web/javascript/reference/global_objects/set/@@iterator/index.html new file mode 100644 index 0000000000..7445821fc0 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/set/@@iterator/index.html @@ -0,0 +1,86 @@ +--- +title: 'Set.prototype[@@iterator]()' +slug: Web/JavaScript/Referencia/Objetos_globales/Set/@@iterator +tags: + - Iteradores +translation_of: Web/JavaScript/Reference/Global_Objects/Set/@@iterator +--- +
{{JSRef}}
+ +

El valor inicial de la propiedad @@iterator, es la misma función objeto que el valor inicial de la propiedad {{jsxref("Set.prototype.values()", "values")}}.

+ +
{{EmbedInteractiveExample("pages/js/set-prototype-@@iterator.html")}}
+ + + +

Sintaxis

+ +
mySet[Symbol.iterator]
+ +

 Valor retornado

+ +

La función iteradora Set , la cuál es {{jsxref("Set.prototype.values()", "values()")}} por defecto.

+ +

Ejemplos

+ +

Usando [@@iterator]()

+ +
const mySet = new Set();
+mySet.add('0');
+mySet.add(1);
+mySet.add({});
+
+const setIter = mySet[Symbol.iterator]();
+
+console.log(setIter.next().value); // "0"
+console.log(setIter.next().value); // 1
+console.log(setIter.next().value); // Object
+
+ +

Usando [@@iterator]() con for..of

+ +
const mySet = new Set();
+mySet.add('0');
+mySet.add(1);
+mySet.add({});
+
+for (const v of mySet) {
+  console.log(v);
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-set.prototype-@@iterator', 'Set.prototype[@@iterator]')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-set.prototype-@@iterator', 'Set.prototype[@@iterator]')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad en navegadores

+ + + +

{{Compat("javascript.builtins.Set.@@iterator")}}

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/set/add/index.html b/files/es/web/javascript/reference/global_objects/set/add/index.html new file mode 100644 index 0000000000..f9385894fb --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/set/add/index.html @@ -0,0 +1,124 @@ +--- +title: Set.prototype.add() +slug: Web/JavaScript/Referencia/Objetos_globales/Set/add +translation_of: Web/JavaScript/Reference/Global_Objects/Set/add +--- +
{{JSRef}}
+ +

El método add() añade un nuevo elemento con un valor específico al final del objeto Set.

+ +

Sintaxis

+ +
mySet.add(value);
+ +

Parameters

+ +
+
value
+
Requerido. El valor del elemento a ser añadido al objeto Set.
+
+ +

Return value

+ +

El objeto Set.

+ +

Ejemplos

+ +

Usando el método add

+ +
var mySet = new Set();
+
+mySet.add(1);
+mySet.add(5).add("some text"); // chainable
+
+console.log(mySet);
+// Set [1, 5, "some text"]
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-set.prototype.add', 'Set.prototype.add')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-set.prototype.add', 'Set.prototype.add')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ +

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

Firefox-specific notes

+ + + +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/set/clear/index.html b/files/es/web/javascript/reference/global_objects/set/clear/index.html new file mode 100644 index 0000000000..0fdca7e492 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/set/clear/index.html @@ -0,0 +1,119 @@ +--- +title: Set.prototype.clear() +slug: Web/JavaScript/Referencia/Objetos_globales/Set/clear +tags: + - ECMAScript6 + - JavaScript + - Prototype + - set +translation_of: Web/JavaScript/Reference/Global_Objects/Set/clear +--- +
{{JSRef}}
+ +

El método clear() remueve todos los elementos de un objeto Set.

+ +

Syntaxis

+ +
mySet.clear();
+ +

Valor de retorno

+ +

{{jsxref("undefined")}}.

+ +

Ejemplos

+ +

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

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-set.prototype.clear', 'Set.prototype.clear')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-set.prototype.clear', 'Set.prototype.clear')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad de navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico38{{CompatGeckoDesktop("19.0")}}11257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatNo}}25{{CompatGeckoMobile("19.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/set/delete/index.html b/files/es/web/javascript/reference/global_objects/set/delete/index.html new file mode 100644 index 0000000000..3e5544e06a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/set/delete/index.html @@ -0,0 +1,117 @@ +--- +title: Set.prototype.delete() +slug: Web/JavaScript/Referencia/Objetos_globales/Set/delete +translation_of: Web/JavaScript/Reference/Global_Objects/Set/delete +--- +
{{JSRef}}
+ +

El método delete() remueve el elemento especificado del objeto Set.

+ +

Syntaxis

+ +
mySet.delete(value);
+ +

Parametros

+ +
+
valor
+
Requerido. El valor del elemento a remover del objeto Set.
+
+ +

Valor de retorno

+ +

true si el elemento ha sido removido exitosamente en el Set; de otra manera retorna false.

+ +

Ejemplos

+ +

Usando el método delete

+ +
var mySet = new Set();
+mySet.add("foo");
+
+mySet.delete("bar"); // Retorna false. No hay elemento "bar" para ser removido.
+mySet.delete("foo"); // Retorna true.  Removido exitosamente.
+
+mySet.has("foo");    // Retorna false. El elemento "foo" ya no está presente.
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-set.prototype.delete', 'Set.prototype.delete')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-set.prototype.delete', 'Set.prototype.delete')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad de navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico38{{CompatGeckoDesktop("13.0")}}11257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatNo}}38{{CompatGeckoMobile("13.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/set/entries/index.html b/files/es/web/javascript/reference/global_objects/set/entries/index.html new file mode 100644 index 0000000000..ba07d24187 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/set/entries/index.html @@ -0,0 +1,71 @@ +--- +title: Set.prototype.entries() +slug: Web/JavaScript/Referencia/Objetos_globales/Set/entries +translation_of: Web/JavaScript/Reference/Global_Objects/Set/entries +--- +
{{JSRef}}
+ +

El método entries() devuelve un nuevo objeto de tipo Iterator que contiene un array de tuplas [value, value] por cada elemento en el Set original, manteniendo el orden de inserción. En los objetos de tipo Set no existe una clave key como ocurre en los objetos de tipo Map. Sin embargo, para mantener una API similar a la de los objetos de tipo Map, cada entry contiene el mismo valor para su clave y valor, devolviendo por tanto un array de tuplas [value, value].

+ +
{{EmbedInteractiveExample("pages/js/set-prototype-entries.html")}}
+ + + +

Sintaxis

+ +
mySet.entries()
+ +

Valor de retorno

+ +

Un nuevo objeto de tipo Iterator que contiene un array de tuplas [value, value] por cada elemento en el Set original, en orden de inserción.

+ +

Ejemplos

+ +

Usando el método 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"]
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoCommentario
{{SpecName('ES2015', '#sec-set.prototype.entries', 'Set.prototype.entries')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-set.prototype.entries', 'Set.prototype.entries')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad de navegadores

+ + + +

{{Compat("javascript.builtins.Set.entries")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/set/has/index.html b/files/es/web/javascript/reference/global_objects/set/has/index.html new file mode 100644 index 0000000000..e133de2d00 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/set/has/index.html @@ -0,0 +1,124 @@ +--- +title: Set.prototype.has() +slug: Web/JavaScript/Referencia/Objetos_globales/Set/has +tags: + - ECMAScript6 + - JavaScript + - Prototype + - set +translation_of: Web/JavaScript/Reference/Global_Objects/Set/has +--- +
{{JSRef}}
+ +

El método has() retorna un booleano indicando si el elemento especificado existe en el objeto Set o no.

+ +

Syntaxis

+ +
mySet.has(value);
+ +

Parametros

+ +
+
valor
+
Requerido. El valor del cual se probará su presencia en el objeto Set.
+
+ +

Valor de retorno

+ +
+
Booleano
+
Retorna true si el elemento con el valor especificado existe en el objeto  Set; de otra manera retorna false.
+
+ +

Ejemplos

+ +

Usando el método has

+ +
var mySet = new Set();
+mySet.add("foo");
+
+mySet.has("foo");  // retorna true
+mySet.has("bar");  // retorna false
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-set.prototype.has', 'Set.prototype.has')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-set.prototype.has', 'Set.prototype.has')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad de navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico38{{CompatGeckoDesktop("13.0")}}11257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatNo}}38{{CompatGeckoMobile("13.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/set/index.html b/files/es/web/javascript/reference/global_objects/set/index.html new file mode 100644 index 0000000000..db091b3a59 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/set/index.html @@ -0,0 +1,230 @@ +--- +title: Set +slug: Web/JavaScript/Referencia/Objetos_globales/Set +tags: + - ECMAScript 2015 + - JavaScript + - Object + - set +translation_of: Web/JavaScript/Reference/Global_Objects/Set +--- +
{{JSRef}}
+ +

El objeto Set permite almacenar valores únicos de cualquier tipo, incluso {{Glossary("Primitive", "valores primitivos")}} u referencias a objetos.

+ +

Sintaxis

+ +
new Set([iterable]);
+ +

Parámetros

+ +
+
iterable
+
Si un objeto iterable es pasado, todos sus elementos serán añadidos al nuevo Set. Si no se especifica este parámetro, o si su valor es null, el nuevo Set estará vacío.
+
+ +

Valor retornado

+ +

Una nueva instancia de Set.

+ +

Descripción

+ +

Los objetos Set son colecciones de valores. Se puede iterar sus elementos en el orden de su inserción. Un valor en un Set sólo puede estar una vez; éste es único en la colección Set.

+ +

Igualdad de valores

+ +

Ya que cada valor en el Set tiene que ser único, la igualdad del valor será comprobada y esta igualdad no se basa en el mismo algoritmo usado en el operador ===. Específicamente, para Sets, +0 (el cual es estrictamente igual a -0) y -0 son valores distintos. Sin embargo, esto ha cambiado en la última especificación ECMAScript 6. Iniciando con Gecko 29.0 {{geckoRelease("29")}} ({{bug("952870")}}) y un recent nightly Chrome, +0-0 son tratados como el mismo valor en objetos Set

+ +

NaN y undefined también pueden ser almacenados en un Set. NaN es considerado igual que NaN (A pesar que NaN !== NaN).

+ +

Propiedades

+ +
+
Set.length
+
El valor de la propiedad length es 0.
+
{{jsxref("Set.@@species", "get Set[@@species]")}}
+
La función constructora que es usada para crear objetos derivados.
+
{{jsxref("Set.prototype")}}
+
Representa el prototipo para el constructor Set. Permite la adición de propiedades a todos los objetos Set.
+
+ +

Instancias Set

+ +

Todas las instancias de Set heredan de {{jsxref("Set.prototype")}}.

+ +

Propiedades

+ +

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

+ +

Métodos

+ +

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

+ +

Ejemplos

+ +

Usando el objeto Set

+ +
const mySet = new Set();
+
+mySet.add(1);
+mySet.add(5);
+mySet.add('some text');
+
+const o = {a: 1, b: 2};
+mySet.add(o);
+
+mySet.add({a: 1, b: 2}); // La variable "o" referencia a otro objeto, por lo que agrega otro valor.
+
+mySet.has(1); // true
+mySet.has(3); // false, 3 no ha sido añadido al Set
+mySet.has(5);              // true
+mySet.has(Math.sqrt(25));  // true
+mySet.has('Some Text'.toLowerCase()); // true
+mySet.has(o); // true
+
+mySet.size; // 5
+
+mySet.delete(5); // Elimina 5 del Set
+mySet.has(5);    // false, 5 fue eliminado
+
+mySet.size; // 4, sólo removimos un valor
+console.log(mySet);// Set {1, "some text", Object {a: 1, b: 2}, Object {a: 1, b: 2}}
+ +

Iterando los Sets

+ +
// iterar todos los items de un set
+// imprimir en consola los items en orden: 1, 'some text', {a: 1, b: 2}
+for (let item of mySet) console.log(item);
+
+// imprimir en consola los items en orden: 1, 'some text', {a: 1, b: 2}
+for (let item of mySet.keys()) console.log(item);
+
+// imprimir en consola los items en orden: 1, 'some text', {a: 1, b: 2}
+for (let item of mySet.values()) console.log(item);
+
+// imprimir en consola los items en orden: 1, 'some text', {a: 1, b: 2}
+//(key y value poseen en mismo valor en este caso)
+for (let [key, value] of mySet.entries()) console.log(key);
+
+// crear un Array plano con los mismos valores, utilizando Array.from
+const myArr = Array.from(mySet); // [1, 'some text', {a: 1, b: 2}]
+
+// también se puede utilizar para guardar elementos del DOM
+mySet.add(document.body);
+mySet.has(document.querySelector('body')); // true
+
+// crear un Array plano con los mismos valores, utilizando propagación
+const mySet2 = new Set([1,2,3,4]);
+mySet2.size; // 4
+[...mySet2]; // [1,2,3,4]
+
+// la intersección entre dos sets puede ser simulada con
+const intersection = new Set([...set1].filter(x => set2.has(x)));
+
+// la diferencia puede ser simulada con
+const difference = new Set([...set1].filter(x => !set2.has(x)));
+
+// Iteración utilizando forEach
+mySet.forEach((value) => {
+  console.log(value);
+});
+
+// 1
+// 2
+// 3
+// 4
+ +

Implementando operaciones básicas

+ +
Set.prototype.isSuperset = function(subset) {
+    for (var elem of subset) {
+        if (!this.has(elem)) {
+            return false;
+        }
+    }
+    return true;
+}
+
+Set.prototype.union = function(setB) {
+    var union = new Set(this);
+    for (var elem of setB) {
+        union.add(elem);
+    }
+    return union;
+}
+
+Set.prototype.intersection = function(setB) {
+    var intersection = new Set();
+    for (var elem of setB) {
+        if (this.has(elem)) {
+            intersection.add(elem);
+        }
+    }
+    return intersection;
+}
+
+Set.prototype.difference = function(setB) {
+    var difference = new Set(this);
+    for (var elem of setB) {
+        difference.delete(elem);
+    }
+    return difference;
+}
+
+//Examples
+var setA = new Set([1,2,3,4]),
+    setB = new Set([2,3]),
+    setC = new Set([3,4,5,6]);
+
+setA.isSuperset(setB); // => true
+setA.union(setC); // => Set [1, 2, 3, 4, 5, 6]
+setA.intersection(setC); // => Set [3, 4]
+setA.difference(setC); // => Set [1, 2]
+ +

Relación con los objetos Array

+ +
const myArray = ['value1', 'value2', 'value3'];
+
+// Utiliza el constructor para para crear un set con el mismo contenido que un array
+const mySet = new Set(myArray);
+
+mySet.has('value1'); // devuelve true
+
+// Utiliza la propagación para crear un array con los contenidos de un set
+console.log([...mySet]); // Muestra lo mismo utilizando myArray
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-set-objects', 'Set')}}{{Spec2('ES2015')}}Definición inicial
{{SpecName('ESDraft', '#sec-set-objects', 'Set')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad de navegadores

+ + + +

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

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/set/size/index.html b/files/es/web/javascript/reference/global_objects/set/size/index.html new file mode 100644 index 0000000000..444ad7ae8a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/set/size/index.html @@ -0,0 +1,106 @@ +--- +title: Set.prototype.size +slug: Web/JavaScript/Referencia/Objetos_globales/Set/size +translation_of: Web/JavaScript/Reference/Global_Objects/Set/size +--- +
{{JSRef}}
+ +

La propiedad de acceso size devuelve el número de elementos que hay en el objeto {{jsxref("Set")}}.

+ +

Descripción

+ +

El valor de size es un entero que representa cuantas entradas tiene el objeto Set. La función de accesso set para size es undefined; no se puede cambiar esta propiedad.

+ +

Ejemplos

+ +

Usando size

+ +
var mySet = new Set();
+mySet.add(1);
+mySet.add(5);
+mySet.add("un texto")
+
+mySet.size; // 3
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
{{SpecName('ES6', '#sec-get-set.prototype.size', 'Set.prototype.size')}}{{Spec2('ES6')}}Definición inicial
{{SpecName('ESDraft', '#sec-get-set.prototype.size', 'Set.prototype.size')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad de navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico38{{ CompatGeckoDesktop("19") }} [1]{{ CompatIE("11") }}257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}38{{CompatGeckoMobile("19")}}{{CompatNo}}{{CompatNo}}8
+
+ +

[1] From Gecko 13 (Firefox 13 / Thunderbird 13 / SeaMonkey 2.10) to Gecko 18 (Firefox 18 / Thunderbird 18 / SeaMonkey 2.15 / Firefox OS 1.0.1 / Firefox OS 1.1) la propiedad size fue implementado como un método Set.prototype.size(), esto fue cambiado a una propiedad en versiones posteriores conforme la especificación ECMAScript 6 (bug 807001).

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/set/values/index.html b/files/es/web/javascript/reference/global_objects/set/values/index.html new file mode 100644 index 0000000000..8b7ec88ece --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/set/values/index.html @@ -0,0 +1,72 @@ +--- +title: Set.prototype.values() +slug: Web/JavaScript/Referencia/Objetos_globales/Set/values +translation_of: Web/JavaScript/Reference/Global_Objects/Set/values +--- +
{{JSRef}}
+ +

El método values() retorna un objeto de tipo Iterator que contiene los valores para cada elemento en el objecto Set en orden de inserción.

+ +

El metodo keys() es un alias para este metodo (por similaridad con objetos {{jsxref("Map")}}); se comporta exactamente igual y retorna valores para cada elemento de un Set.

+ +
{{EmbedInteractiveExample("pages/js/set-prototype-values.html")}}
+ + + +

Syntax

+ +
mySet.values();
+
+ +

Return value

+ +

Un nuevo objeto Iterator que contiene los valores para cada elemento en el Set dado,  en orden de inserción.

+ +

Examples

+ +

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

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-set.prototype.values', 'Set.prototype.values')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-set.prototype.values', 'Set.prototype.values')}}{{Spec2('ESDraft')}}
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Set.values")}}

+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/anchor/index.html b/files/es/web/javascript/reference/global_objects/string/anchor/index.html new file mode 100644 index 0000000000..c34abd62b1 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/anchor/index.html @@ -0,0 +1,56 @@ +--- +title: String.prototype.anchor() +slug: Web/JavaScript/Referencia/Objetos_globales/String/anchor +tags: + - HTML wrapper methods + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/anchor +--- +
{{JSRef("Objetos_globales", "String")}}
+ +

Resumen

+ +

El método anchor() crea un ancla HTML, {{HTMLElement("a")}}, que se usa como un enlace a hipertexto.

+ +

Sintaxis

+ +
cadena.anchor(nombreAtributo)
+ +

Parámetros

+ +
+
nombreAtributo
+
Una cadena.
+
+ +

Descripción

+ +

Usa el método anchor con los métodos document.write o document.writeln para crear y mostrar programando un ancla en un documento. Crea el ancla con el método anchor, y entonces llama a write o writeln para mostrar el ancla en el documento. En JavaScript en el lado Servidor, usa la función write para mostrar el ancla.

+ +

En la sintaxis, la cadena de texto representa el texto literal que usted quiere que el usuario vea. La cadena nombreAtributo representa el atributo NAME de la etiqueta A.

+ +

Los anclas creados con el método anchor serán elementos del arreglo {{domxref("document.anchors")}}

+ +

Ejemplos

+ +

Ejemplo: Usando anchor

+ +

El siguiente código de ejemplo dentro de un elemento HTML script:

+ +
var miCadena = "Tabla de Contenidos";
+document.body.innerHTML = miCadena.anchor("ancla_contenidos");
+
+ +

obtendrá el siguiente HTML:

+ +
<a name="ancla_contenidos">Tabla de Contenidos</A>
+
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/big/index.html b/files/es/web/javascript/reference/global_objects/string/big/index.html new file mode 100644 index 0000000000..0aa04e5b74 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/big/index.html @@ -0,0 +1,54 @@ +--- +title: String.prototype.big() +slug: Web/JavaScript/Referencia/Objetos_globales/String/big +tags: + - Deprecated + - HTML wrapper methods + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/big +--- +

{{JSRef("Objetos_globales", "String")}}

+ +

{{deprecated_header}}

+ +

Resumen

+ +

Provoca que una cadena sea mostrada con un tamaño de fuente grade, como si estuviese en una etiqueta {{HTMLElement("big")}}.

+ +

Sintaxis

+ +
cadena.big()
+ +

Descripción

+ +

Usa el método big para formatear y mostrar una cadena en un documento.

+ +

Ejemplos

+ +

Ejemplo: Usando big

+ +

El siguiente ejemplo usa los métodos de string para cambiar el tamañó de una cadena:

+ +
var cadenaMundo="¡Hola Mundo!";
+
+console.log(cadenaMundo.small());
+console.log("<P>" + cadenaMundo.big());
+console.log("<P>" + cadenaMundo.fontsize(7));
+
+ +

Este ejemplo produce el mismo resultado que el siguiente HTML:

+ +
<small>¡Hola Mundo!</small>
+<p><big>¡Hola Mundo!</big>
+<p><fontsize=7>¡Hola Mundo!</fontsize>
+
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/blink/index.html b/files/es/web/javascript/reference/global_objects/string/blink/index.html new file mode 100644 index 0000000000..cf49f3d840 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/blink/index.html @@ -0,0 +1,42 @@ +--- +title: String.prototype.blink() +slug: Web/JavaScript/Referencia/Objetos_globales/String/blink +tags: + - Deprecated + - HTML wrapper methods + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/blink +--- +

{{JSRef("Objetos_globales", "String")}}

+

{{deprecated_header}}

+

Resumen

+

Causa que una cadena parpadee como si estuviese en una etiqueta {{HTMLElement("blink")}}.

+

Sintaxis

+
cadena.blink()
+

Descripción

+

Usa el método blink para formatear y mostrar una cadena en un documento.

+

Ejemplos

+

Ejemplo: Usando métodos de string para cambiar el formateado de una cadena

+

El siguiente ejemplo usa métodos de string para cambiar el formateado de una cadena:

+
var cadenaMundo="¡Hola mundo!"
+
+console.log(cadenaMundo.blink())
+console.log(cadenaMundo.bold())
+console.log(cadenaMundo.italics())
+console.log(cadenaMundo.strike())
+
+

Este ejemplo produce el mismo resultado que el siguiente código HTML:

+
<blink>¡Hola mundo!</blink>
+<b>¡Hola mundo!</b>
+<i>¡Hola mundo!</b>
+<strike>¡Hola mundo!</strike>
+
+

Vea también

+ diff --git a/files/es/web/javascript/reference/global_objects/string/bold/index.html b/files/es/web/javascript/reference/global_objects/string/bold/index.html new file mode 100644 index 0000000000..cc7c841181 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/bold/index.html @@ -0,0 +1,43 @@ +--- +title: String.prototype.bold() +slug: Web/JavaScript/Referencia/Objetos_globales/String/bold +tags: + - Deprecated + - HTML wrapper methods + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/bold +--- +

{{JSRef("Objetos_globales", "String")}}
+
+ {{Deprecated_header}}

+

Resumen

+

Provoca que una cadena se muestre en negrita como si estuviera en una etiqueta {{HTMLElement("b")}}.

+

Sintaxis

+
cadena.bold()
+

Descripción

+

Usa el método bold para formatear y mostrar una cadena en un documento.

+

Ejemplos

+

Ejemplo: Usando métodos de string para cambiar el formateado de una cadena

+

El siguiente ejemplo usa métodos de string para cambiar el formateado de una cadena:

+
var cadenaMundo="¡Hola mundo!"
+
+console.log(cadenaMundo.blink())
+console.log(cadenaMundo.bold())
+console.log(cadenaMundo.italics())
+console.log(cadenaMundo.strike())
+
+

Este ejemplo produce el mismo resultado que el siguiente código HTML:

+
<blink>¡Hola mundo!</blink>
+<b>¡Hola mundo!</b>
+<i>¡Hola mundo!</i>
+<strike>¡Hola mundo!</strike>
+
+

Vea También

+ diff --git a/files/es/web/javascript/reference/global_objects/string/charat/index.html b/files/es/web/javascript/reference/global_objects/string/charat/index.html new file mode 100644 index 0000000000..6ef6d46e37 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/charat/index.html @@ -0,0 +1,143 @@ +--- +title: String.prototype.charAt() +slug: Web/JavaScript/Referencia/Objetos_globales/String/charAt +tags: + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/charAt +--- +

{{JSRef("Objetos_globales", "String")}}

+ +

Resumen

+ +

El método charAt() de {{jsxref("String")}} devuelve en un nuevo String el carácter UTF-16 de una cadena.

+ +

Sintaxis

+ +
str.charAt(indice)
+ +

Parámetros

+ +
+
indice
+
Un entero entre 0 y 1 menos que la longitud de la cadena. Si no se proporciona ningún indice charAt() utilizará 0.
+
+ +

Descripción

+ +

Los caracteres de una cadena se indexan de izquierda a derecha. El índice del primer caracter es 0, y el índice del último caracter en una cadena llamada nombreCadena es nombreCadena.length - 1. Si el indice que usted proporciona está fuera del rango, JavaScript devuelve una cadena vacía.

+ +

Ejemplos

+ +

Ejemplo: Mostrando caracteres de diferentes localizaciones en una cadena

+ +

El siguiente ejemplo muestra caracteres de diferentes localizaciones en la cadena "Brave new world":

+ +
var cualquierCadena="Brave new world";
+
+console.log("El carácter en el índice 0 es '" + cualquierCadena.charAt(0) + "'")
+console.log("El carácter en el índice 1 es '" + cualquierCadena.charAt(1) + "'")
+console.log("El carácter en el índice 2 es '" + cualquierCadena.charAt(2) + "'")
+console.log("El carácter en el índice 3 es '" + cualquierCadena.charAt(3) + "'")
+console.log("El carácter en el índice 4 es '" + cualquierCadena.charAt(4) + "'")
+console.log("El carácter en el índice 999 es '" + cualquierCadena.charAt(999) + "'")
+
+ +

Estas líneas muestran lo siguiente:

+ +
El carácter en el índice 0 es 'B'
+El carácter en el índice 1 es 'r'
+El carácter en el índice 2 es 'a'
+El carácter en el índice 3 es 'v'
+El carácter en el índice 4 es 'e'
+El carácter en el índice 999 es ''
+
+ +

Especificaciónes

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
ECMAScript 1st Edition.EstándarPrimera definición
{{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')}} 
+ +

Compatibilidad 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() }}
+
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/charcodeat/index.html b/files/es/web/javascript/reference/global_objects/string/charcodeat/index.html new file mode 100644 index 0000000000..4eccf78f13 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/charcodeat/index.html @@ -0,0 +1,65 @@ +--- +title: String.prototype.charCodeAt() +slug: Web/JavaScript/Referencia/Objetos_globales/String/charCodeAt +tags: + - JavaScript + - Method + - Prototype + - String + - Unicode +translation_of: Web/JavaScript/Reference/Global_Objects/String/charCodeAt +--- +

{{JSRef("Objetos_globales", "String")}}

+ +

Resumen

+ +

El charCodeAt() método devuelve un número indicando el valor Unicode del carácter en el índice proporcionado.

+ +

Sintaxis

+ +
cadena.charCodeAt(indice);
+
+ +

Parámetros

+ +
+
indice
+
Un entero entre 0 y 1 menos que la longitud de la cadena; si no se especifica, su valor predeterminado es 0.
+
+ +

Descripción

+ +

El rango del código Unicode va del 0 al 1,114,1110x10FFFF. Los primeros 128 códigos de Unicode encajan directamente con los códigos de caractéres de la codificación ASCII. Para información sobre Unicode, vea la Guía de JavaScript. Observe que charCodeAt siempre devolverá un valor menor de 65.536.

+ +

charCodeAt devuelve {{jsxref("NaN")}} si el indice proporcionado no está entre 0 y 1 menos de la longitud de la cadena.

+ +

En JavaScript 1.2 el método charCodeAt devuelve un número indicando el valor de la hoja de códigos ISO-Latin-1 del carácter correspondiente al índice proporcionado. El rango de la hoja de códigos ISO-Latin-1 va del 0 al 255. Del 0 al 127 encajan directamente con la hoja de códigos ASCII.

+ +

Ejemplos

+ +

Ejemplo: Usando charCodeAt

+ +

El siguiente ejemplo devuelve 65, el valor Unicode para A. 

+ +
"ABC".charCodeAt(0) // returns 65
+
+ +

El siguiente ejemplo devuelve 83.

+ +
"AaSdas".charCodeAt(2) // returns 83
+
+ +

teniendo en cuenta que 2 es la posicion de la letra. Si `S` fuera minuscula, el Unicode es diferente

+ +
"Aasdas".charCodeAt(2) // returns 115
+ +

 

+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/codepointat/index.html b/files/es/web/javascript/reference/global_objects/string/codepointat/index.html new file mode 100644 index 0000000000..ae3fef3ec8 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/codepointat/index.html @@ -0,0 +1,127 @@ +--- +title: String.prototype.codePointAt() +slug: Web/JavaScript/Referencia/Objetos_globales/String/codePointAt +translation_of: Web/JavaScript/Reference/Global_Objects/String/codePointAt +--- +
{{JSRef}}
+ +
 
+ +
El método codePointAt() devuelve un entero no negativo que equivale al valor Unicode code point del carácter.
+ +

Sintaxis

+ +
str.codePointAt(indice)
+ +

Parámetros

+ +
+
indice
+
Índice del carácter en la cadena del que se quiere obtener el valor del Unicode code point.
+
+ +

Valor de retorno

+ +

Un número que equivale al valor code point del carácter especificado en el índice de la cadena; devuelve {{jsxref("undefined")}} si no se encuentra carácter en la posición especifica.

+ +

Description

+ +

If there is no element at the specified position, {{jsxref("undefined")}} is returned. If no UTF-16 surrogate pair begins at pos, the code unit at pos is returned.

+ +

Examples

+ +

Using codePointAt()

+ +
'ABC'.codePointAt(1);          // 66
+'\uD800\uDC00'.codePointAt(0); // 65536
+
+'XYZ'.codePointAt(42); // undefined
+
+ +

Polyfill

+ +

The following extends Strings to include the codePointAt() function as specified in ECMAScript 2015 for browsers not supporting it natively.

+ +
/*! http://mths.be/codepointat v0.1.0 by @mathias */
+if (!String.prototype.codePointAt) {
+  (function() {
+    'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
+    var codePointAt = function(position) {
+      if (this == null) {
+        throw TypeError();
+      }
+      var string = String(this);
+      var size = string.length;
+      // `ToInteger`
+      var index = position ? Number(position) : 0;
+      if (index != index) { // 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
+          // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
+          return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
+        }
+      }
+      return first;
+    };
+    if (Object.defineProperty) {
+      Object.defineProperty(String.prototype, 'codePointAt', {
+        'value': codePointAt,
+        'configurable': true,
+        'writable': true
+      });
+    } else {
+      String.prototype.codePointAt = codePointAt;
+    }
+  }());
+}
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-string.prototype.codepointat', 'String.prototype.codePointAt')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-string.prototype.codepointat', 'String.prototype.codePointAt')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.String.codePointAt")}}

+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/concat/index.html b/files/es/web/javascript/reference/global_objects/string/concat/index.html new file mode 100644 index 0000000000..d00ffce70e --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/concat/index.html @@ -0,0 +1,90 @@ +--- +title: String.prototype.concat() +slug: Web/JavaScript/Referencia/Objetos_globales/String/concat +tags: + - JavaScript + - Prototipo + - Referencia + - String + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/concat +--- +
{{JSRef}}
+ +

El método concat() combina dos o más cadenas de texto y devuelve una cadena de texto nueva.

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

Sintaxis

+ +
str.concat(str2 [, ...strN])
+ +

Parámetros

+ +
+
str2 [, ...strN]
+
Cadenas que se concatenarán con str.
+
+ +

Valor devuelto

+ +

Una nueva cadena que contiene el texto combinado de las cadenas proporcionadas.

+ +

Descripción

+ +

La función concat() concatena los argumentos de tipo texto con la cadena de sobre la que se llama a la función y devuelve una nueva cadena de texto. Los cambios en la cadena original o la cadena devuelta no afectan al otro.

+ +

Si los argumentos no son de tipo texto, son convertidos a texto antes de concatenarlos

+ +

Rendimiento

+ +

Es altamente recomendado que se utilicen {{jsxref("Operators/Assignment_Operators", "operadores de asignación", "", 1)}} (+, +=) en lugar del método concat().

+ +

Ejemplos

+ +

Usando concat()

+ +

El siguiente ejemplo combina cadenas de texto en una nueva.

+ +
let hello = 'Hello, '
+console.log(hello.concat('Kevin', '. Have a nice day.'))
+// Hello, Kevin. Have a nice day.
+
+let greetList = ['Hello', ' ', 'Venkat', '!']
+"".concat(...greetList)  // "Hello Venkat!"
+
+"".concat({})    // [object Object]
+"".concat([])    // ""
+"".concat(null)  // "null"
+"".concat(true)  // "true"
+"".concat(4, 5)  // "45"
+
+
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-string.prototype.concat', 'String.prototype.concat')}}
+ +

Compatibilidad con navegadores

+ + + +

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

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/endswith/index.html b/files/es/web/javascript/reference/global_objects/string/endswith/index.html new file mode 100644 index 0000000000..cbeac4f481 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/endswith/index.html @@ -0,0 +1,88 @@ +--- +title: String.prototype.endsWith() +slug: Web/JavaScript/Referencia/Objetos_globales/String/endsWith +tags: + - JavaScript + - Prototipo + - Referencia + - String + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/endsWith +--- +
{{JSRef}}
+ +

El método endsWith() determina si una cadena de texto termina con los caracteres de una cadena indicada, devolviendo true o false según corresponda.

+ +
{{EmbedInteractiveExample("pages/js/string-endswith.html")}}
+ +

Sintaxis

+ +
str.endsWith(searchString[, position])
+ +

Parámetros

+ +
+
searchString
+
Los caracteres a buscar hasta el final de la cadena str.
+
length {{optional_inline}}
+
Si se indica, se utiliza como el tamaño de str. Por defecto se usa str.length.
+
+ +

Valor devuelto

+ +

true si los caracteres proporcionados se encuentran al final de la cadena de texto; en caso contrario, false.

+ +

Descripción

+ +

Este método determina si una cadena de texto termina en otra cadena o no. Este método distingue entre mayúsculas y minúsculas.

+ +

Polyfill

+ +

Este método ha sido añadido a la especificación ECMAScript 6 y puede no estar disponible en todas las implementaciones de JavaScript. Sin embargo, puedes implementar el polyfill String.prototype.endsWith() con el siguiente fragmento de código:

+ +
if (!String.prototype.endsWith) {
+	String.prototype.endsWith = function(search, this_len) {
+		if (this_len === undefined || this_len > this.length) {
+			this_len = this.length;
+		}
+		return this.substring(this_len - search.length, this_len) === search;
+	};
+}
+
+ +

Ejemplos

+ +

Usando endsWith()

+ +
let str = 'To be, or not to be, that is the question.'
+
+console.log(str.endsWith('question.'))  // true
+console.log(str.endsWith('to be'))      // false
+console.log(str.endsWith('to be', 19))  // true
+
+ +

Especificaciones

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.endswith', 'String.prototype.endsWith')}}
+ +

Compatibilidad en navegadores

+ +

{{Compat("javascript.builtins.String.endsWith")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/fixed/index.html b/files/es/web/javascript/reference/global_objects/string/fixed/index.html new file mode 100644 index 0000000000..3d188bc39d --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/fixed/index.html @@ -0,0 +1,35 @@ +--- +title: String.prototype.fixed() +slug: Web/JavaScript/Referencia/Objetos_globales/String/fixed +tags: + - Deprecated + - HTML wrapper methods + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/fixed +--- +

{{JSRef("Objetos_globales", "String")}}

+

{{deprecated_header}}

+

Resumen

+

Causa que una cadena se muestre con una fuente de ancho fijo, como si estuviesde dentro de una etiqueta {{HTMLElement("tt")}}.

+

Sintaxis

+
cadena.fixed()
+

Descripción

+

Usa el método fixed para formatear y mostrar unacadena en un documento.

+

Ejemplos

+

Ejemplo: Usando fixed para cambiar el formateado de una cadena

+

El siguiente ejemplo usa el método fixed para cambiar el formateado de una cadena:

+
var cadenaMundo="¡Hola Mundo!"
+console.log(cadenaMundo.fixed())
+
+

Este ejemplo produce el mismo resultado que el siguiente código HTML:

+
<tt>¡Hola Mundo!</tt>
+
+

Vea También

+ diff --git a/files/es/web/javascript/reference/global_objects/string/fontcolor/index.html b/files/es/web/javascript/reference/global_objects/string/fontcolor/index.html new file mode 100644 index 0000000000..135e805cb2 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/fontcolor/index.html @@ -0,0 +1,122 @@ +--- +title: String.prototype.fontcolor() +slug: Web/JavaScript/Referencia/Objetos_globales/String/fontcolor +translation_of: Web/JavaScript/Reference/Global_Objects/String/fontcolor +--- +
{{JSRef}} {{deprecated_header}}
+ +

El método fontcolor() crea {{HTMLElement("font")}} elemento HTML que cambia el color de la cadena.

+ +
+

Usage note: La etiqueta <font> fue eliminada en HTML5 y no debe ser usada. En lugar de es, es necesario aplicar propiedades CSS.

+
+ +

Sintaxis

+ +
str.fontcolor(color)
+ +

Parametros

+ +
+
color
+
A string expressing the color as a hexadecimal RGB triplet or as a string literal. String literals for color names are listed in the CSS color reference.
+
+ +

Descripción

+ +

Si expresas el color como hexadecimal, usa el formato rrggbb. Por ejemplo, el color hexadecimal para salmón es R=FA, G=80, B=72, así que el valor será "FA8072".

+ +

Ejemplos

+ +

Usos fontcolor()

+ +

Los siguientes ejemplos usan el método fontcolor() para cambiar el color de una cadena.

+ +
var worldString = 'Hello, world';
+
+console.log(worldString.fontcolor('red') +  ' en rojo');
+// '<font color="red">Hello, world</font> en rojo'
+
+console.log(worldString.fontcolor('FF00') + ' es rojo en hexadecimal');
+// '<font color="FF00">Hello, world</font> es rojo en hexadecimal'
+
+ +

Con el objeto {{domxref("HTMLElement.style", "element.style")}} obtienes el atributo style y manipularlo:

+ +
document.getElementById('yourElemId').style.color = 'red';
+
+ +

Especificaciones

+ + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
{{SpecName('ES6', '#sec-string.prototype.fontcolor', 'String.prototype.fontcolor')}}{{Spec2('ES6')}}Initial definition. Implemented in JavaScript 1.0. Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers.
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Basico{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Basico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/fontsize/index.html b/files/es/web/javascript/reference/global_objects/string/fontsize/index.html new file mode 100644 index 0000000000..212c49d638 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/fontsize/index.html @@ -0,0 +1,123 @@ +--- +title: String.prototype.fontsize() +slug: Web/JavaScript/Referencia/Objetos_globales/String/fontsize +translation_of: Web/JavaScript/Reference/Global_Objects/String/fontsize +--- +
{{JSRef}} {{deprecated_header}}
+ +

El método fontsize() crea {{HTMLElement("font")}} elemento HTML que muestra una cadena con el tamaño especificado.

+ +
+

Usage note: El elemento <font> ha sido eliminado HTML5 y no se debe usar. Los desarrolladores web deben usar propiedades CSS.

+
+ +

Sintaxis

+ +
str.fontsize(size)
+ +

Parámetros

+ +
+
size
+
Un entero entre 1 y 7.
+
+ +

Descripción

+ +

Cuando especificas el tamaño como entero, estableces el tamaño de la fuente. Cuando especificas el tamaño como cadena tal como "-2", se ajusta el tamaño de la fuente al de la etiqueta {{HTMLElement("basefont")}}.

+ +

When you specify size as an integer, you set the font size of str to one of the 7 defined sizes. When you specify size as a string such as "-2", you adjust the font size of str relative to the size set in the {{HTMLElement("basefont")}} tag.

+ +

Ejemlpos

+ +

Usos fontsize()

+ +

The following example uses string methods to change the size of a string:

+ +
var worldString = 'Hello, world';
+
+console.log(worldString.small());     // <small>Hello, world</small>
+console.log(worldString.big());       // <big>Hello, world</big>
+console.log(worldString.fontsize(7)); // <font size="7">Hello, world</fontsize>
+
+ +

With the {{domxref("HTMLElement.style", "element.style")}} object you can get the element's style attribute and manipulate it more generically, for example:

+ +
document.getElementById('yourElemId').style.fontSize = '0.7em';
+
+ +

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-string.prototype.fontsize', 'String.prototype.fontsize')}}{{Spec2('ES6')}}Initial definition. Implemented in JavaScript 1.0. Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers.
+ +

Browser compatibility

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

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/fromcharcode/index.html b/files/es/web/javascript/reference/global_objects/string/fromcharcode/index.html new file mode 100644 index 0000000000..7e87f3d90d --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/fromcharcode/index.html @@ -0,0 +1,130 @@ +--- +title: String.fromCharCode() +slug: Web/JavaScript/Referencia/Objetos_globales/String/fromCharCode +tags: + - JavaScript + - Method + - String + - Unicode +translation_of: Web/JavaScript/Reference/Global_Objects/String/fromCharCode +--- +

{{JSRef("Objetos_globales", "String")}}

+ +

Resumen

+ +

El String.fromCharCode() método estático que devuelve una cadena creada mediante el uso de una secuencia de valores Unicode especificada.

+ +

Sintaxis

+ +
String.fromCharCode(num1, ..., numN) 
+ +

Parámetros

+ +
+
num1, ..., numN
+
Secuencia de números con los valores Unicode.
+
+ +

Descripción

+ +

Este método devuelve una cadena y no un objeto String.

+ +

Debido a que fromCharCode es un método estático de String, usted siempre lo usará como String.fromCharCode(), en vez de un método de un objeto String creado por usted.

+ +

Ejemplos

+ +

Ejemplo: Usando fromCharCode

+ +

El siguiene ejemplo devuelve la cadena "ABC".

+ +
String.fromCharCode(65,66,67)
+
+ +

Especificaciónes

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
ECMAScript 1st Edition.EstándarPrimera definicíon
+ Implementada en JavaScript 1.2
{{SpecName('ES5.1', '#sec-15.5.3.2', 'StringfromCharCode')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.fromcharcodes', 'String.fromCharCode')}}{{Spec2('ES6')}} 
+ +

Compatibilidad 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() }}
+
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/fromcodepoint/index.html b/files/es/web/javascript/reference/global_objects/string/fromcodepoint/index.html new file mode 100644 index 0000000000..39fe662b75 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/fromcodepoint/index.html @@ -0,0 +1,204 @@ +--- +title: String.fromCodePoint() +slug: Web/JavaScript/Referencia/Objetos_globales/String/fromCodePoint +translation_of: Web/JavaScript/Reference/Global_Objects/String/fromCodePoint +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Resumen

+ +

El método estatico String.fromCodePoint() devuelve una cadena creada por una secuencia de puntos de codigo.

+ +

Sintaxis

+ +
String.fromCodePoint(num1[, ...[, numN]])
+ +

Parametros

+ +
+
num1, ..., numN
+
Una secuencia de puntos de código.
+
+ +

Throws

+ +
+
{{jsxref("Global_Objects/RangeError", "RangeError")}}
+
A {{jsxref("Global_Objects/RangeError", "RangeError")}} is thrown if an invalid Unicode code point is given (e.g. "RangeError: NaN is not a valid code point").
+
+ +

Descripción

+ +

Because fromCodePoint() is a static method of {{jsxref("Global_Objects/String", "String")}}, you always use it as String.fromCodePoint(), rather than as a method of a {{jsxref("Global_Objects/String", "String")}} object you created.

+ +

Ejemplos

+ +

Ejemplos: 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

+ +

The String.fromCodePoint method has been added to the ECMAScript standard in version 6 and may not be supported in all web browsers or environments yet. Use the code below for a 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;
+    }
+  }());
+}
+
+ +

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-string.fromcodepoint', 'String.fromCodePoint')}}{{Spec2('ES6')}}Initial definition.
+ +

Browser compatibility

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support41{{CompatGeckoDesktop("29")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("29")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/includes/index.html b/files/es/web/javascript/reference/global_objects/string/includes/index.html new file mode 100644 index 0000000000..094a3fd648 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/includes/index.html @@ -0,0 +1,108 @@ +--- +title: String.prototype.includes() +slug: Web/JavaScript/Referencia/Objetos_globales/String/includes +tags: + - Cadena de texto + - JavaScript + - Prototipo + - Referencia + - String + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/includes +--- +
{{JSRef}}
+ +

El método includes() determina si una cadena de texto puede ser encontrada dentro de otra cadena de texto, devolviendo true o false según corresponda.

+ +
{{EmbedInteractiveExample("pages/js/string-includes.html", "shorter")}}
+ +

Sintaxis

+ +
str.includes(searchString[, position])
+ +

Parametros

+ +
+
searchString
+
Una cadena a buscar en el texto str.
+
position {{optional_inline}}
+
La posición dentro de la cadena en la cual empieza la búsqueda de searchString (Por defecto este valor es 0).
+
+ +

Valor devuelto

+ +

true si la cadena de texto contiene la cadena buscada; en caso contrario, false.

+ +

Descripción

+ +

Este método permite determinar si una cadena de texto se encuentra incluida dentro de la otra.

+ +

Sensibilidad a Mayúsculas/Minúsculas

+ +

El método includes() es "case sensitive" (tiene en cuenta mayúsculas y minúsculas). Por ejemplo, la siguiente expresión devolverá false:

+ +
'Ballena azul'.includes('ballena'); // devuelve false
+
+ +

Polyfill

+ +

Este método ha sido agregado a la especificación ECMAScript 2015 y puede no estar  disponible en toda las implementaciones de JavaScript.

+ +

Sin embargo, puedes usar este método como polyfill:

+ +
if (!String.prototype.includes) {
+  String.prototype.includes = function(search, start) {
+    'use strict';
+
+    if (search instanceof RegExp) {
+      throw TypeError('first argument must not be a RegExp');
+    }
+    if (start === undefined) { start = 0; }
+    return this.indexOf(search, start) !== -1;
+  };
+}
+
+ +

Ejemplos

+ +

Usando includes()

+ +
const str = 'To be, or not to be, that is the question.'
+
+console.log(str.includes('To be'))        // true
+console.log(str.includes('question'))     // true
+console.log(str.includes('nonexistent'))  // false
+console.log(str.includes('To be', 1))     // false
+console.log(str.includes('TO BE'))        // false
+console.log(str.includes(''))             // true
+
+ +

Especificaciones

+ + + + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.includes', 'String.prototype.includes')}}
+ +

Compatibilidad en navegadores

+ +

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

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/index.html b/files/es/web/javascript/reference/global_objects/string/index.html new file mode 100644 index 0000000000..a6c5aea8e3 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/index.html @@ -0,0 +1,385 @@ +--- +title: String — Cadena de caracteres +slug: Web/JavaScript/Referencia/Objetos_globales/String +tags: + - Clase + - Class + - ECMAScript 2015 + - JavaScript + - Referencia + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String +--- +
{{JSRef}}
+ +

El objeto String se utiliza para representar y manipular una secuencia de caracteres.

+ +

Descripción

+ +

Las cadenas son útiles para almacenar datos que se pueden representar en forma de texto. Algunas de las operaciones más utilizadas en cadenas son verificar su {{jsxref("String.length", "length")}}, para construirlas y concatenarlas usando operadores de cadena + y +=, verificando la existencia o ubicación de subcadenas con {{jsxref("String.prototype.indexOf()", "indexOf()")}} o extraer subcadenas con el método {{jsxref("String.prototype.substring()", "substring()")}}.

+ +

Crear cadenas

+ +

Las cadenas se pueden crear como primitivas, a partir de cadena literales o como objetos, usando el constructor {{jsxref("String/String", "String()")}}:

+ +
const string1 = "Una cadena primitiva";
+const string2 = 'También una cadena primitiva';
+const string3 = `Otra cadena primitiva más`;
+ +
const string4 = new String("Un objeto String");
+
+ +

Las strings primitivas y los objetos string se pueden usar indistintamente en la mayoría de las situaciones. Consulta "Primitivas String y objetos String" a continuación.

+ +

Los cadena literales se pueden especificar usando comillas simples o dobles, que se tratan de manera idéntica, o usando el carácter de comilla invertida `. Esta última forma especifica una Plantilla literal: con esta forma puedes interpolar expresiones.

+ +

Acceder a un caracter

+ +

Hay dos formas de acceder a un caracter individual en una cadena. La primera es con el método {{jsxref("String.prototype.charAt()", "charAt()")}}:

+ +
return 'cat'.charAt(1) // devuelve "a"
+
+ +

La otra forma (introducida en ECMAScript 5) es tratar a la cadena como un objeto similar a un arreglo, donde los caracteres individuales corresponden a un índice numérico:

+ +
return 'cat'[1] // devuelve "a"
+
+ +

Cuando se usa la notación entre corchetes para acceder a los caracteres, no se puede intentar eliminar o asignar un valor a estas propiedades. Las propiedades involucradas no se pueden escribir ni configurar. (Ve {{jsxref("Object.defineProperty()")}} para más información).

+ +

Comparar cadenas

+ +

En C, se usa la función strcmp() para comparar cadenas. En JavaScript, solo usas los operadores menor que y mayor que:

+ +
let a = 'a'
+let b = 'b'
+if (a < b) { // true
+  console.log(a + ' es menor que ' + b)
+} else if (a > b) {
+  console.log(a + ' es mayor que ' + b)
+} else {
+  console.log(a + ' y ' + b + ' son iguales.')
+}
+
+ +

Puedes lograr un resultado similar usando el método {{jsxref("String.prototype.localeCompare()", "localeCompare()")}} heredado por las instancias de String.

+ +

Ten en cuenta que a == b compara las cadenas en a y b por ser igual en la forma habitual que distingue entre mayúsculas y minúsculas. Si deseas comparar sin tener en cuenta los caracteres en mayúsculas o minúsculas, usa una función similar a esta:

+ +
function isEqual(str1, str2)
+{
+    return str1.toUpperCase() === str2.toUpperCase()
+} // isEqual
+
+ +

En esta función se utilizan mayúsculas en lugar de minúsculas, debido a problemas con ciertas conversiones de caracteres UTF-8.

+ +

Primitivas String y objetos String

+ +

Ten en cuenta que JavaScript distingue entre objetos String y valores de {{Glossary("Primitive", "primitivas string")}}. (Lo mismo ocurre con {{jsxref("Boolean", "Booleanos")}} y {{jsxref("Global_Objects/Number", "Números")}}).

+ +

Las cadenas literales (denotadas por comillas simples o dobles) y cadenas devueltas de llamadas a String en un contexto que no es de constructor (es decir, llamado sin usar la palabra clave {{jsxref("Operators/new", "new")}}) son cadenas primitivas. JavaScript automáticamente convierte las primitivas en objetos String, por lo que es posible utilizar métodos del objeto String en cadenas primitivas. En contextos donde se va a invocar a un método en una cadena primitiva o se produce una búsqueda de propiedad, JavaScript ajustará automáticamente la cadena primitiva y llamará al método o realizará la búsqueda de la propiedad.

+ +
let s_prim = 'foo'
+let s_obj = new String(s_prim)
+
+console.log(typeof s_prim) // Registra "string"
+console.log(typeof s_obj)  // Registra "object"
+
+ +

Las primitivas de String y los objetos String también dan diferente resultado cuando se usa {{jsxref("Global_Objects/eval", "eval()")}}. Las primitivas pasadas a eval se tratan como código fuente; Los objetos String se tratan como todos los demás objetos, devuelven el objeto. Por ejemplo:

+ +
let s1 = '2 + 2'              // crea una string primitiva
+let s2 = new String('2 + 2')  // crea un objeto String
+console.log(eval(s1))         // devuelve el número 4
+console.log(eval(s2))         // devuelve la cadena "2 + 2"
+
+ +

Por estas razones, el código se puede romper cuando encuentra objetos String y espera una string primitiva en su lugar, aunque generalmente los autores no necesitan preocuparse por la distinción.

+ +

Un objeto String siempre se puede convertir a su contraparte primitiva con el método {{jsxref("String.prototype.valueOf()", "valueOf()")}}.

+ +
console.log(eval(s2.valueOf()))  // devuelve el número 4
+
+ +

Notación de escape

+ +

Los caracteres especiales se pueden codificar mediante notación de escape:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CódigoSalida
\XXX
+ (donde XXX es de 1 a 3 dígitos octales; rango de 0-377)
Punto de código Unicode/carácter ISO-8859-1 entre U+0000 y U+00FF
\'Comilla sencilla
\"Comilla doble
\\Barra inversa
\nNueva línea
\rRetorno de carro
\vTabulación vertical
\tTabulación
\bRetroceso
\fAvance de página
\uXXXX (donde XXXX son 4 dígitos hexadecimales; rango de 0x0000-0xFFFF)Unidad de código UTF-16/punto de código Unicode entre U+0000 y U+FFFF
\u{X} ... \u{XXXXXX}
+ (donde XXXXXXX es de 1 a 6 dígitos hexadecimales; rango de 0x0-0x10FFFF)
Unidad de código UTF-32/punto de código Unicode entre U+0000 y U+10FFFF
\xXX
+ (donde XX son 2 dígitos hexadecimales; rango de 0x00-0xFF)
Punto de código Unicode/carácter ISO-8859-1 entre U+0000 y U+00FF
+ +

Cadenas literales largas

+ +

A veces, tu código incluirá cadenas que son muy largas. En lugar de tener líneas que se prolongan interminablemente o que se ajustan según el capricho de tu editor, es posible que desees dividir específicamente la cadena en varias líneas en el código fuente sin afectar el contenido real de la cadena. hay dos maneras de conseguirlo.

+ +

Método 1

+ +

Puedes usar el operador + para agregar varias cadenas juntas, así:

+ +
let longString = "Esta es una cadena muy larga que necesita " +
+                 "que dividimos en varias líneas porque " +
+                 "de lo contrario, mi código es ilegible."
+
+ +

Método 2

+ +

Puedes usar el caracter de barra invertida (\) al final de cada línea para indicar que la cadena continúa en la siguiente línea. Asegúrate de que no haya ningún espacio ni ningún otro carácter después de la barra invertida (a excepción de un salto de línea) o como sangría; de lo contrario, no trabajará.

+ +

Esa forma se ve así:

+ +
let longString = "Esta es una cadena muy larga que necesita \
+que dividimos en varias líneas porque \
+de lo contrario, mi código es ilegible."
+
+ +

Ambos métodos anteriores dan como resultado cadenas idénticas.

+ +

Constructor

+ +
+
{{jsxref("String/String", "String()")}}
+
Crea un nuevo objeto String. Realiza la conversión de tipos cuando se llama como función, en lugar de como constructor, lo cual suele ser más útil.
+
+ +

Métodos estáticos

+ +
+
{{jsxref("String.fromCharCode()", "String.fromCharCode(num1 [, ...[, numN]])")}}
+
Devuelve una cadena creada utilizando la secuencia de valores Unicode especificada.
+
{{jsxref("String.fromCodePoint()", "String.fromCodePoint(num1 [, ...[, numN]])")}}
+
Devuelve una cadena creada utilizando la secuencia de puntos de código especificada.
+
{{jsxref("String.raw()")}}
+
Devuelve una cadena creada a partir de una plantilla literal sin formato.
+
+ +

Propiedades de la instancia

+ +
+
{{jsxref("String.prototype.length")}}
+
Refleja la length de la cadena. Solo lectura.
+
+ +

Métodos de instancia

+ +
+
{{jsxref("String.prototype.charAt()", "String.prototype.charAt(index)")}}
+
Devuelve el caracter (exactamente una unidad de código UTF-16) en el index especificado.
+
{{jsxref("String.prototype.charCodeAt()", "String.prototype.charCodeAt(index)")}}
+
Devuelve un número que es el valor de la unidad de código UTF-16 en el index dado.
+
{{jsxref("String.prototype.codePointAt()", "String.prototype.codePointAt(pos)")}}
+
Devuelve un número entero no negativo que es el valor del punto de código del punto de código codificado en UTF-16 que comienza en la pos especificada.
+
{{jsxref("String.prototype.concat()", "String.prototype.concat(str[, ...strN])")}}
+
Combina el texto de dos (o más) cadenas y devuelve una nueva cadena.
+
{{jsxref("String.prototype.includes()", "String.prototype.includes(searchString [, position])")}}
+
Determina si la cadena de la llamada contiene searchString.
+
{{jsxref("String.prototype.endsWith()", "String.prototype.endsWith(searchString[, length])")}}
+
Determina si una cadena termina con los caracteres de la cadena searchString.
+
{{jsxref("String.prototype.indexOf()", "String.prototype.indexOf(searchValue[, fromIndex])")}}
+
Devuelve el índice dentro del objeto {{jsxref("String")}} llamador de la primera aparición de searchValue, o -1 si no lo encontró.
+
{{jsxref("String.prototype.lastIndexOf()", "String.prototype.lastIndexOf(searchValue[, fromIndex])")}}
+
Devuelve el índice dentro del objeto {{jsxref("String")}} llamador de la última aparición de searchValue, o -1 si no lo encontró.
+
{{jsxref("String.prototype.localeCompare()", "String.prototype.localeCompare(compareString[, locales[, options]])")}}
+
Devuelve un número que indica si la cadena de referencia compareString viene antes, después o es equivalente a la cadena dada en el orden de clasificación.
+
{{jsxref("String.prototype.match()", "String.prototype.match(regexp)")}}
+
Se utiliza para hacer coincidir la expresión regular regexp con una cadena.
+
{{jsxref("String.prototype.matchAll()", "String.prototype.matchAll(regexp)")}}
+
Devuelve un iterador de todas las coincidencias de regexp.
+
{{jsxref("String.prototype.normalize()", "String.prototype.normalize([form])")}}
+
Devuelve la forma de normalización Unicode del valor de la cadena llamada.
+
{{jsxref("String.prototype.padEnd()", "String.prototype.padEnd(targetLength[, padString])")}}
+
Rellena la cadena actual desde el final con una cadena dada y devuelve una nueva cadena de longitud targetLength.
+
{{jsxref("String.prototype.padStart()", "String.prototype.padStart(targetLength[, padString])")}}
+
Rellena la cadena actual desde el principio con una determinada cadena y devuelve una nueva cadena de longitud targetLength.
+
{{jsxref("String.prototype.repeat()", "String.prototype.repeat(count)")}}
+
Devuelve una cadena que consta de los elementos del objeto repetidos count veces.
+
{{jsxref("String.prototype.replace()" , "String.prototype.replace(searchFor, replaceWith)")}}
+
Se usa para reemplazar ocurrencias de searchFor usando replaceWith. searchFor puede ser una cadena o expresión regular, y replaceWith puede ser una cadena o función.
+
{{jsxref("String.prototype.replaceAll()", "String.prototype.replaceAll(searchFor, replaceWith)")}}
+
Se utiliza para reemplazar todas las apariciones de searchFor usando replaceWith. searchFor puede ser una cadena o expresión regular, y replaceWith puede ser una cadena o función.
+
{{jsxref("String.prototype.search()", "String.prototype.search(regexp)")}}
+
Busca una coincidencia entre una expresión regular regexp y la cadena llamadora.
+
{{jsxref("String.prototype.slice()", "String.prototype.slice(beginIndex[, endIndex])")}}
+
Extrae una sección de una cadena y devuelve una nueva cadena.
+
{{jsxref("String.prototype.split()", "String.prototype.split([sep[, limit] ])")}}
+
Devuelve un arreglo de cadenas pobladas al dividir la cadena llamadora en las ocurrencias de la subcadena sep.
+
{{jsxref("String.prototype.startsWith()", "String.prototype.startsWith(searchString[, length])")}}
+
Determina si la cadena llamadora comienza con los caracteres de la cadena searchString.
+
{{jsxref("String.prototype.substr()")}}
+
Devuelve los caracteres en una cadena que comienza en la ubicación especificada hasta el número especificado de caracteres.
+
{{jsxref("String.prototype.substring()", "String.prototype.substring(indexStart[, indexEnd])")}}
+
Devuelve una nueva cadena que contiene caracteres de la cadena llamadora de (o entre) el índice (o indeces) especificados.
+
{{jsxref("String.prototype.toLocaleLowerCase()", "String.prototype.toLocaleLowerCase( [locale, ...locales])")}}
+
+

Los caracteres dentro de una cadena se convierten a minúsculas respetando la configuración regional actual.

+ +

Para la mayoría de los idiomas, devolverá lo mismo que {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}}.

+
+
{{jsxref("String.prototype.toLocaleUpperCase()", "String.prototype.toLocaleUpperCase( [locale, ...locales])")}}
+
+

Los caracteres dentro de una cadena se convierten a mayúsculas respetando la configuración regional actual.

+ +

Para la mayoría de los idiomas, devolverá lo mismo que {{jsxref("String.prototype.toUpperCase()", "toUpperCase()")}}.

+
+
{{jsxref("String.prototype.toLowerCase()")}}
+
Devuelve el valor de la cadena llamadora convertido a minúsculas.
+
{{jsxref("String.prototype.toString()")}}
+
Devuelve una cadena que representa el objeto especificado. Redefine el método {{jsxref("Object.prototype.toString()")}}.
+
{{jsxref("String.prototype.toUpperCase()")}}
+
Devuelve el valor de la cadena llamadora convertido a mayúsculas.
+
{{jsxref("String.prototype.trim()")}}
+
Recorta los espacios en blanco desde el principio y el final de la cadena. Parte del estándar ECMAScript 5.
+
{{jsxref("String.prototype.trimStart()")}}
+
Recorta los espacios en blanco desde el principio de la cadena.
+
{{jsxref("String.prototype.trimEnd()")}}
+
Recorta los espacios en blanco del final de la cadena.
+
{{jsxref("String.prototype.valueOf()")}}
+
Devuelve el valor primitivo del objeto especificado. Redefine el método {{jsxref("Object.prototype.valueOf()")}}.
+
{{jsxref("String.prototype.@@iterator()")}}
+
Devuelve un nuevo objeto Iterator que itera sobre los puntos de código de un valor de cadena, devolviendo cada punto de código como un valor de cadena.
+
+ +

Métodos de contenedor HTML

+ +
+
+

Desaprobado. Evita estos métodos.

+ +

Son de uso limitado, ya que proporcionan solo un subconjunto de las etiquetas y atributos HTML disponibles.

+
+ +
+
{{jsxref("String.prototype.anchor()")}}
+
{{htmlattrxref("name", "a", "<a name=\"name\">")}} (hipertexto destino)
+
{{jsxref("String.prototype.big()")}}
+
{{HTMLElement("big")}}
+
{{jsxref("String.prototype.blink()")}}
+
{{HTMLElement("blink")}}
+
{{jsxref("String.prototype.bold()")}}
+
{{HTMLElement("b")}}
+
{{jsxref("String.prototype.fixed()")}}
+
{{HTMLElement("tt")}}
+
{{jsxref("String.prototype.fontcolor()")}}
+
{{htmlattrxref("color", "font", "<font color=\"color\">")}}
+
{{jsxref("String.prototype.fontsize()")}}
+
{{htmlattrxref("size", "font", "<font size=\"size\">")}}
+
{{jsxref("String.prototype.italics()")}}
+
{{HTMLElement("i")}}
+
{{jsxref("String.prototype.link()")}}
+
{{htmlattrxref("href", "a", "<a href=\"url\">")}} (enlace a URL)
+
{{jsxref("String.prototype.small()")}}
+
{{HTMLElement("small")}}
+
{{jsxref("String.prototype.strike()")}}
+
{{HTMLElement("strike")}}
+
{{jsxref("String.prototype.sub()")}}
+
{{HTMLElement("sub")}}
+
{{jsxref("String.prototype.sup()")}}
+
{{HTMLElement("sup")}}
+
+
+ +

Ejemplos

+ +

Conversión de cadenas

+ +

Es posible usar String como una alternativa más confiable de {{jsxref("String.prototype.toString()", "toString()")}}, ya que funciona cuando se usa en {{jsxref( "null")}}, {{jsxref("undefined")}} y en {{jsxref("Symbol", "símbolos")}}. Por ejemplo:

+ +
let outputStrings = []
+for (let i = 0, n = inputValues.length; i < n; ++i) {
+  outputStrings.push(String(inputValues[i]));
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-string-objects', 'String')}}
+ +

Compatibilidad del navegador

+ + + +

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

+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/indexof/index.html b/files/es/web/javascript/reference/global_objects/string/indexof/index.html new file mode 100644 index 0000000000..14f7b01eb8 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/indexof/index.html @@ -0,0 +1,104 @@ +--- +title: String.prototype.indexOf() +slug: Web/JavaScript/Referencia/Objetos_globales/String/indexOf +tags: + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/indexOf +--- +

{{JSRef("Objetos_globales", "String")}}

+ +

Resumen

+ +

El método indexOf()devuelve el índice, dentro del objeto String que realiza la llamada, de la primera ocurrencia del valor especificado, comenzando la búsqueda desde indiceDesde; o -1 si no se encuentra dicho valor.

+ +

Sintaxis

+ +
cadena.indexOf(valorBusqueda[, indiceDesde])
+ +

Parámetros

+ +
+
valorBusqueda
+
Una cadena que representa el valor de búsqueda.
+
+ +
+
indiceDesde
+
La localización dentro de la cadena llamada desde la que empezará la búsqueda. Puede ser un entero entre 0 y la longitud de la cadena. El valor predeterminado es 0.
+
+ +

Descripción

+ +

Los caracteres de una cadena se indexan de izquierda a derecha. El índice del primer carácter es 0, y el índice del último carácter de una cadena llamada nombreCadena es nombreCadena.length - 1.

+ +
"Blue Whale".indexOf("Blue")    // returns 0
+"Blue Whale".indexOf("Blute")   // returns -1
+"Blue Whale".indexOf("Whale",0) // returns 5
+"Blue Whale".indexOf("Whale",5) // returns 5
+"Blue Whale".indexOf("",9)      // returns 9
+"Blue Whale".indexOf("",10)     // returns 10
+"Blue Whale".indexOf("",11)     // returns 10
+
+ +

El método indexOf es sensible a mayúsculas. Por ejemplo, la siguiente expresión devuelve -1:

+ +
"Ballena Azul".indexOf("azul")
+
+ +

Ejemplos

+ +

Ejemplo: Usando indexOf y lastIndexOf

+ +

El siguiente ejemplo utiliza indexOf y lastIndexOf para localizar valores dentro de la cadena "Brave new world".

+ +
var cualquierCadena="Brave new world"
+
+
+document.write("<P>The index of the first w from the beginning is " +
+   cualquierCadena.indexOf("w"))         // Muestra 8
+
+document.write("<P>The index of the first w from the end is " +
+   cualquierCadena.lastIndexOf("w"))    // Muestra 10
+
+document.write("<P>The index of 'new' from the beginning is " +
+   cualquierCadena.indexOf("new"))      // Muestra 6
+
+document.write("<P>The index of 'new' from the end is " +
+   cualquierCadena.lastIndexOf("new"))  // Muestra 6
+
+ +

Ejemplo: indexOf y sensibilidad a mayúsculas

+ +

El siguiente ejemplo define dos variables de tipo cadena. Las variables contienen la misma cadena excepto que la segunda cadena contienen letras en mayúscula. El primer método writeln muestra 19. Pero a que el método indexOf es sensible a mayúsculas, no se encuentra la cadena "cheddar" en miCadenaMayusculas, así que el segundo método writeln muestra -1.

+ +
miCadena="brie, pepper jack, cheddar"
+miCadenaMayusculas="Brie, Pepper Jack, Cheddar"
+document.writeln('miCadena.indexOf("cheddar") is ' +
+   miCadena.indexOf("cheddar"))
+document.writeln('<P>miCadenaMayusculas.indexOf("cheddar") is ' +
+   miCadenaMayusculas.indexOf("cheddar"))
+
+ +

Ejemplo: Usando indexOf para contar ocurrencias de una letra en una cadena

+ +

El siguiente ejemplo establece cuenta como el número de ocurrencias de la letra x dentro de la cadena miCadena:

+ +
cuenta = 0;
+posicion = miCadena.indexOf("x");
+while ( posicion != -1 ) {
+   cuenta++;
+   posicion = miCadena.indexOf("x",posicion+1);
+}
+
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/italics/index.html b/files/es/web/javascript/reference/global_objects/string/italics/index.html new file mode 100644 index 0000000000..71897293bb --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/italics/index.html @@ -0,0 +1,49 @@ +--- +title: String.prototype.italics() +slug: Web/JavaScript/Referencia/Objetos_globales/String/italics +tags: + - Deprecated + - HTML wrapper methods + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/italics +--- +

{{JSRef("Objetos_globales", "String")}}

+ +

{{deprecated_header}}

+ +

Resumen

+ +

Provoca que una cadena ponga en cursiva, como si estuviese dentro de una etiqueta {{HTMLElement("i")}}.

+ +

Sintaxis

+ +
cadena.italics()
+ +

Descripción

+ +

Usa el método italics para formatear y mostrar una cadena en un documento.

+ +

Ejemplos

+ +

Ejemplo: Usando métodos de italics()

+ +

El siguiente ejemplo usa métodos de string para cambiar el formateado de una cadena:

+ +
var cadenaMundo="¡Hola mundo!";
+
+console.log(cadenaMundo.blink());
+console.log(cadenaMundo.bold());
+console.log(cadenaMundo.italics());
+console.log(cadenaMundo.strike());
+
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/lastindexof/index.html b/files/es/web/javascript/reference/global_objects/string/lastindexof/index.html new file mode 100644 index 0000000000..ffde251071 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/lastindexof/index.html @@ -0,0 +1,79 @@ +--- +title: String.prototype.lastIndexOf() +slug: Web/JavaScript/Referencia/Objetos_globales/String/lastIndexOf +tags: + - Cadena + - JavaScript + - Prototipo + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/lastIndexOf +--- +

{{JSRef("Objetos_globales", "String")}}

+ +

Resumen

+ +

El  método lastIndexOf() devuelve la posicion (indice) en la que se encuentra el valorBusqueda, dentro del objeto String que realiza la llamada, de la última ocurrencia del valor especificado; o -1 si no se halla. La búsqueda se realiza empezando por el final de la cadena que realiza la llamada, empezando en indiceDesde.

+ +

Sintaxis

+ +
cadena.lastIndexOf(valorBusqueda[, indiceDesde])
+ +

Parámetros

+ +
+
valorBusqueda
+
Una cadena que representa el valor que se desea buscar.
+
+ +
+
indiceDesde
+
La localización dentro de la cadena que realiza la llamada desde donde comenzará la búsqueda. Puede ser cualquier entero entre 0 y la longitud de la cadena. El valor predeterminado es la longitud de la cadena.
+
+ +

Descripción

+ +

Los caracteres de una cadena se indexan de izquierda a derecha. El índice del primer carácter es 0, y el índice del último carácter es nombreCadena.length - 1.

+ +
"canal".lastIndexOf("a")   // returns 3
+"canal".lastIndexOf("a",2) // returns 1
+"canal".lastIndexOf("a",0) // returns -1
+"canal".lastIndexOf("x")   // returns -1
+
+ +

El método lastIndexOf es sensible a mayúsculas. Por ejemplo, la siguiente expresión devuelve -1:

+ +
"Ballena Azul, Ballena Asesina".lastIndexOf("azul")
+
+ +

Ejemplos

+ +

Ejemplo: Usando indexOf y lastIndexOf

+ +

The following example uses indexOf and lastIndexOf to locate values in the string "Brave new world".

+ +
var anyString="Brave new world"
+
+// Displays 8
+document.write("<P>The index of the first w from the beginning is " +
+   anyString.indexOf("w"))
+// Displays 10
+document.write("<P>The index of the first w from the end is " +
+   anyString.lastIndexOf("w"))
+// Displays 6
+document.write("<P>The index of 'new' from the beginning is " +
+   anyString.indexOf("new"))
+// Displays 6
+document.write("<P>The index of 'new' from the end is " +
+   anyString.lastIndexOf("new"))
+
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/length/index.html b/files/es/web/javascript/reference/global_objects/string/length/index.html new file mode 100644 index 0000000000..9401b8898a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/length/index.html @@ -0,0 +1,94 @@ +--- +title: String.length +slug: Web/JavaScript/Referencia/Objetos_globales/String/length +tags: + - JavaScript + - Propiedad + - Prototipo + - Referencia + - String + - length +translation_of: Web/JavaScript/Reference/Global_Objects/String/length +--- +
{{JSRef}}
+ +

La propiedad length de un objeto {{jsxref("String")}} representa la longitud de una cadena, en unidades de código UTF-16.

+ +

Sintaxis

+ +
str.length
+ +

Descripción

+ +

Esta propiedad devuelve el número de caracteres de una cadena. {{interwiki("wikipedia", "UTF-16")}}, el formato usado por JavaScript, usa 16-bit para representar los caracteres más comunes, pero necesita usar dos caracteres para otros menos usados, así que es posible que el valor devuelto por length no corresponda al número de caracteres de la cadena.

+ +

ECMASCript 2016 (ed. 7) estableció una longitud máxima de 2^53 - 1 elementos. Anteriormente, ninguna longitud máxima era especificada. 

+ +

Para una cadena vacía, length es 0.

+ +

La propiedad static String.length devuelve 1.

+ +

Ejemplos

+ +

Uso Básico

+ +
var x = 'Mozilla';
+var empty = '';
+
+console.log('Mozilla is ' + x.length + ' code units long');
+/* "Mozilla is 7 code units long" */
+
+console.log('The empty string has a length of ' + empty.length);
+/* "The empty string has a length of 0" */
+ +

Asignando a length

+ +
var myString = "bluebells";
+
+// Attempting to assign a value to a string's .length property has no observable effect.
+myString.length = 4;
+console.log(myString);
+/* "bluebells" */
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
ECMAScript 1st Edition.EstándarPrimera definicíon. Implementado en 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')}}
{{SpecName('ESDraft', '#sec-properties-of-string-instances-length', 'String.prototype.length')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad con navegadores

+ +

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

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/link/index.html b/files/es/web/javascript/reference/global_objects/string/link/index.html new file mode 100644 index 0000000000..021c659f34 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/link/index.html @@ -0,0 +1,56 @@ +--- +title: String.prototype.link() +slug: Web/JavaScript/Referencia/Objetos_globales/String/link +tags: + - HTML wrapper methods + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/link +--- +

{{JSRef("Objetos_globales", "String")}}

+ +

Resumen

+ +

Crea un enlace de hipertexto HTML, {{HTMLElement("a")}}, que solicita otra URL.

+ +

Sintaxis

+ +
cadena.link(atributoHref)
+ +

Parámetros

+ +
+
atributoHref
+
Cualquier cadena que especifique el atributo {{htmlattrxref("href", "a")}} de la etiqueta {{HTMLElement("a")}}; debería ser una URL válida (relativa o absoluta).
+
+ +

Descripción

+ +

Usa el método link para crear un atajo HTML para un enlace de hipertexto. La cadena devuelta puede ser añadida al documento vía {{domxref("element.innerHTML")}}.

+ +

Los enlaces creados con el método link serán elementos del array links del objeto document. Vea {{domxref("document.links")}}.

+ +

Ejemplos

+ + + +

El siguiente ejemplo muestra la palabra "Netscape" como un enlace de hipertexto que devuelve al usuario a la página inicial de Netscape:

+ +
var textoActivo="MDN"
+var URL="https://developer.mozilla.org/"
+
+console.log("Haga click para volver a " + textoActivo.link(URL))
+
+ +

Este ejemplo produce el mismo resultado que el siguiente código HTML:

+ +
Haga click para volver a <a href="http://developer.mozilla.org/">MDN</a>
+
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/localecompare/index.html b/files/es/web/javascript/reference/global_objects/string/localecompare/index.html new file mode 100644 index 0000000000..2bda296c61 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/localecompare/index.html @@ -0,0 +1,159 @@ +--- +title: String.prototype.localeCompare() +slug: Web/JavaScript/Referencia/Objetos_globales/String/localeCompare +translation_of: Web/JavaScript/Reference/Global_Objects/String/localeCompare +--- +
{{JSRef}}
+ +

El método localeCompare() devuelve un número que indica si la cadena de caracteres actual es anterior, posterior o igual a la cadena pasada como parámetro, en orden lexicográfico.

+ +

Los nuevos argumentos locales y options permiten a las aplicaciones especificar el idioma y el orden de clasificación que debe usarse y personalizar el comportamiento de la función. En las implementaciones más antiguas, que ignoran los argumentos locales y options, la configuración locale y el orden de clasificación utilizados dependen enteramente de la implementación

+ +

Sintaxis

+ +
referenceStr.localeCompare(compareString[, locales[, options]])
+ +

Parámetros

+ +

Comprueba la sección Compatibilidad con el navegador para ver que navegadores soportan los argumentos locales y options, and the Checking for support for locales and options arguments for feature detection.

+ +
+
compareString
+
La cadena con la que queremos comparar la cadena actual de caracteres.
+
+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator', 'Parameters')}}
+ +

Valor devuelto

+ +

Un número negativo si la cadena de referencia ocurre antes de la cadena de comparación; positivo si la cadena de referencia ocurre después de la cadena de comparación; 0 si son equivalentes.

+ +

Descripción

+ +

Returns an integer indicating whether the referenceStr comes before, after or is equivalent to the compareStr.

+ + + +

NO CONFIAR en que los valores devueltos sean siempre -1 o 1. Los resultados de enteros negativos y positivos varían entre los navegadores (así como entre diferentes versiones de un mismo navegador) porque la especificación W3C solo exige valores negativos y positivos. Algunos navegadores pueden devolver -2 o 2 o incluso algún otro valor negativo o positivo.

+ +

Ejemplos

+ +

Uso de localeCompare()

+ +
// La letra "a" es anterior a la "c" produciendo un valor negativo
+'a'.localeCompare('c'); // -2 o -1 (u otro valor negativo)
+
+// Alfabeticamente la palabra "check" viene después de "against" produciendo un valor ppositivo
+'check'.localeCompare('against'); // 2 o 1 (u otro valor positivo)
+
+// "a" y "a" son equivalentes produciendo un valor neutro de 0
+'a'.localeCompare('a'); // 0
+
+ +

Ordenar un array

+ +

localeCompare enables a case-insensitive sort of an array.

+ +
var items = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu'];
+items.sort((a, b) => a.localeCompare(b)); // ['adieu', 'café', 'cliché', 'communiqué', 'premier', 'réservé']
+
+ +

Verificar si el navegador soporta argumentos extendidos

+ +

The locales and options arguments are not supported in all browsers yet. To check whether an implementation supports them, use the "i" argument (a requirement that illegal language tags are rejected) and look for a {{jsxref("RangeError")}} exception:

+ +
function localeCompareSupportsLocales() {
+  try {
+    'foo'.localeCompare('bar', 'i');
+  } catch (e) {
+    return e.name === 'RangeError';
+  }
+  return false;
+}
+
+ +

Uso de locales

+ +

The results provided by localeCompare() vary between languages. In order to get the sort order 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:

+ +
console.log('ä'.localeCompare('z', 'de')); // a negative value: in German, ä sorts before z
+console.log('ä'.localeCompare('z', 'sv')); // a positive value: in Swedish, ä sorts after z
+
+ +

Uso de options

+ +

The results provided by localeCompare() can be customized using the options argument:

+ +
// in German, ä has a as the base letter
+console.log('ä'.localeCompare('a', 'de', { sensitivity: 'base' })); // 0
+
+// in Swedish, ä and a are separate base letters
+console.log('ä'.localeCompare('a', 'sv', { sensitivity: 'base' })); // a positive value
+
+ +

Performance

+ +

When comparing large numbers of strings, such as in sorting large arrays, it is better to create an {{jsxref("Global_Objects/Collator", "Intl.Collator")}} object and use the function provided by its {{jsxref("Collator.prototype.compare", "compare")}} property.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial. Implementado en JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.5.4.9', 'String.prototype.localeCompare')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.localecompare', 'String.prototype.localeCompare')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-string.prototype.localecompare', 'String.prototype.localeCompare')}}{{Spec2('ESDraft')}} 
{{SpecName('ES Int 1.0', '#sec-13.1.1', 'String.prototype.localeCompare')}}{{Spec2('ES Int 1.0')}}Definiciones de los parámetros locale y option.
{{SpecName('ES Int 2.0', '#sec-13.1.1', 'String.prototype.localeCompare')}}{{Spec2('ES Int 2.0')}} 
{{SpecName('ES Int Draft', '#sec-String.prototype.localeCompare', 'String.prototype.localeCompare')}}{{Spec2('ES Int Draft')}} 
+ +

Compatibilidad con el navegador

+ + + +

{{Compat("javascript.builtins.String.localeCompare")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/match/index.html b/files/es/web/javascript/reference/global_objects/string/match/index.html new file mode 100644 index 0000000000..6403dbaf06 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/match/index.html @@ -0,0 +1,78 @@ +--- +title: String.prototype.match() +slug: Web/JavaScript/Referencia/Objetos_globales/String/match +tags: + - JavaScript + - Method + - Prototype + - RegExp + - Regular Expressions + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/match +--- +

{{JSRef("Objetos_globales", "String")}}

+ +

Resumen

+ +

El método match() se usa para obtener todas las ocurrencias de una expresión regular dentro de una cadena.

+ +

Sintaxis

+ +
cadena.match(regexp)
+ +

Parámetros

+ +
+
regexp
+
Un objeto expresión regular. Si se pasa un objeto obj que no es expresión regular, se convierte implícitamente a RegExp usando new RegExp(obj).
+
+ +

Descripción

+ +

Si la expresión regular no incluye el flag g, devuelve el mismo resultado que {{jsxref("Regexp.exec()")}}.

+ +

Si la expresión regular incluye el flag g, el método devuelve un {{jsxref("Array")}} que contiene todos los emparejamientos.

+ +

Notas

+ + + +

Ejemplos

+ +

Ejemplo: Usando match

+ +

En el siguiente ejemplo, se usa match para hallar "Capítulo" seguido de 1 o más caracteres numéricos seguidos de un punto decimal y caracteres numéricos cero o más veces. La expresión regular incluye el flag i por lo que las mayúsculas serán ignoradas.

+ +
cadena = "Para más información, vea Capítulo 3.4.5.1";
+expresion = /(capítulo \d+(\.\d)*)/i;
+hallado = cadena.match(expresion);
+console.log(hallado);
+
+ +

Esto devuelve un array que contiene Capítulo 3.4.5.1,Capítulo 3.4.5.1,.1

+ +

"Capítulo 3.4.5.1" es el primer emparejamiento y el primer valor referenciado por (Chapter \d+(\.\d)*).

+ +

".1" es el segundo valor referenciado por (\.\d).

+ +

Ejemplo: Usando los flags global e ignorar mayúsculas con match

+ +

El siguiente ejemplo demuestra el uso de los flags global e ignorar mayúsculas con match. Todas las letras de A hasta E y de a hasta e son devueltas, en su propio elemento dentro del array.

+ +
var cadena = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+var expresion = /[A-E]/gi;
+var array_emparejamientos = cadena.match(expresion);
+console.log(array_emparejamientos);
+
+ +

array_emparejamientos será {{ mediawiki.external('\'A\', \'B\', \'C\', \'D\', \'E\', \'a\', \'b\', \'c\', \'d\', \'e\'') }}

+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/matchall/index.html b/files/es/web/javascript/reference/global_objects/string/matchall/index.html new file mode 100644 index 0000000000..a536720dbd --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/matchall/index.html @@ -0,0 +1,134 @@ +--- +title: String.prototype.matchAll() +slug: Web/JavaScript/Referencia/Objetos_globales/String/matchAll +tags: + - Cadena + - Expresiones Regulares + - JavaScript + - Prototipo + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/matchAll +--- +
{{JSRef}}
+ +

El método matchAll() retorna un iterador de todos los resultados de ocurrencia en una cadena de texto contra una expresión regular, incluyendo grupos de captura.

+ +
{{EmbedInteractiveExample("pages/js/string-matchall.html")}}
+ + + +

Sintaxis

+ +
cadena.matchAll(expresionRegular)
+ +

Parámetros

+ +
+
expresionRegular
+
Un objeto expresión regular. Si se pasa un objeto no-RegExp obj, este es implícitamente convertido a {{jsxref("RegExp")}} vía new RegExp(obj).
+
+ +

Valor devuelto

+ +

Un iterador (el cual no es reiniciable).

+ +

Ejemplo

+ +

Regexp.exec() y matchAll()

+ +

Antes de la adición de  matchAll a JavaScript, fue posible hacer llamados a regexp.exec (y usar expresiones regulares con la bandera /g) en un ciclo para obtener las ocurrencias:

+ +
const regexp = RegExp('foo[a-z]*','g');
+const cadena = 'mesa football, foosball';
+let ocurrencia;
+
+while ((ocurrencia = regexp.exec(cadena)) !== null) {
+  console.log(`Encontrado ${ocurrencia[0]} inicio=${ocurrencia.index} final=${regexp.lastIndex}.`);
+  // salida esperada: "Encontrado football inicio=5 final=13."
+  // salida esperada: "Encontrado foosball inicio=15 final=23."
+}
+ +

Con matchAll disponible, puedes evitar el ciclo while y exec con /g. Por el contrario, usando matchAll, obtienes un iterador con el cual puedes usar con constructores más convenientes  for...of, array spread, o {{jsxref("Array.from()")}}:

+ +
const regexp = RegExp('foo[a-z]*','g');
+const cadena = 'mesa football, foosball';
+const ocurrencias = cadena.matchAll(regexp);
+
+for (const ocurrencia of ocurrencias) {
+  console.log(`Encontrado ${ocurrencia[0]} inicio=${ocurrencia.index} final=${ocurrencia.index + ocurrencia[0].length}.`);
+}
+// salida esperada: "Encontrado football start=5 end=13."
+// salida esperada: "Encontrado foosball start=15 end=23."
+
+// el iterador ocurrencias es agotado después de la iteración for..of
+// Llama matchAll de nuevo para crear un nuevo iterador
+Array.from(cadena.matchAll(regexp), m => m[0]);
+// Array [ "football", "foosball" ]
+ +

matchAll solo devuelve la primer ocurrencia si la bandera /g está ausente.

+ +
const regexp = RegExp('[a-c]','');
+const cadena = 'abc';
+Array.from(cadena.matchAll(regexp), m => m[0]);
+// Array [ "a" ]
+
+ +

matchAll internamente hace un clon de la expresión regular, entonces a diferencia de regexp.exec,  lastIndex no cambia a medida que la cadena es escaneada.

+ +
const regexp = RegExp('[a-c]','g');
+regexp.lastIndex = 1;
+const cadena = 'abc';
+Array.from(cadena.matchAll(regexp), m => `${regexp.lastIndex} ${m[0]}`);
+// Array [ "1 b", "1 c" ]
+ +

Mejor acceso para capturar grupos

+ +

Otra buena razón para matchAll es el mejorado acceso a los grupos de captura. Los grupos de captura son ignorados cuando se usa match() con la bandera global /g:

+ +
var regexp = /t(e)(st(\d?))/g;
+var cadena = 'test1test2';
+
+cadena.match(regexp);
+// Array ['test1', 'test2']
+ +

Con matchAll puedes acceder a ellos:

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

Especificaciones

+ + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ESDraft', '#sec-string.prototype.matchall', 'String.prototype.matchAll')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad de navegadores

+ + + +

{{Compat("javascript.builtins.String.matchAll")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/normalize/index.html b/files/es/web/javascript/reference/global_objects/string/normalize/index.html new file mode 100644 index 0000000000..2794644f1c --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/normalize/index.html @@ -0,0 +1,126 @@ +--- +title: String.prototype.normalize() +slug: Web/JavaScript/Referencia/Objetos_globales/String/normalize +tags: + - Cadena + - ECMAScript 2015 + - JavaScript + - Prototipo + - Referencia + - String + - Unicode + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/normalize +--- +
{{JSRef}}
+ +

El método normalize() retorna la Forma de Normalización Unicode de la cadena dada (si el valor no es una cadena, primero será convertido a ese tipo).

+ +

Sintaxis

+ +
str.normalize([form])
+ +

Parámetros

+ +
+
form
+
Uno de"NFC", "NFD", "NFKC", o "NFKD", especificando la Forma de Normalización Unicode. Si es omitida o {{jsxref("undefined")}}, se utiliza "NFC". +
    +
  • NFC — Forma de Normalización de Composición Canónica.
  • +
  • NFD — Forma de Normalización de Descomposición Canónica.
  • +
  • NFKC — Forma de Normalización de Composición de Compatibilidad.
  • +
  • NFKD — Forma de Normalización de Descomposición de Compatibilidad.
  • +
+
+
+ +

Valor de retorno

+ +

Una cadena que contiene la Forma de Normalización Unicode de la cadena dada.

+ +

Errores lanzados

+ +
+
{{jsxref("RangeError")}}
+
Un error {{jsxref("RangeError")}} es lanzado si form no es uno de los valores especificados arriba.
+
+ +

Descripción

+ +

El método normalize() retorna la Forma de Normalización Unicode de una cadena. No afecta el valor de la cadena en sí misma.

+ +

Ejemplos

+ +

Uso de normalize()

+ +
// Cadena inicial
+
+// U+1E9B: LETRA S LATINA MINÚSCULA CON PUNTO ARRIBA
+// U+0323: COMBINACIÓN CON PUNTO ABAJO
+var str = '\u1E9B\u0323';
+
+
+// Forma compuesta canónicamente (NFC)
+
+// U+1E9B: LETRA S LATINA MINÚSCULA CON PUNTO ARRIBA
+// U+0323: COMBINACIÓN CON PUNTO ABAJO
+str.normalize('NFC'); // '\u1E9B\u0323'
+str.normalize();      // lo mismo que arriba
+
+
+// Forma canónicamente descompuesta (NFD)
+
+// U+017F: LETRA S LATINA MINÚSCULA
+// U+0323: COMBINACIÓN CON PUNTO ABAJO
+// U+0307: COMBINACIÓN CON PUNTO ARRIBA
+str.normalize('NFD'); // '\u017F\u0323\u0307'
+
+
+// Compuesta con compatibilidad (NFKC)
+
+// U+1E69: LETRA S LATINA MINÚSCULA CON PUNTO ARRIBA Y ABAJO
+str.normalize('NFKC'); // '\u1E69'
+
+
+// Descompuesta con compatibilidad (NFKD)
+
+// U+0073: LETRA S LATINA MINÚSCULA
+// U+0323: COMBINACIÓN CON PUNTO ABAJO
+// U+0307: COMBINACIÓN CON PUNTO ARRIBA
+str.normalize('NFKD'); // '\u0073\u0323\u0307'
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-string.prototype.normalize', 'String.prototype.normalize')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-string.prototype.normalize', 'String.prototype.normalize')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad de Navegadores

+ + + +

{{Compat("javascript.builtins.String.normalize")}}

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/padstart/index.html b/files/es/web/javascript/reference/global_objects/string/padstart/index.html new file mode 100644 index 0000000000..57abbd8f5c --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/padstart/index.html @@ -0,0 +1,100 @@ +--- +title: String.prototype.padStart() +slug: Web/JavaScript/Referencia/Objetos_globales/String/padStart +tags: + - Cadena + - Experimental + - JavaScript + - Método(2) + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/String/padStart +--- +
{{JSRef}}{{SeeCompatTable}}
+ +

El método padStart() rellena la cadena actual con una cadena dada (repetida eventualmente) de modo que la cadena resultante alcance una longitud dada. El relleno es aplicado desde el inicio (izquierda) de la cadena actual.

+ +

Sintaxis

+ +
str.padStart(targetLength [, padString])
+ +

Parámetros

+ +
+
targetLength
+
La longitud de la cadena resultante una vez la cadena actual haya sido rellenada. Si este parámetro es más pequeño que la longitud de la cadena actual, la cadena actual será devuelta sin modificar.
+
padString {{optional_inline}}
+
La cadena para rellenar la cadena actual. Si esta cadena es muy larga, será recortada y la parte más a la izquierda será aplicada. El valor por defecto para este parámetro es " " (U+0020).
+
+ +

Valor devuelto

+ +

Un {{jsxref("String")}} de la longitud específicada con la cadena de relleno aplicada desde el inicio.

+ +

Ejemplos

+ +
'abc'.padStart(10);         // "       abc"
+'abc'.padStart(10, "foo");  // "foofoofabc"
+'abc'.padStart(6,"123465"); // "123abc"
+
+ +

Especificaciones

+ +

Este método aún no ha alcanzado el estándar ECMAScript. Actualmente es una propuesta para ECMAScript.

+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("52")}} {{CompatGeckoDesktop(48)}}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile(48)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/raw/index.html b/files/es/web/javascript/reference/global_objects/string/raw/index.html new file mode 100644 index 0000000000..3c8f3c1d55 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/raw/index.html @@ -0,0 +1,112 @@ +--- +title: String.raw() +slug: Web/JavaScript/Referencia/Objetos_globales/String/raw +translation_of: Web/JavaScript/Reference/Global_Objects/String/raw +--- +
{{JSRef}}
+ +

El método estatico String.raw()  es una función de  plantilla de literales, similar al prefijo r en Python o al prefijo @ en C# para strings literales (con ciertas diferencias: ver la explicación en este problema). Se utiliza para obtener un string crudo a partir de plantillas de string (es decir, el original, texto no interpretado).

+ +

Sintaxis

+ +
String.raw(callSite, ...substitutions)
+
+String.raw`templateString`
+
+ +

Parametros

+ +
+
callSite
+
Plantilla bien estructurada, similar a { raw: ['foo', 'bar', 'baz'] }.
+
...substitutions
+
Contiene valores de sustitución.
+
templateString
+
[opcional] Una plantilla string, con sustituciones (${...}).
+
+ +

Valor de regreso

+ +

La forma cruda del string de una plantilla string proporcionada.

+ +

Excepciones

+ +
+
{{jsxref("TypeError")}}
+
Un {{jsxref("TypeError")}} es arrojado si el primer argumento no es un objeto bien estructurado.
+
+ +

Descripción

+ +

En la mayoría de los casos, String.raw() es usado con plantillas string. La primera sintaxis mencionada arriba es raramente usada,  porque el motor de JavaScript hará la llamada por ti con los argumentos apropiados, al igual que otras funciones de etiqueta.

+ +

String.raw() es la unica función de etiqueta incorporada en las plantillas string; trabaja igual que la función de la plantilla por defecto y ejecuta la concatenación. Incluso puedes reimplementarlo con código normal de JavaScript.

+ +

Ejemplos

+ +

Usando String.raw()

+ +
String.raw`Hi\n${2+3}!`;
+// 'Hi\n5!', the character after 'Hi'
+// is not a newline character,
+// '\' and 'n' are two characters.
+
+String.raw`Hi\u000A!`;
+// 'Hi\u000A!', same here, this time we will get the
+//  \, u, 0, 0, 0, A, 6 characters.
+// All kinds of escape characters will be ineffective
+// and backslashes will be present in the output string.
+// You can confirm this by checking the .length property
+// of the string.
+
+let name = 'Bob';
+String.raw`Hi\n${name}!`;
+// 'Hi\nBob!', substitutions are processed.
+
+// Normally you would not call String.raw() as a function,
+// but to simulate `t${0}e${1}s${2}t` you can do:
+String.raw({ raw: 'test' }, 0, 1, 2); // 't0e1s2t'
+// Note that 'test', a string, is an array-like object
+// The following is equivalent to
+// `foo${2 + 3}bar${'Java' + 'Script'}baz`
+String.raw({
+  raw: ['foo', 'bar', 'baz']
+}, 2 + 3, 'Java' + 'Script'); // 'foo5barJavaScriptbaz'
+
+
+ +

Especificaciónes

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-string.raw', 'String.raw')}}{{Spec2('ES2015')}}Definicion inicial.
{{SpecName('ESDraft', '#sec-string.raw', 'String.raw')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad de navegador

+ + + +

{{Compat("javascript.builtins.String.raw")}}

+ +

Tambien ver

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/repeat/index.html b/files/es/web/javascript/reference/global_objects/string/repeat/index.html new file mode 100644 index 0000000000..a449bdfb27 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/repeat/index.html @@ -0,0 +1,128 @@ +--- +title: String.prototype.repeat() +slug: Web/JavaScript/Referencia/Objetos_globales/String/repeat +tags: + - ECMAScript2015 + - JavaScript + - Prototype + - Referencia + - String + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/repeat +--- +
{{JSRef}}
+ +

El método repeat() construye y devuelve una nueva cadena que contiene el número especificado de copias de la cadena en la cual fue llamada, concatenados.

+ +

Sintáxis

+ +
str.repeat(count)
+ +

Parámetros

+ +
+
count
+
Un entero entre 0 y +∞: [0, +∞), indicando el número de veces a repetir la cadena en la nueva cadenada creada que será devuelta.
+
+ +

Valor devuelto

+ +

Un nuevo string que contiene el número especificado de copias del string original.

+ +

Excepciones

+ + + +
+
+ +

Ejemplos

+ +
'abc'.repeat(-1);   // RangeError
+'abc'.repeat(0);    // ''
+'abc'.repeat(1);    // 'abc'
+'abc'.repeat(2);    // 'abcabc'
+'abc'.repeat(3.5);  // 'abcabcabc' (count will be converted to integer)
+'abc'.repeat(1/0);  // RangeError
+
+({ toString: () => 'abc', repeat: String.prototype.repeat }).repeat(2);
+// 'abcabc' (repeat() is a generic method)
+
+ +

Polyfill

+ +

Este método ha sido añadido a la especificación ECMAScript 6 y tal vez aún no se encuentre disponible en todas las implementaciones de JavaScript. Sin embargo, usted puede establecer String.prototype.repeat() con el siguiente fragmento de código:

+ +
if (!String.prototype.repeat) {
+  String.prototype.repeat = function(count) {
+    'use strict';
+    if (this == null) {
+      throw new TypeError('can\'t convert ' + this + ' to object');
+    }
+    var str = '' + this;
+    count = +count;
+    if (count != count) {
+      count = 0;
+    }
+    if (count < 0) {
+      throw new RangeError('repeat count must be non-negative');
+    }
+    if (count == Infinity) {
+      throw new RangeError('repeat count must be less than infinity');
+    }
+    count = Math.floor(count);
+    if (str.length == 0 || count == 0) {
+      return '';
+    }
+    // Ensuring count is a 31-bit integer allows us to heavily optimize the
+    // main part. But anyway, most current (August 2014) browsers can't handle
+    // strings 1 << 28 chars or longer, so:
+    if (str.length * count >= 1 << 28) {
+      throw new RangeError('repeat count must not overflow maximum string size');
+    }
+    var rpt = '';
+    for (;;) {
+      if ((count & 1) == 1) {
+        rpt += str;
+      }
+      count >>>= 1;
+      if (count == 0) {
+        break;
+      }
+      str += str;
+    }
+    return rpt;
+  }
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
{{SpecName('ES6', '#sec-string.prototype.repeat', 'String.prototype.repeat')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-string.prototype.repeat', 'String.prototype.repeat')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad en Navegadores

+ +
{{Compat("javascript.builtins.String.repeat")}}
+ +
 
diff --git a/files/es/web/javascript/reference/global_objects/string/replace/index.html b/files/es/web/javascript/reference/global_objects/string/replace/index.html new file mode 100644 index 0000000000..680393ece1 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/replace/index.html @@ -0,0 +1,202 @@ +--- +title: String.prototype.replace() +slug: Web/JavaScript/Referencia/Objetos_globales/String/replace +tags: + - JavaScript + - Method + - Prototype + - Regular Expressions + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/replace +--- +

{{JSRef("Objetos_globales", "String")}}

+ +

Resumen

+ +

El método replace() devuelve una nueva cadena con algunas o todas las coincidencias de un patrón, siendo cada una de estas coincidencias reemplazadas por remplazo. El patrón puede ser una cadena o una {{jsxref("RegExp")}}, y el reemplazo puede ser una cadena o una función que será llamada para cada coincidencia. Si el patrón es una cadena, sólo la primera coincidencia será reemplazada.

+ +

La cadena original permanecerá inalterada.

+ +
{{EmbedInteractiveExample("pages/js/string-replace.html")}}
+ +

Sintaxis

+ +
cadena.replace(regexp|substr, newSubStr|function[, {{ Non-standard_inline() }} flags]);
+
+ +

Parámetros

+ +
+
expresionregular
+
Un objeto {{jsxref("RegExp")}} o literal. Las coincidencias son reemplazadas por ewSubSt o el valor devuelto por la función especificada.
+
+ +
+
subcadena
+
Un objeto {{jsxref("String")}} que será reemplazado por nuevaSubcadena.
+
+ +
+
nuevaSubcadena
+
El objeto {{jsxref("String")}} que reemplaza la subcadena que recibida desde el primer parámetro.
+
+ +
+
funcion
+
Una función que será invocada para crear la nueva subcadena (para ponerla en lugar de la subcadena recibida por el primer parámetro).
+
+ +
+
flags {{ non-standard_inline() }}
+
Un objeto {{jsxref("String")}} que contiene cualquier combinación de flags de la clase RegExp: g - emparejamiento global, i - ignorar mayúsculas, m - emparejar multiples líneas. Este parámetro se usa sólo si el primer parámetro es una cadena.
+
+ +

Descripción

+ +

Este método no cambia el objeto String sobre el que se realiza la llamada. Simplemente devuelve una nueva cadena.

+ +

Para realizar una búsqueda global y reemplazarla, o se incluye el flag g en la expresión regular o si el primer parámetro es una cadena, se incluye g en el parámetro flags.

+ +

Especificando una cadena como un parámetro

+ +

La cadena de reemplazo puede incluir los siguientes patrones de reemplazo especiales:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PatrónInserta
$$Inserta una "$".
$&Inserta la subcadena emparejada.
$`Inserta la sección de cadena que precede a la subcadena emparejada.
$'Inserta la porción de subcadena que sigue a la subcadena emparejada.
$n o $nn Donde n o nn son dígitos decimales positivos menores a 100, inserta la subcadena emparejada de orden n del paréntesis, proporcionado por el primer argumento del objeto RegExp.
+ +

Especificando una función con un parámetro

+ +

Cuando se especifica una función en el segundo parámetro, la función es invocada después de que el emparejamiento se haya realizado. (El uso de una función de este modo se llama expresión lambda.)

+ +

En la función, puedes generar dinámicamente la cadena que reemplaza la subcadena emparejada. El resultado de la llamada de la función se usa como valor de reemplazo.

+ +

The nested function can use the matched substrings to determine the new string (newSubStr) that replaces the found substring. You get the matched substrings through the parameters of your function. The first parameter of your function holds the complete matched substring. If the first argument was a RegExp object, then the followingn parameters can be used for parenthetical matches, remembered submatch strings, wheren is the number of submatch strings in the regular expression. Finally, the last two parameters are the offset within the string where the match occurred and the string itself. For example, the following replace method returns XXzzzz - XX , zzzz.

+ +
function replacer(str, p1, p2, offset, s)
+{
+  return str + " - " + p1 + " , " + p2;
+}
+var newString = "XXzzzz".replace(/(X*)(z*)/, replacer);
+console.log(newString); // XXzzzz - XX , zzzz
+
+ +

Ejemplos

+ +

Ejemplo: Usando global e ignore con replace

+ +

En el siguiente ejemplo, la expresión regular incluye las banderas "global" e "ignore case", las cuales permiten al método replace reemplazar cada aparición de la cadena 'apples' por la cadena 'oranges'.

+ +
var re = /apples/gi;
+var str = "Apples are round, and apples are juicy.";
+var newstr = str.replace(re, "oranges");
+print(newstr);
+
+ +

In this version, a string is used as the first parameter and the global and ignore case flags are specified in the flags parameter.

+ +
var str = "Apples are round, and apples are juicy.";
+var newstr = str.replace("apples", "oranges", "gi");
+print(newstr);
+
+ +

Both of these examples print "oranges are round, and oranges are juicy."

+ +

Ejemplo: Definiendo la expresión regular en replace

+ +

En el siguiente ejemplo, se define la expresión regular en replace e incluye el flag de ignorar mayúsculas.

+ +
var cadena = "Twas the night before Xmas...";
+var nuevaCadena = cadena.replace(/xmas/i, "Christmas");
+print(nuevaCadena);
+
+ +

Esto muestra "Twas the night before Christmas..."

+ +

Ejemplo: Conectando palabras en una cadena

+ +

El siguiente código conecta las palabras dentro de la cadena. Para reemplazar el texto, el código usa $1 y $2 como patrones de reemplazo.

+ +
var expresion = /(\w+)\s(\w+)/;
+var cadena = "John Smith";
+var nuevaCadena = cadena.replace(expresion, "$2, $1");
+print(nuevaCadena);
+
+ +

Esto muestra "Smith, John".

+ +

Ejemplo: Using an inline function that modifies the matched characters

+ +

In this example, all occurrences of capital letters in the string are converted to lower case, and a hyphen is inserted just before the match location. The important thing here is that additional operations are needed on the matched item before it is given back as a replacement.

+ +

The replacement function accepts the matched snippet as its parameter, and uses it to transform the case and concatenate the hyphen before returning.

+ +
function styleHyphenFormat(propertyName)
+{
+  function upperToHyphenLower(match)
+  {
+    return '-' + match.toLowerCase();
+  }
+  return propertyName.replace(/[A-Z]/, upperToHyphenLower);
+}
+
+ +

Given styleHyphenFormat('borderTop'), this returns 'border-top'.

+ +

Because we want to further transform theresult of the match before the final substitution is made, we must use a function. This forces the evaluation of the match prior to the toLowerCase() method. If we had tried to do this using the match without a function, the toLowerCase() would have no effect.

+ +
var newString = propertyName.replace(/[A-Z]/, '-' + '$&'.toLowerCase());  // won't work
+
+ +

This is because '$&'.toLowerCase() would be evaluated first as a string literal (resulting in the same '$&') before using the characters as a pattern.

+ +

Ejemplo: Reemplazando grados Fahrenheit con su equivalente Celsius

+ +

El siguiente ejemplo reemplaza los grados Fahrenheit con su enquivalente en grados Celsius. Los grados Fahrenheit deberían ser un número acabado en F. La función devuelve el número Celsius acabado en C. Por ejemplo, si el número de entrada es 212F, la función devuelve 100C. Si el número es 0F, la función devuelve -17.77777777777778C.

+ +

La expresión regular test revisa si para un número termina en F. El número de grados Fahrenheit es accesible a la función a través de su segundo parámetro, p1. La función establece el número Celsius basado en los grados Fahrenheit pasados en una cadena a la función f2c. Entonces f2c devuelve el número Celsius. Esta función aproxima al flag de Perl s///e.

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

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/search/index.html b/files/es/web/javascript/reference/global_objects/string/search/index.html new file mode 100644 index 0000000000..23e37234d1 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/search/index.html @@ -0,0 +1,153 @@ +--- +title: String.prototype.search() +slug: Web/JavaScript/Referencia/Objetos_globales/String/search +tags: + - JavaScript + - Method + - Prototype + - Reference + - Regular Expressions + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/search +--- +

{{JSRef("Objetos_globales", "String")}}

+ +

Resumen

+ +

El método search() ejecuta una búsqueda que encaje entre una expresión regular y el objeto String desde el que se llama.

+ +

Sintaxis

+ +
str.search(expresionregular)
+ +

Parámetros

+ +
+
regexp
+
Un objeto expresión regular. Si se pasa un objeto obj que no sea una expresión regular, se convierte implicitamente en una expresión regualar usando new RegExp(obj).
+
+ +

Valor devuelto

+ +

El índice de la primera coincidencia entre la expresión regular y la cadena de texto proporcionada, si no se encuentra devuelve -1.

+ +

Descripción

+ +

Cuando se desee saber en qué casos un patrón se encuentra en una cadena de texto utiliza search() (si sólo deseas saber si existe, utiliza el método {{jsxref("RegExp.prototype.test()", "test()")}} del prototipo de RegExp); para más información (pero de ejecución más lenta) utiliza {{jsxref("String.prototype.match()", "match()")}} (similar al método {{jsxref("RegExp.prototype.exec()", "exec()")}} de las expresiones regulares).

+ +

Ejemplos

+ + + +

El siguiente ejemplo imprime un mensaje dependiendo de cuál sea el resultado de la evaluación.

+ +
function testinput(re, str) {
+  var midstring;
+  if (str.search(re) != -1) {
+    midstring = ' contains ';
+  } else {
+    midstring = ' does not contain ';
+  }
+  console.log(str + midstring + re);
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificacionesEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial. Implementado en 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')}} 
+ +

Compatibilidad con navegadores

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

Notas específicas de Gecko

+ + + +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/slice/index.html b/files/es/web/javascript/reference/global_objects/string/slice/index.html new file mode 100644 index 0000000000..cbfe5a716b --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/slice/index.html @@ -0,0 +1,161 @@ +--- +title: String.prototype.slice() +slug: Web/JavaScript/Referencia/Objetos_globales/String/slice +tags: + - Cadena + - JavaScript + - Método(2) + - Prototipo + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/slice +--- +

{{JSRef("Objetos_globales", "String")}}

+ +

Resumen

+ +

El método slice() extrae una sección de una cadena y devuelve una cadena nueva.

+ +

Sintaxis

+ +
cadena.slice(inicioTrozo[, finTrozo])
+
+ +

Parameters

+ +
+
inicioTrozo
+
El índice basado en cero en el cual empieza la extracción.  Si es negativo, se trata como longCadena + inicioTrozo donde longCadena es la longitud de la cadena (por ejemplo, si inicioTrozo es -3 se trata como longCadena - 3)
+
+ +
+
finTrozo
+
Opcional. El índice basado en cero en el que termina la extracción. Si se omite, slice extrae hasta el final de la cadena.  Si es negativo, se trata como longCadena + finTrozo donde longCadena es la longitud de la cadena (por ejemplo, si finTrozo es -3 se trata como longCadena - 3).
+
+ +

Valor retornado

+ +

Una nueva cadena que contiene la sección de la cadena.

+ +

Descripción

+ +

slice extrae el texto de una cadena y devuelve una nueva cadena. Los cambios en el texto de una cadena no afectan a la otra cadena.

+ +

slice extrae hasta, pero sin incluir finalTrozo. string.slice(1,4) extrae del segundo carácter hasta el cuarto carácter (caracteres con índice 1, 2 y 3).

+ +

Si se usa un índice negativo, finalTrozo indica el punto desde el final de la cadena.string.slice(2, -1) extrae desde tercer carácter hasta el último carácter de la cadena.

+ +

Ejemplos

+ +

Ejemplo: Uso de slice() para crear una nueva cadena

+ +

El siguiente ejemplo usa slice() para crear una nueva cadena.

+ +
var cadena1 = "La mañana se nos echa encima.";
+var cadena2 = cadena1.slice(3, -2);
+console.log(cadena2);
+
+ +

Esto escribe:

+ +
mañana se nos echa encim
+ +

Uso de slice() con índices negativos

+ +

El siguiente ejemplo usa slice() con índices negativos.

+ +
var cad = "La mañana se nos echa encima.";
+cad.slice(-3);     // retorna 'ma.'
+cad.slice(-3, -1); // retorna 'ma'
+cad.slice(0, -1);  // retorna 'La mañana se nos echa encima'
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial. Implementado en 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')}} 
{{SpecName('ESDraft', '#sec-string.prototype.slice', 'String.prototype.slice')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad en navegadores

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

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/small/index.html b/files/es/web/javascript/reference/global_objects/string/small/index.html new file mode 100644 index 0000000000..a8b2f302fd --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/small/index.html @@ -0,0 +1,38 @@ +--- +title: String.prototype.small() +slug: Web/JavaScript/Referencia/Objetos_globales/String/small +tags: + - Deprecated + - HTML wrapper methods + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/small +--- +

{{JSRef("Objetos_globales", "String")}}

+

{{deprecated_header}}

+

Resumen

+

Causa que una cadena se muestra con una fuente pequeña, como si estuviese dentro de una etiqueta {{HTMLElement("small")}}.

+

Sintaxis

+
cadena.small()
+

Descripción

+

Usa el método small para formatear y mostrar una cadena en un documento.

+

Ejemplos

+

Ejemplo: Usando métodos de string para cambiar el tamaño de una cadena

+
var cadenaMundo="¡Hola mundo!"
+
+console.log(cadenaMundo.small())
+console.log(cadenaMundo.big())
+console.log(cadenaMundo.fontsize(7))
+
+

Este ejemplo produce el mismo resultado que el siguiente código HTML:

+
<small>¡Hola mundo!</small>
+<big>¡Hola mundo!</big>
+<fontsize=7>¡Hola mundo!</fontsize>
+
+

Vea También

+ diff --git a/files/es/web/javascript/reference/global_objects/string/split/index.html b/files/es/web/javascript/reference/global_objects/string/split/index.html new file mode 100644 index 0000000000..ade291da0f --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/split/index.html @@ -0,0 +1,240 @@ +--- +title: String.prototype.split() +slug: Web/JavaScript/Referencia/Objetos_globales/String/split +tags: + - JavaScript + - Method + - Prototype + - Regular Expressions + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/split +--- +

{{JSRef("Objetos_globales", "String")}}

+ +

El método split() divide un objeto de tipo String en un array (vector) de cadenas mediante la separación de la cadena en subcadenas.

+ +

Sintaxis

+ +
cadena.split([separador][,limite])
+ +

Parámetros

+ +
+
separador
+
Especifica el carácter a usar para la separación de la cadena. El separador es tratado como una cadena o como una {{jsxref("Objetos_globales/RegExp", "expresión regular", "", 1)}}. Si se omite el separador, el array devuelto contendrá un sólo elemento con la cadena completa.
+
+ +
+
limite
+
Opcional. Entero que especifica un límite sobre el número de divisiones a realizar. El método split() todavía se divide en todas las concordancias del separador, pero divide la matriz devuelta en la cantidad de elementos impuesta por el limite.
+
+ +

Descripción

+ +

El método split() devuelve el nuevo array.

+ +

Cuando se encuentra, el separador es eliminado de la cadena y las subcadenas obtenidas se devuelven en un array. Si el separador no es encontrado o se omite, el array contendrá un único elemento con la cadena original completa. Si el separador es una cadena vacía la cadena es convertida en un array de carácteres.

+ +

Si el separador es una expresión regular que contiene paréntesis de captura, entonces cada vez que el separador concuerda, los resultados (incluído cualquier resultado indefinido) de los paréntesis de captura son divididos en el array resultante. Sin embargo no todos los navegadores soportan esta característica.

+ +

{{Note("Cuando la cadena está vacía, split() devuelve un array que contiene una cadena vacía, en lugar de un array vacío.")}}

+ +

Ejemplos

+ +

Usando split()

+ +

El siguiente ejemplo define una función que divide una cadena en un array de cadenas usando el separador especificado. Después de la división de la cadena, la función muestra mensajes indicando la cadena original (antes de la división), el separador usado, el número de elementos del array y los elementos individuales del array.

+ +
function dividirCadena(cadenaADividir,separador) {
+   var arrayDeCadenas = cadenaADividir.split(separador);
+   document.write('<p>La cadena original es: "' + cadenaADividir + '"');
+   document.write('<br>El separador es: "' + separador + '"');
+   document.write("<br>El array tiene " + arrayDeCadenas.length + " elementos: ");
+
+   for (var i=0; i < arrayDeCadenas.length; i++) {
+      document.write(arrayDeCadenas[i] + " / ");
+   }
+}
+
+var cadenaVerso = "Oh brave new world that has such people in it.";
+var cadenaMeses = "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec";
+
+var espacio = " ";
+var coma = ",";
+
+dividirCadena(cadenaVerso, espacio);
+dividirCadena(cadenaVerso);
+dividirCadena(cadenaMeses, coma);
+
+ +

Este ejemplo produce el siguiente resultado:

+ +
La cadena original es: "Oh brave new world that has such people in it."
+El separador es: " "
+El array tiene 10 elementos: Oh / brave / new / world / that / has / such / people / in / it. /
+
+La cadena original es: "Oh brave new world that has such people in it."
+El separador es: "undefined"
+El array tiene 1 elementos: Oh brave new world that has such people in it. /
+
+La cadena original es: "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec"
+El separador es: ","
+El array tiene 12 elementos: Jan / Feb / Mar / Apr / May / Jun / Jul / Aug / Sep / Oct / Nov / Dec /
+
+ +

Eliminar espacios de una cadena

+ +

En el siguiente ejemplo, split busca 0 o más espacios seguidos de un punto y coma seguido por 0 o más espacios y, cuando los halla, elimina los espacios de la cadena. listaNombres es el array devuelto como resultado de la llamada a split.

+ +
var nombres = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand ";
+document.write(nombres + "<br>" + "<br>");
+var expresionRegular = /\s*;\s*/;
+var listaNombres = nombres.split(expresionRegular);
+document.write(listaNombres);
+
+ +

Esto imprime dos líneas; la primera línea imprime la cadena original, y la segunda línea imprime el array resultante.

+ +
Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand
+Harry Trump,Fred Barney,Helen Rigby,Bill Abel,Chris Hand
+
+ +

Devolviendo un número limitado de divisiones

+ +

El el siguiente ejemplo, split busca 0 o más espacios en una cadena y devuelve las tres primeras divisiones que encuentra.

+ +
var miCadena = "Hola Mundo. Cómo estás hoy?";
+var divisiones = miCadena.split(" ", 3);
+
+print(divisiones);
+
+ +

Este script muestra lo siguiente:

+ +
Hola,Mundo.,Cómo
+
+ +

Paréntesis de captura

+ +

Si el separador contiene paréntesis de capturaI los resultados que concuerden son devueltos en el array.

+ +
var miCadena = 'Hola 1 mundo. Oración número 2.';
+var division = miCadena.split(/(\d)/);
+
+console.log(division);
+ +
 
+ +
 
+ +
 
+ +
 
+ +

Este script muestra lo siguiente:

+ +
Hola ,1, mundo. Oración número ,2,.
+ +
 
+ +

Dar la vuelta a una cadena usando split()

+ +
var str = 'asdfghjkl';
+var strReverse = str.split('').reverse().join(''); // 'lkjhgfdsa'
+// split() retorna un array en el cual reverse() y join() pueden ser aplicados
+ +
 
+ +
 
+ +
 
+ +

Extra: usar el operador === para verificar si la cadena anterior era un palíndromo.

+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
ECMAScript 3rd Edition.EstándarDefinición inicial. Implementado en 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')}} 
+ +

Compatibilidad con los navegadores

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

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/startswith/index.html b/files/es/web/javascript/reference/global_objects/string/startswith/index.html new file mode 100644 index 0000000000..c658cc80da --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/startswith/index.html @@ -0,0 +1,97 @@ +--- +title: String.prototype.startsWith() +slug: Web/JavaScript/Referencia/Objetos_globales/String/startsWith +tags: + - ECMAScript 2015 + - JavaScript + - Method + - Prototipo + - Prototype + - Reference + - Referencia + - String + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/startsWith +--- +
{{JSRef}}
+ +

El método startsWith() indica si una cadena de texto comienza con los caracteres de una cadena de texto concreta, devolviendo true o false según corresponda.

+ +
{{EmbedInteractiveExample("pages/js/string-startswith.html")}}
+ +

Sintaxis

+ +
str.startsWith(stringBuscada[, posicion])
+ +

Parámetros

+ +
+
stringBuscada
+
Los caracteres a ser buscados al inicio de la cadena de texto.
+
posicion {{optional_inline}}
+
La posición de str en la cual debe comenzar la búsqueda de stringBuscada. El valor por defecto es 0.
+
+ +

Valor devuelto

+ +

true si los caracteres dados se encuentran al inicio de la cadena de texto; false en cualquier otro caso.

+ +

Descripción

+ +

Este método te permite saber si una cadena de texto comienza o no con otra cadena de texto. Este método distingue entre mayúsculas y minúsculas.

+ +

Polyfill

+ +

Este método se ha añadido a la especificación ECMAScript 2015 y podría no estar disponible aún en todas las implementaciones de JavaScript. Sin embargo, puedes utilizar un polyfill de String.prototype.startsWith() con el siguiente fragmento de 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;
+        }
+    });
+}
+
+ +

Un polyfill más robusto (totalmente compatible con la especificación ES2015), pero con menos rendimiento y menos compacto está disponible en GitHub, por Mathias Bynens.

+ +

Ejemplos

+ +

Usando startsWith()

+ +
//startswith
+var str = 'Ser, o no ser. ¡Esa es la cuestión!';
+
+console.log(str.startsWith('Ser'));           // true
+console.log(str.startsWith('no ser'));        // false
+console.log(str.startsWith('Esa es la', 16)); // true
+
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-string.prototype.startswith', 'String.prototype.startsWith')}}
+ +

Compatibilidad en navegadores

+ +

{{Compat("javascript.builtins.String.startsWith")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/strike/index.html b/files/es/web/javascript/reference/global_objects/string/strike/index.html new file mode 100644 index 0000000000..20ba5e9c90 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/strike/index.html @@ -0,0 +1,42 @@ +--- +title: String.prototype.strike() +slug: Web/JavaScript/Referencia/Objetos_globales/String/strike +tags: + - Deprecated + - HTML wrapper methods + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/strike +--- +

{{JSRef("Objetos_globales", "String")}}

+

{{deprecated_header}}

+

Resumen

+

Causa que una cadena se muestre como texto tachado, como si estuviese dentro de una etiqueta {{HTMLElement("strike")}}.

+

Sintaxis

+
cadena.strike()
+

Descripción

+

Usa el método strike para formatear y mostrar una cadena en un documento.

+

Ejemplos

+

Ejemplo: Usando métodos de string para cambiar el formateado de una cadena

+

El siguiente ejemplo usa los métodos de string para cambiar el formateado de una cadena:

+
var cadenaMundo="¡Hola mundo!"
+
+console.log(cadenaMundo.blink())
+console.log(cadenaMundo.bold())
+console.log(cadenaMundo.italics())
+console.log(cadenaMundo.strike())
+
+

Este ejemplo produce el mismo resultado que el siguiente código HTML:

+
<blink>¡Hola mundo!</blink>
+<b>¡Hola mundo!</b>
+<i>¡Hola mundo!</i>
+<strike>¡Hola mundo!</strike>
+
+

Vea También

+ diff --git a/files/es/web/javascript/reference/global_objects/string/sub/index.html b/files/es/web/javascript/reference/global_objects/string/sub/index.html new file mode 100644 index 0000000000..195bca9d1e --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/sub/index.html @@ -0,0 +1,35 @@ +--- +title: String.prototype.sub() +slug: Web/JavaScript/Referencia/Objetos_globales/String/sub +tags: + - HTML wrapper methods + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/sub +--- +

{{JSRef("Objetos_globales", "String")}}

+

Resumen

+

Causa que una cadena se muestre como subíndice, como si estuviese dentro de una etiqueta {{HTMLElement("sub")}}.

+

Sintaxis

+
cadena.sub()
+

Descripción

+

Usa el método sub junto para formatear y mostrar una cadena en un documento.

+

Ejemplos

+

Ejemplo: Usando los métodos sub y sup para formatear una cadena

+

El siguiente ejemplo usa los métodos sub y sup para formatear una cadena:

+
var superText="superscript"
+var subText="subscript"
+
+console.log("Esto es lo que un " + superText.sup() + " parece.")
+console.log("Esto es lo que un " + subText.sub() + " parece.")
+
+

Este ejemplo produce el mismo resultado que el siguiente código HTML:

+
Esto es lo que <sup>superscript</sup> parece.
+Esto es lo que <sub>subscript</sub> parece.
+
+

Vea También

+ diff --git a/files/es/web/javascript/reference/global_objects/string/substr/index.html b/files/es/web/javascript/reference/global_objects/string/substr/index.html new file mode 100644 index 0000000000..290d1292ab --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/substr/index.html @@ -0,0 +1,83 @@ +--- +title: String.prototype.substr() +slug: Web/JavaScript/Referencia/Objetos_globales/String/substr +tags: + - JavaScript + - Método(2) + - Prototipo + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/substr +--- +

{{JSRef("Objetos_globales", "String")}}

+ +
Advertencia: Aunque String.prototype.substr(…) no está estrictamente obsoleto (como en "eliminado de los estándares web"), se define en el anexo B de la norma ECMA-262, cuya introducción establece: + +
... Todas las características y comportamientos del lenguaje especificados en este anexo tienen una o más características indeseables y, en ausencia de uso heredado, se eliminarían de esta especificación. ... ... Los programadores no deben usar ni asumir la existencia de estas características y comportamientos al escribir un nuevo código ECMAScript.
+
+ +

 

+ +

Resumen

+ +

El método substr() devuelve los caracteres de una cadena que comienzan en una localización especificada y de acuerdo al número de caracteres que se especifiquen.

+ +

Sintaxis

+ +
cadena.substr(inicio[, longitud])
+ +

Parámetros

+ +
+
inicio
+
Localización en la cual se empiezan a extraer caracteres. Si se da un número negativo, se trata como longCad + inicio donde  longCad es la longitud de la cadena (por ejemplo, si inicio es -3 se trata como longCad - 3).
+
+ +
+
longitud
+
Opcional. El número de caracteres a extraer. Si este argumento es {{jsxref("undefined")}}, todos los caracteres desde inicio hasta el final de la cadena serán extraidos.
+
+ +

Valor retornado

+ +

Una nueva cadena que contiende la sección extraída de la cadena dada. Sí la longitud es 0 o un número negativo, retorna la cadena vacía.

+ +

Descripción

+ +

inicio es el índice de un carácter. El índice del primer carácter es 0, y el índice del último carácter es la longitud de la cadena menos 1. substr comienza extrayendo caracteres a partir de inicio y recolecta longitud  caracteres (a menos que se alcance primero el final de la cadena, en cuyo caso devuelve menos).

+ +

Si inicio es positivo y es mayor o igual que la longitud de la cadena, substr() devuelve una cadena vacía.

+ +

Si inicio es negativo, substr() lo usa como un índice de carácter desde el final de la cadena. Si inicio es negativo y abs(inicio) es mayor que la longitud de la cadena, substr usa 0 como índice inical. Nota: el uso descrito de valores negativos del argumento inicio no es soportado por Microsoft JScript .

+ +

Si longitud es 0 o negativa, substr devuelve una cadena vacía. Si se omite longitud, inicio extrae caracteres hasta el final de la cadena.

+ +

Ejemplos

+ +

Ejemplo: Uso de substr()

+ +
var cadena = "abcdefghij";
+
+console.log("(1,2): "    + cadena.substr(1,2));   // '(1, 2): bc'
+console.log("(-3,2): "   + cadena.substr(-3,2));  // '(-3, 2): hi'
+console.log("(-3): "     + cadena.substr(-3));    // '(-3): hij'
+console.log("(1): "      + cadena.substr(1));     // '(1): bcdefghij'
+console.log("(-20, 2): " + cadena.substr(-20,2)); // '(-20, 2): ab'
+console.log("(20, 2): "  + cadena.substr(20,2));  // '(20, 2): '
+
+ +

Este script muestra:

+ +
(1,2): bc
+(-3,2): hi
+(-3): hij
+(1): bcdefghij
+(-20, 2): ab
+(20, 2):
+
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/substring/index.html b/files/es/web/javascript/reference/global_objects/string/substring/index.html new file mode 100644 index 0000000000..9918417f95 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/substring/index.html @@ -0,0 +1,92 @@ +--- +title: String.prototype.substring() +slug: Web/JavaScript/Referencia/Objetos_globales/String/substring +tags: + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/substring +--- +

{{JSRef("Objetos_globales", "String")}}

+ +

Resumen

+ +

El substring() método devuelve un subconjunto de un objeto String.

+ +

Sintaxis

+ +
cadena.substring(indiceA[, indiceB'])
+ +

Parámetros

+ +
+
indiceA
+
Un entero entre 0 y la longitud de la cadena menos 1.
+
indiceB
+
(opcional) Un entero entre 0 y la longitud de la cadena.
+
+ +

Descripción

+ +

substring extrae caracteres desde indiceA hasta indiceB sin incluirlo. En particular:

+ + + +

Si indiceA es mayor que indiceB, entonces el efecto de substring es como si los dos argumentos se intercambiasen; por ejemplo, cadena.substring(1, 0) == cadena.substring(0, 1).

+ +

Ejemplos

+ +

Ejemplo: Usando substring

+ +

El siguiente ejemplo usa substring para mostrar caracteres de la cadena "Mozilla":

+ +
// asume una función print ya definida
+var cualquierCadena = "Mozilla";
+
+// Muestra "Moz"
+print(cualquierCadena.substring(0,3));
+print(cualquierCadena.substring(3,0));
+
+// Muestra "lla"
+print(cualquierCadena.substring(4,7));
+print(cualquierCadena.substring(7,4));
+
+// Muestra "Mozill"
+print(cualquierCadena.substring(0,6));
+print(cualquierCadena.substring(6,0));
+
+// Muestra "Mozilla"
+print(cualquierCadena.substring(0,7));
+print(cualquierCadena.substring(0,10));
+
+ +

Ejemplo: Reemplazar una subcadena dentro de una cadena

+ +

El siguiente ejemplo reemplaza una subcadena dentro de una cadena. Reemplazará tanto caracteres individuales como subcadenas. La llamada de la función al final del ejemplo cambia la cadena "Bravo Nuevo Mundo" por "Bravo Nueva Web".

+ +
function reemplazarCadena(cadenaVieja, cadenaNueva, cadenaCompleta) {
+// Reemplaza cadenaVieja por cadenaNueva en cadenaCompleta
+
+   for (var i = 0; i < cadenaCompleta.length; i++) {
+      if (cadenaCompleta.substring(i, i + cadenaVieja.length) == cadenaVieja) {
+         cadenaCompleta= cadenaCompleta.substring(0, i) + cadenaNueva + cadenaCompleta.substring(i + cadenaVieja.length, cadenaCompleta.length);
+      }
+   }
+   return cadenaCompleta;
+}
+
+reemplazarCadena("Mundo", "Web", "Bravo Nuevo Mundo");
+
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/sup/index.html b/files/es/web/javascript/reference/global_objects/string/sup/index.html new file mode 100644 index 0000000000..6b8db218b6 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/sup/index.html @@ -0,0 +1,35 @@ +--- +title: String.prototype.sup() +slug: Web/JavaScript/Referencia/Objetos_globales/String/sup +tags: + - HTML wrapper methods + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/sup +--- +

{{JSRef("Objetos_globales", "String")}}

+

Resumen

+

Causa que una cadena se muestre como superíndice, como si estuviese dentro de una etiqueta {{HTMLElement("sup")}}.

+

Sintaxis

+
cadena.sup()
+

Descripción

+

Usa el método sup junto para formatear y mostrar una cadena en un documento.

+

Ejemplos

+

Ejemplo: Usando los métodos sub y sup para formatear una cadena

+

El siguiente ejemplo usa los métodos sub y sup para formatear una cadena:

+
var textoSuper="superscript"
+var textoSub="subscript"
+
+console.log("Esto es lo que un " + textoSuper.sup() + " parece.")
+console.log("Esto es lo que un " + textoSub.sub() + " parece.")
+
+

Este ejemplo produce el mismo resultado que el siguiente código HTML:

+
Esto es lo que <sup>superscript</sup> parece.
+Esto es lo que <sub>subscript</sub> parece.
+
+

Vea También

+ diff --git a/files/es/web/javascript/reference/global_objects/string/tolocalelowercase/index.html b/files/es/web/javascript/reference/global_objects/string/tolocalelowercase/index.html new file mode 100644 index 0000000000..5c1eae2144 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/tolocalelowercase/index.html @@ -0,0 +1,113 @@ +--- +title: String.prototype.toLocaleLowerCase() +slug: Web/JavaScript/Referencia/Objetos_globales/String/toLocaleLowerCase +tags: + - Cadena + - Internacionalizacion + - Prototipo + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase +--- +
{{JSRef}}
+ +
El método toLocaleLowerCase() retorna la cadena de texto desde la que se llama convertida en minúsculas, de acuerdo con cualquier localización específica de correspondencia de mayúsculas y minúsculas.
+ +
 
+ +
{{EmbedInteractiveExample("pages/js/string-tolocalelowercase.html")}}
+ + + +

Sintaxis

+ +
str.toLocaleLowerCase()
+str.toLocaleLowerCase(locale)
+str.toLocaleLowerCase([locale, locale, ...])
+
+ +

Parámetros

+ +
+
locale {{optional_inline}}
+
El parámetro locale indica la localización que se utilizará para convertir a minúsculas de acuerdo con culalquier correspondencia de mayúsculas y minúsculas. Si se proporcionan múltiples locales en un {{jsxref("Array")}}, se utiliza el mejor local disponible. La localización por defecto es la localización actual configurada en el host.
+
+ +

Valor retornado

+ +

Una nueva cadena que representa la cadena desde la que se llama convertida a minúsculas, de acuerdo con cualquier localización específica de correspondencia de mayúsculas y minúsculas.

+ +

Excepciones

+ + + +

Descripción

+ +

El método toLocaleLowerCase() retorna la cadena de texto desde la que se llama convertida en minúsculas, de acuerdo con cualquier localización específica de correspondencia de mayúsculas y minúsculas.  toLocaleLowerCase() no afecta el valor de la cadena desde la que se llama. En la mayoría de los casos, producirá el mismo resultado que {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}}, pero para algunos locales, como el turco, cuyas correspondencias de mayúsculas y minúsculas no siguen las correpsondencias por defecto de Unicode, podría producir de un resultado diferente.

+ +

Ejemplos

+ +

Utilizando toLocaleLowerCase()

+ +
'ALPHABET'.toLocaleLowerCase(); // 'alphabet'
+
+'\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
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Initial definition. Implemented in JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.5.4.17', 'String.prototype.toLocaleLowerCase')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.tolocalelowercase', 'String.prototype.toLocaleLowerCase')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-string.prototype.tolocalelowercase', 'String.prototype.toLocaleLowerCase')}}{{Spec2('ESDraft')}} 
{{SpecName('ES Int Draft', '#sup-string.prototype.tolocalelowercase', 'String.prototype.toLocaleLowerCase')}}{{Spec2('ES Int Draft')}}ES Intl 2017 added the locale parameter.
+ +

Compatibilidad entre navegadores

+ + + +

{{Compat("javascript.builtins.String.toLocaleLowerCase")}}

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html b/files/es/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html new file mode 100644 index 0000000000..7199ca3ae5 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html @@ -0,0 +1,100 @@ +--- +title: String.prototype.toLocaleUpperCase() +slug: Web/JavaScript/Referencia/Objetos_globales/String/toLocaleUpperCase +translation_of: Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase +--- +
{{JSRef}}
+ +

El método toLocaleUpperCase() devuelve el valor de la cadena que lo llama convertido en mayúsculas, de acuerdo con las asignaciones de casos específicos de la configuración regional.

+ +

Syntaxis

+ +
str.toLocaleUpperCase()
+str.toLocaleUpperCase(locale)
+str.toLocaleUpperCase([locale, locale, ...])
+
+ +

Parámetros

+ +
+
locale {{optional_inline}}
+
El parámetro locale indica la configuración regional que se va a utilizar para convertir en mayúsculas según las asignaciones de casos específicos de la configuración regional. Si se proporcionan varios locales en un {{jsxref ("Array")}}, se utiliza la mejor configuración regional disponible. La configuración regional predeterminada es la configuración regional actual del entorno de host.
+
+ +

Valor de retorno

+ +

Una nueva cadena que representa la cadena de llamada convertida en mayúsculas, de acuerdo con cualquier asignación de mayúsculas de idioma específico.

+ +

Exceciones

+ + + +

Descripción

+ +

El método toLocaleUpperCase() devuelve el valor de la cadena convertida en mayúsculas según las asignaciones de casos específicos de la configuración regional. toLocaleUpperCase() no afecta al valor de la cadena en sí. En la mayoría de los casos, esto producirá el mismo resultado que {{jsxref("String.prototype.toUpperCase()", "toUpperCase()")}}, pero para algunas localidades, como turco, cuyas asignaciones de mayúsculas y minúsculas no siguen la mayúsculas y minúsculas en Unicode, puede haber un resultado diferente.

+ +

Ejemplos

+ +

Usando toLocaleUpperCase()

+ +
'alphabet'.toLocaleUpperCase(); // 'ALPHABET'
+
+'i\u0307'.toLocaleUpperCase('lt-LT'); // 'I'
+
+let locales = ['lt', 'LT', 'lt-LT', 'lt-u-co-phonebk', 'lt-x-lietuva'];
+'i\u0307'.toLocaleUpperCase(locales); // 'I'
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónStatusComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Initial definition. Implemented in JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.5.4.19', 'String.prototype.toLocaleUpperCase')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.tolocaleuppercase', 'String.prototype.toLocaleUpperCase')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-string.prototype.tolocaleuppercase', 'String.prototype.toLocaleUpperCase')}}{{Spec2('ESDraft')}} 
{{SpecName('ES Int Draft', '#sup-string.prototype.tolocaleuppercase', 'String.prototype.toLocaleUpperCase')}}{{Spec2('ES Int Draft')}}ES Intl 2017 added the locale parameter.
+ +

Compatibilidad de navegadores

+ + + +

{{Compat("javascript.builtins.String.toLocaleUpperCase")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/tolowercase/index.html b/files/es/web/javascript/reference/global_objects/string/tolowercase/index.html new file mode 100644 index 0000000000..8060f3dd1c --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/tolowercase/index.html @@ -0,0 +1,40 @@ +--- +title: String.prototype.toLowerCase() +slug: Web/JavaScript/Referencia/Objetos_globales/String/toLowerCase +tags: + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/toLowerCase +--- +

{{JSRef("Objetos_globales", "String")}}

+ +

Resumen

+ +

El método toLowerCase() devuelve el valor en minúsculas de la cadena que realiza la llamada.

+ +

Sintaxis

+ +
cadena.toLowerCase() 
+ +

Descripción

+ +

El método toLowerCase devuelve el valor de la cadena convertida a minúsculas. toLowerCase no afecta al valor de la cadena en sí misma.

+ +

Ejemplos

+ +

Ejemplo: Usando toLowerCase

+ +

El siguiente ejemplo muestra la cadena "alfabeto" en minúsculas:

+ +
var textoMayusculas="ALFABETO"
+document.write(textoMayusculas.toLowerCase())
+
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/tosource/index.html b/files/es/web/javascript/reference/global_objects/string/tosource/index.html new file mode 100644 index 0000000000..104738c22d --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/tosource/index.html @@ -0,0 +1,56 @@ +--- +title: String.prototype.toSource() +slug: Web/JavaScript/Referencia/Objetos_globales/String/toSource +tags: + - Cadena + - JavaScript + - No estandar + - Prototipo + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/toSource +--- +
{{JSRef}} {{non-standard_header}}
+ +

El método toSource() devuelve una cadena que representa el código fuente del objeto.

+ +

Sintaxis

+ +
String.toSource()
+str.toSource()
+
+ +

Valor devuelto

+ +

Una cadena que representa el código fuente del objeto.

+ +

Descripción

+ +

El método toSource() devuelve los siguientes valores:

+ +

Para el objeto incorporado {{jsxref("String")}}, toSource() devuelve la siguiente cadena indicando que el código fuente no está disponible:

+ +
function String() {
+    [native code]
+}
+
+ +

Para instancias de {{jsxref("String")}} o cadenas literales, toSource() devuelve una cadena representando el código fuente.

+ +

Este método usualmente es llamado internamente por JavaScript y no explícitamente en código.

+ +

Especificaciones

+ +

No es parte de ningún estándar. Implementado en JavaScript 1.3.

+ +

Compatibilidad entre navegadores

+ + + +

{{Compat("javascript.builtins.String.toSource")}}

+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/tostring/index.html b/files/es/web/javascript/reference/global_objects/string/tostring/index.html new file mode 100644 index 0000000000..89f53666b1 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/tostring/index.html @@ -0,0 +1,28 @@ +--- +title: String.prototype.toString() +slug: Web/JavaScript/Referencia/Objetos_globales/String/toString +tags: + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/toString +--- +

{{JSRef("Objetos_globales", "String")}}

+

Resumen

+

El toString() método devuelve una cadena que representa al objeto especificado.

+

Sintaxis

+
cadena.toString() 
+

Descripción

+

El objeto String sobreescribe el método toString del objeto {{jsxref("Object")}} object; no hereda {{jsxref("Object.toString()")}}. Para objetos String, el método toString devuelve una cadena que representa al objeto.

+

Ejemplos

+

Ejemplo: Usando toString

+

El siguiente ejemplo muestra el valor cadena de un objeto String:

+
cadena = new String("Hello world");
+alert(cadena.toString())      // Displays "Hello world"
+
+

Vea También

+ diff --git a/files/es/web/javascript/reference/global_objects/string/touppercase/index.html b/files/es/web/javascript/reference/global_objects/string/touppercase/index.html new file mode 100644 index 0000000000..77b05b28b4 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/touppercase/index.html @@ -0,0 +1,39 @@ +--- +title: String.prototype.toUpperCase() +slug: Web/JavaScript/Referencia/Objetos_globales/String/toUpperCase +tags: + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/toUpperCase +--- +

{{JSRef("Objetos_globales", "String")}}

+ +

Resumen

+ +

El toUpperCase() método devuelve el valor convertido en mayúsculas de la cadena que realiza la llamada.

+ +

Sintaxis

+ +
cadena.toUpperCase() 
+ +

Descripción

+ +

El método toUpperCase devuelve el valor de la cadena convertida a mayúsculas. toUpperCase no afecta al valor de la cadena en sí mismo.

+ +

Ejemplos

+ +

Ejemplo: Usando toUpperCase

+ +

El siguiente ejemplo muestra la cadena "ALPHABET":

+ +
console.log( "alphabet".toUpperCase() ); // "ALPHABET"
+
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/trim/index.html b/files/es/web/javascript/reference/global_objects/string/trim/index.html new file mode 100644 index 0000000000..d958d713eb --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/trim/index.html @@ -0,0 +1,133 @@ +--- +title: String.prototype.trim() +slug: Web/JavaScript/Referencia/Objetos_globales/String/Trim +translation_of: Web/JavaScript/Reference/Global_Objects/String/Trim +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Resumen

+ +

El método trim( ) elimina los espacios en blanco en ambos extremos del string. Los espacios en blanco en este contexto, son todos los caracteres sin contenido (espacio, tabulación, etc.) y todos los caracteres de nuevas lineas (LF,CR,etc.).

+ +

Sintaxis

+ +
str.trim()
+ +

Una nueva cadena que representa la cadena de llamada sin espacios en blanco de ambos extremos.

+ +

Descripción

+ +

El método trim( ) devuelve la cadena de texto despojada de los espacios en blanco en ambos extremos. El método no afecta al valor de la cadena de texto.

+ +

Ejemplos

+ +

Ejemplo: Uso de trim()

+ +

El siguiente ejemplo muestra la cadena de texto en minúsculas 'foo':

+ +
var orig = '   foo  ';
+console.log(orig.trim()); // 'foo'
+
+// Otro ejemplo de .trim() eliminando el espacio en blanco sólo de un lado.
+
+var orig = 'foo    ';
+console.log(orig.trim()); // 'foo'
+
+ +

Polyfill

+ +

Ejecutar el siguiente código antes de cualquier otro código creará un trim ( ) si este no está disponible de manera nativa.

+ +
if (!String.prototype.trim) {
+  (function() {
+    // Make sure we trim BOM and NBSP
+    var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
+    String.prototype.trim = function() {
+      return this.replace(rtrim, '');
+    };
+  })();
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
{{SpecName('ES5.1', '#sec-15.5.4.20', 'String.prototype.trim')}}{{Spec2('ES5.1')}} +

Definición inicial. Implementado en JavaScript 1.8.1.

+
{{SpecName('ES6', '#sec-string.prototype.trim', 'String.prototype.trim')}}{{Spec2('ES6')}} 
+ +

Compatibilidad en Navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.9.1")}}{{CompatIE("9")}}{{CompatOpera("10.5")}}{{CompatSafari("5")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/trimend/index.html b/files/es/web/javascript/reference/global_objects/string/trimend/index.html new file mode 100644 index 0000000000..6252141adf --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/trimend/index.html @@ -0,0 +1,82 @@ +--- +title: String.prototype.trimEnd() +slug: Web/JavaScript/Referencia/Objetos_globales/String/trimEnd +tags: + - Espacios en blanco + - JavaScript + - Métodos + - Prototype + - String + - Texto + - cadenas de texto +translation_of: Web/JavaScript/Reference/Global_Objects/String/trimEnd +--- +
{{JSRef}}
+ +

El método trimEnd() elimina los espacios en blanco al final de una cadena de carácteres. trimRight() es el alias de este método.

+ +
{{EmbedInteractiveExample("pages/js/string-trimend.html")}}
+ + + +

Sintaxis

+ +
str.trimEnd();
+str.trimRight();
+ +

Valor de retorno

+ +

Una nueva cadena de texto que representa la cadena de texto llamada sin espacios en blanco de su extremo (derecho).

+ +

Descripción

+ +

trimEnd() / trimRight() Los metodos devuelven una cadena de texto sin espacios en blanco desde su extremo derecho. trimEnd() ó trimRight() no afectan el valor de la cadena de texto en sí.

+ +

Superposición

+ +

Por coherencia de funciones como {{jsxref("String.prototype.padEnd")}} el nombre del método estandar es trimEnd. Sin embargo por compatibilidad web, trimRight permanece como un alias para trimEnd. En algunos motores esto significa: 

+ +
String.prototype.trimRight.name === "trimEnd";
+ +

Ejemplo

+ +

Usando trimEnd()

+ +

El siguiente ejemplo muestra la cadena de texto en minusculas '   foo':

+ +
var str = '   foo  ';
+
+console.log(str.length); // 8
+
+str = str.trimEnd();
+console.log(str.length); // 6
+console.log(str);        // '   foo'
+
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-string.prototype.trimend', 'String.prototype.trimEnd')}}
+ +

Compatibilidad en Navegadores

+ + + +

{{Compat("javascript.builtins.String.trimEnd")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/string/valueof/index.html b/files/es/web/javascript/reference/global_objects/string/valueof/index.html new file mode 100644 index 0000000000..b287c4d774 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/string/valueof/index.html @@ -0,0 +1,28 @@ +--- +title: String.prototype.valueOf() +slug: Web/JavaScript/Referencia/Objetos_globales/String/valueOf +tags: + - JavaScript + - Method + - Prototype + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/valueOf +--- +

{{JSRef("Objetos_globales", "String")}}

+

Resumen

+

The valueOf() método devuelve el valor primitivo de un objeto String.

+

Sintaxis

+
caneda.valueOf() 
+

Descripción

+

El método valueOf de String devuelve el valor primitivo de un objeto String como un tipo de dato cadena. Este valor es equivalente a String.toString.

+

Normalmente este método es llamado internamente por JavaScript y no en el código.

+

Ejemplos

+

Ejemplo: Usando valueOf

+
cadena = new String("Hello world");
+alert(cadena.valueOf())          // Displays "Hello world"
+
+

Vea También

+ diff --git a/files/es/web/javascript/reference/global_objects/symbol/for/index.html b/files/es/web/javascript/reference/global_objects/symbol/for/index.html new file mode 100644 index 0000000000..1111e49b7a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/symbol/for/index.html @@ -0,0 +1,153 @@ +--- +title: Symbol.for() +slug: Web/JavaScript/Referencia/Objetos_globales/Symbol/for +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/for +--- +
{{JSRef}}
+ +

El método Symbol.for(key) busca símbolos existentes en el runtime global del registro de symbols con la key enviada cómo argumento y devuelve el symbol si fue encontrada. Sino, un nuevo symbol es creado en el registro global de symbols con dicha key .

+ +

Syntax

+ +
Symbol.for(key);
+ +

Parámetros

+ +
+
key
+
String, requirido. La key para el símbolo (y también usada para la descripción del Symbol).
+
+ +

Valor de retorno

+ +

Un Symbol existente para la key enviada si se encuentra, un nuevo Symbol creado para la key si no es encontrado.

+ +

Descripción

+ +

A diferencia de Symbol(),  la función Symbol.for() crea un symbol disponible el registro global de symbols.

+ +

Sin embargo, Symbol.for() no crea un nuevo symbol en cada llamada: primero chequea si existe un symbol para la key en el registro y sólo crea un nuevo symbol si la key no es encontrada.

+ +

El registro global de symbol es una lista con la siguiente estructura (inicializada vacía):

+ + + + + + + + + + + + + + + + + +
Estructura registro global de symbol
Field nameValue
[[key]]Un string usado como key para identifcar al símbolo.
[[symbol]]El symbol que es guardado globalmente.
+ +

Examples

+ +
Symbol.for('foo'); // crea un nuevo global symbol
+Symbol.for('foo'); // devuelve el symbol creado
+
+// El mismo symbol global, pero no localmente
+Symbol.for('bar') === Symbol.for('bar'); // true
+Symbol('bar') === Symbol('bar'); // false
+
+// La key es usada en la descripción
+var sym = Symbol.for('mario');
+sym.toString(); // "Symbol(mario)"
+
+ +

Es una buena práctica agregar un prefijo a los symbols para evitar conflictos con otras librerias del código:

+ +
Symbol.for('mdn.foo');
+Symbol.for('mdn.bar');
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-symbol.for', 'Symbol.for')}}{{Spec2('ES2015')}}Definición inicial
{{SpecName('ESDraft', '#sec-symbol.for', 'Symbol.for')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad entre exploradores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{ CompatChrome(40) }}{{CompatVersionUnknown}}{{ CompatGeckoDesktop("36.0") }}{{CompatNo}}{{CompatNo}}9
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{ CompatGeckoMobile("36.0") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/symbol/hasinstance/index.html b/files/es/web/javascript/reference/global_objects/symbol/hasinstance/index.html new file mode 100644 index 0000000000..9149aeda00 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/symbol/hasinstance/index.html @@ -0,0 +1,105 @@ +--- +title: Symbol.hasInstance +slug: Web/JavaScript/Referencia/Objetos_globales/Symbol/hasInstance +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance +--- +
{{JSRef}}
+ +

El bien conocido símbolo Symbol.hasInstance es usado para determinar si un constructor reconoce un objeto como su instancia. El comportamiento del operador {{jsxref("Operators/instanceof", "instanceof")}} puede ser personalizado con este símbolo.

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

Ejemplos

+ +

Usted puede implementar un comportamiento personalizado para el operador instanceof tal que así:

+ +
class MyArray {
+  static [Symbol.hasInstance](instance) {
+    return Array.isArray(instance);
+  }
+}
+console.log([] instanceof MyArray); // true
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-symbol.hasinstance', 'Symbol.hasInstance')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-symbol.hasinstance', 'Symbol.hasInstance')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(51)}}{{CompatVersionUnknown}}{{ CompatGeckoDesktop(50) }}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{ CompatGeckoMobile(50) }}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/symbol/index.html b/files/es/web/javascript/reference/global_objects/symbol/index.html new file mode 100644 index 0000000000..ef21b5fb6c --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/symbol/index.html @@ -0,0 +1,364 @@ +--- +title: Symbol +slug: Web/JavaScript/Referencia/Objetos_globales/Symbol +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol +--- +
{{JSRef}}
+ +

Symbol es un tipo de datos cuyos valores son únicos e immutables. Dichos valores pueden ser utilizados como identificadores (claves) de las propiedades de los objetos.  Cada valor del tipo Symbol tiene asociado un valor del tipo String o Undefined que sirve únicamente como descripción del símbolo.

+ +

La función Symbol {{Glossary("Primitive", "primitive data type")}} es el constructor de valores del tipo Symbol. Cuando Symbol es llamado como función nos devuelve una nuevo valor del tipo Symbol. El constructor Symbol no debe ser usado con el operador new. Tampoco debe ser extendido mediante clases.

+ + + +

Sintaxis

+ +
Symbol([description])
+ +

Parametros

+ +
+
Descripcion {{optional_inline}}
+
Es un valor opcional de tipo String. Únicamente sirve como descripción del símbolo que puede ser útil para depurar. No permite el acceso al símbolo que describe.
+
+ +

Descripción

+ +

Para crear un nuevo símbolo, simplemente escribimos  Symbol(), opcionalmente  con un argumento de tipo String que constituiría la descripción del símbolo:

+ +
var sym1 = Symbol();
+var sym2 = Symbol("foo");
+var sym3 = Symbol("foo");
+
+ +

El código anterior crea tres símbolos nuevos. Hay que destacar que  Symbol("foo") no convierte la cadena "foo" en un símbolo, sino que crea un símbolo nuevo que tiene la misma descripción.

+ +
Symbol("foo") === Symbol("foo"); // false
+ +

La siguiente sintaxis con el operador {{jsxref("Operators/new", "new")}} lanzará un {{jsxref("TypeError")}}:

+ +
var sym = new Symbol(); // TypeError
+ +

Esto evita la creación de un objeto envolvente explícito de Symbol en lugar de un nuevo valor de tipo símbolo. Si realmente se desea crear un Symbol wrapper object,  podemos usar la función Object():

+ +
var sym = Symbol("foo");
+typeof sym;     // "symbol"
+var symObj = Object(sym);
+typeof symObj;  // "object"
+
+ +

Símbolos compartidos en el registro global de símbolos

+ +

La sintaxis anteriormente descrita que usa la función Symbol() no creara un símbolo global disponible para toda el código base. Para crear símbolos accesibles a través de los archivos incluso a través de realms (cada uno de los cuales tiene su propio global scope) es necesario utilizar los métodos {{jsxref("Symbol.for()")}} y {{jsxref("Symbol.keyFor()")}} para crear y acceder a los símbolos desde un registro global de valores del tipo Symbol.

+ +

Encontrando las claves de tipo símbolo de un objeto

+ +

El método {{jsxref("Object.getOwnPropertySymbols()")}} devuelve un array con los símbolos que sirven como claves de las propiedades propias de un objeto. Hay que destacar que cada objeto es inicializado sin propiedades propias con claves de tipo Symbol, así que este array estará vacio a menos que se hayan creado explicitamente propiedades con clave de tipo símbolo en el objeto.

+ +

Propiedades

+ +
+
Symbol.length
+
La propiedad length cuyo valor es 0 para todos los símbolos.
+
{{jsxref("Symbol.prototype")}}
+
Representa el prototipo constructor Symbol. Es un objeto ordinario.
+
+ +

Símbolos bien conocidos

+ +

JavaScript tiene algunos símbolos incorporados que representan comportamientos internos del lenguaje que no fueron expuestos a los programadores antes de ECMAScript 6. Se accede a los dichos símbolos a través de las siguientes propiedades del constructor Symbol.

+ +

Símbolo de iteración

+ +
+
{{jsxref("Symbol.iterator")}}
+
Los objetos que implementen la interfaz Iterable deben tener una propiedad que tenga como clave este símbolo. Dicha propiedad debe ser una función que devuelva un objeto que implemente la interfaz Iterator.  Usado por for...of.
+
+ +

Símbolos de expresiones regulares

+ +
+
{{jsxref("Symbol.match")}}
+
Un método que iguala a un String, también usado para determinar si un objeto puede ser usado como una expresión regular. Usado por {{jsxref("String.prototype.match()")}}.
+
{{jsxref("Symbol.replace")}}
+
Un método que reemplaza las subcadenas que coinciden con una cadena. Utilizado por {{jsxref("String.prototype.replace()")}}.
+
{{jsxref("Symbol.search")}}
+
Un método que devuelve el índice dentro de una cadena que coincide con la expresión regular. Utilizado por {{jsxref("String.prototype.search()")}}.
+
{{jsxref("Symbol.split")}}
+
Un método que separa una cadena en los índices que coincide una expresión regular. Utilizado por {{jsxref("String.prototype.split()")}}.
+
+ +

Otros símbolos

+ +
+
{{jsxref("Symbol.hasInstance")}}
+
Un método que determina si un objeto constructor reconoce al objeto como su instancia. Utilizado por {{jsxref("Operators/instanceof", "instanceof")}}.
+
{{jsxref("Symbol.isConcatSpreadable")}}
+
Un valor booleano que indica si un objeto debe ser aplanado a sus elementos de matriz. Usado por {{jsxref("Array.prototype.concat()")}}.
+
{{jsxref("Symbol.unscopables")}}
+
An Array of string values that are property values. These are excluded from the with environment bindings of the associated objects.
+
{{jsxref("Symbol.species")}}
+
Una función constructor utilizada para crear objetos derivados.
+
{{jsxref("Symbol.toPrimitive")}}
+
Un método para convertir un objeto a su valor primitivo.
+
{{jsxref("Symbol.toStringTag")}}
+
Un método para definir la descripción por defecto de un objeto. Usado por {{jsxref("Object.prototype.toString()")}}.
+
+ +

Métodos

+ +
+
{{jsxref("Symbol.for()", "Symbol.for(key)")}}
+
Searches for existing symbols with the given key and returns it if found. Otherwise a new symbol gets created in the global symbol registry with this key.
+
{{jsxref("Symbol.keyFor", "Symbol.keyFor(sym)")}}
+
Retrieves a shared symbol key from the global symbol registry for the given symbol.
+
+ +

Symbol prototype

+ +

All Symbols inherit from {{jsxref("Symbol.prototype")}}.

+ +

Propiedades

+ +

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

+ +

Métodos

+ +

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

+ +

Ejemplos

+ +

Usando el operador typeof con  symbols

+ +

El operador {{jsxref("Operators/typeof", "typeof")}} puede ayudar a identificar los Symbol.

+ +
typeof Symbol() === 'symbol'
+typeof Symbol('foo') === 'symbol'
+typeof Symbol.iterator === 'symbol'
+
+ +

Symbol type conversions

+ +

Some things to note when working with type conversion of symbols.

+ + + +

Symbols y el iterador for...in

+ +

Symbols are not visible in for...in iterations. In addition, {{jsxref("Object.getOwnPropertyNames()")}} will not return symbol object properties, however, you can use {{jsxref("Object.getOwnPropertySymbols()")}} to get these.

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

Symbols y JSON.stringify()

+ +

Symbol-keyed properties will be completely ignored when using JSON.stringify():

+ +
JSON.stringify({[Symbol("foo")]: "foo"});
+// '{}'
+ +

For more details, see {{jsxref("JSON.stringify()")}}.

+ +

Symbol wrapper objects as property keys

+ +

When a Symbol wrapper object is used as a property key, this object will be coerced to its wrapped symbol:

+ +
var sym = Symbol("foo");
+var obj = {[sym]: 1};
+obj[sym];            // 1
+obj[Object(sym)];    // still 1
+
+ +

Especificaciones

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-symbol-objects', 'Symbol')}}{{Spec2('ES6')}}Initial definition
+ +

Compatibilidad del navegador

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(38)}}{{CompatGeckoDesktop("36.0")}}{{CompatNo}}259
Symbol.iterator (@@iterator){{CompatChrome(38)}}{{CompatGeckoDesktop("36.0")}}{{CompatNo}}259
Symbol.unscopables (@@unscopables){{CompatChrome(38)}}{{CompatNo}}{{CompatNo}}259
Symbol.match (@@match){{CompatNo}}{{CompatGeckoDesktop("40.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
Symbol.species (@@species){{CompatNo}}{{CompatGeckoDesktop("41.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
Symbol.toPrimitive (@@toPrimitive){{CompatNo}}{{CompatGeckoDesktop("44.0")}}{{CompatNo}}{{CompatNo}}{{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}}259
Symbol.iterator (@@iterator){{CompatNo}}{{CompatChrome(38)}}{{ CompatGeckoMobile("36.0") }}{{CompatNo}}259
Symbol.unscopables (@@unscopables){{CompatNo}}{{CompatChrome(38)}}{{CompatNo}}{{CompatNo}}259
Symbol.match (@@match){{CompatNo}}{{CompatNo}}{{ CompatGeckoMobile("40.0") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
Symbol.species (@@species){{CompatNo}}{{CompatNo}}{{ CompatGeckoMobile("41.0") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
Symbol.toPrimitive (@@toPrimitive){{CompatNo}}{{CompatNo}}{{ CompatGeckoMobile("44.0") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
Other well-known symbols{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Mira también

+ + diff --git a/files/es/web/javascript/reference/global_objects/symbol/iterator/index.html b/files/es/web/javascript/reference/global_objects/symbol/iterator/index.html new file mode 100644 index 0000000000..4f9e0212cc --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/symbol/iterator/index.html @@ -0,0 +1,98 @@ +--- +title: Symbol.iterator +slug: Web/JavaScript/Referencia/Objetos_globales/Symbol/iterator +tags: + - ECMAScript6 + - JavaScript + - Property + - Symbol +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/iterator +--- +
{{JSRef}}
+ +

El símbolo Symbol.iterator especifica al iterador por defecto de un objeto. Es utilizado por el bucle {{jsxref("Sentencias/for","for")}}.

+ +
{{EmbedInteractiveExample("pages/js/symbol-iterator.html")}}
+ + + +
{{js_property_attributes(0,0,0)}}
+ +

Descripción

+ +

En cualquier situación donde se necesita iterar un objeto (por ejemplo al inicio de un bucle for..of), su método @@iterator es invocado sin argumentos, y el iterador regresado es utilizador para obtener los valores a iterar.

+ +

Algunos tipos integrados cuentan con un comportamiento de iterar por defecto, mientras que otros tipos (como {{jsxref("Object")}}) no. Los tipos integrados con un método @@iterator son:

+ + + +

Ver Protocolos de iteración para más información.

+ +

Ejemplos

+ +

Iterables definidos por el usuario

+ +

Podemos definir nuestros propios iterables de la siguiente forma:

+ +
var myIterable = {}
+myIterable[Symbol.iterator] = function* () {
+    yield 1;
+    yield 2;
+    yield 3;
+};
+[...myIterable] // [1, 2, 3]
+
+ +

Iterables mal formados

+ +

Si un método iterador @@iterator no devuelve un objeto iterador, es un iterable mal formado. Usarlo como tal es probable que genere excepciones en tiempo de ejecución, o comportamientos inesperados.

+ +
var nonWellFormedIterable = {}
+nonWellFormedIterable[Symbol.iterator] = () => 1
+[...nonWellFormedIterable] // TypeError: [] is not a function
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificacióbEstadoComentario
{{SpecName('ES2015', '#sec-symbol.iterator', 'Symbol.iterator')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-symbol.iterator', 'Symbol.iterator')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad en navegadores

+ + + +

{{Compat("javascript.builtins.Symbol.iterator")}}

+ +

Temas relacionados

+ + diff --git a/files/es/web/javascript/reference/global_objects/syntaxerror/index.html b/files/es/web/javascript/reference/global_objects/syntaxerror/index.html new file mode 100644 index 0000000000..92bf3f4991 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/syntaxerror/index.html @@ -0,0 +1,176 @@ +--- +title: SyntaxError +slug: Web/JavaScript/Referencia/Objetos_globales/SyntaxError +tags: + - Constructor + - Error + - JavaScript + - SyntaxError +translation_of: Web/JavaScript/Reference/Global_Objects/SyntaxError +--- +
{{JSRef}}
+ +

El objeto SyntaxError representa un error cuando se trata de interpretar codigo sintacticamente invalido.

+ +

Descripción

+ +

Un SyntaxError es lanzado cuando el motor de JavaScript se encuentra con partes de código que no forman parte de la sintaxtis del lenguaje al momento analizar el código.

+ +

Sintaxis

+ +
new SyntaxError([mensaje[, nombreArchivo[, numeroLinea]]])
+ +

Parametros

+ +
+
mensaje
+
Opcional. Descripción legible del error.
+
nombreArchivo {{non-standard_inline}}
+
Opcional. El nombre del archivo que contiene el código que causó la excepción.
+
numeroLinea {{non-standard_inline}}
+
Opcional. El numero de linea del código que causó la excepción.
+
+ +

Propiedades

+ +
+
{{jsxref("SyntaxError.prototype")}}
+
Permite el agregado de propiedades al objeto SyntaxError.
+
+ +

Metodos

+ +

El objeto global SyntaxError no contiene metodos propios, sin embargo, hereda algunos metodos debido a la cadena de prototipos.

+ +

Instancias de SyntaxError

+ +

Propiedades

+ +
{{page('/es/docs/Web/JavaScript/Referencia/Objetos_globales/SyntaxError/prototype', 'Propiedades')}}
+ +

Metodos

+ +
{{page('/es/docs/Web/JavaScript/Referencia/Objetos_globales/SyntaxError/prototype', 'Metodos')}}
+ +

Ejemplos

+ +

Capturando un SyntaxError

+ +
try {
+  eval('hoo bar');
+} catch (e) {
+  console.log(e instanceof SyntaxError); // true
+  console.log(e.message);                // "missing ; before statement"
+  console.log(e.name);                   // "SyntaxError"
+  console.log(e.fileName);               // "Scratchpad/1"
+  console.log(e.lineNumber);             // 1
+  console.log(e.columnNumber);           // 4
+  console.log(e.stack);                  // "@Scratchpad/1:2:3\n"
+}
+
+ +

Creando un SyntaxError

+ +
try {
+  throw new SyntaxError('Hola', 'unArchivo.js', 10);
+} catch (e) {
+  console.log(e instanceof SyntaxError); // true
+  console.log(e.message);                // "Hola"
+  console.log(e.name);                   // "SyntaxError"
+  console.log(e.fileName);               // "unArchivo.js"
+  console.log(e.lineNumber);             // 10
+  console.log(e.columnNumber);           // 0
+  console.log(e.stack);                  // "@Scratchpad/2:11:9\n"
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES3')}}{{Spec2('ES3')}}Initial definition.
{{SpecName('ES5.1', '#sec-15.11.6.4', 'SyntaxError')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-syntaxerror', 'SyntaxError')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-syntaxerror', 'SyntaxError')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con Navegarores

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

Véase también

+ + diff --git a/files/es/web/javascript/reference/global_objects/typedarray/buffer/index.html b/files/es/web/javascript/reference/global_objects/typedarray/buffer/index.html new file mode 100644 index 0000000000..579f8af9bd --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/typedarray/buffer/index.html @@ -0,0 +1,110 @@ +--- +title: TypedArray.prototype.buffer +slug: Web/JavaScript/Referencia/Objetos_globales/TypedArray/buffer +tags: + - Buffer + - JavaScript + - Propiedad +translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/buffer +--- +
{{JSRef}}
+ +

La propiedad de acceso buffer representa el {{jsxref("ArrayBuffer")}} referenciada por un TypedArray en tiempo de construcción.

+ +

Sintaxis

+ +
typedArray.buffer
+ +

Descripción

+ +

La propiedad buffer es una propiedad de acceso cuya función set accessor es undefined, significa que tu sólo puedes leer esta propiedad. El valor es establecido cuando TypedArray se construye y no puede ser cambiado. TypedArray es uno de los TypedArray objects.

+ +

Ejemplos

+ +

Usando la propiedad buffer

+ +
var buffer = new ArrayBuffer(8);
+var uint16 = new Uint16Array(buffer);
+uint16.buffer; // ArrayBuffer { byteLength: 8 }
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
{{SpecName('ES6', '#sec-get-%typedarray%.prototype.buffer', 'TypedArray.prototype.buffer')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-get-%typedarray%.prototype.buffer', 'TypedArray.prototype.buffer')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad del navegador

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico7.0{{ CompatGeckoDesktop("2") }}1011.65.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico4.0{{CompatVersionUnknown}}{{ CompatGeckoMobile("2") }}1011.64.2
+
+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/global_objects/typedarray/index.html b/files/es/web/javascript/reference/global_objects/typedarray/index.html new file mode 100644 index 0000000000..644b28c081 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/typedarray/index.html @@ -0,0 +1,317 @@ +--- +title: TypedArray +slug: Web/JavaScript/Referencia/Objetos_globales/TypedArray +tags: + - Clase + - Class + - JavaScript + - TypedArray + - TypedArrays +translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray +--- +
{{JSRef}}
+ +

Un objeto TypedArray describe una vista similar a un arreglo de un búfer de datos binarios subyacente. No existe una propiedad global denominada TypedArray, ni existe un constructor TypedArray directamente visible. En cambio, hay una serie de diferentes propiedades globales, cuyos valores son constructores de arreglos tipados para tipos de elementos específicos, que se enumeran a continuación. En las siguientes páginas, encontrarás propiedades y métodos comunes que se pueden utilizar con cualquier arreglo tipado que contenga elementos de cualquier tipo.

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

Descripción

+ +

ECMAScript 2015 define un constructor TypedArray que sirve como [[Prototype]] de todos los constructores TypedArray. Este constructor no está expuesto directamente: no existe una propiedad global %TypedArray% o TypedArray. Solo es accesible directamente a través de Object.getPrototypeOf(Int8Array) y similares. Todos los constructores de TypedArray heredan propiedades comunes de la función constructora %TypedArray%. Además, todos los prototipos de arreglos con tipo (TypedArray.prototype) tienen %TypedArray%.prototype como su [[Prototype]].

+ +

El constructor %TypedArray% por sí solo no es particularmente útil. Llamarlo o usarlo en una expresión new arrojará un {{jsxref("TypeError")}}, excepto cuando se usa durante la creación de objetos en motores JS que admiten subclases. Actualmente no existen tales motores, por lo que %TypedArray% solo es útil para rellenar funciones o propiedades en todos los constructores TypedArray.

+ +

Al crear una instancia de TypedArray (p. ej., Int8Array), se crea un arreglo de búfer internamente en la memoria o, si se proporciona un objeto ArrayBuffer como argumento del constructor, entonces se usa en su lugar. La dirección del búfer se guarda como una propiedad interna de la instancia y todos los métodos de %TypedArray%.prototype, es decir, establecer el valor y obtener valor, etc.., operan en esa dirección del arreglo de búfer.

+ +

Objetos TypedArray

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TipoIntervalo de valoresTamaño en bytesDescripciónTipo de IDL webTipo C equivalente
{{jsxref("Int8Array")}}-128 a 1271Dos enteros complementarios de 8 bits con signobyteint8_t
{{jsxref("Uint8Array")}}0 a 2551Entero de 8-bit sin signooctetuint8_t
{{jsxref("Uint8ClampedArray")}}0 a 2551Entero de 8 bits sin signo (sujeto)octetuint8_t
{{jsxref("Int16Array")}}-32768 a 327672Dos enteros complementarios de 16 bits con signoshortint16_t
{{jsxref("Uint16Array")}}0 a 655352Entero de 16 bits sin signoShort sin signouint16_t
{{jsxref("Int32Array")}}-2147483648 a 21474836474dos enteros complementarios de 32 bits con signolongint32_t
{{jsxref("Uint32Array")}}0 a 42949672954Enteros de 32 bits sin signolong sin signouint32_t
{{jsxref("Float32Array")}}1.2×10-38 a 3.4×10384Número de coma flotante IEEE de 32 bits (7 dígitos significativos, p. ej., 1.1234567)float sin restriccionesfloat
{{jsxref("Float64Array")}}5.0×10-324 a 1.8×103088Número de coma flotante IEEE de 64 bits (16 dígitos significativos, p. Ej., 1.123...15)doble sin restriccionesdouble
{{jsxref("BigInt64Array")}}-263 a 263-18Dos enteros complementarios de 64 bits con signobigintint64_t (long long con signo)
{{jsxref("BigUint64Array")}}0 a 264-18Entero de 64 bits sin signobigintuint64_t (long long sin signo)
+ +

Constructor

+ +

No se puede crear una instancia de este objeto directamente. En su lugar, crea una instancia de un arreglo de un tipo particular, tal como {{jsxref("Int8Array")}} o {{jsxref("BigInt64Array")}}. Todos estos objetos tienen una sintaxis común para sus constructores:

+ +
new TypedArray();
+new TypedArray(length);
+new TypedArray(typedArray);
+new TypedArray(object);
+new TypedArray(buffer [, byteOffset [, length]]);
+
+ +

Donde TypedArray es un constructor para uno de los tipos concretos.

+ +

Parámetros

+ +
+
length
+
Cuando se llama con un argumento length, se crea un búfer de arreglo interno en la memoria, de tamaño length multiplicado por BYTES_PER_ELEMENT bytes, que contienen ceros.
+
typedArray
+
Cuando se llama con un argumento typedArray, que puede ser un objeto de cualquiera de los tipos de arreglo con tipo (como Int32Array), el typedArray se copia en un nuevo arreglo tipado. Cada valor en typedArray se convierte al tipo correspondiente del constructor antes de ser copiado en el nuevo arreglo. La longitud del nuevo arreglo tipado será la misma que la longitud del argumento typedArray.
+
object
+
Cuando se llama con un argumento object, se crea un nuevo arreglo tipado como si fuera el método TypedArray.from().
+
buffer, byteOffset, length
+
Cuando se llama con un buffer y, opcionalmente, un byteOffset y un length, se crea una nueva vista del arreglo tipado que visualiza el {{jsxref("ArrayBuffer")}} especificado. Los parámetros byteOffset y length especifican el rango de memoria que será expuesto por la vista del arreglo tipado. Si se omiten ambos, se visualiza todo el buffer; si solo se omite length, se visualiza el resto de buffer.
+
+ +

Propiedades estáticas

+ +
+
{{jsxref("TypedArray.BYTES_PER_ELEMENT")}}
+
Devuelve un valor numérico del tamaño del elemento para los diferentes objetos TypedArray.
+
{{jsxref("TypedArray.name")}}
+
Devuelve el valor de cadena del nombre del constructor (por ejemplo, "Int8Array").
+
{{jsxref("TypedArray.@@species", "get TypedArray[@@species]")}}
+
La función constructora utilizada para crear objetos derivados.
+
{{jsxref("TypedArray.prototype")}}
+
Prototipo para objetos TypedArray.
+
+ +

Métodos estáticos

+ +
+
{{jsxref("TypedArray.from()")}}
+
Crea un nuevo TypedArray a partir de un objeto iterable o similar a un arreglo. Consulta también {{jsxref("Array.from()")}}.
+
{{jsxref("TypedArray.of()")}}
+
Crea un nuevo TypedArray con un número variable de argumentos. Consulta también {{jsxref("Array.of()")}}.
+
+ +

Propiedades de la instancia

+ +
+
{{jsxref("TypedArray.prototype.buffer")}}
+
Devuelve el {{jsxref("ArrayBuffer")}} al que hace referencia el arreglo tipado. Corregido en el momento de la construcción y, por lo tanto, de solo lectura.
+
{{jsxref("TypedArray.prototype.byteLength")}}
+
Devuelve la longitud (en bytes) del arreglo tipado. Corregido en el momento de la construcción y, por lo tanto, de solo lectura.
+
{{jsxref("TypedArray.prototype.byteOffset")}}
+
Devuelve el desplazamiento (en bytes) del arreglo tipado desde el inicio de su {{jsxref("ArrayBuffer")}}. Corregido en el momento de la construcción y, por lo tanto, de solo lectura.
+
{{jsxref("TypedArray.prototype.length")}}
+
Devuelve el número de elementos contenidos en el arreglo tipado. Corregido en el momento de la construcción y, por lo tanto, de solo lectura.
+
+ +

Métodos de instancia

+ +
+
{{jsxref("TypedArray.prototype.copyWithin()")}}
+
Copia una secuencia de elementos de arreglo dentro del arreglo. Consulta también {{jsxref("Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.prototype.entries()")}}
+
Devuelve un nuevo objeto Array Iterator que contiene los pares clave/valor para cada índice del arreglo. Consulta también {{jsxref("Array.prototype.entries()")}}.
+
{{jsxref("TypedArray.prototype.every()")}}
+
Comprueba si todos los elementos del arreglo pasan la prueba proporcionada por una función. Consulta también {{jsxref("Array.prototype.every()")}}.
+
{{jsxref("TypedArray.prototype.fill()")}}
+
Rellena todos los elementos de un arreglo desde un índice inicial hasta un índice final con un valor estático. Consulta también {{jsxref("Array.prototype.fill()")}}.
+
{{jsxref("TypedArray.prototype.filter()")}}
+
Crea un nuevo arreglo con todos los elementos de este arreglo para la cual la función de filtrado proporcionada devuelve true. Consulta también {{jsxref("Array.prototype.filter()")}}.
+
{{jsxref("TypedArray.prototype.find()")}}
+
Devuelve el valor encontrado en el arreglo, si un elemento del arreglo satisface la función de prueba proporcionada, o undefined si no se encuentra. Consulta también {{jsxref("Array.prototype.find()")}}.
+
{{jsxref("TypedArray.prototype.findIndex()")}}
+
Devuelve el índice encontrado en el arreglo, si un elemento del arreglo satisface la función de prueba proporcionada o -1 si no se encuentra. Consulta también {{jsxref("Array.prototype.findIndex()")}}.
+
{{jsxref("TypedArray.prototype.forEach()")}}
+
Llama a una función para cada elemento del arreglo. Consulta también {{jsxref("Array.prototype.forEach()")}}.
+
{{jsxref("TypedArray.prototype.includes()")}}
+
Determina si un arreglo tipado incluye un determinado elemento, devolviendo true o false según corresponda. Consulta también {{jsxref("Array.prototype.includes()")}}.
+
{{jsxref("TypedArray.prototype.indexOf()")}}
+
Devuelve el primer (mínimo) índice de un elemento dentro del arreglo igual al valor especificado, o -1 si no se encuentra ninguno. Consulta también {{jsxref("Array.prototype.indexOf()")}}.
+
{{jsxref("TypedArray.prototype.join()")}}
+
Une todos los elementos de un arreglo en una cadena. Consulta también {{jsxref("Array.prototype.join()")}}.
+
{{jsxref("TypedArray.prototype.keys()")}}
+
Devuelve un nuevo Array Iterator que contiene las claves para cada índice del arreglo. Consulta también {{jsxref("Array.prototype.keys()")}}.
+
{{jsxref("TypedArray.prototype.lastIndexOf()")}}
+
Devuelve el último (mayor) índice de un elemento dentro del arreglo igual al valor especificado, o -1 si no se encuentra ninguno. Consulta también {{jsxref("Array.prototype.lastIndexOf()")}}.
+
{{jsxref("TypedArray.prototype.map()")}}
+
Crea un nuevo arreglo con los resultados de llamar a una función proporcionada en cada elemento de este arreglo. Consulta también {{jsxref("Array.prototype.map()")}}.
+
{{jsxref("TypedArray.prototype.reduce()")}}
+
Aplica una función contra un acumulador y cada valor del arreglo (de izquierda a derecha) para reducirlo a un solo valor. Consulta también {{jsxref("Array.prototype.reduce()")}}.
+
{{jsxref("TypedArray.prototype.reduceRight()")}}
+
Aplica una función contra un acumulador y cada valor del arreglo (de derecha a izquierda) para reducirlo a un solo valor. Consulta también {{jsxref("Array.prototype.reduceRight()")}}.
+
{{jsxref("TypedArray.prototype.reverse()")}}
+
Invierte el orden de los elementos de un arreglo: el primero se convierte en el último y el último en el primero. Consulta también {{jsxref("Array.prototype.reverse()")}}.
+
{{jsxref("TypedArray.prototype.set()")}}
+
Almacena múltiples valores en el arreglo tipado, leyendo valores de entrada de un arreglo especificado.
+
{{jsxref("TypedArray.prototype.slice()")}}
+
Extrae una sección de un arreglo y devuelve un nuevo arreglo. Consulta también {{jsxref("Array.prototype.slice()")}}.
+
{{jsxref("TypedArray.prototype.some()")}}
+
Devuelve true si al menos un elemento de este arreglo satisface la función de prueba proporcionada. Consulta también {{jsxref("Array.prototype.some()")}}.
+
{{jsxref("TypedArray.prototype.sort()")}}
+
Ordena los elementos de un arreglo en su lugar y devuelve el arreglo. Consulta también {{jsxref("Array.prototype.sort()")}}.
+
{{jsxref("TypedArray.prototype.subarray()")}}
+
Devuelve un nuevo TypedArray del índice del elemento inicial y final dado.
+
{{jsxref("TypedArray.prototype.values()")}}
+
Devuelve un nuevo objeto Array Iterator que contiene los valores de cada índice del arreglo. Consulta también {{jsxref("Array.prototype.values()")}}.
+
{{jsxref("TypedArray.prototype.toLocaleString()")}}
+
Devuelve una cadena localizada que representa el arreglo y sus elementos. Consulta también {{jsxref("Array.prototype.toLocaleString()")}}.
+
{{jsxref("TypedArray.prototype.toString()")}}
+
Devuelve una cadena que representa el arreglo y sus elementos. Consulta también {{jsxref("Array.prototype.toString()")}}.
+
{{jsxref("TypedArray.prototype.@@iterator()", "TypedArray.prototype[@@iterator]()")}}
+
Devuelve un nuevo objeto Array Iterator que contiene los valores de cada índice del arreglo.
+
+ +

Ejemplos

+ +

Se requiere new

+ +

A partir de ECMAScript 2015, los constructores TypedArray se deben construir con el operador {{jsxref("Operators/new", "new")}}. Llamar a un constructor TypedArray como una función sin new arrojará un {{jsxref("TypeError")}}.

+ +
var dv = Int8Array([1, 2, 3]);
+// TypeError: llamar a un constructor Int8Array incorporado
+// sin new está prohibido
+ +
var dv = new Int8Array([1, 2, 3]);
+ +

Acceso a la propiedad

+ +

Puedes hacer referencia a elementos en el arreglo utilizando la sintaxis de índice de arreglo estándar (es decir, utilizando la notación entre corchetes). Sin embargo, obtener o establecer propiedades indexadas en arreglos tipados no buscará esta propiedad en la cadena de prototipos, incluso cuando los índices estén fuera de límites. Las propiedades indexadas consultarán el {{jsxref("ArrayBuffer")}} y nunca mirarán las propiedades del objeto. Aún puedes usar propiedades con nombre, al igual que con todos los objetos.

+ +
// Configuración y obtención usando la sintaxis de arreglo estándar
+var int16 = new Int16Array(2);
+int16[0] = 42;
+[parcial]console.log(0);
+
+// No se consultan las propiedades indexadas en los prototipos (Fx 25)
+Int8Array.prototype[20] = 'foo';
+(new Int8Array(32))[20]; // 0
+// incluso cuando está fuera del límite
+Int8Array.prototype[20] = 'foo';
+(new Int8Array(8))[20]; // undefined
+// o con enteros negativos
+Int8Array.prototype[-1] = 'foo';
+(new Int8Array(8))[-1]; // undefined
+
+// Sin embargo, se permiten propiedades con nombre (Fx 30)
+Int8Array.prototype.foo = 'bar';
+(new Int8Array(32)).foo; // "bar"
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-typedarray-objects', 'TypedArray Objects')}}
+ +

Compatibilidad del navegador

+ + + +

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

+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/global_objects/uint8array/index.html b/files/es/web/javascript/reference/global_objects/uint8array/index.html new file mode 100644 index 0000000000..6402e356b0 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/uint8array/index.html @@ -0,0 +1,260 @@ +--- +title: Uint8Array +slug: Web/JavaScript/Referencia/Objetos_globales/Uint8Array +tags: + - Arreglo + - JavaScript + - array de enteros +translation_of: Web/JavaScript/Reference/Global_Objects/Uint8Array +--- +
{{JSRef}}
+ +

Los Uint8Array representan un array de enteros sin signo de 8 bits. El contenido se inicializa a 0. Una vez establecido, puedes hacer referencia a un elemento usando los métodos del objeto o usando la sintaxis de array estándar (esto es, usando la notación de corchetes).

+ +

Sintaxis

+ +
new Uint8Array(tamaño);
+new Uint8Array(typedArray);
+new Uint8Array(objeto);
+new Uint8Array(buffer [, byteOffset [, tamaño]]);
+ +

Para más información acerca de la sintaxis del constructor y sus parámetros, mire TypedArray.

+ +

Propiedades

+ +
+
{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Uint8Array.BYTES_PER_ELEMENT")}}
+
Retorna un número con el valor del tamaño del elemento. 1 en el caso del Uint8Array.
+
Uint8Array.length
+
Propiedad estática de tamaño cuyo valor es 3. Para el tamaño actual (número d elementos), mire {{jsxref("TypedArray.prototype.length", "Uint8Array.prototype.length")}}.
+
{{jsxref("TypedArray.name", "Uint8Array.name")}}
+
Devuelve el nombre del constructor en un string. En el caso de Uint8Array devuelve: "Uint8Array".
+
{{jsxref("TypedArray.prototype", "Uint8Array.prototype")}}
+
Prototipo para los objetos TypedArray .
+
+ +

Métodos

+ +
+
{{jsxref("TypedArray.from", "Uint8Array.from()")}}
+
Crea un nuevo Uint8Array desde un array o un objeto iterable. Véase también {{jsxref("Array.from()")}}.
+
{{jsxref("TypedArray.of", "Uint8Array.of()")}}
+
Crea un  Uint8Array con un número variable de argumentos. Véase también {{jsxref("Array.of()")}}.
+
+ +

Uint8Array prototype

+ +

Todos los objetos Uint8Array son heredados de {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

+ +

Propiedades

+ +
+
Uint8Array.prototype.constructor
+
Retorna la función que crea una instancia del prototype. Éste es el constructor por defecto de Uint8Array.
+
{{jsxref("TypedArray.prototype.buffer", "Uint8Array.prototype.buffer")}} {{readonlyInline}}
+
Retorna el {{jsxref("ArrayBuffer")}} con la referencia del Uint8Array. Fijado en el tiempo de construcción y es de sólo lectura.
+
{{jsxref("TypedArray.prototype.byteLength", "Uint8Array.prototype.byteLength")}} {{readonlyInline}}
+
Retorna el tamaño (en bytes) del array Uint8Array. Fijado en el tiempo de construcción y es de sólo lectura.
+
{{jsxref("TypedArray.prototype.byteOffset", "Uint8Array.prototype.byteOffset")}} {{readonlyInline}}
+
Retorna el offset (en bytes) del Uint8Array desde el inicio de su  {{jsxref("ArrayBuffer")}}. Fijado en el tiempo de construcción y es de sólo lectura.
+
{{jsxref("TypedArray.prototype.length", "Uint8Array.prototype.length")}} {{readonlyInline}}
+
Retorna el número de elementos contenidos en el Uint8Array. Fijado en el tiempo de construcción y es de sólo lectura.
+
+ +

Métodos

+ +
+
{{jsxref("TypedArray.copyWithin", "Uint8Array.prototype.copyWithin()")}}
+
Copia una secuencia de elementos del array dentro del array. Véase también {{jsxref("Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.entries", "Uint8Array.prototype.entries()")}}
+
Retorna un nuevo objeto Array Iterator que contiene los pares de valores para cada índice del array. Véase también {{jsxref("Array.prototype.entries()")}}.
+
{{jsxref("TypedArray.every", "Uint8Array.prototype.every()")}}
+
Prueba si todos los elementos del array cumplen las condiciones de una función. Véase también {{jsxref("Array.prototype.every()")}}.
+
{{jsxref("TypedArray.fill", "Uint8Array.prototype.fill()")}}
+
Llena todos los elementos del array desde el principio hasta el final con un valor dado. Véase también {{jsxref("Array.prototype.fill()")}}.
+
{{jsxref("TypedArray.filter", "Uint8Array.prototype.filter()")}}
+
Crea un nuevo array con todos los elementos del array que satisfacen las condiciones de una función que devuelve verdadero. Véase también {{jsxref("Array.prototype.filter()")}}.
+
{{jsxref("TypedArray.find", "Uint8Array.prototype.find()")}}
+
Devuelve el valor encontrado en el array, si un elemento del array satisface una función dada de prueba o undefined si no es encontrada. Véase también {{jsxref("Array.prototype.find()")}}.
+
{{jsxref("TypedArray.findIndex", "Uint8Array.prototype.findIndex()")}}
+
Devuelve el índice encontrado en el array, si un elemento del array satisface una función dada de prueba o -1 si no es encontrada. Véase también {{jsxref("Array.prototype.findIndex()")}}.
+
{{jsxref("TypedArray.forEach", "Uint8Array.prototype.forEach()")}}
+
Llama a una función para cada elemento del array. Véase también {{jsxref("Array.prototype.forEach()")}}.
+
{{jsxref("TypedArray.includes", "Uint8Array.prototype.includes()")}} {{experimental_inline}}
+
Determina si un array incluye un cierto elemento, retornando truefalse según corresponda. Véase también {{jsxref("Array.prototype.includes()")}}.
+
{{jsxref("TypedArray.indexOf", "Uint8Array.prototype.indexOf()")}}
+
Devuelve el primer (menor) índice de un elemento dentro del array igual al valor especificado, o -1 si no es encontrado. Véase también {{jsxref("Array.prototype.indexOf()")}}.
+
{{jsxref("TypedArray.join", "Uint8Array.prototype.join()")}}
+
Une todos los elementos de un array a una cadena.  Véase también {{jsxref("Array.prototype.join()")}}.
+
{{jsxref("TypedArray.keys", "Uint8Array.prototype.keys()")}}
+
Retorna un nuevo Array Iterator que contiene las claves para cada índice en el array. Véase también {{jsxref("Array.prototype.keys()")}}.
+
{{jsxref("TypedArray.lastIndexOf", "Uint8Array.prototype.lastIndexOf()")}}
+
Devuelve el último (mayor) índice de un elemento dentro del array igual al valor especificado, o -1 si no fue encontrado. Véase también {{jsxref("Array.prototype.lastIndexOf()")}}.
+
{{jsxref("TypedArray.map", "Uint8Array.prototype.map()")}}
+
Crea un nuevo array con los resultados de la llamada a la función indicada aplicados a cada uno de sus elementos. Véase también {{jsxref("Array.prototype.map()")}}.
+
{{jsxref("TypedArray.move", "Uint8Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
+
Primera versión no-estandar de {{jsxref("TypedArray.copyWithin", "Uint8Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.reduce", "Uint8Array.prototype.reduce()")}}
+
+

Aplica una función a un acumulador y a cada valor de un array (de izquierda a derecha) para reducirlo a un único valor. Véase también {{jsxref("Array.prototype.reduce()")}}.

+
+
{{jsxref("TypedArray.reduceRight", "Uint8Array.prototype.reduceRight()")}}
+
Aplica una función a un acumulador y a cada valor de un array (de derecha a izquierda) para reducirlo a un único valor. Véase también {{jsxref("Array.prototype.reduceRight()")}}.
+
{{jsxref("TypedArray.reverse", "Uint8Array.prototype.reverse()")}}
+
Inverte el orden de los elementos de un array, el primero se convierte en el último y el último en el primero. See also {{jsxref("Array.prototype.reverse()")}}.
+
{{jsxref("TypedArray.set", "Uint8Array.prototype.set()")}}
+
Almacena múltiples valores en el array, leyendo los valores de entrada de un array específico.
+
{{jsxref("TypedArray.slice", "Uint8Array.prototype.slice()")}}
+
Extrae una porción de un array y devuelve uno nuevo. Véase también {{jsxref("Array.prototype.slice()")}}.
+
{{jsxref("TypedArray.some", "Uint8Array.prototype.some()")}}
+
Devuelve true si al menos un elemento de este array satisface la función de prueba proporcionada. Véase también {{jsxref("Array.prototype.some()")}}.
+
{{jsxref("TypedArray.sort", "Uint8Array.prototype.sort()")}}
+
Ordena los elementos de un array localmente y devuelve el array. Véase también {{jsxref("Array.prototype.sort()")}}.
+
{{jsxref("TypedArray.subarray", "Uint8Array.prototype.subarray()")}}
+
Retorna un nuevo Uint8Array desde el índice de elementos iniciales y finales proporcionados.
+
{{jsxref("TypedArray.values", "Uint8Array.prototype.values()")}}
+
Retorna un nuevo objeto Array Iterator que contiene los valores para cada índice en el array. Véase también {{jsxref("Array.prototype.values()")}}.
+
{{jsxref("TypedArray.toLocaleString", "Uint8Array.prototype.toLocaleString()")}}
+
Devuelve una cadena localizada que representa el array y sus elementos. Véase también {{jsxref("Array.prototype.toLocaleString()")}}.
+
{{jsxref("TypedArray.toString", "Uint8Array.prototype.toString()")}}
+
Retorna una cadena representando el array sus elementos. Véase también {{jsxref("Array.prototype.toString()")}}.
+
{{jsxref("TypedArray.@@iterator", "Uint8Array.prototype[@@iterator]()")}}
+
Retorna un nuevo objeto Array Iterator que contiene los valores para cada índice en el array.
+
+ +

Ejemplos

+ +
// Desde una longitud
+var uint8 = new Uint8Array(2);
+uint8[0] = 42;
+console.log(uint8[0]); // 42
+console.log(uint8.length); // 2
+console.log(uint8.BYTES_PER_ELEMENT); // 1
+
+// Desde un array
+var arr = new Uint8Array([21,31]);
+console.log(arr[1]); // 31
+
+// Desde otro TypedArray
+var x = new Uint8Array([21, 31]);
+var y = new Uint8Array(x);
+console.log(y[0]); // 21
+
+// Desde un ArrayBuffer
+var buffer = new ArrayBuffer(8);
+var z = new Uint8Array(buffer, 1, 4);
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Sustituida por ECMAScript 6.
{{SpecName('ES6', '#table-49', 'TypedArray constructors')}}{{Spec2('ES6')}}Definición inicial en un ECMA standard. Se especificó que new es requirerido.
{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad del navegador

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico7.0{{ CompatGeckoDesktop(2) }}1011.65.1
new es requerido{{CompatUnknown}}{{ CompatGeckoDesktop(44) }}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico4.0{{CompatVersionUnknown}}{{ CompatGeckoMobile(2) }}1011.64.2
new es requerido{{CompatUnknown}}{{CompatUnknown}}{{ CompatGeckoMobile(44) }}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Notas de compatibilidad

+ +

A partir de ECMAScript 2015 (ES6), los constructors de Uint8Array requiren ser construidos con un operador {{jsxref("Operators/new", "new")}}. Llamar a un contructor de Uint8Array como una función sin new, lanzará un {{jsxref("TypeError")}} de ahora en adelante.

+ +
var dv = Uint8Array([1, 2, 3]);
+// TypeError: calling a builtin Uint8Array constructor
+// without new is forbidden
+ +
var dv = new Uint8Array([1, 2, 3]);
+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/global_objects/undefined/index.html b/files/es/web/javascript/reference/global_objects/undefined/index.html new file mode 100644 index 0000000000..1aa7db29b8 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/undefined/index.html @@ -0,0 +1,183 @@ +--- +title: undefined +slug: Web/JavaScript/Referencia/Objetos_globales/undefined +tags: + - JavaScript +translation_of: Web/JavaScript/Reference/Global_Objects/undefined +--- +
{{jsSidebar("Objects")}}
+ +

Resumen

+ +

La propiedad global undefined representa el valor primitivo {{Glossary("Undefined", "undefined")}}. Es uno de los {{Glossary("Primitive", "valores primitivos")}} de JavaScript.

+ +

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

+ +

Sintaxis

+ +
undefined
+ +

Descripción

+ +

undefined es una propiedad del objeto global, es decir, una variable de alcance global. El valor inicial de undefined es el valor primitivo {{Glossary("Undefined", "undefined")}}.this needs clarification, but that would require explaining primitive values

+ +

En navegadores modernos (JavaScript 1.8.5 / Firefox 4+), undefined es una propiedad no-configurable, no-grabable según la especificación ECMAScript 5. Aún cuando este no sea el caso, evite sobreescribirlo.

+ +

Una variable a la que no se le ha asignado valor, o no se ha declarado en absoluto (no se declara, no existe) son de tipo undefined. Un método o sentencia también devuelve undefined si la variable que se está evaluando no tiene asignado un valor. Una función devuelve undefined si no se ha {{jsxref("Sentencias/return", "devuelto")}} un valor.

+ +
+

Ten en cuenta que si no se ha declarado una variable ni explícita ni implícitamente, no puedes compararla con undefined  ya que obtendrías un ReferenceError pero puedes comparar su tipo con la cadena (String) "undefined". En el ejemplo más abajo se podrá ver cómo conseguir esto usando el operador typeof.

+
+ +
+

Aunque es posible usarlo como un {{Glossary("Identifier", "identificador")}} (nombre de variable) en cualquier otro ámbito que no sea el ámbito global (porque undefined no es una {{jsxref("Reserved_Words", "palabra reservada")}}), hacerlo es una mala idea que provocará que tú código sea difícil de mantener y depurar.

+ +
//NO HAGAS ESTO
+
+// registra "foo string"
+(function(){ var undefined = 'foo'; console.log(undefined, typeof undefined); })()
+
+// registra "foo string"
+(function(undefined){ console.log(undefined, typeof undefined); })('foo');
+
+ +

Ejemplos

+ +

Igualdad estricta y undefined

+ +

Puedes usar undefined y los operadores de igualdad y desigualdad estricta para determinar si una variable tiene un valor asignado. En el siguiente ejemplo la variable x no está inicializada, y la sentencia if se evalúa como verdadera.

+ +
var x;
+if (x === undefined) {
+   // se ejecutan estas instrucciones
+}
+else {
+   // estas instrucciones no se ejecutan
+}
+ +
+

Nota: Aquí se debe usar el operador de igualdad estricta en lugar del operador de igualdad estándar, ya que x == undefined también verifica si x es null, mientras que el de igualdad estricta no. null no es equivalente a undefined. Vea {{jsxref("Operadores/Comparison_Operators", "operadores de comparación")}} para más detalles.

+
+ +

Typeof operador y undefined

+ +

Alternativamente se puede usar {{jsxref("Operadores/typeof","typeof")}}.  Recuerda que este siempre devolverá una cadena de texto con el tipo:

+ +
var x;
+if (typeof x === 'undefined') {
+   // se ejecutan estas instrucciones
+}
+
+ +

Una razón para usar {{jsxref("Operadores/typeof","typeof")}} es que no devuelve un error si la variable no fue declarada.

+ +
// x no fue declarada antes
+if (typeof x === 'undefined') { // devuelve true
+   //se ejecutan estas instrucciones
+}
+
+if (x === undefined) { // lanza un ReferenceError
+
+}
+
+ +

Sin embargo, este tipo de técnica debe evitarse. JavaScript es un lenguaje de ámbito estático, por lo que determinar si una variable se encuentra declarada puede ser definido al ver si está declarada en un contexto de inclusión. La única excepción es el ámbito global, pero el ámbito global está vinculado al objeto global, por lo que comprobar la existencia de una variable en el contexto global puede realizarse comprobando la existencia de una propiedad del objeto global (utilizando el operador {{jsxref("Operators/in", "in")}}, por ejemplo).

+ +

Operador void y undefined

+ +

El operador {{jsxref("Operadores/void", "void")}} es una tercer alternativa.

+ +
var x;
+if (x === void 0) {
+   // se ejecutan estas instrucciones
+}
+
+// y no fue declarada antes
+if (y === void 0) {
+   // lanza un ReferenceError (a diferencia de  `typeof`)
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES1', '#sec-4.3.9', 'undefined')}}{{Spec2('ES1')}}Definición inicial. Implementado en JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.1.1.3', 'undefined')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-undefined', 'undefined')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-undefined', 'undefined')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad en 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/es/web/javascript/reference/global_objects/unescape/index.html b/files/es/web/javascript/reference/global_objects/unescape/index.html new file mode 100644 index 0000000000..48418ef48a --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/unescape/index.html @@ -0,0 +1,123 @@ +--- +title: unescape() +slug: Web/JavaScript/Referencia/Objetos_globales/unescape +translation_of: Web/JavaScript/Reference/Global_Objects/unescape +--- +
{{jsSidebar("Objects")}}
+ +

La función deprecada unescape() calcula un nuevo string  en el cual secuencia de valores hexadecimales son reemplazados con el caracter que representa. La secuencia de calculo deber{ia ser introducida por una función como {{jsxref("escape")}}. Por que unescape está deprecada, usar {{jsxref("decodeURI")}} or {{jsxref("decodeURIComponent")}}.

+ +
Note: Do not use unescape to decode URIs, use decodeURI instead.
+ +

Syntax

+ +
unescape(str)
+ +

Parameters

+ +
+
str
+
A string to be decoded.
+
+ +

Description

+ +

The unescape function is a property of the global object.

+ +

Examples

+ +
unescape("abc123");     // "abc123"
+unescape("%E4%F6%FC");  // "äöü"
+unescape("%u0107");     // "ć"
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1', '#sec-15.1.2.5', 'unescape')}}{{Spec2('ES1')}}Initial definition.
{{SpecName('ES5.1', '#sec-B.2.2', 'unescape')}}{{Spec2('ES5.1')}}Defined in the (informative) Compatibility Annex B
{{SpecName('ES6', '#sec-unescape-string', 'unescape')}}{{Spec2('ES6')}}Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers
{{SpecName('ESDraft', '#sec-unescape-string', 'unescape')}}{{Spec2('ESDraft')}}Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers
+ +

Browser compatibility

+ +

{{CompatibilityTable}}

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

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/urierror/index.html b/files/es/web/javascript/reference/global_objects/urierror/index.html new file mode 100644 index 0000000000..3ba028a2ab --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/urierror/index.html @@ -0,0 +1,136 @@ +--- +title: URIError +slug: Web/JavaScript/Referencia/Objetos_globales/URIError +tags: + - Error + - JavaScript + - Reference + - URIError +translation_of: Web/JavaScript/Reference/Global_Objects/URIError +--- +
{{JSRef}}
+ +

El objeto URIError  representa un error cuando una función de uso URI global se usó de manera incorrecta.

+ +

Syntax

+ +
new URIError([message[, fileName[, lineNumber]]])
+ +

Parámetros

+ +
+
message
+
Opcional. Descripción del error legible para una persona.
+
fileName {{non-standard_inline}}
+
Opcional. El nombre del archivo que contien el código causante de la excepción.
+
lineNumber {{non-standard_inline}}
+
Opcional. El número de línea del código que ha causado la excepción.
+
+ +

Description

+ +

Se envía URIError  cuando las fuciones de uso del URI global pasan pro un URI con formato incorrecto.

+ +

Properties

+ +
+
{{jsxref("URIError.prototype")}}
+
Permite agregar propiedades a un objeto URIError
+
+ +

Methods

+ +

El URIError global no contiene métodos propios, sin embargo, sí hereda algunos métodos a través de la cadena de prototipos.

+ +

URIError instancias

+ +

Propiedades

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

Métodos

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

Ejemplos

+ +

Recoger un URIError

+ +
try {
+  decodeURIComponent('%');
+} catch (e) {
+  console.log(e instanceof URIError); // true
+  console.log(e.message);             // "malformed URI sequence"
+  console.log(e.name);                // "URIError"
+  console.log(e.fileName);            // "Scratchpad/1"
+  console.log(e.lineNumber);          // 2
+  console.log(e.columnNumber);        // 2
+  console.log(e.stack);               // "@Scratchpad/2:2:3\n"
+}
+
+ +

Creando un URIError

+ +
try {
+  throw new URIError('Hello', 'someFile.js', 10);
+} catch (e) {
+  console.log(e instanceof URIError); // true
+  console.log(e.message);             // "Hello"
+  console.log(e.name);                // "URIError"
+  console.log(e.fileName);            // "someFile.js"
+  console.log(e.lineNumber);          // 10
+  console.log(e.columnNumber);        // 0
+  console.log(e.stack);               // "@Scratchpad/2:2:9\n"
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES3', '#sec-15.11.6.6', 'URIError')}}{{Spec2('ES3')}}Initial definition
{{SpecName('ES5.1', '#sec-15.11.6.6', 'URIError')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-urierror', 'URIError')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-urierror', 'URIError')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ +
+ + +

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

+
+ +

See also

+ + diff --git a/files/es/web/javascript/reference/global_objects/weakmap/clear/index.html b/files/es/web/javascript/reference/global_objects/weakmap/clear/index.html new file mode 100644 index 0000000000..b5c66c7714 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/weakmap/clear/index.html @@ -0,0 +1,52 @@ +--- +title: WeakMap.prototype.clear() +slug: Web/JavaScript/Referencia/Objetos_globales/WeakMap/clear +tags: + - JavaScript + - Obsolete + - Protocols + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/clear +--- +
{{JSRef}} {{obsolete_header}}
+ +

El método clear() es utilizado para suprimir todos los elementos del objeto WeakMap, sin embargo, ya no es parte de ECMAScript, ni de sus implementaciones.

+ +

Sintaxis

+ +
wm.clear();
+ +

Ejemplos

+ +

Utilización del método clear 

+ +
var wm = new WeakMap();
+var obj = {};
+
+wm.set(obj, 'foo');
+wm.set(window, 'bar');
+
+wm.has(obj); // true
+wm.has(window); // true
+
+wm.clear();
+
+wm.has(obj)  // false
+wm.has(window)  // false
+
+ +

Especificaciones

+ +

No es parte de ninguna especificación actual o borrador. Este método fue parte de ECMAScript 6 como un bosquejo hasta la revisión 28 (versión de Octubre 14, 2014), sin embargo ha sido eliminado en versiones posteriores. No es parte de la última versión estándar.

+ +

Compatibilidad con navegadores

+ + + +

{{Compat("javascript.builtins.WeakMap.clear")}}

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/weakmap/delete/index.html b/files/es/web/javascript/reference/global_objects/weakmap/delete/index.html new file mode 100644 index 0000000000..7f4933eb0b --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/weakmap/delete/index.html @@ -0,0 +1,124 @@ +--- +title: WeakMap.prototype.delete() +slug: Web/JavaScript/Referencia/Objetos_globales/WeakMap/delete +tags: + - ECMAScript6 + - JavaScript + - Prototype + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/delete +--- +
{{JSRef}}
+ +

El método delete() elimina un elemento específico del objeto WeakMap .

+ +

Sintaxis

+ +
wm.delete(key);
+ +

Parámetros

+ +
+
identificador (key)
+
Requerido. El identificador del elemento a eliminar en el objeto WeakMap.
+
+ +

Valor de retorno

+ +

true si el elemento del objeto WeakMap ha sido eliminado correctamente. Y false si la llave a eliminar no fue encontrada en el objeto WeakMap o bien, si la llave no es un objeto.

+ +

Ejemplos

+ +

Utilización del método delete 

+ +
var wm = new WeakMap();
+wm.set(window, "foo");
+
+wm.delete(window); // Devuelve true. Eliminado correctamente.
+
+wm.has(window);    // Devuelve false. El elemento window ya no es parte de WeakMap.
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-weakmap.prototype.delete', 'WeakMap.prototype.delete')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-weakmap.prototype.delete', 'WeakMap.prototype.delete')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support36{{CompatGeckoDesktop("6.0")}}11237.1
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatGeckoMobile("6.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Notas especificas de Firefox

+ + + +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/weakmap/get/index.html b/files/es/web/javascript/reference/global_objects/weakmap/get/index.html new file mode 100644 index 0000000000..e60e34f8f1 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/weakmap/get/index.html @@ -0,0 +1,80 @@ +--- +title: WeakMap.prototype.get() +slug: Web/JavaScript/Referencia/Objetos_globales/WeakMap/get +tags: + - ECMAScript6 + - JavaScript + - Method + - Prototype + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/get +--- +
{{JSRef}}
+ +

El método get() devuelve un elemento específico del objeto WeakMap.

+ +
{{EmbedInteractiveExample("pages/js/weakmap-prototype-get.html")}}
+ + + +

Sintaxis

+ +
wm.get(key);
+ +

Parámetros

+ +
+
key
+
Requerido. Es la llave del elemento a retornar desde el objeto WeakMap.
+
+ +

Valores devueltos

+ +

El elemento asociado con la llave específica en el objeto WeakMap. Si la llave no está presente, devolverá {{jsxref("undefined")}}.

+ +

Ejemplos

+ +

Usando el método get 

+ +
var wm = new WeakMap();
+wm.set(window, 'foo');
+
+wm.get(window); // Devuelve "foo".
+wm.get('baz');  // Devuelve undefined.
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
{{SpecName('ES2015', '#sec-weakmap.prototype.get', 'WeakMap.prototype.get')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-weakmap.prototype.get', 'WeakMap.prototype.get')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ + + +

{{Compat("javascript.builtins.WeakMap.get")}}

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/weakmap/has/index.html b/files/es/web/javascript/reference/global_objects/weakmap/has/index.html new file mode 100644 index 0000000000..dd978ede16 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/weakmap/has/index.html @@ -0,0 +1,83 @@ +--- +title: WeakMap.prototype.has() +slug: Web/JavaScript/Referencia/Objetos_globales/WeakMap/has +tags: + - ECMAScript6 + - JavaScript + - Method + - Protocols + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/has +--- +
{{JSRef}}
+ +

El método has() devuelve un boleano indicando ya sea, si el elemento con la llave específica existe o no en el objeto WeakMap.

+ +
{{EmbedInteractiveExample("pages/js/weakmap-prototype-has.html")}}
+ + + +

Sintaxis

+ +
wm.has(key);
+ +

Parámetros

+ +
+
identificador (key)
+
Requerido. La llave del elemento a comprobar en el objeto WeakMap.
+
+ +

Valor devuelto

+ +
+
Boolean
+
Devuelve true si el elemento con la llave específica existe en el objeto WeakMap; de no encontrarse, devolverá false.
+
+ +

Ejemplos

+ +

Utilización del método has 

+ +
var wm = new WeakMap();
+wm.set(window, 'foo');
+
+wm.has(window); // Devuelve true
+wm.has('baz');  // Devuelve false
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
{{SpecName('ES2015', '#sec-weakmap.prototype.has', 'WeakMap.prototype.has')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-weakmap.prototype.has', 'WeakMap.prototype.has')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ + + +

{{Compat("javascript.builtins.WeakMap.has")}}

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/weakmap/index.html b/files/es/web/javascript/reference/global_objects/weakmap/index.html new file mode 100644 index 0000000000..0fed17e5ca --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/weakmap/index.html @@ -0,0 +1,278 @@ +--- +title: WeakMap +slug: Web/JavaScript/Referencia/Objetos_globales/WeakMap +tags: + - ECMAScript 2015 + - JavaScript + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap +--- +
{{JSRef}}
+ +

El objeto WeakMap es una colección de pares clave/valor en la que las claves son objetos y los valores son valores arbitrarios.

+ +

Sintaxis

+ +
new WeakMap([iterable])
+
+ +

Parámetros

+ +
+
iterable
+
Iterable es un Array u otro objeto iterable cuyos elementos son pares clave-valor (Arrays de dos elementos). Cada par clave-valor será añadido al nuevo WeakMap. null es tratado como undefined.
+
+ +

Descripción

+ +

Las claves de los WeakMaps solamente pueden ser del tipo Object. Los {{Glossary("Primitive", "Primitive data types")}} como claves no están permitidos (ej. un {{jsxref("Symbol")}} no pueden ser una clave de WeakMap).

+ +

¿Por qué WeakMap?

+ +

El programador de JavaScript experimentado se habrá dado cuenta que esta API podría ser implementada en JavaScript con dos arrays (uno para las claves, otro para los valores) compartidos por los cuatro métodos de la API. Dicha implementación habría tenido dos inconvenientes principales: El primero es una búsqueda O(n) (siendo n el número de claves en el mapa). El segundo es un problema de pérdida de memoria. Con mapas escritos manualmente, el array de las claves mantendría referencias a la objetos clave, impidiéndoles ser recolectados. En los WeakMap nativos, las referencias a los objetos clave son mantenidas "débilmente", lo que quiere decir que no impiden la recolección de basura en caso de que no haya otras referencias al objeto.

+ +

Dado que las referencias son débiles, las claves de WeakMap no son enumerables (ej: no existe un método que te devuelva la lista de las claves). Si existiera, la lista dependería de la recolección de basura, introduciendo indeterminismo. Si quieres una lista de las claves, se debe usar un  {{jsxref("Map")}} o mantenerla tu mismo.

+ +

Propiedades

+ +
+
WeakMap.length
+
El valor de la propiedad length es 0.
+
{{jsxref("WeakMap.prototype")}}
+
Representa el prototipo para el nuevo constructor WeakMap. Permite añadir propiedades a todos los objetos WeakMap.
+
+ +

Instancias de WeakMap

+ +

Todas las instancias de WeakMap heredan de {{jsxref("WeakMap.prototype")}}.

+ +

Propiedades

+ +

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

+ +

Métodos

+ +

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

+ +

Ejemplos

+ +

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); // un valor puede ser cualquier cosa, incluidos objetos o funciones
+wm2.set(o3, undefined);
+wm2.set(wm1, wm2); // claves y valores pueden ser objetos cualesquiera. !Incluso WeakMaps!
+
+wm1.get(o2); // "azerty"
+wm2.get(o2); // undefined, porque no hay valor para o2 en wm2
+wm2.get(o3); // undefined, porque es es el valor del conjunto
+wm1.has(o2); // true
+wm2.has(o2); // false
+wm2.has(o3); // true (incluso si el valor es 'undefined')
+
+wm3.set(o1, 37);
+wm3.get(o1); // 37
+
+wm1.has(o1);   // true
+wm1.delete(o1);
+wm1.has(o1);   // false
+
+
+ +

Implementando una clase tipo-WeakMap con un método .clear()

+ +

Con propósito expositivo, el siguiente ejemplo usa el nuevo costruct class  de ECMAScript 2015, que actualmente no ha sido implementado de forma amplia.

+ +
class ClearableWeakMap {
+  constructor(init) {
+    this._wm = new WeakMap(init)
+  }
+  clear() {
+    this._wm = new WeakMap()
+  }
+  delete(k) {
+    return this._wm.delete(k)
+  }
+  get(k) {
+    return this._wm.get(k)
+  }
+  has(k) {
+    return this._wm.has(k)
+  }
+  set(k, v) {
+    this._wm.set(k, v)
+    return this
+  }
+}
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-weakmap-objects', 'WeakMap')}}{{Spec2('ES2015')}}Definición inicial.
+ +

Compatibilidad de navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (SpiderMonkey)Internet ExplorerOperaSafari
Soporte básico36{{CompatGeckoDesktop("6.0")}}11{{ CompatOpera(23) }}7.1
new WeakMap(iterable)38{{CompatGeckoDesktop("36")}}{{CompatNo}}{{ CompatOpera(25) }}{{CompatNo}}
clear()36{{CompatGeckoDesktop("20.0")}}11{{ CompatOpera(23) }}7.1
Constructor argument: new WeakMap(null){{CompatVersionUnknown}}{{CompatGeckoDesktop("37")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Monkey-patched set() in Constructor{{CompatVersionUnknown}}{{CompatGeckoDesktop("37")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
WeakMap() without new throws{{CompatVersionUnknown}}{{CompatGeckoDesktop("42")}}11{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidFirefox Mobile (SpiderMonkey)IE MobileOpera MobileSafari Mobile
Soporte básico35{{CompatGeckoMobile("6.0")}}{{CompatNo}}{{CompatNo}}iOS 8
new WeakMap(iterable)38{{CompatGeckoMobile("36")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
clear()35{{CompatGeckoMobile("20.0")}}{{CompatNo}}{{CompatNo}}iOS 8
Constructor argument: new WeakMap(null){{CompatUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("37")}}{{CompatUnknown}}{{CompatUnknown}}
Monkey-patched set() in Constructor{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("37")}}{{CompatUnknown}}{{CompatUnknown}}
WeakMap() without new throws{{CompatUnknown}}{{CompatGeckoMobile("42")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/global_objects/weakmap/set/index.html b/files/es/web/javascript/reference/global_objects/weakmap/set/index.html new file mode 100644 index 0000000000..0dd654e6ef --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/weakmap/set/index.html @@ -0,0 +1,91 @@ +--- +title: WeakMap.prototype.set() +slug: Web/JavaScript/Referencia/Objetos_globales/WeakMap/set +tags: + - ECMAScript6 + - JavaScript + - Method + - Protocols + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/set +--- +
{{JSRef}}
+ +

El método set() añade un nuevo elemento con su key y value específicos al objeto WeakMap.

+ +
{{EmbedInteractiveExample("pages/js/weakmap-prototype-set.html")}}
+ + + +

Sintaxis

+ +
wm.set(key, value);
+ +

Parámetros

+ +
+
indentificador (key)
+
Requerido. El identificador (objeto) del elemento a añadir al objeto WeakMap.
+
valor (value)
+
Requerido. El valor del elemento a añadir al objeto WeakMap.
+
+ +

Valor devuelto

+ +

El objeto WeakMap.

+ +

Ejemplos

+ +

Utilización del método set 

+ +
var wm = new WeakMap();
+var obj = {};
+
+// Agregando nuevos elementos a WeakMap
+wm.set(obj, 'foo').set(window, 'bar'); // encadenamiento
+// Actualiza el un elemento en el objeto WeakMap
+wm.set(obj, 'baz');
+
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
{{SpecName('ES2015', '#sec-weakmap.prototype.set', 'WeakMap.prototype.set')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-weakmap.prototype.set', 'WeakMap.prototype.set')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ + + +

{{Compat("javascript.builtins.WeakMap.set")}}

+ +

Notas específicas de Firefox

+ + + +

Vea también

+ + diff --git a/files/es/web/javascript/reference/global_objects/weakset/index.html b/files/es/web/javascript/reference/global_objects/weakset/index.html new file mode 100644 index 0000000000..ab2af60090 --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/weakset/index.html @@ -0,0 +1,227 @@ +--- +title: WeakSet +slug: Web/JavaScript/Referencia/Objetos_globales/WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet +--- +
{{JSRef}}
+ +

El objeto WeakSet  te deja almacenar y mantener objectos debilmente en una colección.

+ +

Sintaxis

+ +
 new WeakSet([iterable]);
+ +

Parametros

+ +
+
iterable
+
Si un  objeto interable es pasado, todos sus elementos se agregarán al nuevo WeakSet. null es tratado como undefined.
+
+ +

Descripción

+ +

 

+ +

Los objetos WeakSet son colecciones de objetos. Un objecto en WeakSet solo puede ser agregado una vez; Esto quiere decir que es unico en la coleccion WeakSet.

+ +

Las principales diferencias con el objeto {{jsxref("Set")}} son:

+ + + +

Properties

+ +
+
WeakSet.length
+
El valor de la propiedad length  es 0.
+
{{jsxref("WeakSet.prototype")}}
+
Representa el prototipo para el constructor Set . Permite la adición de propiedades a todos los objetos WeakSet
+
+ +

WeakSet instances

+ +

Todas las instancias a WeakSet son heredadas de {{jsxref("WeakSet.prototype")}}.

+ +

Propiedades

+ +

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

+ +

Métodos

+ +

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

+ +

Ejemplos

+ +

Usando el objetoWeakSet 

+ +
var ws = new WeakSet();
+var obj = {};
+var foo = {};
+
+ws.add(window);
+ws.add(obj);
+
+ws.has(window); // true
+ws.has(foo);    // false, foo no fue agregado al conjunto
+
+ws.delete(window); // elimina window del conjunto
+ws.has(window);    // false, window fue eliminado
+
+ +

Especificaciónes

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-weakset-objects', 'WeakSet')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-weakset-objects', 'WeakSet')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad de navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(36)}}12{{ CompatGeckoDesktop(34) }}{{CompatNo}}{{ CompatOpera(23) }}{{CompatSafari(9)}}
new WeakSet(iterable)3812{{ CompatGeckoDesktop(34) }}{{CompatNo}}25{{CompatSafari(9)}}
Constructor argument: new WeakSet(null){{CompatVersionUnknown}}12{{CompatGeckoDesktop("37")}}{{CompatNo}}{{CompatUnknown}}{{CompatSafari(9)}}
Monkey-patched add() in Constructor{{CompatVersionUnknown}}12{{CompatGeckoDesktop("37")}}{{CompatNo}}{{CompatUnknown}}{{CompatSafari(9)}}
Obsolete clear() method removed{{CompatChrome(43)}}12{{CompatGeckoDesktop(46)}}{{CompatNo}}{{CompatOpera(30)}}{{CompatSafari(9)}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatVersionUnknown}}{{ CompatGeckoMobile(34) }}{{CompatNo}}{{CompatNo}}9
new WeakMap(iterable){{CompatNo}}{{CompatVersionUnknown}}{{ CompatGeckoMobile(34) }}{{CompatNo}}{{CompatNo}}9
Constructor argument: new WeakSet(null){{CompatUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatUnknown}}9
Monkey-patched add() in Constructor{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatUnknown}}9
Obsolete clear() method removed{{CompatNo}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatNo}}{{CompatUnknown}}9
+
+ +

Tambien ver

+ + diff --git a/files/es/web/javascript/reference/global_objects/webassembly/index.html b/files/es/web/javascript/reference/global_objects/webassembly/index.html new file mode 100644 index 0000000000..80542d763d --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/webassembly/index.html @@ -0,0 +1,120 @@ +--- +title: WebAssembly +slug: Web/JavaScript/Referencia/Objetos_globales/WebAssembly +tags: + - API + - Experimental + - JavaScript + - Objeto + - Referencia + - WebAssembly +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly +--- +
{{JSRef}}
+ +

El objeto WebAssembly de JavaScript actua como un namespace para todas las funcionalidades realcionados con WebAssembly.

+ +

A diferencia de otros objetos globales, WebAssembly no tiene un constructor (no tiene una función para crear el objeto). Puedes ser comparado con el objeto {{jsxref("Math")}}, que también es un namespace, para funciones y constantes matemáticas, o también con {{jsxref("Intl")}} que es un namespace para internacionalización y otras funciones de idioma.

+ +

Descripción

+ +

Los usos primarios para el objeto WebAssembly son:

+ + + +

Métodos

+ +
+
{{jsxref("WebAssembly.instantiate()")}}
+
El API primaria para compilar e instanciar código WebAssembly, ambos regresan un Module y el primero Instance.
+
{{jsxref("WebAssembly.instantiateStreaming()")}}
+
Compila e instancia un módulo WebAssembly directamente desde un flujo de origen subyacente, ambos regresan un Module y el primero Instance.
+
{{jsxref("WebAssembly.compile()")}}
+
Compila un {{jsxref("WebAssembly.Module")}} desde el código binario de un WebAssembly, manteniendo la creación de la instancia como un objeto separado.
+
{{jsxref("WebAssembly.compileStreaming()")}}
+
compila un {{jsxref("WebAssembly.Module")}} directamente desde un flujo de origen subyacente, manteniendo la creación de la instancia como un objeto sepraado.
+
{{jsxref("WebAssembly.validate()")}}
+
Valida un arreglo con tipo de código binario de un WebAssembly, regresando si los bytes son código válido WebAssembly (true) o de lo contrario (false).
+
+ +

Constructores

+ +
+
{{jsxref("WebAssembly.Module()")}}
+
Crea un nuevo objeto WebAssembly Module.
+
{{jsxref("WebAssembly.Instance()")}}
+
Crear un nuevo objeto WebAssembly Instance.
+
{{jsxref("WebAssembly.Memory()")}}
+
Crear un nuevo objeto WebAssembly Memory.
+
{{jsxref("WebAssembly.Table()")}}
+
Crear un nuevo objeto WebAssembly Table.
+
{{jsxref("WebAssembly.CompileError()")}}
+
Crear un nuevo objeto WebAssembly CompileError.
+
{{jsxref("WebAssembly.LinkError()")}}
+
Crear un nuevo objeto WebAssembly LinkError.
+
{{jsxref("WebAssembly.RuntimeError()")}}
+
Crear un nuevo objeto WebAssembly RuntimeError.
+
+ +

Ejemplos

+ +

Después de obtener algún bytecode de WebAssembly usando la sentencia fetch, nosotros compilamos e instanciamos el módulo usando la función {{jsxref("WebAssembly.instantiate()")}} , importando una función de JavaScript en el WebAssembly Module en el proceso. Esta premisa resuelve a un objeto (result) que contenga un objeto Module compilado y un objeto Instance . Entonces tenemos una llamada a Exported WebAssembly function que es exportada por Instance.

+ +
var importObject = {
+  imports: {
+    imported_func: function(arg) {
+      console.log(arg);
+    }
+  }
+};
+
+fetch('simple.wasm').then(response =>
+  response.arrayBuffer()
+).then(bytes =>
+  WebAssembly.instantiate(bytes, importObject)
+).then(result =>
+  result.instance.exports.exported_func()
+);
+ +
+

Nota: Ver index.html en GitHub (view it live also) para un ejemplo que hace uso de la función fetchAndInstantiate().

+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('WebAssembly JS', '#the-webassembly-object', 'WebAssembly')}}{{Spec2('WebAssembly JS')}}Definición inicial del borrador.
+ +

Compatibilidad de Navegadores

+ +
+ + +

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

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/index.html b/files/es/web/javascript/reference/index.html new file mode 100644 index 0000000000..29d75a4161 --- /dev/null +++ b/files/es/web/javascript/reference/index.html @@ -0,0 +1,31 @@ +--- +title: Referencia de JavaScript +slug: Web/JavaScript/Referencia +tags: + - JavaScript +translation_of: Web/JavaScript/Reference +--- +

{{JsSidebar}}

+ +

Objetos globales

+ +
{{page('/es/docs/Web/JavaScript/Referencia/Objetos_globales', 'Objetos_est.C3.A1ndar_(por_categor.C3.ADa)')}}
+ +

Sentencias

+ +

{{page('/es/docs/Web/JavaScript/Referencia/Sentencias', 'Statements_and_declarations_by_category')}}

+ +

Expresiónes y Operadores

+ +

{{page('/es/docs/Web/JavaScript/Referencia/Operadores', 'Expressions_and_operators_by_category')}}

+ +

Gramática léxica

+ + + +

Apéndice - Características Desaprobadas

+ +

Original Document At: http://devedge-temp.mozilla.org/libr...1.5/reference/

diff --git a/files/es/web/javascript/reference/iteration_protocols/index.html b/files/es/web/javascript/reference/iteration_protocols/index.html new file mode 100644 index 0000000000..7d8d31f2cd --- /dev/null +++ b/files/es/web/javascript/reference/iteration_protocols/index.html @@ -0,0 +1,320 @@ +--- +title: Protocolos de Iteración +slug: Web/JavaScript/Referencia/Iteration_protocols +tags: + - ECMAScript6 + - Experimental + - Intermedio + - Iterable + - Iterador + - JavaScript +translation_of: Web/JavaScript/Reference/Iteration_protocols +--- +
{{jsSidebar("More")}}
+ +
Las nuevas características de ECMAScript 6 no solo están asociadas a cambios y adiciones de sintaxis o a nuevos objetos nativos, sino también a protocolos. Dichos protocolos puede ser implementados por cualquier objeto en relación a algunas convenciones.
+ +
 
+ +
Existen dos protocolos: El protocolo iterable y el protocolo iterador.
+ +
 
+ +

El protocolo iterable

+ +

El protocolo iterable le permite a los objetos en JavaScript definir o personalizar su comportamiento de iteración, como por ejemplo qué valores son iterados dentro de una sentencia {{jsxref("Statements/for...of", "for..of")}}. Algunos objetos nativos, como {{jsxref("Array")}} o {{jsxref("Map")}}, tienen un comportamiento de iteración por defecto, mientras otros objetos (como por ejemplo {{jsxref("Object")}}) no.

+ +

Para ser iterable, un objeto debe implementar el método @@iterator, lo cual significa que el objeto (o uno de los objetos dentro de su cadena de prototipos) debe tener una propiedad con un identificador {{jsxref("Symbol")}}.iterator:

+ + + + + + + + + + + + + + +
PropiedadValor
[Symbol.iterator]Una función sin argumentos que retorna un objeto, de acuerdo al protocolo iterador.
+ +

Siempre que un objeto necesite ser iterado (como al comienzo de un for..of loop), su método @@iterator es llamado sin argumentos, y el iterador retornado es usado para obtener los valores a ser iterados.

+ +

El protocolo iterador

+ +

El protocolo iterador define una forma estándar que permite producir una secuencia de valores (sean estos finitos o infinitos).

+ +

Un objeto es un iterador cuando este implementa un método next() con la siguiente semántica:

+ + + + + + + + + + + + +
PropiedadValor
next +

Una función sin argumentos que retorna un objeto con dos propiedades:

+ +
    +
  • done (boleano) + +
      +
    • Su valor es true si el iterador está más allá del final de la secuencia iterada. En este caso value opcionalmente especifica el valor retornado por el iterador. Los valores retornados son explicados aquí.
    • +
    • Su valor es false si el iterador pudo producir el siguiente valor en la secuencia. Esto es equivalente a no especificar la propiedad done en su totalidad.
    • +
    +
  • +
  • value - cualquier valor de JavaScript retornado por el iterador. Puede ser omitido cuando el valor de done es true.
  • +
+
+ +

Algunos iteradores son a su vez iterables:

+ +
var someArray = [1, 5, 7];
+var someArrayEntries = someArray.entries();
+
+someArrayEntries.toString();           // "[object Array Iterator]"
+someArrayEntries === someArrayEntries[Symbol.iterator]();    // true
+
+ +

Ejemplos de protocolos de iteración

+ +

Un {{jsxref("String")}} es un ejemplo de un objeto iterable nativo:

+ +
var someString = "hi";
+typeof someString[Symbol.iterator];          // "function"
+
+ +

Para objetos String su iterador por defecto retorna cada uno de sus caracteres, uno a la vez:

+ +
var iterator = someString[Symbol.iterator]();
+iterator + "";                               // "[object String Iterator]"
+
+iterator.next();                             // { value: "h", done: false }
+iterator.next();                             // { value: "i", done: false }
+iterator.next();                             // { value: undefined, done: true }
+ +

En algunas estructuras nativas del lenguaje como en el caso del operador de propagación spread operator, el mismo protocolo de iteración está presente en su parte interna:

+ +
[...someString]                              // ["h", "i"]
+ +

Podemos redefinir el comportamiento de iteración creando nuestro propio  @@iterator:

+ +
// es necesario el uso de un objeto creado a partir de la función constructora String,
+// ya que al usar un string primitivo el auto-boxing generaría una referencia temporal
+// a un iterador que luego es descartado en el unbox
+
+var someString = new String("hi");
+
+someString[Symbol.iterator] = function() {
+  return { // este es el objeto iterador que retorna un único elemento, la cadena string "bye"
+    next: function() {
+      if (this._first) {
+        this._first = false;
+        return { value: "bye", done: false };
+      } else {
+        return { done: true };
+      }
+    },
+    _first: true
+  };
+};
+
+ +

Nótese que al redefinir un @@iterator se puede afectar el comportamiento  de construcciones nativas que usan el protocolo de iteración:

+ +
[...someString];                              // ["bye"]
+someString + "";                              // "hi"
+
+ +

Ejemplos de iterables

+ +

Iterables nativos

+ +

{{jsxref("String")}}, {{jsxref("Array")}}, {{jsxref("TypedArray")}}, {{jsxref("Map")}} y {{jsxref("Set")}} son objetos iterables nativos, ya que en su objeto prototipo existe un método @@iterator.

+ +

Iterables personalizados

+ +

Podemos crear nuestros propios iterables de la siguiente manera:

+ +
var myIterable = {};
+myIterable[Symbol.iterator] = function* () {
+    yield 1;
+    yield 2;
+    yield 3;
+};
+[...myIterable]; // [1, 2, 3]
+
+ +

APIs nativas que aceptan iterables

+ +

Existen varios APIs que aceptan iterables, como en el caso de: {{jsxref("Map", "Map([iterable])")}}, {{jsxref("WeakMap", "WeakMap([iterable])")}}, {{jsxref("Set", "Set([iterable])")}} y {{jsxref("WeakSet", "WeakSet([iterable])")}}:

+ +
var myObj = {};
+new Map([[1,"a"],[2,"b"],[3,"c"]]).get(2);               // "b"
+new WeakMap([[{},"a"],[myObj,"b"],[{},"c"]]).get(myObj); // "b"
+new Set([1, 2, 3]).has(3);                               // true
+new Set("123").has("2");                                 // true
+new WeakSet(function*() {
+    yield {};
+    yield myObj;
+    yield {};
+}()).has(myObj);                                         // true
+
+ +

De igual manera {{jsxref("Promise.all", "Promise.all(iterable)")}}, {{jsxref("Promise.race", "Promise.race(iterable)")}}, y {{jsxref("Array.from", "Array.from()")}}.

+ +

Sintaxis que espera un iterable

+ +

Algunas declaraciones y expresiones esperan iterables, por ejemplo el bucle for-of, el operador de propagación spread operator,  la expresión Yield*, y la asignación desestructurada destructuring assignment.

+ +
for(let value of ["a", "b", "c"]){
+    console.log(value);
+}
+// "a"
+// "b"
+// "c"
+
+[..."abc"]; // ["a", "b", "c"]
+
+function* gen(){
+  yield* ["a", "b", "c"];
+}
+
+gen().next(); // { value:"a", done:false }
+
+[a, b, c] = new Set(["a", "b", "c"]);
+a // "a"
+
+
+ +

Iterables mal definidos

+ +

Un método @@iterator iterable que no retorne un objeto iterador no está correctamente definido, por lo tanto al ejecutarlo de esta manera podría resultar en excepciones en tiempo de ejecución y otros errores:

+ +
var nonWellFormedIterable = {}
+nonWellFormedIterable[Symbol.iterator] = () => 1
+[...nonWellFormedIterable] // TypeError: [] is not a function
+
+ +

Ejemplos de iteradores

+ +

Iterador simple

+ +
function makeIterator(array){
+    var nextIndex = 0;
+
+    return {
+       next: function(){
+           return nextIndex < array.length ?
+               {value: array[nextIndex++], done: false} :
+               {done: true};
+       }
+    };
+}
+
+var it = makeIterator(['yo', 'ya']);
+
+console.log(it.next().value); // 'yo'
+console.log(it.next().value); // 'ya'
+console.log(it.next().done);  // true
+
+ +

Iterador infinito

+ +
function idMaker(){
+    var index = 0;
+
+    return {
+       next: function(){
+           return {value: index++, done: false};
+       }
+    };
+}
+
+var it = idMaker();
+
+console.log(it.next().value); // '0'
+console.log(it.next().value); // '1'
+console.log(it.next().value); // '2'
+// ...
+
+ +

Con un generador

+ +
function* makeSimpleGenerator(array){
+    var nextIndex = 0;
+
+    while(nextIndex < array.length){
+        yield array[nextIndex++];
+    }
+}
+
+var gen = makeSimpleGenerator(['yo', 'ya']);
+
+console.log(gen.next().value); // 'yo'
+console.log(gen.next().value); // 'ya'
+console.log(gen.next().done);  // true
+
+
+
+function* idMaker(){
+    var index = 0;
+    while(true)
+        yield index++;
+}
+
+var gen = idMaker();
+
+console.log(gen.next().value); // '0'
+console.log(gen.next().value); // '1'
+console.log(gen.next().value); // '2'
+// ...
+
+ +

¿Un objeto generador es un iterador o un iterable?

+ +

Un objeto iterador es tanto un iterador como un iterable:

+ +
var aGeneratorObject = function*(){
+    yield 1;
+    yield 2;
+    yield 3;
+}();
+typeof aGeneratorObject.next;
+// "function", ya que tiene un método next, por lo tanto es un iterador
+typeof aGeneratorObject[Symbol.iterator];
+// "function", ya que tiene un método @@iterator, por lo tanto es un iterable
+aGeneratorObject[Symbol.iterator]() === aGeneratorObject;
+// true, ya que su método @@iterator retorna a sí mismo (un iterador), por lo tanto es un iterable bien formado
+[...aGeneratorObject];
+// [1, 2, 3]
+
+ +

Especificaciones

+ + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-iteration', 'Iteration')}}{{Spec2('ES6')}}Definición inicial.
+ +

Temas relacionados

+ +

Para información adicional acerca de generadores generators en ES6, puede visitar la  página específica sobre este tema.

diff --git a/files/es/web/javascript/reference/lexical_grammar/index.html b/files/es/web/javascript/reference/lexical_grammar/index.html new file mode 100644 index 0000000000..fd6a12d8c5 --- /dev/null +++ b/files/es/web/javascript/reference/lexical_grammar/index.html @@ -0,0 +1,661 @@ +--- +title: Gramática léxica +slug: Web/JavaScript/Referencia/Gramatica_lexica +tags: + - Gramática léxica + - Guía + - JaveScript + - Literal + - Palabra clave +translation_of: Web/JavaScript/Reference/Lexical_grammar +--- +
{{JsSidebar("Más")}}
+ +

Esta página describe la gramática léxica de JavaScript. El texto fuente de los scripts de ECMAScript se escanea de izquierda a derecha y se convierte en una secuencia de elementos de entrada que son segmentos, caracteres de control, terminadores de línea, comentarios o {{Glossary("Espacio en blanco")}}. ECMAScript también define ciertas palabras clave y literales y tiene reglas para la inserción automática del punto y coma en las declaraciones finales.

+ +

Caracteres de control

+ +

Los caracteres de control no tienen representación visual, pero se utilizan para controlar la interpretación del texto.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Caracteres de control de formato Unicode
Punto de códigoNombreAbreviaturaDescripción
U+200CSeparador de ancho cero<ZWNJ>Colocado entre caracteres para evitar que se conecten a ligaduras en ciertos idiomas (Wikipedia).
U+200DConector de ancho cero<ZWJ>Colocado entre caracteres que normalmente no estarían conectados para hacer que los caracteres se rendericen usando su forma conectada en ciertos idiomas (Wikipedia).
U+FEFFMarca de orden de bytes<BOM>Se usa al comienzo del script para marcarlo como Unicode y el orden de bytes del texto (Wikipedia).
+ +

Espacio en blanco

+ +

Los caracteres de {{Glossary("Espacio_en_blanco")}} mejoran la legibilidad del texto fuente y separan los fragmentos entre sí. Estos caracteres suelen ser innecesarios para la funcionalidad del código. Las herramientas de minificación se utilizan a menudo para eliminar espacios en blanco con el fin de reducir la cantidad de datos que se deben transferir.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Caracteres de espacio en blanco
Punto de códigoNombreAbreviaturaDescripciónSecuencia de escape
U+0009Caracter de tabulación<HT>Tabulación horizontal\t
U+000BTabulación de línea<VT>Tabulación vertical\v
U+000CAvance de Página<FF>Carácter de control de salto de página (Wikipedia).\f
U+0020Espacio<SP>Espacio normal
U+00A0Espacio irrompible<NBSP>Espacio normal, pero ningún punto en el que una línea se pueda romper
OtrosOtros caracteres de espacio Unicode<USP>Espacios Unicode en Wikipedia
+ +

Terminadores de línea

+ +

Además de los caracteres de {{Glossary("Espacio_en_blanco", "espacio en blanco")}}, los caracteres de terminación de línea se utilizan para mejorar la legibilidad del texto fuente. Sin embargo, en algunos casos, los terminadores de línea pueden influir en la ejecución del código JavaScript, ya que hay algunos lugares donde están prohibidos. Los terminadores de línea también afectan el proceso de la inserción automática de punto y coma. Los terminadores de línea se corresponden con la clase \s en expresiones regulares.

+ +

Solo los siguientes puntos de código Unicode se tratan como terminadores de línea en ECMAScript, otros caracteres de salto de línea se tratan como espacios en blanco (por ejemplo, Next Line, NEL, U+0085 se consideran como espacios en blanco).

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Caracteres terminadores de línea
Punto de códigoNombreAbreviaturaDescripciónSecuencia de escape
U+000AAlimentación de linea<LF>Caracter de nueva línea en sistemas UNIX.\n
U+000DRetorno de carro<CR>Caracter de nueva línea en Commodore y los primeros sistemas Mac.\r
U+2028Separador de línea<LS>Wikipedia
U+2029Separador de párrafos<PS>Wikipedia
+ +

Comentarios

+ +

Los comentarios se utilizan para agregar consejos, notas, sugerencias o advertencias al código JavaScript. Esto puede facilitar su lectura y comprensión. También se pueden utilizar para deshabilitar el código y evitar que se ejecute; esta puede ser una valiosa herramienta de depuración.

+ +

JavaScript tiene dos formas antiguas de agregar comentarios al código.

+ +

La primera forma son las dobles barras inclinadas // comentario; esta convierte en comentario todo el texto que le sigue en la misma línea. Por ejemplo:

+ +
function comment() {
+  // Este es un comentario JavaScript de una línea
+  console.log('¡Hola mundo!');
+}
+comment();
+
+ +

La segunda forma es el estilo /* */, que es mucho más flexible.

+ +

Por ejemplo, lo puedes usar en una sola línea:

+ +
function comment() {
+  /* Este es un comentario JavaScript de una línea */
+  console.log('¡Hola mundo!');
+}
+comment();
+ +

También puedes hacer comentarios de varias líneas, como este:

+ +
function comment() {
+  /* Este comentario abarca varias líneas. Aviso
+     No necesitamos cerrar el comentario hasta que terminemos. */
+  console.log('¡Hola mundo!');
+}
+comment();
+ +

También lo puedes usar en medio de una línea, si lo deseas, aunque esto puede hacer que tu código sea más difícil de leer, por lo que se debe usar con precaución:

+ +
function comment(x) {
+  console.log('¡Hola' + x /* inserta el valor de x */ + ' !');
+}
+comment('mundo');
+ +

Además, lo puedes usar para deshabilitar el código y evitar que se ejecute, envolviendo el código en un comentario, como este:

+ +
function comment() {
+  /* console.log('¡Hola mundo!'); */
+}
+comment();
+ +

En este caso, la llamada a console.log() nunca se emite, debido a que está dentro de un comentario. De esta forma se puede desactivar cualquier número de líneas de código.

+ +

Comentarios hashbang

+ +

Una sintaxis de tercer comentario especializado, el comentario hashbang, está en proceso de estandarización en ECMAScript (consulta la Propuesta de gramática Hashbang).

+ +

Un comentario hashbang se comporta exactamente como un comentario de una sola línea (//). En cambio, comienza con #! y solo son válidos al comienzo absoluto de un script o módulo. También ten en cuenta que no se permiten espacios en blanco de ningún tipo antes del #!. El comentario consta de todos los caracteres después de #! hasta el final de la primera línea; sólo se permite uno de esos comentarios.

+ +

El comentario hashbang especifica la ruta a un intérprete de JavaScript específico que deseas utilizar para ejecutar el script. Aquí tienes un sencillo ejemplo:

+ +
#!/usr/bin/env node
+
+console.log("Hola mundo");
+
+ +
+

Nota: Los comentarios hashbang en JavaScript imitan a los shebangs en Unix utilizados para ejecutar archivos con el intérprete apropiado.

+
+ +
+

Aunque BOM antes de que el comentario hashbang funcione en un navegador, no se recomienda utilizar BOM en un script con hashbang. BOM no funcionará cuando intentes ejecutar el script en Unix/Linux. Por lo tanto, usa UTF-8 sin BOM si deseas ejecutar scripts directamente desde el intérprete.

+
+ +

¡Solo debes usar el estilo de comentario #! para especificar un intérprete de JavaScript. En todos los demás casos, utiliza un comentario // (o un comentario multilínea).

+ +

Palabras clave

+ +

Palabras clave reservadas a partir de ECMAScript 2015

+ + + +

Futuras palabras clave reservadas

+ +

Las siguientes están reservadas como palabras clave futuras por la especificación ECMAScript. No tienen ninguna funcionalidad especial en la actualidad, pero es posible que lo hagan en el futuro, por lo que no se pueden utilizar como identificadores.

+ +

Estas siempre están reservadas:

+ + + +

Las siguientes solo están reservadas cuando se encuentran en código de modo estricto:

+ + + +

Las siguientes solo están reservadas cuando se encuentran en código de módulo:

+ + + +

Futuras palabras clave reservadas en estándares más antiguos

+ +

Las siguientes están reservadas como palabras clave futuras según las especificaciones de ECMAScript anteriores (ECMAScript 1 a 3).

+ + + +

Además, los literales null, true y false no se pueden utilizar como identificadores en ECMAScript.

+ +

Uso de palabras reservadas

+ +

Las palabras reservadas en realidad solo se aplican a los identificadores (frente a los nombres de identificadores). Como se describe en es5.github.com/#A.1, todos estos son IdentifierNames que no excluyen Palabras reservadas.

+ +
a.import
+a['import']
+a = { import: 'test' }.
+
+ +

Por otro lado, lo siguiente es ilegal porque es un Identificador, que es un IdentifierName sin palabras reservadas. Los identificadores se utilizan para FunctionDeclaration, FunctionExpression, VariableDeclaration y así sucesivamente. Los IdentifierNames se utilizan para MemberExpression, CallExpression y así sucesivamente.

+ +
function import() {} // Ilegal.
+ +

Identificadores con significado especial

+ +

Algunos identificadores tienen un significado especial en algunos contextos sin ser palabras clave de ningún tipo. Estos incluyen:

+ + + +

Literales

+ +

null literal

+ +

Consulta también {{jsxref("null")}} para obtener más información.

+ +
null
+ +

Booleanos literales

+ +

Consulta también {{jsxref("Boolean", "Booleano")}} para obtener más información.

+ +
true
+false
+ +

Literales numéricos

+ +

Los tipos {{jsxref("Number")}} y {{jsxref("BigInt")}} usan literales numéricos.

+ +

Decimal

+ +
1234567890
+42
+
+// Precaución al usar con un cero a la izquierda:
+0888 // 888 procesado como decimal
+0777 // procesado como octal, 511 en decimal
+
+ +

Ten en cuenta que los decimales literales pueden comenzar con un cero (0) seguido de otro dígito decimal, pero si todos los dígitos después del 0 inicial son menores que 8, el número se interpreta como un número octal. Esto no arrojará JavaScript, consulta error 957513. Consulta también la página sobre {{jsxref("parseInt", "parseInt()")}}

+ +
Exponencial
+ +

El literal exponencial decimal se especifica mediante el siguiente formato: beN; donde b es un número base (entero o flotante), seguido del caracter e (que sirve como separador o indicador de exponente) y N, que es un número exponente o potencia: un entero con signo (según las especificaciones ECMA-262 de 2019):

+ +
0e-5   // => 0
+0e+5   // => 0
+5e1    // => 50
+175e-2 // => 1.75
+1e3    // => 1000
+1e-3   // => 0.001
+
+ +

Binario

+ +

La sintaxis de números binarios utiliza un cero inicial seguido de una letra "B" latina en minúscula o mayúscula (0b o 0B). Debido a que esta sintaxis es nueva en ECMAScript 2015, consulta la tabla de compatibilidad del navegador a continuación. Si los dígitos después de 0b no son 0 o 1, se muestra el siguiente {{jsxref("SyntaxError")}}: "Faltan dígitos binarios después de 0b".

+ +
var FLT_SIGNBIT  = 0b10000000000000000000000000000000; // 2147483648
+var FLT_EXPONENT = 0b01111111100000000000000000000000; // 2139095040
+var FLT_MANTISSA = 0B00000000011111111111111111111111; // 8388607
+ +

Octal

+ +

La sintaxis de números octales utiliza un cero inicial seguido de una letra "O" latina en minúscula o mayúscula (0o o 0O). Debido a que esta sintaxis es nueva en ECMAScript 2015, consulta la tabla de compatibilidad del navegador a continuación. Si los dígitos después del 0o están fuera del rango (01234567), se lanza el siguiente {{jsxref("SyntaxError")}}: "Dígitos octales faltantes después del 0o".

+ +
var n = 0O755; // 493
+var m = 0o644; // 420
+
+// También es posible con solo un cero inicial (ve la nota sobre los decimales arriba)
+0755
+0644
+
+ +

Hexadecimal

+ +

La sintaxis de números hexadecimales utiliza un cero inicial seguido de una letra "X" latina en minúscula o mayúscula (0x o 0X). Si los dígitos después de 0x están fuera del rango (0123456789ABCDEF), se lanza el siguiente {{jsxref("SyntaxError")}}: "El identificador comienza inmediatamente después del literal numérico".

+ +
0xFFFFFFFFFFFFFFFFF // 295147905179352830000
+0x123456789ABCDEF   // 81985529216486900
+0XA                 // 10
+
+ +

BigInt literal

+ +

El tipo {{jsxref("BigInt")}} es una primitiva numérica en JavaScript que puede representar números enteros con precisión arbitraria. Los BigInt literales se crean agregando n al final de un número entero.

+ +
123456789123456789n     // 123456789123456789
+0o777777777777n         // 68719476735
+0x123456789ABCDEFn      // 81985529216486895‬
+0b11101001010101010101n // 955733
+
+ +

Ten en cuenta que los números octales heredados con solo un cero a la izquierda no funcionarán para BigInt:

+ +
// 0755n
+// SyntaxError: sintaxis de BigInt no válida
+ +

Para números BigInt octales, siempre utiliza cero seguido de la letra "o" (mayúscula o minúscula):

+ +
0o755n
+ +

Para obtener más información sobre BigInt, consulta también estructuras de datos JavaScript.

+ +

Separadores numéricos

+ +

Para mejorar la legibilidad de literales numéricos, se pueden usar guiones bajos (_, U+005F) como separadores:

+ +
// separadores en números decimales
+1_000_000_000_000
+1_050.95
+
+// separadores en números binarios
+0b1010_0001_1000_0101
+
+// separadores en números octales
+0o2_2_5_6
+
+// separadores en números hexadecimales
+0xA0_B0_C0
+
+// separadores en BigInts
+1_000_000_000_000_000_000_000n
+
+ +

Ten en cuenta estas limitaciones:

+ +
 // No se permite más de un guión bajo en una fila
+100__000; // SyntaxError
+
+// No permitido al final de literales numéricos
+100_; // SyntaxError
+
+// No se puede usar después de 0
+0_1; // SyntaxError
+
+ +

Objetos literales

+ +

Consulta también {{jsxref("Object")}} e Iniciador de objeto para obtener más información.

+ +
var o = { a: 'foo', b: 'bar', c: 42 };
+
+// notación abreviada. Nueva en ES2015
+var a = 'foo', b = 'bar', c = 42;
+var o = {a, b, c};
+
+// en vez de
+var o = { a: a, b: b, c: c };
+
+ +

Arreglos literales

+ +

Consulta también {{jsxref("Array")}} para obtener más información.

+ +
[1954, 1974, 1990, 2014]
+ +

Cadenas literales

+ +

Una cadena literal es cero o más puntos de código Unicode entre comillas simples o dobles. Los puntos de código Unicode también se pueden representar mediante una secuencia de escape. Literalmente todos los puntos de código pueden aparecer en una cadena literal, excepto estos puntos de código de cierre de cita:

+ + + +

Antes de la propuesta para hacer que todo el texto JSON sea ECMA-262 válido, U+2028 <LS> y U+2029 <PS>, tampoco se permitió que aparecieran sin escape en las cadenas literales.

+ +

Cualquier punto de código puede aparecer en forma de secuencia de escape. Las cadenas literales se evalúan como valores de cadena de ECMAScript. Al generar estos valores de cadena, los puntos de código Unicode están codificados en UTF-16.

+ +
'foo'
+"bar"
+ +

Secuencias de escape hexadecimales

+ +

Las secuencias de escape hexadecimales constan de \x seguido de exactamente dos dígitos hexadecimales que representan una unidad de código o un punto de código en el rango de 0x0000 a 0x00FF.

+ +
'\xA9' // "©"
+
+ +

Secuencias de escape Unicode

+ +

Una secuencia de escape Unicode consta exactamente de cuatro dígitos hexadecimales después de \u. Representa una unidad de código en la codificación UTF-16. Para los puntos de código U+0000 a U+FFFF, la unidad de código es igual al punto de código. Los puntos de código U+10000 a U+10FFFF requieren dos secuencias de escape que representan las dos unidades de código (un par sustituto) utilizadas para codificar el carácter; el par sustituto es distinto del punto de código.

+ +

Consulta también {{jsxref("String.fromCharCode()")}} y {{jsxref("String.prototype.charCodeAt()")}}.

+ +
'\u00A9' // "©" (U+A9)
+ +

Puntos de escape de código Unicode

+ +

Un punto de código de escape Unicode consta de \u{, seguido de un punto de código en base hexadecimal, seguido de }. El valor de los dígitos hexadecimales debe estar en el rango 0 y 0x10FFFF inclusive. Los puntos de código en el rango U+10000 a U+10FFFF no necesitan representarse como un par sustituto. Se agregaron puntos de código de escape a JavaScript en ECMAScript 2015 (ES6).

+ +

Consulta también {{jsxref("String.fromCodePoint()")}} y {{jsxref("String.prototype.codePointAt()")}}.

+ +
'\u{2F804}' // CJK COMPATIBILIDAD IDEOGRÁFICA-2F804 (U+2F804)
+
+// el mismo caracter representado como un par suplente
+'\uD87E\uDC04'
+ +

Expresión regular literal

+ +

Consulta también {{jsxref("RegExp")}} para obtener más información.

+ +
/ab+c/g
+
+// Una expresión regular literal "vacía"
+// El grupo de no captura vacío es necesario
+// para evitar la ambigüedad con comentarios de una sola línea.
+/(?:)/
+ +

Plantillas literales

+ +

Consulta también cadenas de plantilla para obtener más información.

+ +
`string text`
+
+`string text line 1
+ string text line 2`
+
+`string text ${expression} string text`
+
+tag `string text ${expression} string text`
+ +

Inserción automática de punto y coma

+ +

Algunas declaraciones JavaScript se deben terminar con punto y coma y, por lo tanto, se ven afectadas por la inserción automática del punto y coma (IAPC):

+ + + +

La especificación ECMAScript menciona tres reglas de inserción de punto y coma.

+ +

1. Se inserta un punto y coma antes, cuando se encuentra un terminador de línea o "}" que no está permitido por la gramática.

+ +
{ 1 2 } 3
+
+// La IAPC lo transforma en
+
+{ 1 2 ;} 3;
+ +

2. Se inserta un punto y coma al final, cuando se detecta el final del flujo de entrada de símbolos y el analizador no puede procesar el único flujo de entrada como un programa completo.

+ +

Aquí ++ no se trata como un operador sufijo que se aplica a la variable b, porque se produce un terminador de línea entre b y ++.

+ +
a = b
+++c
+
+// IAPC lo transforma en
+
+a = b;
+++c;
+
+ +

3. Se inserta un punto y coma al final, cuando una declaración con producción restringida en la gramática va seguida de un terminador de línea. Estas declaraciones con reglas "no LineTerminator aquí" son:

+ + + +
return
+a + b
+
+// La IAPC lo transforma en
+
+return;
+a + b;
+
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-ecmascript-language-lexical-grammar', 'Gramática léxica')}}
+ +

Compatibilidad del navegador

+ + + +

{{Compat("javascript.grammar")}}

+ +

Progreso de la implementación

+ +

La siguiente tabla proporciona un estado de implementación diario para esta función, porque esta función aún no ha alcanzado la estabilidad entre navegadores. Los datos se generan al ejecutar las pruebas de funciones relevantes en Test262, el conjunto de pruebas estándar de JavaScript, en la compilación nocturna o en la última versión del motor JavaScript de cada navegador.

+ +
{{EmbedTest262ReportResultsTable("hashbang")}}
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/operators/addition/index.html b/files/es/web/javascript/reference/operators/addition/index.html new file mode 100644 index 0000000000..888845158a --- /dev/null +++ b/files/es/web/javascript/reference/operators/addition/index.html @@ -0,0 +1,77 @@ +--- +title: Adición (+) +slug: Web/JavaScript/Referencia/Operadores/Adición +translation_of: Web/JavaScript/Reference/Operators/Addition +--- +
{{jsSidebar("Operators")}}
+ +

El operador de adición (+) produce la suma de operandos numéricos o la concatenación de (cadenas) string.

+ +
{{EmbedInteractiveExample("pages/js/expressions-addition.html")}}
+ +
+ + + +

Sintaxis

+ +
Operator: x + y
+
+ +

Ejemplos

+ +

Adición numérica

+ +
// Número + Número -> adición
+1 + 2 // 3
+
+// Booleano + Número -> adición
+true + 1 // 2
+
+// Booleano + Booleano -> adición
+false + false // 0
+
+ +

Concatenación de (cadenas) String

+ +
// String + String -> concatenación
+'fut' + 'bol' // "futbol"
+
+// Número + String -> concatenación
+5 + 'oh' // "5oh"
+
+// String + Booleano -> concatenación
+'fut' + false // "futfalse"
+ +

Especificación

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-addition-operator-plus', 'Addition operator')}}
+ +

Compatibilidad de Explorador

+ + + +

{{Compat("javascript.operators.addition")}}

+ +

También revisa

+ + diff --git a/files/es/web/javascript/reference/operators/assignment/index.html b/files/es/web/javascript/reference/operators/assignment/index.html new file mode 100644 index 0000000000..1fa4b79ac4 --- /dev/null +++ b/files/es/web/javascript/reference/operators/assignment/index.html @@ -0,0 +1,62 @@ +--- +title: Asignacion (=) +slug: Web/JavaScript/Referencia/Operadores/Asignacion +tags: + - JS + - JavaScript + - Operador de Asignacion + - Operadores JavaScript + - Referências +translation_of: Web/JavaScript/Reference/Operators/Assignment +--- +
{{jsSidebar("Operators")}}
+ +

El operador de asignación (=) se utiliza para asignar un valor a una variable. La operación de asignación evalúa el valor asignado. Es posible encadenar el operador de asignación para asignar un solo valor a múltiples variables

+ +
{{EmbedInteractiveExample("pages/js/expressions-assignment.html")}}
+ +
+ + + +

Sintaxis

+ +
Operador: x = y
+
+ +

Ejemplos

+ +

Asignación

+ +
// Asumimos las siguientes variables
+//  x = 5
+//  n = 10
+//  z = 25
+
+x = n     // La variable x contiene el valor 10
+x = n = z // x = n (es decir 10) y z pisa el valor total remplazandolo por 25
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}}
+ +

Compatibilidad con Navegadores

+ + + +

{{Compat("javascript.operators.assignment")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/operators/async_function/index.html b/files/es/web/javascript/reference/operators/async_function/index.html new file mode 100644 index 0000000000..12e76e6ce5 --- /dev/null +++ b/files/es/web/javascript/reference/operators/async_function/index.html @@ -0,0 +1,102 @@ +--- +title: Expresión de función asíncrona +slug: Web/JavaScript/Referencia/Operadores/async_function +tags: + - Expresión Primaria + - JavaScript + - Operador + - función +translation_of: Web/JavaScript/Reference/Operators/async_function +--- +
{{jsSidebar("Operators")}}
+ +

La palabra clave async function puede ser utilizada para definir funciones async dento de expresiones.

+ +

También se pueden definir funciones asíncronas utilizando un enunciado de función asíncrona.

+ +

Sintaxis

+ +
async function [nombre]([param1[, param2[, ..., paramN]]]) {
+   enunciados
+}
+ +

A partir de ES2015 (ES6), también se pueden emplear funciones flecha.

+ +

Parámetros

+ +
+
name
+
El nombre de la función. Puede ser omitida, en cuy caso la función es anónima. El nombre es sólo local al cuerpo de la función The name is only local to the function body.
+
paramN
+
El nombre de un argumento a ser pasado a la función.
+
statements
+
Los enunciados que componen el cuerpo de la función.
+
+ +

Descripción

+ +

Una expresión async function es miuy similar, y casi tiene la misma sintaxis que, una {{jsxref('Statements/async_function', 'async function statement')}}. La principal diferencia entre una expresión async function y un enunciado async function es el nombre de la función, que puede ser omitido en una expresión async function para crear funciones anonymous. Una expresión async function puede ser utilizada como un {{Glossary("IIFE")}} (Expresión de función inmediatamente invocada, Immediately Invoked Function Expression) que se ejecuta tan rápido como es definida. Ver el capítulo sobre funciones para tener más información.

+ +

Ejemplos

+ +

Ejemplo sencillo

+ +
function resuelve2SegundosDespues(x) {
+  return new Promise(resolve => {
+    setTimeout(() => {
+      resolve(x);
+    }, 2000);
+  });
+};
+
+
+const agregar= async function(x) { // Expresión de una función asíncrona asignada a una variable
+  let a = await resuelve2SegundosDespues(20);
+  let b = await resuelve2SegundosDespues(30);
+  return x + a + b;
+};
+
+agregar(10).then(v => {
+  console.log(v);  // imprime 60 después de 4 segundos.
+});
+
+
+(async function(x) { // expresión de una función asíncrona utilizada como una IIFE
+  let p_a = resuelve2SegundosDespues(20);
+  let p_b = resuelve2SegundosDespues(30);
+  return x + await p_a + await p_b;
+})(10).then(v => {
+  console.log(v);  // imprime 60 después de 2 segundos.
+});
+
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-async-function-definitions', 'async function')}}
+ +

Compatibilidad de los navegadores

+ +
+ + +

{{Compat("javascript.operators.async_function_expression")}}

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/operators/await/index.html b/files/es/web/javascript/reference/operators/await/index.html new file mode 100644 index 0000000000..d1a84251f1 --- /dev/null +++ b/files/es/web/javascript/reference/operators/await/index.html @@ -0,0 +1,102 @@ +--- +title: await +slug: Web/JavaScript/Referencia/Operadores/await +translation_of: Web/JavaScript/Reference/Operators/await +--- +
{{jsSidebar("Operators")}}
+ +
El operador await es usado para esperar a una {{jsxref("Promise")}}. Sólo puede ser usado dentro de una función {{jsxref("Statements/async_function", "async function")}}.
+ +

Sintaxis

+ +
[rv] = await expression;
+ +
+
expression
+
Una {{jsxref("Promise")}} o cualquier otro valor por el cual haya que esperar.
+
rv
+
+

Regresa el valor terminado de la promesa o solamente un valor si no es unaPromise.

+
+
+ +

Descripción

+ +

La expresión await provoca que la ejecución de una función async sea pausada hasta que una Promise sea terminada o rechazada, y regresa a la ejecución de la función async después del término. Al regreso de la ejecución, el valor de la expresión await es la regresada por una promesa terminada.

+ +

Si la Promise es rechazada, el valor de la expresión await tendrá el valor de rechazo.

+ +

Si el valor de la expresión seguida del operador await  no es una promesa, será convertido a una resolved Promise.

+ +

Ejemplos

+ +

Si una Promise se pasa a una expresión await, espera a que la Promise se resuelva y devuelve el valor resuelto.

+ +
function resolveAfter2Seconds(x) {
+  return new Promise(resolve => {
+    setTimeout(() => {
+      resolve(x);
+    }, 2000);
+  });
+}
+
+async function f1() {
+  var x = await resolveAfter2Seconds(10);
+  console.log(x); // 10
+}
+f1();
+
+ +

Si el valor no es una Promise, convierte el valor a una Promise resuelta, y espera por dicho valor.

+ +
async function f2() {
+  var y = await 20;
+  console.log(y); // 20
+}
+f2();
+ +

Si la Promise es rechazada, se lanza una excepción con dicho el valor.

+ +
async function f3() {
+  try {
+    var z = await Promise.reject(30);
+  } catch(e) {
+    console.log(e); // 30
+  }
+}
+f3();
+ +

Especificaciones

+ + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-async-function-definitions', 'async functions')}}{{Spec2('ESDraft')}}Initial definition in ES2017.
+ +

Compatibilidad con navegadores

+ +
+ + +

{{Compat("javascript.operators.await")}}

+
+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/operators/class/index.html b/files/es/web/javascript/reference/operators/class/index.html new file mode 100644 index 0000000000..e654359035 --- /dev/null +++ b/files/es/web/javascript/reference/operators/class/index.html @@ -0,0 +1,157 @@ +--- +title: expresión class +slug: Web/JavaScript/Referencia/Operadores/class +tags: + - Classes + - ECMAScript6 + - Expression + - JavaScript + - Operator + - Reference +translation_of: Web/JavaScript/Reference/Operators/class +--- +
{{jsSidebar("Operators")}}
+ +

La expresión class es una forma de definir una clase en ECMAScript 2015 (ES6). Similar a las funciones, las expresiones de clase pueden ser nombradas o no. Si se nombran, el nombre de la clase es local sólo en el cuerpo de la clase. Las clases en JavaScript utilizan herencia basada en prototipos.

+ +

Sintaxis

+ +
var MyClass = class [className] [extends] {
+  // class body
+};
+ +

Descripción

+ +

Una expresión de clase tiene una sintaxis similar a la declaración de una clase. Sin embargo, con las expresiones de clases, está permitido omitir el nombre de la clase ("identificador de enlace"), cosa que no se puede hacer con las declaraciones de clases. Además, las expresiones de clases permiten redefinir/redeclarar clases y no lanzar ningún tipo de error como las declaraciones de clases. La propiedad constructor es opcional. Y el typeof de las clases generadas con esta palabra clave siempre será "function".

+ +

Tal y como en la declaración de clases, el cuerpo de la expresión de clase se ejecuta en modo estricto.

+ +
'use strict';
+var Foo = class {}; // la propiedad constructor es opcional
+var Foo = class {}; // Se permite repetir declaraciones
+
+typeof Foo; // devuelve "function"
+typeof class {}; // devuelve "function"
+
+Foo instanceof Object; // true
+Foo instanceof Function; // true
+class Foo {}; // Lanza TypeError, no permite volver a declararla
+
+ +

Ejemplo

+ +

Una clase sencilla

+ +

Esta es una sencilla expresión de clase anónima a la que se puede hacer referencia utilizando la variable "Foo".

+ +
var Foo = class {
+  constructor() {}
+  bar() {
+    return "Hello World!";
+  }
+};
+
+var instance = new Foo();
+instance.bar(); // "Hello World!"
+Foo.name; // "Foo"
+
+ +

Expresiones de clase con nombre

+ +

Si se quiere hacer referencia a la clase actual dentro del cuerpo de la clase, se puede crear una expresión de clase con nombre. Este nombre sólo será visible en el mismo contexto de la expresión de clase.

+ +
var Foo = class NamedFoo {
+  constructor() {}
+  whoIsThere() {
+    return NamedFoo.name;
+  }
+}
+var bar = new Foo();
+bar.whoIsThere(); // "NamedFoo"
+NamedFoo.name; // ReferenceError: NamedFoo no está definido
+Foo.name; // "NamedFoo"
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad en navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome(42.0)}}{{CompatGeckoDesktop(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome para Android
Soporte básico{{CompatNo}}{{CompatChrome(42.0)}}{{CompatGeckoMobile(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(42.0)}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/operators/comma_operator/index.html b/files/es/web/javascript/reference/operators/comma_operator/index.html new file mode 100644 index 0000000000..a62701b3e1 --- /dev/null +++ b/files/es/web/javascript/reference/operators/comma_operator/index.html @@ -0,0 +1,132 @@ +--- +title: Operador Coma +slug: Web/JavaScript/Referencia/Operadores/operador_coma +tags: + - JavaScript +translation_of: Web/JavaScript/Reference/Operators/Comma_Operator +--- +
{{jsSidebar("Operators")}}
+ +

El operador coma evalua cada uno de sus operandos (de izquierda a derecha) y retorna el valor del último operando.

+ +

Sintaxis

+ +
expr1, expr2, expr3...
+ +

Parámetros

+ +
+
expr1, expr2, expr3...
+
Cualquier expresión.
+
+ +

Descripción

+ +

Puede usar el operador coma cuando deseé mútiples expresiones en una localización que requiere una sola expresión. El uso más común de este operador es proveer múltiples parámetros en un búcle for

+ +

Ejemplo

+ +

Si a es un array de dos dimensiones con 10 elementos en un lado, el siguiente código usa el operador coma para incrementar dos variables a la vez. Note que la coma en la sentencia var no es el operador coma, porque no existe adentro de una expresión.Más bien, es un carácter especial en sentencias var para combinar a múltiples de ellas en una sola. Sin embargo, esa coma se comporta casi igual que el operador coma. El código imprime los valores de los elementos diagonales en el array:

+ +
for (var i = 0, j = 9; i <= 9; i++, j--)
+  document.writeln("a[" + i + "][" + j + "] = " + a[i][j]);
+ +

Procesar y luego retornar:

+ +

Otro ejemplo de lo que se puede hacer con el operador coma es procesar antes de retornar. Como se mencionó, solo el último elemento será retornado pero todos los otros también van a ser evaluados. Así, se puede hacer:

+ +
function myFunc () {
+  var x = 0;
+
+  return (x += 1, x); // the same as return ++x;
+}
+ +

Específicaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ESDraft', '#sec-comma-operator', 'Comma operator')}}{{Spec2('ESDraft')}} 
{{SpecName('ES6', '#sec-comma-operator', 'Comma operator')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-11.14', 'Comma operator')}}{{Spec2('ES5.1')}} 
{{SpecName('ES1', '#sec-11.14', 'Comma operator')}}{{Spec2('ES1')}}Definición inicial
+ +

Compatibilidad en navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}3.0{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/operators/conditional_operator/index.html b/files/es/web/javascript/reference/operators/conditional_operator/index.html new file mode 100644 index 0000000000..6b48295902 --- /dev/null +++ b/files/es/web/javascript/reference/operators/conditional_operator/index.html @@ -0,0 +1,171 @@ +--- +title: Operador condicional (ternario) +slug: Web/JavaScript/Referencia/Operadores/Conditional_Operator +tags: + - JavaScript + - Operador +translation_of: Web/JavaScript/Reference/Operators/Conditional_Operator +--- +
{{jsSidebar("Operators")}}
+ +
El operador condicional (ternario) es el único operador en JavaScript que tiene tres operandos. Este operador se usa con frecuencia como atajo para la instrucción if.
+ +
 
+ +

Sintaxis

+ +
condición ? expr1 : expr2 
+ +

Parámetros

+ +
+
condición
+
Una expresión que se evalúa como true o false.
+
+
expr1, expr2
+
+
Expresión con valores de algún tipo.
+
+

Descripción

+
+
+ +

Si la condición es true, el operador retorna el valor de la expr1; de lo contrario,  devuelve el valor de expr2. Por ejemplo, para mostrar un mensaje diferente en función del valor de la variable isMember, se puede usar esta declaración:

+ +
"La Cuota es de:  " + (isMember ? "$2.00" : "$10.00")
+
+ +

También puedes asignar variables dependiendo del resultado de la condición ternaria:

+ +
var elvisLives = Math.PI > 4 ? "Sip" : "Nop";
+ +

También es posible realizar evaluaciones ternarias múltiples (Nota: El operador condicional es asociativo):

+ +
var firstCheck = false,
+    secondCheck = false,
+    access = firstCheck ? "Acceso Denegado" : secondCheck ? "Acceso Denegado" : "Acceso Permitido";
+
+console.log( access ); // muestra "Acceso Permitido"
+ +

También puede usar operaciones ternarias en espacio vacío con el propósito de realizar diferentes operaciones:

+ +
var stop = false, age = 16;
+
+age > 18 ? location.assign("continue.html") : stop = true;
+
+ +

También puede realizar más de una operación por caso, separándolas con una coma:

+ +
var stop = false, age = 23;
+
+age > 18 ? (
+    alert("OK, puedes continuar."),
+    location.assign("continue.html")
+) : (
+    stop = true,
+    alert("Disculpa, eres menor de edad!")
+);
+
+ +

También puede realizar más de una operación durante la asignación de un valor. En este caso, el último valor separado por una coma del paréntesis será el valor asignado.

+ +
var age = 16;
+
+var url = age > 18 ? (
+    alert("OK, puedes continuar."),
+    // alert devuelve "undefined", pero será ignorado porque
+    // no es el último valor separado por comas del paréntesis
+    "continue.html" // el valor a ser asignado si age > 18
+) : (
+    alert("Eres menor de edad!"),
+    alert("Disculpa :-("),
+    // etc. etc.
+    "stop.html" // el valor a ser asignado si !(age > 18)
+);
+
+location.assign(url); // "stop.html"
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-conditional-operator', 'Conditional Operator')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-11.12', 'The conditional operator')}}{{Spec2('ES5.1')}} 
{{SpecName('ES1', '#sec-11.12', 'The conditional operator')}}{{Spec2('ES1')}}Definición inicial implementada en JavaScript 1.0.
+ +

Compatibilidad de navegadores

+ +

{{CompatibilityTable}}

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

Véase también

+ + diff --git a/files/es/web/javascript/reference/operators/decrement/index.html b/files/es/web/javascript/reference/operators/decrement/index.html new file mode 100644 index 0000000000..01fa5f0ee2 --- /dev/null +++ b/files/es/web/javascript/reference/operators/decrement/index.html @@ -0,0 +1,83 @@ +--- +title: Decremento(--) +slug: Web/JavaScript/Referencia/Operadores/Decremento +tags: + - Decremento + - JavaScript + - JavaScript basico + - Operadores +translation_of: Web/JavaScript/Reference/Operators/Decrement +--- +
{{jsSidebar("Operators")}}
+ +

El operador de decremento (--) disminuye (o resta de a uno) su operando y retorna un valor.

+ +
{{EmbedInteractiveExample("pages/js/expressions-decrement.html")}}
+ +
+ + + +

Sintaxis

+ +
Operadores: x-- o --x
+
+ +

Descripción

+ +

Si usamos la forma de sufijo, operador después del operando (por ejemplo, x--), el operador de disminución disminuye y devuelve el valor antes de disminuir.

+ +

Si se usamos la forma de prefijo, operador antes del operando (por ejemplo, --x), el operador de disminución disminuye y devuelve el valor después de disminuir.

+ +

Ejemplos

+ +

Usando Sufijo 

+ +
let x = 3;
+y = x--;
+
+// y = 3
+// x = 2
+
+ +

Usando Prefijo

+ +
let a = 2;
+b = --a;
+
+// a = 1
+// b = 1
+
+ +

Especificaciones

+ + + + + + + + + + +
Especificaciones
{{SpecName('ESDraft', '#sec-postfix-decrement-operator', 'Decrement operator')}}
+ +

Compatibilidad con navegadores

+ + + +

{{Compat("javascript.operators.decrement")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/operators/delete/index.html b/files/es/web/javascript/reference/operators/delete/index.html new file mode 100644 index 0000000000..99ec3e73dd --- /dev/null +++ b/files/es/web/javascript/reference/operators/delete/index.html @@ -0,0 +1,242 @@ +--- +title: operador delete +slug: Web/JavaScript/Referencia/Operadores/delete +translation_of: Web/JavaScript/Reference/Operators/delete +--- +
+
{{jsSidebar("Operators")}}
+
+ +

Resumen

+ +

El operador delete  elimina una propiedad de un objeto.

+ +

Sintaxis

+ +
delete expresión 
+ +

donde la expresión debe evaluar una referencia de la propiedad, por ejemplo:

+ +
delete objeto.propiedad
+delete objeto['propiedad']
+
+ +

Parámetros

+ +
+
objeto
+
El nombre de un objeto, o una expresión que evalua a un objeto.
+
propiedad
+
La propiedad a eliminar.
+
+ +

Retorno

+ +

En modo estricto arroja una excepción si la propiedad no es configurable (retorna false en modo no estricto). Retorna true en cualquier otro caso.

+ +

Descripción

+ +

Al contrario de lo que se podría pensar, el operador delete no tiene nada que ver con liberar memoria (sólo lo hace de manera indirecta eliminando referencias. Más detalles en la página de gestión de memoria).

+ +

Si la operación delete funciona correctamente, eliminará la propiedad del objeto por completo. Sin embargo, si existe otra propiedad con el mismo nombre en la cadena del prototype del objeto, éste heredará la propiedad del prototype.

+ +

delete sólo es efectivo en propiedades de objetos. No tiene ningún efecto en variables o en nombres de funciones.
+ Aunque a veces son mal identificados como variables globales, las asignaciones que no especifican al objeto (ejemplo: x = 5), son en realidad propiedades que se asignan al objeto global.

+ +

delete no puede eliminar ciertas propiedades de los objetos predefinidos (como Object, Array, Math etc). Estos están descritos en ECMAScript 5 y más tarde como no configurables.

+ +

Temporal dead zone

+ +

The "temporal dead zone" (TDZ), specified in ECMAScript 6 for const and let declarations, also applies to the delete operator. Thus, code like the following will throw a {{jsxref("ReferenceError")}}.

+ +
function foo() {
+  delete x;
+  let x;
+}
+
+function bar() {
+  delete y;
+  const y;
+}
+ +

Ejemplos

+ +
x = 42;         // crea la propiedad x en el objeto global
+var y = 43;     // crea la propiedad y en el objeto global, y la marca como no configurable
+myobj = {
+  h: 4,
+  k: 5
+};
+
+// x es una propiedad del objeto global y puede ser eliminada
+delete x;       // retorna true
+
+// y no es configurable, por lo tanto no puede ser eliminada
+delete y;       // retorna false
+
+// delete no afecta a ciertas propiedades predefinidas
+delete Math.PI; // retorna false
+
+// las propiedades definidas por el usuario pueden eliminarse
+delete myobj.h; // retorna true
+
+// myobj es una propiedad del objeto global, no una variable,
+// por lo tanto puede eliminarse
+delete myobj;   // retorna true
+
+function f() {
+  var z = 44;
+
+  // delete no afecta a nombres de variables locales
+  delete z;     // retorna false
+}
+
+ +

Si el objeto hereda una propiedad de un prototype, y no tiene la propiedad en sí, la propiedad no puede ser eliminada por referencia al objeto. Aun así, puedes eliminarla directamente en el prototype.

+ +

If the object inherits a property from a prototype, and doesn't have the property itself, the property can't be deleted by referencing the object. You can, however, delete it directly on the prototype.

+ +
function Foo(){}
+Foo.prototype.bar = 42;
+var foo = new Foo();
+
+// retorna true, pero sin ningún efecto,
+// ya que bar es una propiedad heredada
+delete foo.bar;
+
+// logs 42, propiedad aún heredada
+console.log(foo.bar);
+
+// elimina la propiedad en el prototype
+delete Foo.prototype.bar;
+
+// logs "undefined", propiedad no heredada
+console.log(foo.bar);           
+ +

Eliminando elementos de un array

+ +

Cuando eliminas un elemento de un array, la longitud del array no se ve afectada. Esta se mantiene incluso si eliminas el último elemento del array.

+ +

Cuando el operador delete elimina un elemento de un array, este elemento ya no está en el array. En el siguiente ejemplo, trees[3] es eliminado mediante delete.

+ +
var trees = ["redwood","bay","cedar","oak","maple"];
+delete trees[3];
+if (3 in trees) {
+    // esto no se ejecuta
+}
+ +

Si quieres que exista un elemento de un array pero que tengo un valor no definido, utiliza el valor undefined en vez del operador delete. En el siguiente ejemplo, trees[3] es asignado con el valor undefined, pero el elemento del array aún existe:

+ +
var trees = ["redwood","bay","cedar","oak","maple"];
+trees[3] = undefined;
+if (3 in trees) {
+    // esto se ejecuta
+}
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
ECMAScript 1st Edition.StandardDefinición inicial. Implementado en JavaScript 1.2
{{SpecName('ES5.1', '#sec-11.4.1', 'The delete Operator')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-delete-operator', 'The delete Operator')}}{{Spec2('ES6')}} 
+ +

Compatibilidad de navegador

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Temporal dead zone{{CompatUnknown}}{{CompatGeckoDesktop(36)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{ CompatVersionUnknown() }}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Temporal dead zone{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile(36)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Cross-browser issues

+ +

Although ECMAScript makes iteration order of objects implementation-dependent, it may appear that all major browsers support an iteration order based on the earliest added property coming first (at least for properties not on the prototype). However, in the case of Internet Explorer, when one uses delete on a property, some confusing behavior results, preventing other browsers from using simple objects like object literals as ordered associative arrays. In Explorer, while the property value is indeed set to undefined, if one later adds back a property with the same name, the property will be iterated in its old position--not at the end of the iteration sequence as one might expect after having deleted the property and then added it back.

+ +

So, if you want to simulate an ordered associative array in a cross-browser environment, you are forced to either use two separate arrays (one for the keys and the other for the values), or build an array of single-property objects, etc.

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/operators/destructuring_assignment/index.html b/files/es/web/javascript/reference/operators/destructuring_assignment/index.html new file mode 100644 index 0000000000..b56e3d3b52 --- /dev/null +++ b/files/es/web/javascript/reference/operators/destructuring_assignment/index.html @@ -0,0 +1,442 @@ +--- +title: La desestructuración +slug: Web/JavaScript/Referencia/Operadores/Destructuring_assignment +tags: + - Característica del lenguaje + - Desestructuración + - Desestructurar arreglos y objetos anidados + - ECMAScript 2015 + - ES6 + - JavaScript + - Objetos anidados y desestructuración de array + - Operador +translation_of: Web/JavaScript/Reference/Operators/Destructuring_assignment +--- +
{{jsSidebar("Operators", "Operadores")}}
+ +

La sintaxis de desestructuración es una expresión de JavaScript que permite desempacar valores de arreglos o propiedades de objetos en distintas variables.

+ +
{{EmbedInteractiveExample("pages/js/expressions-destructuringassignment.html", "taller")}}
+ + + +

Sintaxis

+ +
let a, b, rest;
+[a, b] = [10, 20];
+console.log(a); // 10
+console.log(b); // 20
+
+[a, b, ...rest] = [10, 20, 30, 40, 50];
+console.log(a); // 10
+console.log(b); // 20
+console.log(rest); // [30, 40, 50]
+
+({ a, b } = { a: 10, b: 20 });
+console.log(a); // 10
+console.log(b); // 20
+
+
+// Propuesta de etapa 4 (terminada)
+({a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40});
+console.log(a); // 10
+console.log(b); // 20
+console.log(rest); // {c: 30, d: 40}
+
+ +

Descripción

+ +

Las expresiones de objetos y arreglos literales proporcionan una manera fácil de crear paquetes de datos ad hoc.

+ +
const x = [1, 2, 3, 4, 5];
+ +

La desestructuración utiliza una sintaxis similar, pero en el lado izquierdo de la asignación para definir qué valores desempacar de la variable origen.

+ +
const x = [1, 2, 3, 4, 5];
+const [y, z] = x;
+console.log(y); // 1
+console.log(z); // 2
+
+ +

Esta capacidad es similar a las características presentes en lenguajes como Perl y Python.

+ +

Ejemplos

+ +

Desestructuración de arreglos

+ +

Asignación básica de variables

+ +
const foo = ['one', 'two', 'three'];
+
+const [red, yellow, green] = foo;
+console.log(red); // "one"
+console.log(yellow); // "two"
+console.log(green); // "three"
+
+ +

Asignación separada de la declaración

+ +

A una variable se le puede asignar su valor mediante una desestructuración separada de la declaración de la variable.

+ +
let a, b;
+
+[a, b] = [1, 2];
+console.log(a); // 1
+console.log(b); // 2
+
+ +

Valores predeterminados

+ +

A una variable se le puede asignar un valor predeterminado, en el caso de que el valor desempacado del arreglo sea undefined.

+ +
let a, b;
+
+[a=5, b=7] = [1];
+console.log(a); // 1
+console.log(b); // 7
+
+ +

Intercambio de variables

+ +

Los valores de dos variables se pueden intercambiar en una expresión de desestructuración.

+ +

Sin desestructurar la asignación, intercambiar dos valores requiere una variable temporal (o, en algunos lenguajes de bajo nivel, el algoritmo del truco XOR-swap).

+ +
let a = 1;
+let b = 3;
+
+[a, b] = [b, a];
+console.log(a); // 3
+console.log(b); // 1
+
+const arr = [1,2,3];
+[arr[2], arr[1]] = [arr[1], arr[2]];
+console.log(arr); // [1,3,2]
+
+
+ +

Analizar un arreglo devuelto por una función

+ +

Siempre ha sido posible devolver un arreglo desde una función. La desestructuración puede hacer que trabajar con un valor de retorno de arreglo sea más conciso.

+ +

En este ejemplo, f() devuelve los valores [1, 2] como su salida, que se puede procesar en una sola línea con desestructuración.

+ +
function f() {
+  return [1, 2];
+}
+
+let a, b;
+[a, b] = f();
+console.log(a); // 1
+console.log(b); // 2
+
+ +

Ignorar algunos valores devueltos

+ +

Puedes ignorar los valores de retorno que no te interesan:

+ +
function f() {
+  return [1, 2, 3];
+}
+
+const [a, , b] = f();
+console.log(a); // 1
+console.log(b); // 3
+
+const [c] = f();
+console.log(c); // 1
+
+ +

También puedes ignorar todos los valores devueltos:

+ +
[,,] = f();
+
+ +

Asignar el resto de un arreglo a una variable

+ +

Al desestructurar un arreglo, puedes desempacar y asignar la parte restante a una variable usando el patrón resto:

+ +
const [a, ...b] = [1, 2, 3];
+console.log(a); // 1
+console.log(b); // [2, 3]
+ +

Ten en cuenta que se lanzará un {{jsxref("SyntaxError")}} si se usa una coma final en el lado derecho con un elemento resto:

+ +
const [a, ...b,] = [1, 2, 3];
+
+// SyntaxError: el elemento rest no puede tener una coma al final
+// Siempre considera usar el operador rest como último elemento
+
+ +

Desempacar valores coincidentes con una expresión regular

+ +

Cuando el método de expresión regular {{jsxref("Global_Objects/RegExp/exec", "exec()", "", 1)}} encuentra una coincidencia, devuelve un arreglo que contiene primero toda la parte coincidente de la cadena y luego las partes de la cadena que coinciden con cada grupo entre paréntesis en la expresión regular. La desestructuración te permite desempacar fácilmente las partes de este arreglo, ignorando la coincidencia completa si no es necesaria.

+ +
function parseProtocol(url) {
+  const parsedURL = /^(\w+)\:\/\/([^\/]+)\/(.*)$/.exec(url);
+  if (!parsedURL) {
+    return false;
+  }
+  console.log(parsedURL);
+  // ["https://developer.mozilla.org/es/Web/JavaScript",
+      "https", "developer.mozilla.org", "es/Web/JavaScript"]
+
+  const [, protocol, fullhost, fullpath] = parsedURL;
+  return protocol;
+}
+
+console.log(parseProtocol('https://developer.mozilla.org/es/Web/JavaScript'));
+// "https"
+
+ +

Desestructuración de objetos

+ +

Asignación básica

+ +
const user = {
+    id: 42,
+    is_verified: true
+};
+
+const {id, is_verified} = user;
+
+console.log(id); // 42
+console.log(is_verified); // true
+
+ +

Asignación sin declaración

+ +

A una variable se le puede asignar su valor con desestructuración separada de su declaración.

+ +
let a, b;
+
+({a, b} = {a: 1, b: 2});
+ +
+

Notas: los paréntesis (...) alrededor de la declaración de asignación son obligatorios cuando se usa la desestructuración de un objeto literal sin una declaración.

+ +

{a, b} = {a: 1, b: 2} no es una sintaxis independiente válida, debido a que {a, b} en el lado izquierdo se considera un bloque y no un objeto literal.

+ +

Sin embargo, ({a, b} = {a: 1, b: 2}) es válido, al igual que const {a, b} = {a: 1, b: 2}

+ +

tu expresión ( ... ) debe estar precedida por un punto y coma o se puede usar para ejecutar una función en la línea anterior.

+
+ +

Asignar a nuevos nombres de variable

+ +

Una propiedad se puede desempacar de un objeto y asignar a una variable con un nombre diferente al de la propiedad del objeto.

+ +
const o = {p: 42, q: true};
+const {p: foo, q: bar} = o;
+
+console.log(foo); // 42
+console.log(bar); // true
+ +

Aquí, por ejemplo, const {p: foo} = o toma del objeto o la propiedad llamada p y la asigna a una variable local llamada foo.

+ +

Valores predeterminados

+ +

A una variable se le puede asignar un valor predeterminado, en el caso de que el valor desempacado del objeto sea undefined.

+ +
const {a = 10, b = 5} = {a: 3};
+
+console.log(a); // 3
+console.log(b); // 5
+ +

Asignar nombres a nuevas variables y proporcionar valores predeterminados

+ +

Una propiedad puede ser ambas

+ + + +
const {a: aa = 10, b: bb = 5} = {a: 3};
+
+console.log(aa); // 3
+console.log(bb); // 5
+
+ +

Desempacar campos de objetos pasados como parámetro de función

+ +
const user = {
+  id: 42,
+  displayName: 'jdoe',
+  fullName: {
+    firstName: 'John',
+    lastName: 'Doe'
+  }
+};
+
+function userId({id}) {
+  return id;
+}
+
+function whois({displayName, fullName: {firstName: name}}) {
+  return `${displayName} es ${name}`;
+}
+
+console.log(userId(user)); // 42
+console.log(whois(user));  // "jdoe es John"
+ +

Esto desempaca el id, displayName y firstName del objeto user y los imprime.

+ +

Establecer el valor predeterminado de un parámetro de función

+ +
function drawChart({size = 'big', coords = {x: 0, y: 0}, radius = 25} = {}) {
+  console.log(size, coords, radius);
+  // haz un dibujo de gráfico
+}
+
+drawChart({
+  coords: {x: 18, y: 30},
+  radius: 30
+});
+ +
+

En la firma de la función para drawChart anterior, el lado izquierdo desestructurado se asigna a un objeto literal vacío en el lado derecho: {size = 'big', coords = {x: 0, y: 0}, radius = 25} = {}. También podrías haber escrito la función sin la asignación del lado derecho. Sin embargo, si omites la asignación del lado derecho, la función buscará al menos un argumento para ser proporcionado cuando se invoca, mientras que en su forma actual, simplemente puedes llamar a drawChart() sin proporcionar ningún parámetro. El diseño actual es útil si deseas poder llamar a la función sin proporcionar ningún parámetro, el otro puede ser útil cuando deseas asegurarte de que se pase un objeto a la función.

+
+ +

Desestructuración de arreglos y objetos anidados

+ +
const metadata = {
+  title: 'Scratchpad',
+  translations: [
+    {
+      locale: 'de',
+      localization_tags: [],
+      last_edit: '2020-08-29T08:43:37',
+      url: '/de/docs/Tools/Scratchpad',
+      title: 'JavaScript-Umgebung'
+    }
+  ],
+  url: '/es/docs/Tools/Scratchpad'
+};
+
+let {
+  title: englishTitle, // renombrar
+  translations: [
+    {
+       title: localeTitle, // renombrar
+    },
+  ],
+} = metadata;
+
+console.log(englishTitle); // "Scratchpad"
+console.log(localeTitle);  // "JavaScript-Umgebung"
+ +

Iteración "for...of" y desestructuración

+ +
const people = [
+  {
+    name: 'Mike Smith',
+    family: {
+      mother: 'Jane Smith',
+      father: 'Harry Smith',
+      sister: 'Samantha Smith'
+    },
+    age: 35
+  },
+  {
+    name: 'Tom Jones',
+    family: {
+      mother: 'Norah Jones',
+      father: 'Richard Jones',
+      brother: 'Howard Jones'
+    },
+    age: 25
+  }
+];
+
+for (const {name: n, family: {father: f}} of people) {
+  console.log('Nombre: ' + n + ', Padre: ' + f);
+}
+
+// "Nombre: Mike Smith, Padre: Harry Smith"
+// "Nombre: Tom Jones, Padre: Richard Jones"
+
+ +

Nombres de propiedades de objetos calculados y desestructuración

+ +

Los nombres de propiedad calculados, como en un {{jsxref("Operators/Object_initializer", "Objeto literal", "#Computed_property_names", 1)}}, se pueden usar con la desestructuración.

+ +
let key = 'z';
+let {[key]: foo} = {z: 'bar'};
+
+console.log(foo); // "bar"
+
+ +

Rest en la desestructuración de objetos

+ +

La propuesta Propiedades rest/propagación para ECMAScript (etapa 4) agrega la sintaxis {{jsxref("Functions/rest_parameters", "rest", "", 1)}} para desestructurar. Las propiedades de rest recopilan las claves de propiedades enumerables restantes que aún no han sido seleccionadas por el patrón de desestructuración.

+ +
let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40}
+a; // 10
+b; // 20
+rest; // { c: 30, d: 40 }
+ +

Identificador de JavaScript no válido como nombre de propiedad

+ +

La desestructuración se puede utilizar con nombres de propiedad que no son {{Glossary("Identifier", "identificadores")}} válidos en JavaScript proporcionando un identificador alternativo que sea válido.

+ +
const foo = { 'fizz-buzz': true };
+const { 'fizz-buzz': fizzBuzz } = foo;
+
+console.log(fizzBuzz); // "true"
+
+ +

Desestructuración combinada de arreglos y objetos

+ +

La desestructuración de arreglos y objetos se puede combinar. Supongamos que deseas manipular el tercer elemento del siguiente arreglo props, y luego deseas la propiedad name en el objeto, puedes hacer lo siguiente:

+ +
const props = [
+  { id: 1, name: 'Fizz'},
+  { id: 2, name: 'Buzz'},
+  { id: 3, name: 'FizzBuzz'}
+];
+
+const [,, { name }] = props;
+
+console.log(name); // "FizzBuzz"
+
+ +

Se busca la cadena de prototipos al desestructurar el objeto.

+ +

Al deconstruir un objeto, si no se accede a una propiedad en sí misma, continuará buscando a lo largo de la cadena de prototipos.

+ +
let obj = {self: '123'};
+obj.__proto__.prot = '456';
+const {self, prot} = obj;
+// self "123"
+// prot "456" (Acceso a la cadena de prototipos)
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-destructuring-assignment', 'Desestructuración de asignación')}}
+ +

Compatibilidad del navegador

+ +
+ + +

{{Compat("javascript.operators.destructuring")}}

+
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/operators/division/index.html b/files/es/web/javascript/reference/operators/division/index.html new file mode 100644 index 0000000000..d29816e37a --- /dev/null +++ b/files/es/web/javascript/reference/operators/division/index.html @@ -0,0 +1,77 @@ +--- +title: Division (/) +slug: Web/JavaScript/Referencia/Operadores/Division +tags: + - JS + - JavaScript + - Operador de Division + - Operadores + - Referências +translation_of: Web/JavaScript/Reference/Operators/Division +--- +
{{jsSidebar("Operators")}}
+ +

El operador de división (/) produce el cociente de sus operandos donde el operando izquierdo es el dividendo y el operando derecho es el divisor.

+ +
{{EmbedInteractiveExample("pages/js/expressions-division.html")}}
+ +
+ + + +

Sintaxis

+ +
Operador: x / y
+
+ +

Ejemplos

+ +

Division basica

+ +
1 / 2              // 0.5
+
+Math.floor(3 / 2) // 1
+
+1.0 / 2.0         // 0.5
+
+ +

Division por cero

+ +
2.0 / 0     // Retorna Infinity
+
+2.0 / 0.0   // Retorna Infinity, Dado que 0.0 === 0
+
+2.0 / -0.0  // Retorna -Infinity
+ +

Especificaciones

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-multiplicative-operators', 'Division operator')}}
+ +

Compatibilidad con Navegadores

+ + + +

{{Compat("javascript.operators.division")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/operators/equality/index.html b/files/es/web/javascript/reference/operators/equality/index.html new file mode 100644 index 0000000000..c60efcaada --- /dev/null +++ b/files/es/web/javascript/reference/operators/equality/index.html @@ -0,0 +1,129 @@ +--- +title: Comparación (==) +slug: Web/JavaScript/Referencia/Operadores/Comparacion +tags: + - JS + - JavaScript + - Operador de comparacion + - Operadores + - Referências +translation_of: Web/JavaScript/Reference/Operators/Equality +--- +
{{jsSidebar("Operators")}}
+ +

El operador de comparacion  (==) comprueba si sus dos operandos son iguales y devuelve un resultado booleano. A diferencia del operador de igualdad estricta (===), es que este convierte y compara operandos que son de diferentes tipos.

+ +
{{EmbedInteractiveExample("pages/js/expressions-equality.html")}}
+ + + +

Sintaxis

+ +
x == y
+
+ +

Descripción

+ +

Los operadores de igualdad (==y !=) Utilizan el algoritmo de comparación de igualdad abstracta para comparar dos operandos. Esto se puede resumir a grandes rasgos como:

+ + + +

La diferencia más notable entre este operador y el operador de igualdad estricta (===) es que el operador de igualdad estricta no realiza la conversión de tipos. 

+ +

Ejemplos

+ +

Comparación sin conversión de tipo

+ +
1 == 1;              // true
+"Hola" == "Hola";  // true
+ +

Comparación con conversión de tipos

+ +
"1" ==  1;            // true
+1 == "1";             // true
+0 == false;           // true
+0 == null;            // false
+0 == undefined;       // false
+0 == !!null;          // true, Operador Logico NOT
+0 == !!undefined;     // true, Operador Logico NOT
+null == undefined;    // true
+
+const number1 = new Number(3);
+const number2 = new Number(3);
+number1 == 3;         // true
+number1 == number2;   // false
+ +

Comparación de objetos

+ +
const object1 = {"key": "value"}
+const object2 = {"key": "value"};
+
+object1 == object2 // false
+object2 == object2 // true
+ +

Comparar String y objetos String

+ +

Tenga en cuenta que las cadenas construidas con new String() son objetos. Si compara uno de estos con un String literal, el objeto String se convertirá en un String literal y se comparará el contenido. Sin embargo, si ambos operandos son objetos de tipo String, entonces se comparan como objetos y deben hacer referencia al mismo objeto para que la comparación sea exitosa:

+ +
const string1 = "Hola";
+const string2 = String("Hola");
+const string3 = new String("Hola");
+const string4 = new String("Hola");
+
+console.log(string1 == string2); // true
+console.log(string1 == string3); // true
+console.log(string2 == string3); // true
+console.log(string3 == string4); // false
+console.log(string4 == string4); // true
+ +

Comparación de fechas y cadenas

+ +
const d = new Date('December 17, 1995 03:24:00');
+const s = d.toString(); // Por ejemplo: "Sun Dec 17 1995 03:24:00 GMT-0800 (Hora estándar del Pacífico)"
+console.log(d == s);    //true
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificaciones
{{SpecName('ESDraft', '#sec-equality-operators', 'Equality operators')}}
+ +

Compatibilidad con Navegadores

+ + + +

{{Compat("javascript.operators.equality")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/operators/function/index.html b/files/es/web/javascript/reference/operators/function/index.html new file mode 100644 index 0000000000..d5739239b2 --- /dev/null +++ b/files/es/web/javascript/reference/operators/function/index.html @@ -0,0 +1,73 @@ +--- +title: function +slug: Web/JavaScript/Referencia/Operadores/function +tags: + - Function + - JavaScript + - Operator + - Primary Expressions +translation_of: Web/JavaScript/Reference/Operators/function +--- +
{{jsSidebar("Operators")}}
+ +

Resumen

+ +

El operador function define una función dentro de una expresión.

+ +

Sintaxis

+ +
function [name]([param1, param2, ..., paramN]) {
+   statements
+}
+
+ +

Parámetros

+ +
+
name
+
El nombre de la función. Puede ser omitido, en cuyo caso la función es anonymous. El nombre sólo es local para el cuerpo de la función.
+
+ +
+
paramN
+
El nombre de un argumento que será pasado a la función. Una función puede tener hasta 255 argumentos.
+
+ +
+
statements
+
Las declaraciones que conforman el cuerpo de la función.
+
+ +

Descripción

+ +

La expresión de una función es muy similar y tiene casi la misma sintaxis que la declaración de una función (véase {{jsxref("Sentencias/function", "function")}} para más detalles). Véase Funciones para ver más información sobre las diferencias  entre declaraciones de funciones y expresiones de funciones.

+ +

Ejemplos

+ +

El siguiente ejemplo define una función sin nombre y se le asigna a la variable x. La función devuelve como resultado el cuadrado de su argumento:

+ +
var x = function(y) {
+   return y * y;
+};
+
+ +

Expresión de función nombrada

+ +

Si quiere referirse a la función actual dentro del cuerpo de la función, debe crear una expresión de función nombrada. Luego, este nombre será local solo para el cuerpo de la función (alcance). Esto también evita usar la propiedad no estándar {{jsxref("Funciones/arguments/callee", "arguments.callee")}}.

+ +
var math = {
+  'factorial': function factorial(n) {
+    if (n <= 1)
+      return 1;
+    return n * factorial(n - 1);
+  }
+};
+
+ +

Consulte también

+ + diff --git a/files/es/web/javascript/reference/operators/function_star_/index.html b/files/es/web/javascript/reference/operators/function_star_/index.html new file mode 100644 index 0000000000..9c38872b7e --- /dev/null +++ b/files/es/web/javascript/reference/operators/function_star_/index.html @@ -0,0 +1,91 @@ +--- +title: expresión function* +slug: Web/JavaScript/Referencia/Operadores/function* +tags: + - ECMAScript 2015 + - Expresión Primaria + - Function + - Iterator + - JavaScript + - Operator +translation_of: Web/JavaScript/Reference/Operators/function* +--- +
{{jsSidebar("Operators")}}
+ +

La palabra clave function* puede ser utilizada para definir una función generadora en una expresión.

+ +
{{EmbedInteractiveExample("pages/js/expressions-functionasteriskexpression.html")}}
+ + + +

Sintaxis

+ +
function* [nombre]([param1[, param2[, ..., paramN]]]) {
+   sentencias
+}
+ +

Parámetros

+ +
+
nombre
+
Nombre de la función. Puede ser omitido, en cuyo caso la funcipón es anínima. El nombre sólo es local al cuerpo de la función.
+
paramN
+
Nombre de un parámetro a ser pasado a la función. Una función puede tener hasta 255 argumentos.
+
sentencias
+
Sentencias que componen el cuerpo de la función.
+
+ +

Descripción

+ +

Una expresión function* es muy similar y tiene casi la misma sintaxis que una {{jsxref('Statements/function*', 'function* statement')}}. La principal diferencia entre una expresión function* y una sentencia function* es el nombre de la función, que en expresiones function* puede ser omitido para creaar funciones generadoras anónimas. Para más información vea también el capítulo acerca de funciones.

+ +

Ejemplos

+ +

El siguiente ejemplo define una función generadora sin nombre y la asigna a x. La función produce el cuadrado de su argumento:

+ +
var x = function*(y) {
+   yield y * y;
+};
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#', 'function*')}}{{Spec2('ES2015')}}Definición Inicial.
{{SpecName('ESDraft', '#', 'function*')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ + + +

{{Compat("javascript.operators.function_star")}}

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/operators/grouping/index.html b/files/es/web/javascript/reference/operators/grouping/index.html new file mode 100644 index 0000000000..ec78e8518f --- /dev/null +++ b/files/es/web/javascript/reference/operators/grouping/index.html @@ -0,0 +1,128 @@ +--- +title: Operador de agrupación +slug: Web/JavaScript/Referencia/Operadores/Grouping +tags: + - Expresiones primarias + - JavaScript + - Operador +translation_of: Web/JavaScript/Reference/Operators/Grouping +--- +
{{jsSidebar("Operators")}}
+ +

El operador de agrupación ( ) controla la precedencia de las expresiones a evaluar.

+ +

Sintaxis

+ +
 ( )
+ +

Descripción

+ +

El operador de agrupación consiste en un par de paréntesis alrededor de la expresión (o sub-expresión) que sobrescribe el comportamiento por defecto de la precedencia de operadores, lo que causa que expresiones con menor precedencia puedan ser evaluadas antes que expresiones con una mayor precedencia.

+ +

Ejemplos

+ +

Sobrescribir la precedencia de operadores aritméticos por defecto para que se evalúe primero la adición y luego la multiplicación.

+ +
var a = 1;
+var b = 2;
+var c = 3;
+
+// precedencia por defecto
+a + b * c     // 7
+// es evaluada por defecto como:
+a + (b * c)   // 7
+
+// ahora se sobrescribe la precedencia
+// para que la adición se evalúe antes que la multiplicación
+(a + b) * c   // 9
+
+// que es equivalente a:
+a * c + b * c // 9
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
ECMAScript 1st Edition.EstándarDefinición inicial. Implementado en JavaScript 1.0
{{SpecName('ES5.1', '#sec-11.1.6', 'The Grouping Operator')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-grouping-operator', 'The Grouping Operator')}}{{Spec2('ES6')}} 
+ +

Compatibilidad en navegadores

+ +

{{CompatibilityTable}}

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

Temas relacionados

+ + diff --git a/files/es/web/javascript/reference/operators/in/index.html b/files/es/web/javascript/reference/operators/in/index.html new file mode 100644 index 0000000000..051056a25f --- /dev/null +++ b/files/es/web/javascript/reference/operators/in/index.html @@ -0,0 +1,139 @@ +--- +title: in +slug: Web/JavaScript/Referencia/Operadores/in +tags: + - JavaScript + - Operator + - Relational Operators +translation_of: Web/JavaScript/Reference/Operators/in +--- +
{{jsSidebar("Operators")}}
+ +
El operador in devuelve true si la propiedad especificada está en el objeto especificado o su prototipo.
+ +

Sintaxis

+ +
prop in object
+ +

Parámetros

+ +
+
prop
+
Una cadena o expresión númerica que representa el nombre de una propiedad o el índice de un array (lo que no sea un símbolo se forzará a string).
+
+ +
+
object
+
El objeto (o su cadena de prototipo) sobre el que comprobar si contiene la propiedad con el nombre especificado.
+
+ +

Descripción

+ +

Los siguientes ejemplos muestran algunos de los usos del operador in.

+ +
// Arrays
+var arboles = new Array("secoya", "pino", "cedro", "roble", "arce");
+0 in arboles        // devuelve true
+3 in arboles        // devuelve true
+6 in arboles        // devuelve false
+"pino" in arboles   // devuelve false (debe especificar el número de índice,
+                    // no el valor del índice)
+"length" in arboles // devuelve true (length es una propiedad de Array)
+
+// Objetos predefinidos
+"PI" in Math        // devuelve true
+
+// Objetos personalizados
+var micoche = {marca: "Honda", modelo: "Accord", año: 1998};
+"marca" in micoche  // devuelve true
+"modelo" in micoche // devuelve true
+
+ +

Debe especificar un objeto en el lado derecho del operador in. Por ejemplo, puede especificar una cadena creada con el constructor String , pero no puede especificar una cadena literal.

+ +
var color1 = new String("verde");
+"length" in color1 // devuelve true
+
+var color2 = "coral";
+"length" in color2 // genera un error (color2 no es un objeto String)
+
+ +

Usando in con propiedades eliminadas o no definidas

+ +

Si se elimina una propiedad con el operador {{jsxref("Operadores/delete", "delete")}}, el operador in devuelve false para esa propiedad.

+ +
var micoche= {marca: "Honda", modelo: "Accord", año: 1998};
+delete micoche.marca;
+"marca" in micoche;  // devuelve false
+
+var arboles = new Array("secoya", "pino", "cedro", "roble", "arce");
+delete arboles[3];
+3 in arboles; // devuelve false
+
+ +

Si se cambia una propiedad a {{jsxref("Objetos_globales/undefined", "undefined")}} pero no se elimina, el operador in devuelve true para esa propiedad.

+ +
var micoche = {marca: "Honda", modelo: "Accord", año: 1998};
+micoche.marca = undefined;
+"marca" in micoche;  // devuelve true
+
+ +
var arboles = new Array("secayo", "pino", "cedro", "roble", "arce");
+arboles[3] = undefined;
+3 in arboles; // devuelve true
+
+ +

Propiedades heredadas

+ +

El operador in devuelve true para propiedades en la cadena del prototipo.

+ +
"toString" in {}; // devuelve true
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ESDraft', '#sec-relational-operators', 'Relational Operators')}}{{Spec2('ESDraft')}} 
{{SpecName('ES2015', '#sec-relational-operators', 'Relational Operators')}}{{Spec2('ES2015')}} 
{{SpecName('ES5.1', '#sec-11.8.7', 'The in Operator')}}{{Spec2('ES5.1')}} 
{{SpecName('ES3', '#sec-11.8.7', 'The in Operator')}}{{Spec2('ES3')}}Definición inicial. Implementado en JavaScript 1.4.
+ +

Compatibilidad en navegadores

+ + + +

{{Compat("javascript.operators.in")}}

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/operators/index.html b/files/es/web/javascript/reference/operators/index.html new file mode 100644 index 0000000000..dca4964faa --- /dev/null +++ b/files/es/web/javascript/reference/operators/index.html @@ -0,0 +1,280 @@ +--- +title: Expresiones y operadores +slug: Web/JavaScript/Referencia/Operadores +tags: + - Descripción + - JavaScript + - Operadores + - Operators + - Referencia +translation_of: Web/JavaScript/Reference/Operators +--- +
{{jsSidebar("Operators", "Operadores")}}
+ +

Este capítulo documenta todos los operadores, expresiones y palabras clave del lenguaje JavaScript.

+ +

Expresiones y operadores por categoría

+ +

Para obtener una lista alfabética, consulta la barra lateral de la izquierda.

+ +

Expresiones primarias

+ +

Palabras clave básicas y expresiones generales en JavaScript.

+ +
+
{{jsxref("Operators/this", "this")}}
+
La palabra clave this se refiere a una propiedad especial de un contexto de ejecución.
+
{{jsxref("Operators/function", "function")}}
+
La palabra clave function define una expresión de función.
+
{{jsxref("Operators/class", "class")}}
+
La palabra clave class define una expresión de clase.
+
{{jsxref("Operators/function", "function")}}
+
La palabra clave function* define una expresión de función generadora.
+
{{jsxref("Operators/yield", "yield")}}
+
Pausar y reanudar una función generadora.
+
{{jsxref("Operators/yield*", "yield*")}}
+
Delegar a otra función generadora u objeto iterable.
+
{{jsxref("Operators/async_function", "async function")}}
+
La async function define una expresión de función asíncrona.
+
{{jsxref("Operators/await", "await")}}
+
Pausa y reanuda una función asíncrona y espera la resolución/rechazo de la promesa.
+
{{jsxref("Global_Objects/Array", "[]")}}
+
Iniciador de arreglo/sintaxis literal.
+
{{jsxref("Operators/Object_initializer", "{}")}}
+
Iniciador de objeto/sintaxis literal.
+
{{jsxref("Global_Objects/RegExp", "/ab+c/i")}}
+
Sintaxis de expresión regular literal.
+
{{jsxref("Operators/Grouping", "( )")}}
+
Operador de agrupación.
+
+ +

Expresiones del lado izquierdo

+ +

Los valores de la izquierda son el destino de una asignación.

+ +
+
{{jsxref("Operators/Property_accessors", "Propiedad accessors", "", 1)}}
+
Los operadores miembro proporcionan acceso a una propiedad o método de un objeto
+ (object.property y object["property"]).
+
{{jsxref("Operators/new", "new")}}
+
El operador new crea una instancia auxiliado por un constructor.
+
{{jsxref("Operators/new%2Etarget", "new.target")}}
+
En los constructores, new.target se refiere al constructor que fue invocado por {{jsxref("Operators/new", "new")}}.
+
{{jsxref("Operators/super", "super")}}
+
La palabra clave super llama al constructor padre.
+
{{jsxref("Operators/Spread_syntax", "...obj")}}
+
La sintaxis de extensión permite expandir una expresión en lugares donde se esperan múltiples argumentos (para llamadas a funciones) o múltiples elementos (para arreglos literales).
+
+ +

Incremento y decremento

+ +

Operadores de incremento sufijo/prefijo y decremento sufijo/prefijo.

+ +
+
{{jsxref("Operators/Increment", "A++")}}
+
Operador de incremento sufijo.
+
{{jsxref("Operators/Decrement", "A--")}}
+
Operador de incremento sufijo.
+
{{jsxref("Operators/Increment", "A++")}}
+
Operador de incremento prefijo.
+
{{jsxref("Operators/Decrement", "--A")}}
+
Operador de decremento prefijo.
+
+ +

Operadores unarios

+ +

Una operación unaria es una operación con un solo operando.

+ +
+
{{jsxref("Operators/delete", "delete")}}
+
El operador delete elimina una propiedad de un objeto.
+
{{jsxref("Operators/void", "void")}}
+
El operador void descarta el valor de retorno de una expresión.
+
{{jsxref("Operators/typeof", "typeof")}}
+
El operador typeof determina el tipo de un objeto dado.
+
{{jsxref("Operators/Unary_plus", "+")}}
+
El operador unario más convierte su operando al tipo Number.
+
{{jsxref("Operators/Unary_negation", "-")}}
+
El operador unario de negación convierte su operando al tipo Number y luego lo niega.
+
{{jsxref("Operators/Bitwise_NOT", "~")}}
+
Operador NOT bit a bit.
+
{{jsxref("Operators/Logical_NOT", "!")}}
+
Operador NOT lógico.
+
+ +

Operadores aritméticos

+ +

Los operadores aritméticos toman valores numéricos (ya sean literales o variables) como sus operandos y devuelven un solo valor numérico.

+ +
+
{{jsxref("Operators/Addition", "+")}}
+
Operador de adición o suma.
+
{{jsxref("Operators/Subtraction", "-")}}
+
Operador de sustracción o resta.
+
{{jsxref("Operators/Division", "/")}}
+
Operador de división.
+
{{jsxref("Operators/Multiplication", "*")}}
+
Operador de multiplicación.
+
{{jsxref("Operators/Remainder", "%")}}
+
Operador de residuo.
+
{{jsxref("Operators/Exponentiation", "**")}}
+
Operador de exponenciación.
+
+ +

Operadores relacionales

+ +

Un operador de comparación compara sus operandos y devuelve un valor Boolean basado en si la comparación es verdadera o no.

+ +
+
{{jsxref("Operators/in", "in")}}
+
El operador in determina si un objeto tiene una determinada propiedad.
+
{{jsxref("Operators/instanceof", "instanceof")}}
+
El operador instanceof determina si un objeto es una instancia de otro objeto.
+
{{jsxref("Operators/Less_than", "<")}}
+
Operador menor que.
+
{{jsxref("Operators/Greater_than", ">")}}
+
Operador mayor que.
+
{{jsxref("Operators/Less_than_or_equal", "<=")}}
+
Operador menor o igual a.
+
{{jsxref("Operators/Greater_than_or_equal", ">=")}}
+
Operador mayor o igual a.
+
+ +
+

Nota: => no es un operador, sino la notación para {{jsxref("Functions/Arrow_functions", "Funciones de flecha")}}.

+
+ +

Operadores de igualdad

+ +

El resultado de evaluar un operador de igualdad siempre es de tipo Boolean basado en si la comparación es verdadera.

+ +
+
{{jsxref("Operators/Equality", "==")}}
+
Operador de igualdad.
+
{{jsxref("Operators/Inequality", "!=")}}
+
Operador de desigualdad.
+
{{jsxref("Operators/Strict_equality", "===")}}
+
Operador de igualdad estricta.
+
{{jsxref("Operators/Strict_inequality", "!==")}}
+
Operador de desigualdad estricta.
+
+ +

Operadores de desplazamiento de bits

+ +

Operaciones para cambiar todos los bits del operando.

+ +
+
{{jsxref("Operators/Left_shift", "<<")}}
+
Operador de desplazamiento bit a bit a la izquierda.
+
{{jsxref("Operators/Right_shift", ">>")}}
+
Operador de desplazamiento bit a bit a la derecha.
+
{{jsxref("Operators/Unsigned_right_shift", ">>>")}}
+
Operador de desplazamiento bit a bit a la derecha sin signo.
+
+ +

Operadores binarios bit a bit

+ +

Los operadores bit a bit tratan a sus operandos como un conjunto de 32 bits (ceros y unos) y devuelven valores numéricos estándar de JavaScript.

+ +
+
{{jsxref("Operators/Bitwise_AND", "&")}}
+
AND bit a bit.
+
{{jsxref("Operators/Bitwise_OR", "|")}}
+
OR bit a bit.
+
{{jsxref("Operators/Bitwise_XOR", "^")}}
+
XOR bit a bit.
+
+ +

Operadores lógicos binarios

+ +

Los operadores lógicos se utilizan normalmente con valores booleanos (lógicos); cuando lo son, devuelven un valor booleano.

+ +
+
{{jsxref("Operators/Logical_AND", "&&")}}
+
AND lógico.
+
{{jsxref("Operators/Logical_OR", "||")}}
+
OR lógico.
+
+ +

Operador condicional (ternario)

+ +
+
{{jsxref("Operators/Conditional_Operator", "(condition ? ifTrue : ifFalse)")}}
+
+

El operador condicional devuelve uno de dos valores según el valor lógico de la condición.

+
+
+ +

Operadores de asignación

+ +

Un operador de asignación asigna un valor a su operando izquierdo basándose en el valor de su operando derecho.

+ +
+
{{jsxref("Operators/Assignment", "=")}}
+
Operador de asignación.
+
{{jsxref("Operators/Multiplication_assignment", "*=")}}
+
Asignación de multiplicación.
+
{{jsxref("Operators/Division_assignment", "/=")}}
+
Asignación de división.
+
{{jsxref("Operators/Remainder_assignment", "%=")}}
+
Asignación de residuo.
+
{{jsxref("Operators/Addition_assignment", "+=")}}
+
Asignación de suma.
+
{{jsxref("Operators/Subtraction_assignment", "-=")}}
+
Asignación de sustracción
+
{{jsxref("Operators/Left_shift_assignment", "<<=")}}
+
Asignación de desplazamiento a la izquierda.
+
{{jsxref("Operators/Right_shift_assignment", ">>=")}}
+
Asignación de desplazamiento a la derecha.
+
{{jsxref("Operators/Unsigned_right_shift_assignment", ">>>=")}}
+
Asignación de desplazamiento a la derecha sin signo.
+
{{jsxref("Operators/Bitwise_AND_assignment", "&=")}}
+
Asignación de AND bit a bit.
+
{{jsxref("Operators/Bitwise_XOR_assignment", "^=")}}
+
Asignación de XOR bit a bit.
+
{{jsxref("Operators/Bitwise_OR_assignment", "|=")}}
+
Asignación de OR bit a bit.
+
{{jsxref("Operators/Logical_AND_assignment", "&&=")}}
+
Asignación de AND lógico.
+
{{jsxref("Operators/Logical_OR_assignment", "||=")}}
+
Asignación de OR lógico.
+
{{jsxref("Operators/Logical_nullish_assignment", "??=")}}
+
Asignación de anulación lógica.
+
{{jsxref("Operators/Destructuring_assignment", "[a, b] = [1, 2]")}}
+ {{jsxref("Operators/Destructuring_assignment", "{a, b} = {a:1, b:2}")}}
+
+

La desestructuración te permite asignar las propiedades de un arreglo u objeto a variables utilizando una sintaxis que se parece a los arreglos u objetos literales.

+
+
+ +

Operador coma

+ +
+
{{jsxref("Operators/Comma_Operator", ",")}}
+
El operador coma permite evaluar múltiples expresiones en una sola declaración y devuelve el resultado de la última expresión.
+
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-ecmascript-language-expressions', 'ECMAScript Language: Expressions')}}
+ +

Compatibilidad del navegador

+ + + +

{{Compat("javascript.operators")}}

+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/operators/instanceof/index.html b/files/es/web/javascript/reference/operators/instanceof/index.html new file mode 100644 index 0000000000..3b9a45162d --- /dev/null +++ b/files/es/web/javascript/reference/operators/instanceof/index.html @@ -0,0 +1,88 @@ +--- +title: instanceof +slug: Web/JavaScript/Referencia/Operadores/instanceof +tags: + - JavaScript + - Operator + - Relational Operators +translation_of: Web/JavaScript/Reference/Operators/instanceof +--- +
{{jsSidebar("Operators")}}
+ +

Resumen

+ +

El operador instanceof verifica si un objeto en su cadena de prototipos contiene la propiedad prototype de un constructor.

+ +

Sintaxis

+ +
objeto instanceof constructor
+ +

Parámetros

+ +
+
objeto
+
Objeto a verificar.
+
+ +
+
constructor
+
Función contra la que se hará la verificación.
+
+ +

Descripción

+ +

Utilice instanceof cuando necesite confirmar el tipo de un objeto en tiempo de ejecución. Por ejemplo, cuando controle excepciones, puede recurrir a diferentes códigos de manipulación de excepciones dependiendo del tipo de excepción tomada.

+ +

Debe especificar un objeto en el lado derecho del operador instanceof. Por ejemplo, puede especificar una cadena creada con el constructor String, pero no puede especificar un literal de cadena.

+ +
color1=new String("verde")
+color1 instanceof String // devuelve verdadero (true)
+color2="coral"
+color2 instanceof String // devuelve falso (color2 no es un objeto String)
+
+ +

Ejemplos

+ +

También vea los ejemplos de {{jsxref("Sentencias/throw", "throw")}}.

+ +

Ejemplo: Determinando si elDia es un objeto Date

+ +

El siguiente código utiliza instanceof para determinar si elDia es un objeto Date. Debido a que elDia es un objeto Date, las instrucciones de la sentencia if se ejecutan.

+ +
elDia = new Date(1995, 12, 17)
+if (elDia instanceof Date) {
+   // instrucciones a ejecutar
+}
+
+ +

Ejemplo: Demostrando que String y Date son del tipo Object

+ +

El siguiente código utiliza instanceof para demostrar que los objetos String y Date son también del tipo Object (éstos se derivan de Object).

+ +
miCadena = new String()
+miFecha = new Date()
+
+miCadena instanceof String // devuelve true
+miCadena instanceof Object // devuelve true
+miCadena instanceof Date   // devuelve false
+
+miFecha instanceof Date     // devuelve true
+miFecha instanceof Object   // devuelve true
+miFecha instanceof String   // devuelve false
+
+ +

Ejemplo: Demostrando que miCoche es del tipo Coche y del tipo Object

+ +

El siguiente código crea un objeto del tipo Coche y una instancia de ese tipo de objeto, miCoche. El operador instanceof demuestra que el objeto miCoche es del tipo Coche y del tipo Object.

+ +
function Coche(fabricante, modelo, ejercicio) {
+   this.fabricante = fabricante
+   this.modelo = modelo
+   this.ejercicio= ejercicio
+}
+miCoche = new Coche("Honda", "Accord", 1998)
+a = miCoche instanceof Coche // devuelve verdadero (true)
+b = miCoche instanceof Object // devuelve verdadero (true)
+
+ +
 
diff --git a/files/es/web/javascript/reference/operators/new.target/index.html b/files/es/web/javascript/reference/operators/new.target/index.html new file mode 100644 index 0000000000..0faa0f0878 --- /dev/null +++ b/files/es/web/javascript/reference/operators/new.target/index.html @@ -0,0 +1,139 @@ +--- +title: new.target +slug: Web/JavaScript/Referencia/Operadores/new.target +tags: + - Clases + - ECMAScript6 + - JavaScript + - Referencia +translation_of: Web/JavaScript/Reference/Operators/new.target +--- +
{{JSSidebar("Operators")}}
+ +

La propiedad new.target te permite detectar si una función o constructor fue llamado usando el operador new. En constructores y funciones instanciadas con el operador new, new.target devuelve una referencia al constructor o función. En llamadas a funciones normales, new.target es {{jsxref("undefined")}}.

+ +

Sintaxis

+ +
new.target
+ +

Descripción

+ +

La sintaxis new.target consiste en el keyword "new", un punto, y el nombre de propiedad "target". Normalmente "new." sirve como contexto para el acceso a la propiedad, pero aquí, "new." no es realmente un objeto. En llamadas a constructores, sin embargo, new.target hace referencia al constructor invocado por new por lo que "new." se convierte en un contexto virtual.

+ +

La propiedad new.target es una meta propiedad que está disponible para todas las funciones. En funciones flecha, new.target se refiere al new.target de la función que la contiene.

+ +

Ejemplos

+ +

new.target en llamadas a funciones

+ +

En llamadas a funciones normales (en contraposición a llamadas a constructores), new.target es {{jsxref("undefined")}}. Esto te permite detectar si la función fue llamada con new como constructor.

+ +
function Foo() {
+  if (!new.target) throw 'Foo() debe ser llamado con new';
+  console.log('Foo instanciado con new');
+}
+
+Foo(); // Lanza "Foo() debe ser llamado con new"
+new Foo(); // escribe en el log "Foo instanciado con new"
+
+ +

new.target en constructores

+ +

En constructores de clase, new.target hace referencia al constructor que fue directamente invocado por new. Este también es el caso si el constructor está en una clase padre y fue delegado desdes el constructor hijo.

+ +
class A {
+  constructor() {
+    console.log(new.target.name);
+  }
+}
+
+class B extends A { constructor() { super(); } }
+
+var a = new A(); // escribe en el log "A"
+var b = new B(); // escribe en el log "B"
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstatusComentario
{{SpecName('ES2015', '#sec-built-in-function-objects', 'Built-in Function Objects')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-built-in-function-objects', 'Built-in Function Objects')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad en navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(46.0)}}{{CompatGeckoDesktop(41)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}{{CompatChrome(46.0)}}{{CompatGeckoMobile(41)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatChrome(46.0)}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/operators/new/index.html b/files/es/web/javascript/reference/operators/new/index.html new file mode 100644 index 0000000000..4635b12402 --- /dev/null +++ b/files/es/web/javascript/reference/operators/new/index.html @@ -0,0 +1,179 @@ +--- +title: Operador new +slug: Web/JavaScript/Referencia/Operadores/new +tags: + - Expresiones del lado izquierdo + - JavaScript + - Left-hand-side expressions + - Operador + - Operator + - Referencia +translation_of: Web/JavaScript/Reference/Operators/new +--- +
{{jsSidebar("Operators", "Operadores")}}
+ +

El operador new permite a los desarrolladores crear una instancia de un tipo de objeto definido por el usuario o de uno de los tipos de objeto integrados que tiene un función constructora.

+ +
{{EmbedInteractiveExample("pages/js/expressions-newoperator.html")}}
+ +

Sintaxis

+ +
new constructor[([arguments])]
+ +

Parámetros

+ +
+
constructor
+
Una clase o función que especifica el tipo de instancia del objeto.
+
+ +
+
arguments
+
Una lista de valores con los que se llamará al constructor.
+
+ +

Descripción

+ +

La palabra clave new hace lo siguiente:

+ +
    +
  1. Crea un objeto JavaScript simple y en blanco;
  2. +
  3. Vincula (establece el constructor de) este objeto a otro objeto;
  4. +
  5. Pasa el objeto recién creado del Paso 1 como el contexto this;
  6. +
  7. Devuelve this si la función no devuelve un objeto.
  8. +
+ +

La creación de un objeto definido por el usuario requiere dos pasos:

+ +
    +
  1. Defina el tipo de objeto escribiendo una función.
  2. +
  3. Crea una instancia del objeto con new.
  4. +
+ +

Para definir un tipo de objeto, crea una función para el tipo de objeto que especifique su nombre y propiedades. Un objeto puede tener una propiedad que en sí misma es otro objeto. Ve los siguientes ejemplos.

+ +

Cuando se ejecuta el código new Foo(...), sucede lo siguiente:

+ +
    +
  1. Se crea un nuevo objeto, heredado de Foo.prototype.
  2. +
  3. La función constructora Foo se llama con los argumentos especificados y con {{JSxRef("Operators/this", "this")}} vinculado al objeto recién creado. new Foo es equivalente a new Foo(), es decir, si no se especifica una lista de argumentos, Foo se llama sin argumentos.
  4. +
  5. El objeto (no nulo, false, 3.1415 u otros tipos primitivos) devuelto por la función constructora se convierte en el resultado de toda la expresión new. Si la función constructora no devuelve explícitamente un objeto, en su lugar se utiliza el objeto creado en el paso 1. (Normalmente, los constructores no devuelven un valor, pero pueden elegir hacerlo si quieren redefinir el proceso normal de creación de objetos).
  6. +
+ +

Siempre puedes agregar una propiedad a un objeto definido previamente. Por ejemplo, la instrucción car1.color = "black" agrega una propiedad color a car1 y le asigna un valor de "black". Sin embargo, esto no afecta a ningún otro objeto. Para agregar la nueva propiedad a todos los objetos del mismo tipo, debes agregar la propiedad a la definición del tipo de objeto Car.

+ +

Puedes agregar una propiedad compartida a un tipo de objeto definido previamente mediante la propiedad {{JSxRef("Global_Objects/Function/prototype", "Function.prototype")}}. Esto define una propiedad que comparten todos los objetos creados con esa función, en lugar de solo una instancia del tipo de objeto. El siguiente código agrega una propiedad de color con el valor "color original" a todos los objetos de tipo Car, y luego redefine ese valor con la cadena "black" solo en la instancia car1 del objeto. Para obtener más información, consulta {{JSxRef("Global_Objects/Function/prototype", "prototype")}}.

+ +
function Car() {}
+car1 = new Car();
+car2 = new Car();
+
+console.log(car1.color);    // undefined
+
+Car.prototype.color = 'color original';
+console.log(car1.color);    // 'color original'
+
+car1.color = 'black';
+console.log(car1.color);    // 'black'
+
+console.log(Object.getPrototypeOf(car1).color); // 'color original'
+console.log(Object.getPrototypeOf(car2).color); // 'color original'
+console.log(car1.color);   // 'black'
+console.log(car2.color);   // 'color original'
+
+ +
+

Si no escribiste el operador new, la función constructor se invocará como cualquier función normal, sin crear un objeto. En este caso, el valor de this también es diferente.

+
+ +

Ejemplos

+ +

Tipo de objeto e instancia de objeto

+ +

Supongamos que deseas crear un tipo de objeto para cars. Quieres que este tipo de objeto se llame Car, y quieres que tenga propiedades para marca, modelo y año (make, model y year en inglés respectivamente). Para ello, podrías escribir la siguiente función:

+ +
function Car(make, model, year) {
+  this.make = make;
+  this.model = model;
+  this.year = year;
+}
+
+ +

Ahora puedes crear un objeto llamado myCar de la siguiente manera:

+ +
var myCar = new Car('Eagle', 'Talon TSi', 1993);
+
+ +

Esta declaración crea myCar y le asigna los valores especificados para sus propiedades. Entonces el valor de myCar.make es la cadena "Eagle", myCar.year es el entero 1993, y así sucesivamente.

+ +

Puedes crear cualquier número de objetos car mediante llamadas a new. Por ejemplo:

+ +
var kensCar = new Car('Nissan', '300ZX', 1992);
+
+ +

Propiedad del objeto que en sí mismo es otro objeto

+ +

Supongamos que defines un objeto llamado Person de la siguiente manera:

+ +
function Person(name, age, sex) {
+  this.name = name;
+  this.age = age;
+  this.sex = sex;
+}
+
+ +

Y luego creas una instancia de dos nuevos objetos Person de la siguiente manera:

+ +
var rand = new Person('Rand McNally', 33, 'M');
+var ken = new Person('Ken Jones', 39, 'M');
+
+ +

Luego, puedes reescribir la definición de Car para incluir una propiedad para owner (propietario en español) que tome un objeto Person, de la siguiente manera:

+ +
function Car(make, model, year, owner) {
+  this.make = make;
+  this.model = model;
+  this.year = year;
+  this.owner = owner;
+}
+
+ +

Para crear instancias de los nuevos objetos, utiliza lo siguiente:

+ +
var car1 = new Car('Eagle', 'Talon TSi', 1993, rand);
+var car2 = new Car('Nissan', '300ZX', 1992, ken);
+
+ +

En lugar de pasar una cadena literal o un valor entero al crear los nuevos objetos, las declaraciones anteriores pasan los objetos rand y ken como parámetros para los propietarios. Para conocer el nombre del propietario de car2, puedes acceder a la siguiente propiedad:

+ +
car2.owner.name
+
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-new-operator', 'El operador new')}}
+ +

Compatibilidad del navegador

+ + + +

{{Compat("javascript.operators.new")}}

+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/operators/operator_precedence/index.html b/files/es/web/javascript/reference/operators/operator_precedence/index.html new file mode 100644 index 0000000000..2ff0464afd --- /dev/null +++ b/files/es/web/javascript/reference/operators/operator_precedence/index.html @@ -0,0 +1,297 @@ +--- +title: Precedencia de operadores +slug: Web/JavaScript/Referencia/Operadores/Operator_Precedence +tags: + - JavaScript + - Operator + - operator details + - operator precedence +translation_of: Web/JavaScript/Reference/Operators/Operator_Precedence +--- +
{{jsSidebar("Operators")}}
+ +

Sumario

+ +

La precedencia de operadores determina el orden en el cual los operadores son evaluados. Los operadores con mayor precedencia son evaluados primero.

+ +

Ejemplo:

+ +
3 + 4 * 5 // retorna 23
+
+ +

El operador de multiplicación ("*") tiene una precedencia mas alta que el operador de suma ("+") y por eso sera evaluado primero.

+ +

Asociatividad

+ +

La asociatividad determina el orden en el cual los operadores con el mismo nivel de precedencia son procesados. Por ejemplo:

+ +
a OP b OP c
+
+ +

La asociatividad de izquierda a derecha significa que esa expresión es procesada como (a OP b) OP c, mientras que la asociatividad de derecha a izquierda significa que es procesada como a OP (b OP c). Los operadores de asignación tienen asociatividad de derecha a izquierda, por lo que puedes escribir:

+ +
a = b = 5;
+
+ +

para asignar 5 a las dos variables. Esto es porque el operador de asignación retorna el valor que asignó. Primero b es inicializada a 5. Despues a es inicializada al valor de b.

+ +

Tabla

+ +

La siguiente tabla esta ordenada de la precedencia más alta (0) a la más baja (18).

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PrecedenciaTipo de operadorAsociatividadOperador
0groupingn/a()
1memberleft-to-right.
[]
newn/anew()
2function callleft-to-right()
newright-to-leftnew
3incrementn/a++
decrementn/a--
4logical-notright-to-left!
bitwise notright-to-left~
unary +right-to-left+
unary negationright-to-left-
typeofright-to-lefttypeof
voidright-to-leftvoid
deleteright-to-leftdelete
5multiplicationleft-to-right*
divisionleft-to-right/
modulusleft-to-right%
6additionleft-to-right+
subtractionleft-to-right-
7bitwise shiftleft-to-right<<
>>
>>>
8relationalleft-to-right<
<=
>
>=
inleft-to-rightin
instanceofleft-to-rightinstanceof
9equalityleft-to-right==
!=
===
!==
10bitwise-andleft-to-right&
11bitwise-xorleft-to-right^
12bitwise-orleft-to-right|
13logical-andleft-to-right&&
14logical-orleft-to-right||
15conditionalright-to-left?:
16assignmentright-to-left=
+=
-=
*=
/=
%=
<<=
>>=
>>>=
&=
^=
|=
17yieldright-to-leftyield
18commaleft-to-right,
+ +

diff --git a/files/es/web/javascript/reference/operators/optional_chaining/index.html b/files/es/web/javascript/reference/operators/optional_chaining/index.html new file mode 100644 index 0000000000..06ccb5a999 --- /dev/null +++ b/files/es/web/javascript/reference/operators/optional_chaining/index.html @@ -0,0 +1,187 @@ +--- +title: Encadenamiento opcional +slug: Web/JavaScript/Referencia/Operadores/Encadenamiento_opcional +translation_of: Web/JavaScript/Reference/Operators/Optional_chaining +--- +
{{JSSidebar("Operators")}}
+ +

El operador de encadenamiento opcional ?. permite leer el valor de una propiedad ubicada dentro de una cadena de objetos conectados sin tener que validar expresamente que cada referencia en la cadena sea válida. El operador ?. funciona de manera similar a el operador de encadenamiento ., excepto que en lugar de causar un error si una referencia es casi-nula ({{JSxRef("null")}} o {{JSxRef("undefined")}}), la expresión hace una evaluación de circuito corto con un valor de retorno de undefined. Cuando se usa con llamadas a funciones, devuelve undefined si la función dada no existe.

+ +

Esto da como resultado expresiones más cortas y simples cuando se accede a propiedades encadenadas dónde existe la posibilidad de que falte una referencia. También puede ser útil al explorar el contenido de un objeto cuando no hay una garantía conocida de qué propiedades se requieren.

+ +
{{EmbedInteractiveExample("pages/js/expressions-optionalchainingoperator.html", "taller")}}
+ + + +

Sintaxis

+ +
obj?.prop
+obj?.[expr]
+arr?.[index]
+func?.(args)
+
+ +

Descripción

+ +

El operador de encadenamiento opcional proporciona una forma de simplificar el acceso a los valores a través de objetos conectados cuando es posible que una referencia o función sea undefinednull.

+ +

Por ejemplo, considere un objeto obj que tiene una estructura anidada. Sin encadenamiento opcional, buscar una subpropiedad profundamente anidada requiere validar las referencias intermedias, como:

+ +
let nestedProp = obj.first && obj.first.second;
+
+ +

Se confirma que el valor de obj.first no es null (y no es undefined) antes de acceder al valor de obj.first.second. Esto evita el error que ocurriría si simplemente accediera a obj.first.second directamente sin probar obj.first.

+ +

Sin embargo, con el operador de encadenamiento opcional (?.), No tiene que probar explícitamente, ni realizar una evaluación de circuito corto basada en el estado de obj.first antes de intentar acceder a obj.first.second:

+ +
let nestedProp = obj.first?.second;
+
+ +

Al usar el operador ?. en lugar de solo el ., JavaScript sabe verificar implícitamente para asegurarse de que obj.first no es nullundefined antes de intentar acceder  obj.first.second. Si obj.first es nullundefined, la expresión hace una evaluación de circuito corto automáticamente y retorna undefined.

+ +

Esto es equivalente a lo siguiente, excepto que la variable temporal es de hecho no creada:

+ +
let temp = obj.first;
+let nestedProp = ((temp === null || temp === undefined) ? undefined : temp.second);
+
+ +

Encadenamiento opcional con llamadas a funciones

+ +

Puede usar el encadenamiento opcional cuando intente llamar a un método que puede no existir. Esto puede ser útil, por ejemplo, cuando se usa una API en la que un método podría no estar disponible, ya sea debido a la antigüedad de la implementación o debido a una característica que no está disponible en el dispositivo del usuario.

+ +

El uso de encadenamiento opcional con llamadas a funciones hace que la expresión regrese automáticamente undefined en lugar de lanzar una excepción si no se encuentra el método:

+ +
let result = someInterface.customMethod?.();
+ +
+

Nota: Si hay una propiedad con ese nombre y que no es una función, usar ?. aún levantará una excepción {{JSxRef("TypeError")}} (x.y is not a function).

+
+ +

Manejo de callbacks opcionales o manejadores de eventos

+ +

Si utiliza callbacks o métodos de recuperación de un objeto con una asignación de desestructuración, es posible que tenga valores inexistentes que no puede llamar como funciones a menos que haya probado su existencia. Usando ?., Puede evitar esta prueba adicional:

+ +
// Escrito a partir de ES2019
+function doSomething(onContent, onError) {
+  try {
+    // ... hacer algo con los datos
+  }
+  catch (err) {
+    if (onError) { // Probando si onError realmente existe
+      onError(err.message);
+    }
+  }
+}
+
+ +
// Usando encadenamiento opcional con llamado de funciones
+function doSomething(onContent, onError) {
+  try {
+   // ... hacer algo con los datos
+  }
+  catch (err) {
+    onError?.(err.message); // Sin excepción si onError esta undefined
+  }
+}
+
+ +

Encadenamiento opcional con expresiones

+ +

También puede usar el operador de encadenamiento opcional al acceder a propiedades con una expresión usando la notación de corchetes:

+ +
let nestedProp = obj?.['prop' + 'Name'];
+
+ +

El encadenamiento opcional no es válido al lado izquierdo de una asignación

+ +
let object = {};
+object?.property = 1; // Uncaught SyntaxError: Invalid left-hand side in assignment
+ +

Acceso a elementos de un arreglo con encadenamiento opcional

+ +
let arrayItem = arr?.[42];
+ +

Ejemplos

+ +

Ejemplo básico

+ +

Este ejemplo busca el valor de la propiedad name para el miembro bar en un mapa cuando no existe dicho miembro. El resultado es por lo tanto es undefined.

+ +
let myMap = new Map();
+myMap.set("foo", {name: "baz", desc: "inga"});
+
+let nameBar = myMap.get("bar")?.name;
+ +

Evaluación de circuito corto

+ +

Cuando se usa el encadenamiento opcional con expresiones, si el operando izquierdo es null o undefined, la expresión no se evaluará. Por ejemplo:

+ +
let potentiallyNullObj = null;
+let x = 0;
+let prop = potentiallyNullObj?.[x++];
+
+console.log(x); // 0 como x no se incrementó
+
+ +

Apilando el operador de encadenamiento opcional

+ +

Con estructuras anidadas, es posible usar encadenamiento opcional varias veces:

+ +
let customer = {
+  name: "Carl",
+  details: {
+    age: 82,
+    location: "Paradise Falls" // "detailed address" es desconocida
+  }
+};
+let customerCity = customer.details?.address?.city;
+
+// … esto también funciona con la función opcional de encadenamiento
+let duration = vacations.trip?.getTime?.();
+
+ +

Combinando con el operador de fusión nulo

+ +

El {{JSxRef("Operators/Nullish_Coalescing_Operator", "operador de fusión nulo", '', 1)}} se puede usar después del encadenamiento opcional para generar un valor predeterminado cuando no se encontró ninguno:

+ +
let customer = {
+  name: "Carl",
+  details: { age: 82 }
+};
+const customerCity = customer?.city ?? "Unknown city";
+console.log(customerCity); // Unknown city
+ +

Especificaciones

+ + + + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#prod-OptionalExpression', 'optional expression')}}
+ +

Compatibilidad de navegadores

+ +
+ + +

{{Compat("javascript.operators.optional_chaining")}}

+
+ +

Progreso de implementación

+ +

La siguiente tabla proporciona un estado de implementación diaria para esta característica, porque esta característica aún no ha alcanzado la estabilidad entre navegadores. Los datos se generan ejecutando las pruebas de características relevantes en Test262, el conjunto de pruebas estándar de JavaScript, en la compilación nocturna o la última versión del motor de JavaScript de cada navegador.

+ +
{{EmbedTest262ReportResultsTable("optional-chaining")}}
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/operators/pipeline_operator/index.html b/files/es/web/javascript/reference/operators/pipeline_operator/index.html new file mode 100644 index 0000000000..cb671264cc --- /dev/null +++ b/files/es/web/javascript/reference/operators/pipeline_operator/index.html @@ -0,0 +1,78 @@ +--- +title: Operador Pipeline +slug: Web/JavaScript/Referencia/Operadores/Pipeline_operator +tags: + - Encadenamiento + - Experimental + - JavaScript + - Operador + - Pipeline +translation_of: Web/JavaScript/Reference/Operators/Pipeline_operator +--- +
{{jsSidebar("Operators")}} {{SeeCompatTable}}
+ +

El operador experimental pipeline |> (actualmente en su fase1) conduce el valor de una expresión dentro de una función. Esto permite la creación de llamadas de función en cadena de un modo más legible. El resultado es una simplificación sintáctica en la cual la llamada a una función con un único parámetro puede ser escrita del siguiente modo:

+ +
let url = "%21" |> decodeURI;
+ +

La llamada equivalente en sintaxis tradicional tiene este aspecto:

+ +
let url = decodeURI("%21");
+
+ +

Sintaxis

+ +
expression |> function
+
+ +

El valor especificado en la expression se pasa dentro de la  function como su único parámetro.

+ +

Ejemplos

+ +

Encadenando llamadas  a funciones

+ +

El operador pipeline puede mejorar la legibilidad cuando se encadenan varias funciones entre si.

+ +
const double = (n) => n * 2;
+const increment = (n) => n + 1;
+
+// sin operador pipeline
+double(increment(double(double(5)))); // 42
+
+// con operador pipeline
+5 |> double |> double |> increment |> double; // 42
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
Borrador del operador PipelineFase 1Todavía no forma parte de la especificación ECMAScript
+ +

Compatibilidad con navegadores

+ +
+ + +

{{Compat("javascript.operators.pipeline")}}

+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/operators/property_accessors/index.html b/files/es/web/javascript/reference/operators/property_accessors/index.html new file mode 100644 index 0000000000..565a8b7f92 --- /dev/null +++ b/files/es/web/javascript/reference/operators/property_accessors/index.html @@ -0,0 +1,85 @@ +--- +title: Miembros +slug: Web/JavaScript/Referencia/Operadores/Miembros +tags: + - JavaScript + - Operator +translation_of: Web/JavaScript/Reference/Operators/Property_Accessors +--- +
{{jsSidebar("Operators")}}
+ +

Resumen

+ +

Los operadores de miembros proporcionan acceso a las propiedades y métodos de un objeto.

+ +

Un objeto es en realidad un arreglo asociativo (por ejemplo map ,dictionary ,hash ,lookup table ). Las claves en este arreglo son los nombres de las propiedades y los métodos (propiedades que hacen referencia a funciones). Hay dos modos de acceder a estas propiedades: notación por punto y notación por corchete (es decir, operador de subscripción).

+ +

Nota: La especificación ECMAScript etiqueta estos operadores como "property accessors" en vez de "operadores de miembro" (member operators).

+ +

Notación por punto

+ +
get = objeto.propiedad;
+objeto.propiedad = set;
+
+ +

propiedad debe ser un identificador válido de JavaScript, esto es, una secuencia alfanumérica de caracteres, incluyendo también el guión bajo ("_") y el signo dolar ("$"), que no puede comenzar por un número. Por ejemplo, objeto.$1 es válido, mientras que objeto.1 no lo es.

+ +

Ejemplo:

+ +
document.createElement('pre');
+
+ +

Aquí, el método llamado "createElement" se recupera de document y se le llama.

+ +

Notación por corchetes

+ +
get = objeto[nombre_propiedad];
+objeto[nombre_propiedad] = set;
+
+ +

nombre_propiedad es una cadena. La cadena no tiene que ser un identificador válido; puede tener cualquier valor, por ejemplo "1foo", "!bar!", o incluso " " (un espacio).

+ +

Ejemplo:

+ +
document['createElement']('pre');
+
+ +

Esto hace exactamente lo mismo que el ejemplo anterior.

+ +

Nombres de propiedades

+ +

Los nombres de propiedades deben ser cadenas. Esto significa que no pueden usarse objetos distintos a cadenas como claves en un objeto. Cualquier objeto que no sea una cadena, incluyendo números, se convierte al tipo cadena a través de su método {{jsxref("Object.toString")}}.

+ +

Ejemplos:

+ +
var objeto = {};
+objeto['1'] = 'valor';
+alert(objeto[1]);
+
+ +

Ésto tendrá como resultado "valor", ya que 1 se convertirá por tipo a '1'.

+ +
var foo = {propiedad_unica: 1}, bar = {propiedad_unica: 2}, objeto = {};
+objeto[foo] = 'valor';
+alert(objeto[bar]);
+
+ +

Ésto también tiene como resultado "valor", ya que tanto foo como bar se convierten a la misma cadena. En el motor de JavaScript SpiderMonkey, esta cadena sería "{{ mediawiki.external('objeto Object') }}".

+ +

Enlace a métodos

+ +

Un método no está enlazado al objeto del que es método. Específicamente, this no está establecido en un método, es decir, this no se refiere necesariamente a un objeto conteniendo el método. this, en cambio, se "pasa" mediante la llamada de función.

+ +

Vea enlace a métodos.

+ +

Nota sobre eval

+ +

Los principiantes en JavaScript a menudo tienen el error de usar {{jsxref("eval")}} cuando la notación por corchetes puede usarse a cambio. Por ejemplo, la siguiente sintaxis se ve a menudo en muchos scripts.

+ +
x = eval('document.nombre_formulario.' + cadenaControlFormulario + '.value');
+
+ +

eval es lenta y se debería evitar en la medida de lo posible. Es mejor usar la notación por corchetes a cambio:

+ +
x = document.nombre_formulario[cadenaControlFormulario].value;
+
diff --git a/files/es/web/javascript/reference/operators/remainder/index.html b/files/es/web/javascript/reference/operators/remainder/index.html new file mode 100644 index 0000000000..1a6a7c56da --- /dev/null +++ b/files/es/web/javascript/reference/operators/remainder/index.html @@ -0,0 +1,82 @@ +--- +title: Resto (%) +slug: Web/JavaScript/Referencia/Operadores/Resto +translation_of: Web/JavaScript/Reference/Operators/Remainder +--- +
{{jsSidebar("Operators")}}
+ +

El operador resto (%) devuelve el resto de la división entre dos operandos. Siempre toma el signo del dividendo.

+ +
{{EmbedInteractiveExample("pages/js/expressions-remainder.html")}}
+ +
+ + + +

Tener en cuenta que en la mayoría de los lenguajes de programación, el operador de resto es ‘%’, pero en otros (como Python, Perl) es el operador módulo. Ambos son iguales para valores positivos, pero cuando el divisor y el dividendo son de signos distintos, se obtienen distintos resultados. Para obtener el módulo en JavaScript, en lugar de a % n, usa ((a % n ) + n ) % n.

+ +

Sintaxis

+ +
Operador: var1 % var2
+
+ +

Ejemplos

+ +

Resto con dividendo positivo

+ +
 12 % 5  //  2
+ 1 % -2 //  1
+ 1 % 2  //  1
+ 2 % 3  //  2
+5.5 % 2 // 1.5
+
+ +

Resto con dividendo negativo

+ +
-12 % 5 // -2
+-1 % 2  // -1
+-4 % 2  // -0
+ +

Resto con NaN

+ +
NaN % 2 // NaN
+ +

Resto con Infinity

+ +
Infinity % 2 // NaN
+Infinity % 0 // NaN
+Infinity % Infinity // NaN
+
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-multiplicative-operators', 'Remainder operator')}}
+ +

Compatibilidad con navegadores

+ + + +

{{Compat("javascript.operators.remainder")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/operators/spread_syntax/index.html b/files/es/web/javascript/reference/operators/spread_syntax/index.html new file mode 100644 index 0000000000..5a17cd05a2 --- /dev/null +++ b/files/es/web/javascript/reference/operators/spread_syntax/index.html @@ -0,0 +1,242 @@ +--- +title: Sintáxis Spread +slug: Web/JavaScript/Referencia/Operadores/Sintaxis_Spread +tags: + - ECMAScript6 + - Iteradores + - JavaScript +translation_of: Web/JavaScript/Reference/Operators/Spread_syntax +--- +
{{jsSidebar("Operators")}}
+ +
La sintaxis extendida o spread syntax permite a un elemento iterable tal como un arreglo o cadena ser expandido en lugares donde cero o más argumentos (para llamadas de  función) o elementos (para Array literales) son esperados, o a un objeto ser expandido en lugares donde cero o más pares de valores clave (para literales Tipo Objeto) son esperados.
+ +
{{EmbedInteractiveExample("pages/js/expressions-spreadsyntax.html")}}
+ +
+ + + +

Sintaxis

+ +

Para llamadas de funciones:

+ +
myFunction(...iterableObj);
+
+ +

Para arreglos literales o cadenas de caracteres:

+ +
[...iterableObj, '4', 'five', 6];
+ +

Para objetos literales (nuevo en ECMAScript 2018):

+ +
let objClone = { ...obj };
+ +

Ejemplos

+ +

Spread en llamadas de función

+ +

Reemplaza "apply"

+ +

Es frecuente usar {{jsxref( "Function.prototype.apply")}} en casos donde quieres usar los elementos de un arreglo como argumentos de una función.

+ +
function myFunction(x, y, z) { }
+var args = [0, 1, 2];
+myFunction.apply(null, args);
+ +

Con la sintaxis expandida (spread syntax), el código anterior puede ser escrito como:

+ +
function myFunction(x, y, z) { }
+var args = [0, 1, 2];
+myFunction(...args);
+ +

Cualquier argumento en la lista de argumentos puede usar la sintáxis expandida y esto puede ser usado varias veces.

+ +
function myFunction(v, w, x, y, z) { }
+var args = [0, 1];
+myFunction(-1, ...args, 2, ...[3]);
+ +

"Apply" para "new"

+ +

Cuando se llama un constructor con new, no es posible usar directamente un arreglo y apply (apply hace un [[Call]] y no un [[Construct]]). Sin embargo, un arreglo puede ser fácilmente usado con un new gracias a la sintáxis expandida:

+ +
var dateFields = [1970, 0, 1];  // 1 Jan 1970
+var d = new Date(...dateFields);
+
+ +

Para usar new con un arreglo de parámetros sin la sintáxis expandida, podrías tener que hacerlo indirectamente a través de una aplicación parcial:

+ +
function applyAndNew(constructor, args) {
+   function partial () {
+      return constructor.apply(this, args);
+   };
+   if (typeof constructor.prototype === "object") {
+      partial.prototype = Object.create(constructor.prototype);
+   }
+   return partial;
+}
+
+
+function myConstructor () {
+   console.log("arguments.length: " + arguments.length);
+   console.log(arguments);
+   this.prop1="val1";
+   this.prop2="val2";
+};
+
+var myArguments = ["hi", "how", "are", "you", "mr", null];
+var myConstructorWithArguments = applyAndNew(myConstructor, myArguments);
+
+console.log(new myConstructorWithArguments);
+// (internal log of myConstructor):           arguments.length: 6
+// (internal log of myConstructor):           ["hi", "how", "are", "you", "mr", null]
+// (log of "new myConstructorWithArguments"): {prop1: "val1", prop2: "val2"}
+ +

Expandir Array literales

+ +

Un literal Array más poderoso

+ +

Sin sintaxis expandida (spread syntax), para crear un nuevo arreglo usando un arreglo existente como parte de él,no es suficiente la sintaxis de Array literal y en su lugar se debe usar código imperativo con una combinación de push, splice, concat, etc. Con la sintaxis expandida, esto se vuelve mucho mas práctico:

+ +
var parts = ['shoulders', 'knees'];
+var lyrics = ['head', ...parts, 'and', 'toes'];
+// ["head", "shoulders", "knees", "and", "toes"]
+
+ +

Así como para expandir listas de argumentos, ... puede ser usado en cualquier parte dentro del Array literal, y múltiples veces.

+ +

Copiar un arreglo

+ +
var arr = [1, 2, 3];
+var arr2 = [...arr]; // like arr.slice()
+arr2.push(4);
+
+// arr2 becomes [1, 2, 3, 4]
+// arr remains unaffected
+
+ +

Nota: La sintaxis expandida efectivamente va a un nivel de profundidad mientras copia un arreglo. Por lo tanto, esto no permite copiar arreglos multidimensionales como se muestra en los siguientes ejemplos (es lo mismo con {{jsxref("Object.assign()")}} y sintaxis spread).

+ +
var a = [[1], [2], [3]];
+var b = [...a];
+b.shift().shift(); // 1
+// Now array a is affected as well: [[], [2], [3]]
+
+ +

Una forma mejor para concatenar arreglos

+ +

{{jsxref("Array.concat")}} es usada a menudo para concatenar un arreglo al final de un arreglo ya existente. Sin la sintaxis spread se realiza:

+ +
var arr1 = [0, 1, 2];
+var arr2 = [3, 4, 5];
+// Append all items from arr2 onto arr1
+arr1 = arr1.concat(arr2);
+ +

Con la sintaxis spread se transforma en:

+ +
var arr1 = [0, 1, 2];
+var arr2 = [3, 4, 5];
+arr1 = [...arr1, ...arr2];
+
+ +

{{jsxref("Array.unshift")}} es a menudo usada para insertar un arreglo de valores al inicio de un arreglo existente. Sin la sintáxis spread, esto es hecho como:

+ +
var arr1 = [0, 1, 2];
+var arr2 = [3, 4, 5];
+// Prepend all items from arr2 onto arr1
+Array.prototype.unshift.apply(arr1, arr2) // arr1 is now [3, 4, 5, 0, 1, 2]
+ +

Con la sintaxis spread se convierte en [Observa, sin embargo, que esto crea un nuevo arreglo arr1.  Diferente a {{jsxref("Array.unshift")}}, esto no modifica el arreglo original en sitio arr1]:

+ +
var arr1 = [0, 1, 2];
+var arr2 = [3, 4, 5];
+arr1 = [...arr2, ...arr1]; // arr1 is now [3, 4, 5, 0, 1, 2]
+
+ +

Spread en literales tipo Objeto

+ +

La propuesta Propiedades Rest/Spread para ECMAScript (etapa 4) agrega propiedades spread a los literales Tipo Objeto. Esto copia sus propiedades enumerables desde un objeto provisto dentro de un nuevo objeto.

+ +

Shallow-cloning (excluyendo prototype) o la combinación de objetos es ahora posible usando una sintaxis más corta que {{jsxref("Object.assign()")}}.

+ +
var obj1 = { foo: 'bar', x: 42 };
+var obj2 = { foo: 'baz', y: 13 };
+
+var clonedObj = { ...obj1 };
+// Object { foo: "bar", x: 42 }
+
+var mergedObj = { ...obj1, ...obj2 };
+// Object { foo: "baz", x: 42, y: 13 }
+ +

Observa que {{jsxref("Object.assign()")}} desencadena setters mientras que la sintaxis spread no lo hace.

+ +

Observa que tú no puedes reemplazar o replicar la función {{jsxref("Object.assign()")}}:

+ +
var obj1 = { foo: 'bar', x: 42 };
+var obj2 = { foo: 'baz', y: 13 };
+const merge = ( ...objects ) => ( { ...objects } );
+
+var mergedObj = merge ( obj1, obj2);
+// Object { 0: { foo: 'bar', x: 42 }, 1: { foo: 'baz', y: 13 } }
+
+var mergedObj = merge ( {}, obj1, obj2);
+// Object { 0: {}, 1: { foo: 'bar', x: 42 }, 2: { foo: 'baz', y: 13 } }
+ +

En el ejemplo de arriba, el operador spread no trabaja como uno podría esperar: este dispersa un arreglo de argumentos en el literal Tipo Objeto, debido al parámetro rest.

+ +

Sólo para iterables

+ +

La sintaxis Spread (otra que en el caso de las propiedades spread) puede ser aplicada sólo a los objetos iterables:

+ +
var obj = {'key1': 'value1'};
+var array = [...obj]; // TypeError: obj is not iterable
+
+ +

Spread con muchos valores

+ +

Cuando se usa la sintaxis spread para llamados de funciones, tenga en cuenta la posibilidad de exceder el límite de longitud de argumentos del motor de JavaScript. Vea apply() para más detalles.

+ +

Sintaxis Rest (parámetros)

+ +

La sintaxis Rest luce exactamente como la sintaxis spread, pero esto es usado por la desestructuración de arreglos y objetos. De cierta forma, la sintaxis rest es la opuesta a la sintaxis spread: spread 'expande' un arreglo en sus elementos, mientras rest agrupa múltiples elementos y los 'condensa' en un único elemento. Consulta parámetros rest.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-array-initializer')}}{{Spec2('ES2015')}}Definido en varias secciones de la especificación: Array Initializer, Argument Lists
{{SpecName('ESDraft', '#sec-array-initializer')}}{{Spec2('ESDraft')}}Sin cambios.
{{SpecName('ESDraft', '#sec-object-initializer')}}{{Spec2('ESDraft')}}Definido en Object Initializer
+ +

Compatibilidad del navegador

+ + + +

{{Compat("javascript.operators.spread")}}

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/operators/strict_equality/index.html b/files/es/web/javascript/reference/operators/strict_equality/index.html new file mode 100644 index 0000000000..0d09b1de71 --- /dev/null +++ b/files/es/web/javascript/reference/operators/strict_equality/index.html @@ -0,0 +1,101 @@ +--- +title: Igualdad Estricta (===) +slug: Web/JavaScript/Referencia/Operadores/Strict_equality +translation_of: Web/JavaScript/Reference/Operators/Strict_equality +--- +
{{jsSidebar("Operators")}}
+ +

El operador de estricta igualdad (===) revisa si dos operandos son iguales y produce un resultado Booleano. A diferencia del operador de igualdad regular (==), el operador de estricta igualdad siempre considera que los operandos de distinto tipo de valor son diferentes y nunca similares.

+ +
{{EmbedInteractiveExample("pages/js/expressions-strict-equality.html")}}
+ + + +

Sintaxis

+ +
x === y
+ +

Descripción

+ +

Los operadores de estricta igualdad (=== y !==) usan el Algoritmo Estricto Comparativo de Igualdad  para comparar dos operandos:

+ + + +

La diferencia más notable entre este operador y el operador de igualdad regular (==) es que si los operandos son de distinto tipo de valor, el operador == intenta convertir los valores a un mismo tipo de dato antes de compararlos.

+ +

Ejemplos

+ +

Comparando operandos del mismo tipo

+ +
console.log("hello" === "hello");   // true
+console.log("hello" === "hola");    // false
+
+console.log(3 === 3);               // true
+console.log(3 === 4);               // false
+
+console.log(true === true);         // true
+console.log(true === false);        // false
+
+console.log(null === null);         // true
+ +

Comparando operandos de distinto tipo

+ +
console.log("3" === 3);           // false
+
+console.log(true === 1);          // false
+
+console.log(null === undefined);  // false
+ +

Comparando objetos

+ +
const object1 = {
+  name: "hello"
+}
+
+const object2 = {
+  name: "hello"
+}
+
+console.log(object1 === object2);  // false
+console.log(object1 === object1);  // true
+ +

Especificaciones

+ + + + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-equality-operators', 'Equality operators')}}
+ +

Compatibilidad entre exploradores

+ + + +

{{Compat("javascript.operators.strict_equality")}}

+ +

También revisa

+ + diff --git a/files/es/web/javascript/reference/operators/subtraction/index.html b/files/es/web/javascript/reference/operators/subtraction/index.html new file mode 100644 index 0000000000..21bfd3a1ac --- /dev/null +++ b/files/es/web/javascript/reference/operators/subtraction/index.html @@ -0,0 +1,65 @@ +--- +title: Sustracción (-) +slug: Web/JavaScript/Referencia/Operadores/Sustracción +tags: + - JavaScript +translation_of: Web/JavaScript/Reference/Operators/Subtraction +--- +
{{jsSidebar("Operators")}}
+ +

El operador de sustracción (-) sustrae dos operandos, produciendo su diferencia.

+ +
{{EmbedInteractiveExample("pages/js/expressions-subtraction.html")}}
+ +
+ + + +

Sintaxis

+ +
Operator: x - y
+
+ +

Ejemplos

+ +

Sustracción con números

+ +
5 - 3     // 2
+3 - 5     // -2
+ +

Sustracción de no numéricos

+ +
'foo' - 3 // NaN
+ +

Especificaciones

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-subtraction-operator-minus', 'Subtraction operator')}}
+ +

Compatibilidad entre exploradores

+ + + +

{{Compat("javascript.operators.subtraction")}}

+ +

También revisa

+ + diff --git a/files/es/web/javascript/reference/operators/super/index.html b/files/es/web/javascript/reference/operators/super/index.html new file mode 100644 index 0000000000..ff2ac5ae0e --- /dev/null +++ b/files/es/web/javascript/reference/operators/super/index.html @@ -0,0 +1,178 @@ +--- +title: super +slug: Web/JavaScript/Referencia/Operadores/super +tags: + - Clases + - ECMAScript 2015 + - JavaScript + - Operador +translation_of: Web/JavaScript/Reference/Operators/super +--- +
{{jsSidebar("Operators")}}
+ +

La palabra clave super es usada para acceder y llamar funciones del padre de un objeto.

+ +

Las expresiones super.prop y super[expr] son válidas en cualquier definición de método tanto para clases como para objetos literales.

+ +

Sintaxis

+ +
// llama al método constructor del objeto padre.
+super([arguments]);
+
+// llama cualquier otro método del objeto padre.
+super.functionOnParent([arguments]);
+
+ +

Descripción

+ +

Cuando es usado en un constructor, la palabra clave super aparece  sola lo cual invoca el constructor del objeto padre. En este caso debe usarse antes de que la palabra clave this sea usada. La palabra clave super también puede utilizarse para llamar otras funciones del objeto padre.

+ +

Ejemplo

+ +

Usando super en clases

+ +

Este fragmento de código se toma del ejemplo de clases (demo en vivo). Aquí se llama a super() para evitar la duplicación de las partes del constructor que son comunes entre Rectangle y Square.

+ +
class Rectangle {
+  constructor(height, width) {
+    this.name = 'Rectangle';
+    this.height = height;
+    this.width = width;
+  }
+  sayName() {
+    console.log('Hi, I am a ', this.name + '.');
+  }
+  get area() {
+    return this.height * this.width;
+  }
+  set area(value) {
+    this.height = this.width = Math.sqrt(value);
+  }
+}
+
+class Square extends Rectangle {
+  constructor(length) {
+    this.height; // ReferenceError, super necesita ser llamado primero!
+
+    // Aquí, llama al constructor de la clase padre con las longitudes
+    // previstas para el ancho y la altura de Rectangle
+    super(length, length);
+
+    // Nota: En las clases derivadas, se debe llamar a super() antes de
+    // poder usar 'this'. Salir de esto provocará un error de referencia.
+    this.name = 'Square';
+  }
+}
+ +

Super-llamando a métodos estáticos

+ +

También puede llamar a super en métodos estáticos.

+ +
class Rectangle {
+  constructor() {}
+  static logNbSides() {
+    return 'I have 4 sides';
+  }
+}
+
+class Square extends Rectangle {
+  constructor() {}
+  static logDescription() {
+    return super.logNbSides() + ' which are all equal';
+  }
+}
+Square.logDescription(); // 'Tengo 4 lados que son todos iguales'
+
+ +

Eliminar propiedades super generará un error

+ +

No puede usar el operador de eliminación y super.prop o super[expr] para eliminar la propiedad de una clase principal, lanzará {{jsxref("ReferenceError")}}.

+ +
class Base {
+  constructor() {}
+  foo() {}
+}
+class Derived extends Base {
+  constructor() {}
+  delete() {
+    delete super.foo; // esto es malo
+  }
+}
+
+new Derived().delete(); // ReferenceError: eliminación no válida que implica 'super'. 
+ +

super.prop no puede sobrescribir las propiedades no modificables

+ +

Al definir propiedades que no se pueden escribir, p. Ej. {{jsxref("Object.defineProperty")}}, super no puede sobrescribir el valor de la propiedad.

+ +
class X {
+  constructor() {
+    Object.defineProperty(this, 'prop', {
+      configurable: true,
+      writable: false,
+      value: 1
+    });
+  }
+  f() {
+    super.prop = 2;
+  }
+}
+
+var x = new X();
+x.f(); // TypeError: "prop" es de solo lectura
+console.log(x.prop); // 1
+
+ +

Usando super.prop en objetos literales

+ +

Super también se puede usar en el inicializador de objetos / notación literal. En este ejemplo, dos objetos definen un método. En el segundo objeto, super llama al primer método del objeto. Esto funciona con la ayuda de {{jsxref("Object.setPrototypeOf()")}} con el que podemos establecer el prototipo de obj2 en obj1, de modo que super pueda encontrar el method1 en obj1.

+ +
var obj1 = {
+  method1() {
+    console.log('method 1');
+  }
+}
+
+var obj2 = {
+  method2() {
+   super.method1();
+  }
+}
+
+Object.setPrototypeOf(obj2, obj1);
+obj2.method2(); // logs "method 1"
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-super-keyword', 'super')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-super-keyword', 'super')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ + + +

{{Compat("javascript.operators.super")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/operators/this/index.html b/files/es/web/javascript/reference/operators/this/index.html new file mode 100644 index 0000000000..74ed62bb60 --- /dev/null +++ b/files/es/web/javascript/reference/operators/this/index.html @@ -0,0 +1,239 @@ +--- +title: this +slug: Web/JavaScript/Referencia/Operadores/this +translation_of: Web/JavaScript/Reference/Operators/this +--- +
{{jsSidebar("Operators")}}
+ +

Introducción

+ +

La palabra clave this de una función se comporta un poco diferente en Javascript en comparación con otros lenguajes. Además tiene algunas diferencias entre el modo estricto y el modo no estricto.

+ +

En general, el valor de this está determinado por cómo se invoca a la función. No puede ser establecida mediante una asignación en tiempo de ejecución, y puede ser diferente cada vez que la función es invocada. ES5 introdujo el método {{jsxref("Function.bind()", "bind()")}} para establecer el valor de la función this independientemente de como es llamada, y ES2015 introdujo las funciones flecha que no proporcionan su propio "binding" de this (se mantiene el valor de this del contexto léxico que envuelve a la función)

+ +

{{EmbedInteractiveExample("pages/js/expressions-this.html")}}

+ +

Sintaxis

+ +
this
+ +

Valor

+ +

El objeto contexto de JavaScript en el cual se está ejecutando el código actual.

+ +

Contexto global

+ +

En el contexto de ejecución global (fuera de cualquier función), this se refiere al objeto global, ya sea en modo estricto o no.

+ +
console.log(this.document === document); // true
+
+// En los navegadores web, el objeto window también es un objeto global:
+console.log(this === window); // true
+
+this.a = 37;
+console.log(window.a); // 37
+
+ +
+

Nota: Puedes obtener el objeto global usando la propieda global globalThis, no importa el contexto donde se ejecute esta propiedad, siempre hará referencia al objeto global. 

+
+ +

Contexto de la función

+ +

Dentro de una función, el valor de this depende de cómo la función es llamada.

+ +

Llamada simple

+ +
function f1(){
+  return this;
+}
+
+f1() === window; // objeto global
+
+ +
En este caso, el valor de this no está establecido por la llamada. Dado que el código no está en modo estricto, el valor de this debe ser siempre un objeto por lo que por defecto es el objeto global.
+ +
+ +
+
function f2(){
+  "use strict"; // consultar modo estricto
+  return this;
+}
+
+f2() === undefined;
+
+ +
En modo estricto, el valor de this se mantiene en lo que está establecida al entrar en el contexto de ejecución. Si no está definido, permanece undefined. También se puede ajustar a cualquier valor, tales como null o 42 o "Yo no soy this".
+ +
+ +
+

Nota: En el segundo ejemplo, this debería ser {{jsxref("undefined")}}, porque f2 fue llamado sin proporcionar ninguna base (ej. window.f2()). Esta característica no fue implementada en algunos navegadores cuando se comenzó a dar soporte al modo estricto. Como resultado, retorna incorrectamente el objeto window.

+
+ +
Como un método de un objeto
+ +

Cuando una función es llamada como un método de un objeto, el this cambia por el metodo del objeto llamado.

+ +

En el siguiente ejemplo, cuando o.f() es invocado, dentro de la función this es ligado al objeto o.

+ +
var o = {
+  prop: 37,
+  f: function() {
+    return this.prop;
+  }
+};
+
+console.log(o.f()); // logs 37
+
+ +

Note que el comportamiento no es del todo afectado por cómo o dónde la función fue definida. En el ejemplo anterior, nosotros definimos la función en línea como el elemento f durante la definición de o.  Sin embargo, podriamos haber definido con la misma facilidad la primera función y luego  adjuntarlo a o.f. Hacerlo da como resultado el mismo comportamiento.

+ +
var o = {prop: 37};
+
+function independent() {
+  return this.prop;
+}
+
+o.f = independent;
+
+console.log(o.f()); // logs 37
+
+ +

Esto demuestra que sólo importa que la función fue invocada del elemento f de o.

+ +

Asimismo, el enlace this sólo se ve afectado por la referencia del miembro más inmediata. En el siguiente ejemplo, cuando invocamos a la función, lo llamamos como metodo g del objeto o.b. Esta vez durante la ejecución, this dentro de la función se referirá a o.b. El hecho de que el objeto es en sí mismo un elemento de o no tiene ninguna consecuencia, la referencia más inmediata es todo lo que importa.

+ +
o.b = {g: independent, prop: 42};
+console.log(o.b.g()); // logs 42
+
+ +

... en la cadena de prototipo

+ +

El mismo concepto es válido para los métodos definidos en alguna parte de la cadena de prototipo del objeto. Si el método esta sobre una cadena de prototipo del objeto, this se referirá al objeto donde está el método de donde fue llamado. Como si ese método estuviera dentro del objeto. 

+ +
var o = {f:function(){ return this.a + this.b; }};
+var p = Object.create(o);
+p.a = 1;
+p.b = 4;
+
+console.log(p.f()); // 5
+
+ +

En este ejemplo, el objeto asignado a la variable p no tiene su propia propiedad f, esto lo hereda de su prototipo. Pero no importa que la búsqueda de f eventualmente encuentre un elemento con ese nombre en o; la búsqueda comenzó como una referencia a p.f, asi this dentro de la funcion toma el valor del objeto referido como p. Es decir, desde que f es llamado como método de p, su this refiere a p. Esto es una interesante característica de la herencia de prototipo de JavaScript.

+ +

... o como un getter o setter

+ +

Nuevamente, el mismo concepto es válido cuando una función es invocada de un getter o un setter. Una función usado como getter o setter tiene su enlace this al objeto desde el cual la propiedad esta siendo establecida u obtenida.

+ +
function modulus(){
+  return Math.sqrt(this.re * this.re + this.im * this.im);
+}
+
+var o = {
+  re: 1,
+  im: -1,
+  get phase(){
+    return Math.atan2(this.im, this.re);
+  }
+};
+
+Object.defineProperty(o, 'modulus', {get: modulus, enumerable:true, configurable:true});
+
+console.log(o.phase, o.modulus); // logs -0.78 1.4142
+
+ +

Como un constructor

+ +

Cuando una función es usada como un constructor (con la palabra clave {{jsxref("Operadores/new", "new")}}), su this es enlazado al nuevo objeto en construcción, a menos que la ejecución de los resultados del constructor en el motor JavaScript encuentren una instrucción de retorno donde el valor de retorno sea un objeto.

+ +
/*
+ * Los constructores trabajan algo asi:
+ *
+ * function MyConstructor(){
+ *   // El cuerpo del código de la función actual va aquí.  Crear las propiedades en |this| como
+ *   // se desee mediante la asignación a los mismos.  E.g.,
+ *   this.fum = "nom";
+ *   // etcetera...
+ *
+ *   // Si la función tiene una sentencia de retorno este retorna un objeto,
+ *   // este objeto será el resultado de la expresión |new|.  Por otro lado, el
+ *   // resultado de la expresión es el objeto actualmente enlazado a |this|
+ *   // (i.e., el caso más común suele verse).
+ * }
+ */
+
+function C(){
+  this.a = 37;
+}
+
+var o = new C();
+console.log(o.a); // logs 37
+
+
+function C2(){
+  this.a = 37;
+  return {a:38};
+}
+
+o = new C2();
+console.log(o.a); // logs 38
+
+ +

En el último ejemplo (C2), debido a que un objeto fue devuelto durante la construcción, el nuevo objeto que fue enlazado a this simplemente se descarta.( Esto esencialmente hace de la declaración "this.a = 37;" codigo muerto. No esta exactamente muerto,porque es ejecutado pero se puede eliminar sin efectos externos.)

+ +

call y apply

+ +

Cuando una función usa la plabra clave this en su cuerpo, su valor puede ser enlazado a un objeto particular durante la ejecución del método {{jsxref("Function.call()", "call()")}} or {{jsxref("Function.apply()", "apply()")}} que todas las funciones hereden de  Function.prototype.

+ +
function add(c, d){
+  return this.a + this.b + c + d;
+}
+
+var o = {a:1, b:3};
+
+// El primer parámetro es el objeto a usar como 'this', parámetros posteriores se pasan como argumentos
+// en la llamada a la función
+add.call(o, 5, 7); // 1 + 3 + 5 + 7 = 16
+
+//El primer parámetro es el objeto a usar como 'this''this', la segunda es una matriz cuyos elementos
+//  se utilizan como argumentos en la llamada a la función
+add.apply(o, [10, 20]); // 1 + 3 + 10 + 20 = 34
+
+ +

Funciones enlazadas

+ +

ECMAScript 5 introduce {{jsxref("Function.prototype.bind()")}}. Llamando a f.bind(someObject) crea una nueva función con el mismo cuerpo y alcance de f, pero donde this se produce en la función original, en la nueva función esto esta permanentemente ligado al primer argumento de bind, independientemente de cómo la función está siendo utilizada.

+ +
function f(){
+  return this.a;
+}
+
+var g = f.bind({a:"azerty"});
+console.log(g()); // azerty
+
+var o = {a:37, f:f, g:g};
+console.log(o.f(), o.g()); // 37, azerty
+
+ +

Como un controlador de eventos DOM

+ +

Cuando una función es usada como un controlador de eventos, su this es cambiado desde el elemento del evento disparado (algunos navegadores no siguen esta convención para los listeners agregados dinámicamente con otros métodos addEventListener).

+ +
// Cuando se llama como un listener, convierte en azul el elemento
+// relacionado
+function bluify(e){
+  console.log(this === e.currentTarget); // Siempre true
+  console.log(this === e.target);        // true cuando currentTarget y target son el mismo objeto
+  this.style.backgroundColor = '#A5D9F3';
+}
+
+// Consigue una lista de cada elemento en un documento
+var elements = document.getElementsByTagName('*');
+
+// Añade bluify como un click listener asi cuando se hace click sobre el elemento,
+// este cambia a azul
+for(var i=0 ; i<elements.length ; i++){
+  elements[i].addEventListener('click', bluify, false);
+}
diff --git a/files/es/web/javascript/reference/operators/typeof/index.html b/files/es/web/javascript/reference/operators/typeof/index.html new file mode 100644 index 0000000000..088791f228 --- /dev/null +++ b/files/es/web/javascript/reference/operators/typeof/index.html @@ -0,0 +1,76 @@ +--- +title: typeof +slug: Web/JavaScript/Referencia/Operadores/typeof +tags: + - JavaScript + - Operator + - Unary +translation_of: Web/JavaScript/Reference/Operators/typeof +--- +
{{jsSidebar("Operators")}}
+ +

Resumen

+ +

El operador typeof se usa en cualquiera de los siguientes modos:

+ +
    +
  1. typeof operando
  2. +
  3. typeof (operando)
  4. +
+ +

El operador typeof devuelve una cadena que indica el tipo del operando sin evaluarlo. operando es la cadena, variable, palabra clave u objeto para el que se devolverá su tipo. Los paréntesis son opcionales.

+ +

Suponga que define las siguientes variables:

+ +
var miFuncion = new Function("5+2")
+var forma = "redonda"
+var tamano = 1
+var hoy = new Date()
+
+ +

El operador typeof devuelve los siguientes resultados para estas variables

+ +
typeof miFuncion === 'function'
+typeof forma === 'string'
+typeof tamano === 'number'
+typeof hoy === 'object'
+typeof noExiste === 'undefined'
+
+ +

Para las palabras clave true y null, el operador typeof devuelve los siguientes resultados:

+ +
typeof true === 'boolean'
+typeof null === 'object'
+
+ +

Para un número o una cadena, el operador typeof devuelve los siguientes resultados:

+ +
typeof 62 === 'number'
+typeof 'Hola mundo' === 'string'
+
+ +

Para valores de propiedades, el operador typeof devuelve el tipo del valor que contiene la propiedad:

+ +
typeof document.lastModified === 'string'
+typeof window.length === 'number'
+typeof Math.LN2 === 'number'
+
+ +

Para métodos y funciones, el operador typeof devuelve los resultados siguientes:

+ +
typeof blur === 'function'
+typeof eval === 'function'
+typeof parseInt === 'function'
+typeof shape.split === 'function'
+
+ +

Para objetos predefinidos, el operador typeof devuelve los siguientes resultados:

+ +
typeof Date === 'function'
+typeof Function === 'function'
+typeof Math === 'object'
+typeof Object === 'function'
+typeof String === 'function'
+
+ +

 

diff --git a/files/es/web/javascript/reference/operators/void/index.html b/files/es/web/javascript/reference/operators/void/index.html new file mode 100644 index 0000000000..0bf8048b21 --- /dev/null +++ b/files/es/web/javascript/reference/operators/void/index.html @@ -0,0 +1,36 @@ +--- +title: void +slug: Web/JavaScript/Referencia/Operadores/void +tags: + - JavaScript + - Operator + - Unary +translation_of: Web/JavaScript/Reference/Operators/void +--- +
{{jsSidebar("Operators")}}
+ +

Resumen

+ +

El operador void se usa en cualquiera de los siguientes modos:

+ +
    +
  1. void (expresion )
  2. +
  3. void expresion
  4. +
+ +

El operador void especifica una expresión que se evalúa sin devolver un valor. expresion es una expresión JavaScript para evaluar. El paréntesis rodeando la expresión es opcional, pero usarlos es una buena práctica al programar.

+ +

Puede usar el operador void para especificar una expresión como un enlace de hipertexto. La expresión se evalúa pero no se carga en lugar del documento actual.

+ +

El siguiente código crea un enlace de hipertexto que no hace nada cuando el usuario hace click en él. Cuando el usuario hace click en el enlace, void(0) se evalúa como 0, pero eso no tiene ningún efecto en JavaScript.

+ +
<a href="javascript:void(0)">Haga click aquí para no hacer nada</a>
+
+ +

El siguiente código crea un enlace de hipertexto que envía un formulario cuando el usuario hace click en él.

+ +
<a href="javascript:void(document.forms["miFormulario"].submit())">
+Haga click aquí para enviar</a>
+
+ +
diff --git a/files/es/web/javascript/reference/operators/yield/index.html b/files/es/web/javascript/reference/operators/yield/index.html new file mode 100644 index 0000000000..7237b6d689 --- /dev/null +++ b/files/es/web/javascript/reference/operators/yield/index.html @@ -0,0 +1,130 @@ +--- +title: yield +slug: Web/JavaScript/Referencia/Operadores/yield +tags: + - Característica del lenguaje + - ECMAScript 2015 + - Generadores + - Iterador + - JavaScript + - Operador +translation_of: Web/JavaScript/Reference/Operators/yield +--- +
{{jsSidebar("Operadores")}}
+ +

La palabra clave yield se usa para pausar y reanudar una función generadora ({{jsxref("Statements/function*", "function*")}} o {{jsxref("Statements/Legacy_generator_function", "función generadora heredada")}}).

+ +
{{EmbedInteractiveExample("pages/js/expressions-yield.html", "taller")}}
+ + + +

Sintaxis

+ +
[rv] = yield [expression]
+ +
+
expression {{optional_inline}}
+
Define el valor que se devolverá desde la función generadora a través del {{jsxref("Iteration_protocols", "protocolo iterador", "#El_protocolo_iterador")}}. Si se omite, devuelve undefined en su lugar.
+
rv {{optional_inline}}
+
+

Recupera el valor opcional pasado al método next() del generador para reanudar su ejecución.

+
+
+ +

Descripción

+ +

La palabra clave yield detiene la ejecución de la función del generador y el valor de la expresión que sigue a la palabra clave yield se devuelve al llamador del generador. Se puede considerar como una versión basada en un generador de la palabra clave return.

+ +

yield solo se puede llamar directamente desde la función generadora que la contiene. No se puede llamar desde funciones anidadas o retrollamadas.

+ +

La palabra clave yield hace que la llamada al método next() del generador devuelva un objeto IteratorResult con dos propiedades: value y done. La propiedad value es el resultado de evaluar la expresión yield, y done es false, lo cual indica que la función generadora no se ha completado completamente.

+ +

Una vez en pausa en una expresión yield, la ejecución del código del generador permanece en pausa hasta que se llama al método next() del generador. Cada vez que se llama al método next() del generador, el generador reanuda la ejecución y se ejecuta hasta que alcanza uno de los siguientes:

+ + + +

Si se pasa un valor opcional al método next() del generador, ese valor se convierte en el valor devuelto por la operación yield actual del generador.

+ +

Entre la ruta del código del generador, sus operadores yield y la capacidad de especificar un nuevo valor inicial pasándolo a {{jsxref("Generator.prototype.next()")}}, los generadores ofrecen enorme poder y control.

+ +
+

Desafortunadamente, next() es asimétrico, pero eso no se puede evitar: siempre envía un valor al yield actualmente suspendido, pero devuelve el operando del siguiente yield.

+
+ +

Ejemplos

+ +

Usar yield

+ +

El siguiente código es la declaración de una función generadora de ejemplo.

+ +
function* countAppleSales () {
+  let saleList = [3, 7, 5]
+  for (let i = 0; i < saleList.length; i++) {
+    yield saleList[i]
+  }
+}
+ +

Una vez que se define una función generadora, se puede usar construyendo un iterador como el siguiente.

+ +
let appleStore = countAppleSales()  // Generator { }
+console.log(appleStore.next())      // { value: 3, done: false }
+console.log(appleStore.next())      // { value: 7, done: false }
+console.log(appleStore.next())      // { value: 5, done: false }
+console.log(appleStore.next())      // { value: undefined, done: true }
+ +

También puedes enviar un valor con next(value) al generador. 'step' se evalúa como un valor de retorno en esta sintaxis [rv] = yield [expression]

+ +
function* counter(value) {
+ let step;
+
+ while (true) {
+   step = yield ++value;
+
+   if (step) {
+     value += step;
+   }
+ }
+}
+
+const generatorFunc = counter(0);
+console.log(generatorFunc.next().value);   // 1
+console.log(generatorFunc.next().value);   // 2
+console.log(generatorFunc.next().value);   // 3
+console.log(generatorFunc.next(10).value); // 14
+console.log(generatorFunc.next().value);   // 15
+console.log(generatorFunc.next(10).value); // 26
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#prod-YieldExpression', 'Yield')}}
+ +

Compatibilidad del navegador

+ + + +

{{Compat("javascript.operators.yield")}}

+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/operators/yield_star_/index.html b/files/es/web/javascript/reference/operators/yield_star_/index.html new file mode 100644 index 0000000000..e2167b8c41 --- /dev/null +++ b/files/es/web/javascript/reference/operators/yield_star_/index.html @@ -0,0 +1,199 @@ +--- +title: yield* +slug: Web/JavaScript/Referencia/Operadores/yield* +tags: + - ECMAScript6 + - JavaScript +translation_of: Web/JavaScript/Reference/Operators/yield* +--- +
{{jsSidebar("Operators")}}
+ +

La expresión yield* es usada para delegar a otro {{jsxref("Statements/function*", "generator")}} u objeto iterable.

+ +

Sintaxis

+ +
 yield* [[expression]];
+ +
+
expression
+
La expresión que retorna un objeto iterable
+
+ +

Descripción

+ +

La expresión yield* itera sobre el operador realizando yield de cada valor retornado por este.

+ +

El valor de la expresion yield* es el valor retornado por el iterador en si mismo cuando es finalizado (ej., cuando done es true).

+ +

Ejemplos

+ +

Delegando a otro generator

+ +

En el siguiente código, los valores declarados con yield en g1() son devueltos por las llamadas a next() al igual que en g2().

+ +
function* g1() {
+  yield 2;
+  yield 3;
+  yield 4;
+}
+
+function* g2() {
+  yield 1;
+  yield* g1();
+  yield 5;
+}
+
+var iterator = g2();
+
+console.log(iterator.next()); // { value: 1, done: false }
+console.log(iterator.next()); // { value: 2, done: false }
+console.log(iterator.next()); // { value: 3, done: false }
+console.log(iterator.next()); // { value: 4, done: false }
+console.log(iterator.next()); // { value: 5, done: false }
+console.log(iterator.next()); // { value: undefined, done: true }
+
+ +

Otros objetos iterables

+ +

Además de los objetos generator, yield* también se puede usar yield sobre otros tipos de iterables, ej. arrays, strings u objetos arguments.

+ +
function* g3() {
+  yield* [1, 2];
+  yield* "34";
+  yield* Array.from(arguments);
+}
+
+var iterator = g3(5, 6);
+
+console.log(iterator.next()); // { value: 1, done: false }
+console.log(iterator.next()); // { value: 2, done: false }
+console.log(iterator.next()); // { value: "3", done: false }
+console.log(iterator.next()); // { value: "4", done: false }
+console.log(iterator.next()); // { value: 5, done: false }
+console.log(iterator.next()); // { value: 6, done: false }
+console.log(iterator.next()); // { value: undefined, done: true }
+
+ +

El valor de la expresión yield*

+ +

yield* es una expresión, no una declaración, por lo que se evalua como un valor.

+ +
function* g4() {
+  yield* [1, 2, 3];
+  return "foo";
+}
+
+var result;
+
+function* g5() {
+  result = yield* g4();
+}
+
+var iterator = g5();
+
+console.log(iterator.next()); // { value: 1, done: false }
+console.log(iterator.next()); // { value: 2, done: false }
+console.log(iterator.next()); // { value: 3, done: false }
+console.log(iterator.next()); // { value: undefined, done: true },
+                              // g4() returned { value: "foo", done: true } at this point
+
+console.log(result);          // "foo"
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
{{SpecName('ES6', '#', 'Yield')}}{{Spec2('ES6')}}Definición inical.
{{SpecName('ESDraft', '#', 'Yield')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad con navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Soporte básico {{CompatVersionUnknown}}{{CompatGeckoDesktop("27.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatGeckoMobile("27.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Notas específicas de Firefox

+ + + +

Ver también

+ + diff --git a/files/es/web/javascript/reference/statements/async_function/index.html b/files/es/web/javascript/reference/statements/async_function/index.html new file mode 100644 index 0000000000..573c10fad8 --- /dev/null +++ b/files/es/web/javascript/reference/statements/async_function/index.html @@ -0,0 +1,173 @@ +--- +title: Función async +slug: Web/JavaScript/Referencia/Sentencias/funcion_asincrona +tags: + - Declaración + - Ejemplo + - JavaScript + - función +translation_of: Web/JavaScript/Reference/Statements/async_function +--- +
+
{{jsSidebar("Statements")}}
+ +

La declaración de función async define una función asíncrona, la cual devuelve un objeto {{jsxref("Global_Objects/AsyncFunction","AsyncFunction")}}.

+ +
+

Es posible definir también funciones asíncronas a través de una {{jsxref("Operators/async_function", "expresión de función async", "", 1)}}.

+
+
+ +
{{EmbedInteractiveExample("pages/js/statement-async.html", "taller")}}
+ + + +

Sintaxis

+ +
async function name([param[, param[, ... param]]]) {
+   statements
+}
+
+ +

Parámetros

+ +
+
name
+
El nombre de la función.
+
+ +
+
param
+
El nombre de un argumento que se debe pasar a la función.
+
+ +
+
statements
+
Las declaraciones que conforman el cuerpo de la función.
+
+ +

Valor de retorno

+ +

Un objeto {{jsxref("Global_Objects/AsyncFunction","AsyncFunction")}}, que representa una función asíncrona que ejecuta el código contenido dentro de la función.

+ +

Descripción

+ +

Cuando se llama a una función async, esta devuelve un elemento {{jsxref("Promise")}}. Cuando la función async devuelve un valor, Promise se resolverá con el valor devuelto. Si la función async genera una excepción o algún valor, Promise se rechazará con el valor generado.

+ +

Una función async puede contener una expresión {{jsxref("Operators/await", "await")}}, la cual pausa la ejecución de la función asíncrona y espera la resolución de la Promise pasada y, a continuación, reanuda la ejecución de la función async y devuelve el valor resuelto.

+ +
+

La finalidad de las funciones async/await es simplificar el comportamiento del uso síncrono de promesas y realizar algún comportamiento específico en un grupo de Promises. Del mismo modo que las Promises son semejantes a las devoluciones de llamadas estructuradas, async/await se asemejan a una combinación de generadores y promesas.

+
+ +

Ejemplos

+ +

Ejemplo sencillo

+ +
function resolveAfter2Seconds(x) {
+  return new Promise(resolve => {
+    setTimeout(() => {
+      resolve(x);
+    }, 2000);
+  });
+}
+
+
+async function add1(x) {
+  const a = await resolveAfter2Seconds(20);
+  const b = await resolveAfter2Seconds(30);
+  return x + a + b;
+}
+
+add1(10).then(v => {
+  console.log(v);  // prints 60 after 4 seconds.
+});
+
+
+async function add2(x) {
+  const p_a = resolveAfter2Seconds(20);
+  const p_b = resolveAfter2Seconds(30);
+  return x + await p_a + await p_b;
+}
+
+add2(10).then(v => {
+  console.log(v);  // prints 60 after 2 seconds.
+});
+
+ +
+

No se deben confundir await y Promise.all

+ +

En add1, la ejecución se suspende durante dos segundos correspondientes al primer operador await, y luego durante otros dos segundos correspondientes al segundo await. El segundo temporizador no se crea hasta que el primero no se haya disparado ya. En add2, ambos temporizadores se crean y, acto seguido, ambos reciben await. Esto provoca la resolución en dos segundos y no cuatro, ya que los temporizadores se ejecutaron de manera simultánea. Sin embargo, ambas llamadas await aún pueden ejecutarse en series, no en paralelo: esto no constituye ninguna aplicación automática de Promise.all. Si se desea aplicar await a dos o más promesas en paralelo, es preciso utilizar Promise.all.

+
+ +

Reescritura de una cadena de promesas con una función async

+ +

Una API que devuelva una {{jsxref("Promise")}} tendrá como resultado una cadena de promesas, y dividirá la función en muchas partes. Estudie este código:

+ +
function getProcessedData(url) {
+  return downloadData(url) // returns a promise
+    .catch(e => {
+      return downloadFallbackData(url)  // returns a promise
+    })
+    .then(v => {
+      return processDataInWorker(v); // returns a promise
+    });
+}
+
+ +

Es posible reescribirlo utilizando un solo operador async de esta manera:

+ +
async function getProcessedData(url) {
+  let v;
+  try {
+    v = await downloadData(url);
+  } catch(e) {
+    v = await downloadFallbackData(url);
+  }
+  return processDataInWorker(v);
+}
+
+ +

Observe que, en el ejemplo anterior, no hay ninguna instrucción await dentro de la instrucción return, porque el valor de retorno de una async function queda implícitamente dentro de un {{jsxref("Promise.resolve")}}.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ESDraft', '#sec-async-function-definitions', 'Función async')}}{{Spec2('ESDraft')}}Definición inicial en ES2017.
{{SpecName('ES8', '#sec-async-function-definitions', 'Función async')}}{{Spec2('ES8')}} 
+ +

Compatibilidad entre navegadores

+ +
+ + +

{{Compat("javascript.statements.async_function")}}

+
+ +

Véase también

+ + diff --git a/files/es/web/javascript/reference/statements/block/index.html b/files/es/web/javascript/reference/statements/block/index.html new file mode 100644 index 0000000000..36b2054d60 --- /dev/null +++ b/files/es/web/javascript/reference/statements/block/index.html @@ -0,0 +1,89 @@ +--- +title: block +slug: Web/JavaScript/Referencia/Sentencias/block +tags: + - JavaScript + - Referencia + - Referência(2) + - Statement +translation_of: Web/JavaScript/Reference/Statements/block +--- +
{{jsSidebar("Statements")}}
+ +

Resumen

+ +

Una sentencia block se utiliza para agrupar cero o más sentencias. Este grupo block se delimita por un par de llaves.

+ +

Sintaxis

+ +
{ sentencia_1; sentencia_2; ... sentencia_n; }
+
+ +
+
sentencia_1, sentencia_2, sentencia_n
+
Sentencias agrupadas dentro de una sentencia block.
+
+ +

Descripción

+ +

Esta sentencia se utiliza comúnmente para controlar sentencias de flujo (es decir if, for, while). Por ejemplo:

+ +
while (x < 10) {
+   x++;
+}
+
+ +

Las variables declaradas con var no tienen alcance de bloque(block scope). Las variables introducidas dentro de un grupo block tienen el alcance de la función que lo contiene o del script, y los efectos de su asignación persisten más allá del grupo block en sí mismo. En otras palabras, las sentencias block no incluyen ningún alcance. Aunque los grupos block "en solitario" (standalone) son una sintaxis válida, usted no querrá utilizar grupos block en solitario en JavaScript, ya que ellos no hacen lo que parecen, si piensa que funcionan de manera similar a los bloques en C o Java. Por ejemplo:

+ +
var x = 1;
+{
+   var x = 2;
+}
+alert(x); // resultado 2
+
+ +

Este obtiene el resultado 2 ya que la sentencia var x dentro del grupo block tiene el mismo alcance que la sentencia var x antes del mismo. En C o Java, el código equivalente tendría como resultado 1.

+ +

Con let const

+ +

Por el contrario, las variables declaradas con let y const tienen alcance de bloque.

+ +
let x = 1;
+{
+  let x = 2;
+}
+console.log(x); // logs 1
+
+ +

El alcance x = 2 es limitado solamente al bloque en el que está definido.

+ +

Lo mismo para  const:

+ +
const c = 1;
+{
+  const c = 2;
+}
+console.log(c); // logs 1 y no lanza SyntaxError...
+
+ +

Tenga en cuenta que la variable  const c = 2 con alcance de bloque, no lanza un  SyntaxError: El identificador 'c' ya ha sido declarado. Esto es porque se puede declarar de forma única dentro del bloque, sin interferir con la otra que tiene un  alcance global.

+ +

Con function

+ +

La declaración de una función también tiene un alcance limitado dentro del bloque donde se produce la declaración:

+ +
nacion('frances');  // TypeError: nacion no es una función
+{
+  function nacion(nacionalidad) {
+   console.log('Yo soy ' + nacionalidad);
+  }
+nacion('español'); // correcto. logs Yo soy español
+}
+ +

 

+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/statements/break/index.html b/files/es/web/javascript/reference/statements/break/index.html new file mode 100644 index 0000000000..aff2a58733 --- /dev/null +++ b/files/es/web/javascript/reference/statements/break/index.html @@ -0,0 +1,41 @@ +--- +title: break +slug: Web/JavaScript/Referencia/Sentencias/break +tags: + - JavaScript + - Statement +translation_of: Web/JavaScript/Reference/Statements/break +--- +
+ {{jsSidebar("Statements")}}
+

Resumen

+

Termina el bucle actual, sentecia switch o label y transfiere el control del programa a la siguiente sentencia a la sentecia de terminación de éstos elementos.

+

Sintaxis

+
break [etiqueta];
+
+
+ etiqueta
+
+ Identificador asociado con la etiqueta de la sentencia.
+
+

Descripción

+

La sentencia break incluye una etiqueta opcional que permite al programa salir de una sentencia etiquetada. La sentencia break necesita estar anidada dentro de la sentencia etiquetada. La sentencia etiquetada puede ser cualquier tipo de sentencia; no tiene que ser una sentencia de bucle.

+

Ejemplos

+

Ejemplo: Usando break

+

La siguiente función tiene una sentencia que termina el bucle {{jsxref("Sentencias/while", "while")}} cuando i es 3, y entonces devuelve el valor 3 * x.

+
function comprobarBreak(x) {
+   var i = 0;
+   while (i < 6) {
+      if (i == 3)
+         break;
+      i++;
+   }
+   return i * x;
+}
+
+

Vea También

+ diff --git a/files/es/web/javascript/reference/statements/class/index.html b/files/es/web/javascript/reference/statements/class/index.html new file mode 100644 index 0000000000..c37b9ba43b --- /dev/null +++ b/files/es/web/javascript/reference/statements/class/index.html @@ -0,0 +1,148 @@ +--- +title: class +slug: Web/JavaScript/Referencia/Sentencias/class +translation_of: Web/JavaScript/Reference/Statements/class +--- +
{{jsSidebar("Statements")}}
+ +

La declaración class crea una nueva clase con el nombre proporcionado utilizando la herencia basada en prototipos

+ +
+

También se puede definir una clase usando una {{jsxref("Operators/class", "expresión de clase", "", 1)}}. Pero a diferencia de las expresiones de clases, la declaración de clases no permite que una clase existente sea declarada de nuevo y en caso de hacerse, lanzará un error de tipo.

+
+ +

Sintaxis

+ +
class name [extends] {
+  // Contenido de la clase
+}
+
+ +

Descripción

+ +

De la misma manera que con las expresiones de clase, el contenido de una clase se ejecuta en modo estricto.

+ +

Las declaraciones de clases no están {{Glossary("Hoisting", "izadas")}} (al contrario que las declaraciones de funciones).

+ +

Ejemplos

+ +

Declaración sencilla de una clase

+ +

En el siguiente ejemplo, primero definimos la clase Polygon, luego extendemos de ella para crear la clase Square. Notar que super(), utilizado en el constructor, sólo puede ser llamado dentro del constructor y debe ser llamado antes de que la palabra clave this pueda ser usada.

+ +
class Polygon {
+  constructor(height, width) {
+    this.name = 'Polygon';
+    this.height = height;
+    this.width = width;
+  }
+}
+
+class Square extends Polygon {
+  constructor(length) {
+    super(length, length);
+    this.name = 'Square';
+  }
+}
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
{{SpecName('ES6', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad en navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome(42.0)}}{{CompatGeckoDesktop(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Array subclassing{{CompatChrome(43.0)}}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome para Android
Soporte básico{{CompatNo}}{{CompatChrome(42.0)}}{{CompatGeckoMobile(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(42.0)}}
Array subclassing{{CompatNo}}{{CompatChrome(43.0)}}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(43.0)}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/statements/const/index.html b/files/es/web/javascript/reference/statements/const/index.html new file mode 100644 index 0000000000..c55350fbd4 --- /dev/null +++ b/files/es/web/javascript/reference/statements/const/index.html @@ -0,0 +1,127 @@ +--- +title: const +slug: Web/JavaScript/Referencia/Sentencias/const +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Statement +translation_of: Web/JavaScript/Reference/Statements/const +--- +
{{jsSidebar("Statements")}}
+ +

Resumen

+ +

Las variables constantes presentan un ámbito de bloque (block scope) tal y como lo hacen las variables definidas usando la instrucción let, con la particularidad de que el valor de una constante no puede cambiarse a través de la reasignación. Las constantes no se pueden redeclarar.

+ +
+

La redeclaración de la misma variable bajo un mismo ámbito léxico terminaría en un error de tipo SyntaxError. Esto también es extensible si usamos var dentro del ámbito léxico. Esto nos salvaguarda de redeclarar una variable accidentalmente y que no era posible  solo con var.

+
+ +

Sintaxis

+ +
const varname1 = value1 [, varname2 = value2 [, varname3 = value3 [, ... [, varnameN = valueN]]]];
+ +
+
varnameN
+
Nombre de la constante. Puede ser un identificador legal.
+
+ +
+
valueN
+
Valor de la constante. Puede ser cualquier expresión legal.
+
+ +

Descripción

+ +

Esta declaración crea una constante cuyo alcance puede ser global o local para el bloque en el que se declara. Es necesario inicializar la constante, es decir, se debe especificar su valor en la misma sentencia en la que se declara, lo que tiene sentido, dado que no se puede cambiar posteriormente.

+ +

La declaración de una constante crea una referencia de sólo lectura. No significa que el valor que tiene sea inmutable, sino que el identificador de variable no puede ser reasignado, por lo tanto, en el caso de que la asignación a la constante sea un objeto, el objeto sí que puede ser alterado.

+ +

Una constante no puede compartir su nombre con una función o variable en el mismo ámbito.

+ +

Todas las consideraciones acerca de la " zona muerta temporal " se aplican tanto a letyconst.

+ +
+

const es fue una extensión especifica de Mozilla, no es era soportado en IE, pero tiene tenia soporte parcial por Opera desde la versión 9.0 y por Safari.

+
+ +

Ejemplos

+ +

El siguiente ejemplo produce una salida "a es 7."

+ +
const a = 7;
+document.writeln("a es " + a + ".");
+
+ +

Las siguientes instrucciones demuestra como se comporta const

+ +
+

Las instrucciones deberán ser ordenadas correctamente para conseguir la salida esperada a los ejemplos

+
+ +
// NOTA: Las constantes pueden ser declaradas en mayusculas o minusculaas,
+//pero por convencion para distinguirlas del resto de variables se escribe todo en mayusculas
+
+// definimos MY_FAV como constante y le damos un valor de 7
+const MY_FAV = 7;
+
+// lanzara un error: Unkeught TypeError: Asignación a variable constante.
+MY_FAV = 20;
+
+// imprimira 7
+console.log('my favorite number is: ' + MY_FAV);
+
+// lanzara un error: SyntaxError: tratando de redeclarar una constante. El identificador 'MY_FAV' ya ha sido declarado
+const MY_FAV = 20;
+
+// el nombre MY_FAV esta reservado para la constante anterior, también fallara y lanzara un SyntaxError por la redeclaración
+var MY_FAV = 20;
+
+// el nombre MY_FAV esta reservado para la variable anterior, esto también lanzara un SyntaxError por la redeclaración
+let MY_FAV = 20;
+
+// es importante tener en cuenta como funciona el alcance de bloque
+if (MY_FAV === 7) {
+    // esto esta bien y crea una variable MY_FAV de alcance/ambito de bloque
+    // (funciona igual de bien con let para declarar un alcance de bloque/ambito de variable no-constante)
+    const MY_FAV = 20;
+
+    // MY_FAV ahora es 20
+    console.log('my favorite number is ' + MY_FAV);
+
+    // aquín también lanzara un SyntaxError por la redeclaración
+    var MY_FAV = 20;
+}
+
+// MY_FAV todavia es 7
+console.log('my favorite number is ' + MY_FAV);
+
+// lanza error, falta el inicializador en la declaracion de const
+const FOO;
+
+// const tambien funciona en objetos
+const MY_OBJECT = {'key': 'value'};
+
+// Intentando sobrescribir el objeto nos lanza un error
+MY_OBJECT = {'OTHER_KEY': 'value'};
+
+// Sin embargo, los object keys no estan protegidas,
+// por lo que la siguiente sentencia se ejecutara sin problema
+MY_OBJECT.key = 'otherValue'; // Use Object.freeze() para hacer un objeto inmutable
+
+// Lo mismo se aplica a los arrays
+const MY_ARRAY = [];
+// es posible empujar elementos en el array
+MY_ARRAY.push('A'); // ["A"]
+// Sin embargo, asignar un nuevo array a la variable lanza error
+MY_ARRAY = ['B']
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/statements/continue/index.html b/files/es/web/javascript/reference/statements/continue/index.html new file mode 100644 index 0000000000..5371b4cdd7 --- /dev/null +++ b/files/es/web/javascript/reference/statements/continue/index.html @@ -0,0 +1,66 @@ +--- +title: continue +slug: Web/JavaScript/Referencia/Sentencias/continue +tags: + - JavaScript + - Statement +translation_of: Web/JavaScript/Reference/Statements/continue +--- +
+ {{jsSidebar("Statements")}}
+

Resumen

+

Termina la ejecución de las sentencias de la iteración actual del bucle actual o la etiqueta y continua la ejecución del bucle con la próxima iteración.

+

Sintaxis

+
continue [ etiqueta ];
+
+
+ label
+
+ Identificador asociado con la etiqueta de la sentencia.
+
+

Descripción

+

En contraste con la sentencia {{jsxref("Sentencias/break", "break")}}, continue no termina la ejecución del bucle por completo; en cambio,

+ + +

La sentencia continue puede incluir una etiqueta opcional que permite al programa saltar a la siguiente iteración del bucle etiquetado en vez del bucle actual. En este caso, la sentencia continue necesita estar anidada dentro de esta sentecia etiquetada.

+

Ejemplos

+

Ejemplo: Usando continue con while

+

El siguiente ejemplo muestra un bucle {{jsxref("Sentencias/while", "while")}} que tiene una sentencia continue que se ejecuta cuando el valor de i es 3. Así, n toma los valores 1, 3, 7 y 12.

+
i = 0;
+n = 0;
+while (i < 5) {
+   i++;
+   if (i == 3)
+      continue;
+   n += i;
+}
+
+

Ejemplo: Usando continue con una etiqueta

+

En el siguiente ejemplo, una sentencia etiquetada checkiandj contiene una sentencia etiquetada checkj. Si se encuentra continue, el programa continua hasta encima de la sentencia checkj. Cada vez que se encuentra continue, checkj se reitera hasta que su condición devuelve false. Cuando se devuelve false, el recordatorio de la sentencia checkiandj se completa.

+

Si continue tuviese una etiqueta checkiandj, el programa continuaría hasta encima de la sentencia checkiandj.

+
checkiandj:
+while (i < 4) {
+   document.write(i + "<br>");
+   i += 1;
+
+   checkj:
+   while (j > 4) {
+      document.write(j + "<br>");
+      j -= 1;
+      if ((j % 2) == 0)
+         continue checkj;
+      document.write(j + " is odd.<br>");
+   }
+   document.write("i = " + i + "<br>");
+   document.write("j = " + j + "<br>");
+}
+
+

Vea También

+ diff --git a/files/es/web/javascript/reference/statements/debugger/index.html b/files/es/web/javascript/reference/statements/debugger/index.html new file mode 100644 index 0000000000..bb36e356c0 --- /dev/null +++ b/files/es/web/javascript/reference/statements/debugger/index.html @@ -0,0 +1,125 @@ +--- +title: debugger +slug: Web/JavaScript/Referencia/Sentencias/debugger +tags: + - JavaScript + - Sentencia +translation_of: Web/JavaScript/Reference/Statements/debugger +--- +
{{jsSidebar("Statements")}}
+ +

La sentencia debugger invoca cualquier funcionalidad de depuración disponible, tiene la misma función que un breakpoint. Si la funcionalidad de depuración no está disponible, esta sentencia no tiene efecto alguno.

+ +

Sintaxis

+ +
debugger;
+ +

Ejemplos

+ +

El siguiente ejemplo muestra un bloque de código donde ha sido insertada una sentencia debugger, para invocar el depurador (si existe) cuando la función es ejecutada.

+ +
function codigoPotencialmenteDefectuoso() {
+    debugger;
+    // realizar paso a paso o examinar código que contiene
+    // potenciales errores
+}
+ +

Cuando el depurador es invocado, la ejecución se detiene en la sentencia debugger. Es como un punto de interrupción en el script.

+ +

Paused at a debugger statement.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-debugger-statement', 'Debugger statement')}}{{Spec2('ESDraft')}} 
{{SpecName('ES6', '#sec-debugger-statement', 'Debugger statement')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-12.15', 'Debugger statement')}}{{Spec2('ES5.1')}}Definición inicial
{{SpecName('ES3', '#sec-7.5.3', 'Debugger statement')}}{{Spec2('ES3')}} 
{{SpecName('ES1', '#sec-7.4.3', 'Debugger statement')}}{{Spec2('ES1')}}Solo mencionada como palabra reservada
+ +

Compatibilidad con navegadores

+ +

{{CompatibilityTable}}

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

Vea también

+ + diff --git a/files/es/web/javascript/reference/statements/do...while/index.html b/files/es/web/javascript/reference/statements/do...while/index.html new file mode 100644 index 0000000000..628c1458cd --- /dev/null +++ b/files/es/web/javascript/reference/statements/do...while/index.html @@ -0,0 +1,49 @@ +--- +title: do...while +slug: Web/JavaScript/Referencia/Sentencias/do...while +tags: + - JavaScript + - Statement +translation_of: Web/JavaScript/Reference/Statements/do...while +--- +
{{jsSidebar("Statements")}}
+ +

La sentencia (hacer mientras) crea un bucle que ejecuta una sentencia especificada, hasta que la condición de comprobación se evalúa como falsa. La condición se evalúa después de ejecutar la sentencia, dando como resultado que la sentencia especificada se ejecute al menos una vez.

+ +
{{EmbedInteractiveExample("pages/js/statement-dowhile.html")}}
+ +

Sintaxis

+ +
do
+   sentencia
+while (condición);
+
+ +
+
sentencia
+
Una sentencia que se ejecuta al menos una vez y es reejecutada cada vez que la condición se evalúa a verdadera. Para ejecutar múltiples sentencias dentro de un bucle, utilice la sentencia {{jsxref("Statements/block", "block")}} ({ ... }) para agrupar aquellas sentencias.
+
+ +
+
condición
+
Una expresión se evalúa después de cada pase del bucle. Si condición se evalúa como verdadera, la sentencia se re-ejecuta. Cuando condición se evalúa como falsa, el control pasa a la siguiente sentencia hacer mientras.
+
+ +

Ejemplos

+ +

Usando hacer mientras

+ +

En el siguiente ejemplo, el bucle hacer mientras itera al menos una vez y se reitera hasta que i ya no sea menor que 5.

+ +
do {
+   i += 1;
+   document.write(i);
+} while (i < 5);
+
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/statements/empty/index.html b/files/es/web/javascript/reference/statements/empty/index.html new file mode 100644 index 0000000000..627fd889c7 --- /dev/null +++ b/files/es/web/javascript/reference/statements/empty/index.html @@ -0,0 +1,141 @@ +--- +title: empty +slug: Web/JavaScript/Referencia/Sentencias/Empty +tags: + - JavaScript + - Sentencia + - Vacía +translation_of: Web/JavaScript/Reference/Statements/Empty +--- +
{{jsSidebar("Statements")}}
+ +

Un empty statement o sentencia vacía es usada para no proveer una sentencia, incluso si la sintaxis JavaScript esperase una.

+ +

Sintaxis

+ +
;
+
+ +

Descripción

+ +

La sentencia vacía es un punto y coma (;) que indica que no se ejecutará ninguna sentencia, incluso si la sintaxis JavaScript requiere una. El comportamiento opuesto, donde se desean ejecutar varias sentencias pero JavaScript solo permite una sola, es posible usando una sentencia de bloque; la cual combina varias declaraciones en una.

+ +

Ejemplos

+ +

La sentencia vacía es comúnmente usada en bucles. Por ejemplo, un bucle for sin bloque de sentencias:

+ +
var arr = [1, 2, 3];
+
+// Asignar el valor 0 a todos los elementos del array
+for (i = 0; i < arr.length; arr[i++] = 0) /* sentencia vacía */ ;
+
+console.log(arr);
+// [0, 0, 0]
+
+ +

Nota: Es una buena práctica comentar el uso intencional de la sentencia vacía, ya que no es fácilmente distinguible de un punto y coma normal. Un ejemplo de uso probablemente no intencional:

+ +
if (condicion);  // Esta condición no ejerce ningún control!
+   borrarTodo()  // Por lo cual esta sentencia será ejecutada siempre!!!
+
+ +

Otro ejemplo de uso:

+ +
var a = 1, b = 1;
+if((a == 0) || (b = 0)); // Asigna a 'b' el valor cero si 'a' no es cero.
+console.log(b); // 0
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ESDraft', '#sec-empty-statement', 'Empty statement')}}{{Spec2('ESDraft')}} 
{{SpecName('ES6', '#sec-empty-statement', 'Empty statement')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-12.3', 'Empty statement')}}{{Spec2('ES5.1')}} 
{{SpecName('ES3', '#sec-12.3', 'Empty statement')}}{{Spec2('ES3')}} 
{{SpecName('ES1', '#sec-12.3', 'Empty statement')}}{{Spec2('ES1')}}Definición inicial.
+ +

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

Vea también

+ + diff --git a/files/es/web/javascript/reference/statements/export/index.html b/files/es/web/javascript/reference/statements/export/index.html new file mode 100644 index 0000000000..6016afd0ba --- /dev/null +++ b/files/es/web/javascript/reference/statements/export/index.html @@ -0,0 +1,175 @@ +--- +title: export +slug: Web/JavaScript/Referencia/Sentencias/export +tags: + - ECMAScript 2015 + - JavaScript + - Módulos + - Sentencia + - export +translation_of: Web/JavaScript/Reference/Statements/export +--- +
{{jsSidebar("Statements")}}
+ +

La declaración export se utiliza al crear módulos de JavaScript para exportar funciones, objetos o tipos de dato primitivos del módulo para que puedan ser utilizados por otros programas con la sentencia {{jsxref("Statements/import", "import")}}.

+ +

Los módulos exportados están en {{jsxref("Strict_mode","strict mode")}} tanto si se declaran así como si no. La sentencia export no puede ser utilizada en scripts embebidos.

+ +

Sintaxis

+ +
export { name1, name2, …, nameN };
+export { variable1 as name1, variable2 as name2, …, nameN };
+export let name1, name2, …, nameN; // también var
+export let name1 = …, name2 = …, …, nameN; // también var, const
+export function FunctionName(){...}
+export class ClassName {...}
+
+export default expression;
+export default function (…) { … } // también class, function*
+export default function name1(…) { … } // también class, function*
+export { name1 as default, … };
+
+export * from …;
+export { name1, name2, …, nameN } from …;
+export { import1 as name1, import2 as name2, …, nameN } from …;
+export { default } from …;
+
+ +
+
nameN
+
Identificador a ser exportado (es posible importarlo a través de {{jsxref("Statements/import", "import")}} en otro script).
+
+ +

Descripción

+ +

Existen dos tipos diferentes de exportación , nombrada y por defecto. Se pueden tener varias exportaciones nombradas por módulo pero sólo una exportación por defecto. Cada tipo corresponde a una de las sintaxis siguientes:

+ + + +

Los export con nombre son útiles cuando se necesitan exportar múltiples valores. Durante el import, es obligatorio usar el mismo nombre que el correspondiente objeto.

+ +

Pero un export por defecto puede ser importado con cualquier nombre, por ejemplo:

+ +
export default k = 12; // en el archivo test.js
+
+import m from './test' // notese que tenemos la libertad de usar import m en lugar de import k, porque k era el export por defecto
+
+console.log(m); // escribirá 12
+ +

Sólo puede haber un export por defecto.

+ +

La siguiente sintaxis no exporta un export por defecto del módulo importado:

+ +
export * from …;
+ +

Si necesita exportar por defecto, escriba lo siguiente en su lugar:

+ +
import mod from 'mod';
+export default mod;
+ +

Ejemplos

+ +

Usando exports con nombre

+ +

En el módulo, podremos usar el siguiente código:

+ +
// module "my-module.js"
+function cube(x) {
+  return x * x * x;
+}
+const foo = Math.PI + Math.SQRT2;
+var graph = {
+    options:{
+        color:'white',
+        thickness:'2px'
+    },
+    draw: function(){
+        console.log('From graph draw function');
+    }
+}
+export { cube, foo, graph };
+ +

De esta forma, en otro script, podemos tener:

+ +
//You should use this script in html with the type module ,
+//eg ''<script type="module" src="demo.js"></script>",
+//open the page in a httpserver,otherwise there will be a CORS policy error.
+//script demo.js
+
+import { cube, foo, graph } from 'my-module';
+graph.options = {
+    color:'blue',
+    thickness:'3px'
+};
+graph.draw();
+console.log(cube(3)); // 27
+console.log(foo);    // 4.555806215962888
+
+ +

Usando el export por defecto

+ +

Si queremos exportar un sólo valor o tener uno por defecto para nuestro módulo, podemos usar un export por defecto:

+ +
// module "my-module.js"
+export default function cube(x) {
+  return x * x * x;
+}
+
+ +

De esta forma la importación de un export default será sumamemte sencilla:

+ +
import cube from 'my-module';
+console.log(cube(3)); // 27
+ +

Tenga en cuenta que no es posible usar var, let o const con export default.

+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-exports', 'Exports')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-exports', 'Exports')}}{{Spec2('ESDraft')}} 
+ +

Compatiblidad en navegadores

+ +

{{Compat("javascript.statements.export")}}

+ +

Vea también

+ + + +

 

diff --git a/files/es/web/javascript/reference/statements/for-await...of/index.html b/files/es/web/javascript/reference/statements/for-await...of/index.html new file mode 100644 index 0000000000..49349d7199 --- /dev/null +++ b/files/es/web/javascript/reference/statements/for-await...of/index.html @@ -0,0 +1,144 @@ +--- +title: for await...of +slug: Web/JavaScript/Referencia/Sentencias/for-await...of +tags: + - Iteración + - JavaScript + - Referencia + - Sentencia + - asincrónico + - await + - iterar +translation_of: Web/JavaScript/Reference/Statements/for-await...of +--- +
{{jsSidebar("Statements")}}
+ +

La sentencia for await...of crea un bucle iterando tanto sobre objetos iterables asincrónicos como sincrónicos, incluyendo: built-in {{jsxref("String")}}, {{jsxref("Array")}}, objetos Array-like (por ej., {{jsxref("Functions/arguments", "arguments")}} o {{domxref("NodeList")}}), {{jsxref("TypedArray")}}, {{jsxref("Map")}}, {{jsxref("Set")}}, y async/sync iterables definidos por el usuario. Invoca un hook de iteración personalizada con sentencias a ser ejecutadas por el valor de cada propiedad diferente del objeto.

+ + + +

Sintaxis

+ +
for await (variable of iterable) {
+  sentencia
+}
+
+ +
+
variable
+
En cada iteración, el valor de una propiedad diferente es asignado a variable. variable puede ser declarada con const, let, o var.
+
iterable
+
Objeto sobre cuyas propiedades se itera.
+
+ +

Iterando sobre iterables asincrónicos

+ +

También puedes iterar sobre un objeto que explícitamente implementa el protocolo async iterable:

+ +
var asyncIterable = {
+  [Symbol.asyncIterator]() {
+    return {
+      i: 0,
+      next() {
+        if (this.i < 3) {
+          return Promise.resolve({ value: this.i++, done: false });
+        }
+
+        return Promise.resolve({ done: true });
+      }
+    };
+  }
+};
+
+(async function() {
+   for await (let num of asyncIterable) {
+     console.log(num);
+   }
+})();
+
+// 0
+// 1
+// 2
+
+ +

Iterando sobre funciones generadoras asincrónicas

+ +

Debido a que las funciones generadoras asincrónicas implementan el protocolo async iterator, las mismas pueden ser iteradas utilizando for await... of

+ +
async function* asyncGenerator() {
+  var i = 0;
+  while (i < 3) {
+    yield i++;
+  }
+}
+
+(async function() {
+  for await (let num of asyncGenerator()) {
+    console.log(num);
+  }
+})();
+// 0
+// 1
+// 2
+ +

Para un ejemplo más concreto de iteración sobre una función generadora utilizando for await... of, considera iterar sobre datos provistos por una API. Este ejemplo primero crea un iterador asincrónico para un stream de datos, luego lo utiliza para obtener el tamaño de la respuesta desde la API.

+ +
async function* streamAsyncIterator(stream) {
+  const reader = stream.getReader();
+  try {
+    while (true) {
+      const { done, value } = await reader.read();
+      if (done) {
+        return;
+      }
+      yield value;
+    }
+  } finally {
+    reader.releaseLock();
+  }
+}
+// Obtiene datos desde url y calcula el tamaño de la respuesta utilizando la función generadora asincrónica.
+async function getResponseSize(url) {
+  const response = await fetch(url);
+  // Almacenará el tamaño de la respuesta en bytes.
+  let responseSize = 0;
+  // El buble for-await-of. Itera asincrónicamente sobre cada parte de la respuesta.
+  for await (const chunk of streamAsyncIterator(response.body)) {
+    // Incrementando el tamaño total.
+    responseSize += chunk.length;
+  }
+
+  console.log(`Tamaño de la respuesta: ${responseSize} bytes`);
+  // salida esperada: "Tamaño de la respuesta: 1071472"
+  return responseSize;
+}
+getResponseSize('https://jsonplaceholder.typicode.com/photos');
+ +

Especificaciones

+ + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
{{SpecName('ESDraft', '#sec-for-in-and-for-of-statements', 'ECMAScript Language: The for-in, for-of, and for-await-of Statements')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad de Navegadores

+ + + +

{{Compat("javascript.statements.for_await_of")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/statements/for...in/index.html b/files/es/web/javascript/reference/statements/for...in/index.html new file mode 100644 index 0000000000..0680d69dea --- /dev/null +++ b/files/es/web/javascript/reference/statements/for...in/index.html @@ -0,0 +1,150 @@ +--- +title: for...in +slug: Web/JavaScript/Referencia/Sentencias/for...in +tags: + - Característica del lenguaje + - Declaración + - JavaScript +translation_of: Web/JavaScript/Reference/Statements/for...in +--- +
{{jsSidebar("Statements")}}
+ +

La instrucción {{JSxRef("Sentencias/for...in", "for-in")}} itera sobre todas las {{JSxRef("../Enumerability_and_ownership_of_properties", "propiedades enumerables")}} de un objeto que está codificado por cadenas (ignorando los codificados por {{JSxRef("Objetos_globales/Symbol", "Símbolos")}}, incluidas las propiedades enumerables heredadas.

+ +
{{EmbedInteractiveExample("pages/js/statement-forin.html")}}
+ + + +

Sintaxis

+ +
for (variable in objeto)
+  instrucción
+ +
+
variable
+
Asigna un nombre de propiedad diferente a la variable en cada iteración.
+
objeto
+
Objeto cuyas propiedades enumerables que no son símbolos se iteran.
+
+ +

Descripción

+ +

Un bucle for...in solo itera sobre propiedades enumerables que no son símbolo. Los objetos creados a partir de constructores integrados como Array y Object han heredado propiedades no enumerables de Object.prototype y String.prototype, como el método {{JSxRef("String.indexOf", "indexOf()")}} de {{JSxRef("String")}} o el método {{JSxRef("Object.toString", "toString()")}} de {{JSxRef("Object")}}. El bucle iterará sobre todas las propiedades enumerables del objeto en sí y aquellas que el objeto hereda de su cadena de prototipos (las propiedades de los prototipos más cercanos tienen prioridad sobre las de los prototipos más alejados del objeto en su cadena de prototipos).

+ +

Propiedades deleted, added o modified

+ +

Un bucle for...in itera sobre las propiedades de un objeto en un orden arbitrario (consulta el operador {{JSxRef("Operadores/delete", "delete")}} para obtener más información sobre por qué no puede depender del aparente orden de la iteración, al menos en una configuración entre navegadores).

+ +

Si una propiedad se modifica en una iteración y luego se visita en un momento posterior, su valor en el bucle es su valor en ese momento posterior. Una propiedad que se elimina antes de haber sido visitada no se visitará más tarde. Las propiedades agregadas al objeto sobre el que se está produciendo la iteración se pueden visitar u omitir de la iteración.

+ +

En general, es mejor no agregar, modificar o eliminar propiedades del objeto durante la iteración, aparte de la propiedad que se está visitando actualmente. No hay garantía de si se visitará una propiedad agregada, si se visitará una propiedad modificada (distinta de la actual) antes o después de que se modifique, o si se visitará una propiedad eliminada antes de eliminarla.

+ +

Iteración en arreglos y for...in

+ +
+

Nota: for...in no se debe usar para iterar sobre un {{JSxRef("Array")}} donde el orden del índice es importante.

+
+ +

Los índices del arreglo son solo propiedades enumerables con nombres enteros y, por lo demás, son idénticos a las propiedades generales del objeto. No hay garantía de que for...in devuelva los índices en un orden en particular. La instrucción de bucle for...in devolverá todas las propiedades enumerables, incluidas aquellas con nombres no enteros y aquellas que se heredan.

+ +

Debido a que el orden de iteración depende de la implementación, es posible que la iteración sobre un arreglo no visite los elementos en un orden coherente. Por lo tanto, es mejor usar un bucle {{JSxRef("Sentencias/for", "for")}} con un índice numérico (o {{JSxRef("Array.prototype.forEach()")}} o el bucle {{JSxRef("Sentencias/for...of", "for...of")}}) cuando se itera sobre arreglos donde el orden de acceso es importante.

+ +

Iterar solo sobre propiedades directas

+ +

Si solo deseas considerar las propiedades adjuntas al objeto en sí mismo, y no sus prototipos, usa {{JSxRef("Object.getOwnPropertyNames", "getOwnPropertyNames()")}} o realiza una {{JSxRef("Object.prototype.hasOwnProperty", "hasOwnProperty()")}} verificación ({{jsxref("Object.prototype.propertyIsEnumerable", "propertyIsEnumerable()")}} también se puede utilizar). Alternativamente, si sabes que no habrá ninguna interferencia de código externo, puedes extender los prototipos incorporados con un método de verificación.

+ +

¿Por qué usar for...in?

+ +

Dado que for...in está construido para iterar propiedades de objeto, no se recomienda su uso con arreglos y opciones como Array.prototype.forEach() y existe for...of, ¿cuál podría ser el uso de for...in?

+ +

Es posible que se utilice de forma más práctica con fines de depuración, ya que es una forma fácil de comprobar las propiedades de un objeto (mediante la salida a la consola o de otro modo). Aunque los arreglos suelen ser más prácticos para almacenar datos, en situaciones en las que se prefiere un par clave-valor para trabajar con datos (con propiedades que actúan como la "clave"), puede haber casos en los que desees comprobar si alguna de esas claves cumple un valor particular.

+ +

Ejemplos

+ +

Utilizar for...in

+ +

El siguiente bucle for...in itera sobre todas las propiedades enumerables que no son símbolos del objeto y registra una cadena de los nombres de propiedad y sus valores.

+ +
var obj = {a: 1, b: 2, c: 3};
+
+for (const prop in obj) {
+  console.log(`obj.${prop} = ${obj[prop]}`);
+}
+
+// Produce:
+// "obj.a = 1"
+// "obj.b = 2"
+// "obj.c = 3"
+ +

Iterar propiedades directas

+ +

La siguiente función ilustra el uso de {{JSxRef("Object.prototype.hasOwnProperty", "hasOwnProperty()")}} — las propiedades heredadas no se muestran.

+ +
var triangle = {a: 1, b: 2, c: 3};
+
+function ColoredTriangle() {
+  this.color = 'red';
+}
+
+ColoredTriangle.prototype = triangle;
+
+var obj = new ColoredTriangle();
+
+for (const prop in obj) {
+  if (obj.hasOwnProperty(prop)) {
+    console.log(`obj.${prop} = ${obj[prop]}`);
+  }
+}
+
+// Produce:
+// "obj.color = red"
+
+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-for-in-and-for-of-statements', 'declaración for...in')}}
+ +

Compatibilidad del navegador

+ + + +

{{Compat("javascript.statements.for_in")}}

+ +

Compatibilidad: expresiones iniciadoras en modo estricto

+ +

Antes de Firefox 40, era posible utilizar una expresión iniciadora (i=0) en un bucle for...in:

+ +
var obj = {a: 1, b: 2, c: 3};
+for (var i = 0 in obj) {
+  console.log(obj[i]);
+}
+// 1
+// 2
+// 3
+
+ +

Este comportamiento no estándar ahora se ignora en la versión 40 y posteriores, y presentará un {{JSxRef("SyntaxError")}} ("{{JSxRef("errors/Invalid_for-in_initializer", "iniciador for...in no válido", "las declaraciones de encabezado del bucle for-in posiblemente no tengan iniciadores")}} en {{JSxRef("Strict_mode", "modo estricto")}} ({{bug(748550)}} y {{bug(1164741)}}").

+ +

Otros motores como v8 (Chrome), Chakra (IE/Edge) y JSC (WebKit/Safari) están investigando si eliminar también el comportamiento no estándar.

+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/statements/for...of/index.html b/files/es/web/javascript/reference/statements/for...of/index.html new file mode 100644 index 0000000000..572308b41a --- /dev/null +++ b/files/es/web/javascript/reference/statements/for...of/index.html @@ -0,0 +1,319 @@ +--- +title: for...of +slug: Web/JavaScript/Referencia/Sentencias/for...of +tags: + - ECMAScript6 + - JavaScript + - Referencia + - Sentencia +translation_of: Web/JavaScript/Reference/Statements/for...of +--- +
+
{{jsSidebar("Statements")}}
+ +

La sentencia sentencia for...of ejecuta un bloque de código para cada elemento de un objeto iterable, como lo son: {{jsxref("String")}}, {{jsxref("Array")}}, objetos similares a array (por ejemplo, {{jsxref("Functions/arguments", "arguments")}} or NodeList), {{jsxref("TypedArray")}}, {{jsxref("Map")}}, {{jsxref("Set")}} e iterables definidos por el usuario.

+
+ +

Sintaxis

+ +
for (variable of iterable) {
+  statement
+}
+
+ +
+
variable
+
En cada iteración el elemento (propiedad enumerable) correspondiente es asignado a variable
+
iterable
+
Objeto cuyas propiedades enumerables son iteradas. 
+
+ +

Ejemplos

+ +

Iterando un {{jsxref("Array")}}

+ +
let iterable = [10, 20, 30];
+
+for (let value of iterable) {
+  value += 1;
+  console.log(value);
+}
+// 11
+// 21
+// 31
+
+ +

Es posible usar const en lugar de let si no se va a modificar la variable dentro del bloque.

+ +
let iterable = [10, 20, 30];
+
+for (const value of iterable) {
+  console.log(value);
+}
+// 10
+// 20
+// 30
+ +

Iterando un {{jsxref("String")}}

+ +
let iterable = "boo";
+
+for (let value of iterable) {
+  console.log(value);
+}
+// "b"
+// "o"
+// "o"
+ +

Iterando un {{jsxref("TypedArray")}}

+ +
let iterable = new Uint8Array([0x00, 0xff]);
+
+for (let value of iterable) {
+  console.log(value);
+}
+// 0
+// 255
+ +

Iterando un {{jsxref("Map")}}

+ +
let iterable = new Map([["a", 1], ["b", 2], ["c", 3]]);
+
+for (let entry of iterable) {
+  console.log(entry);
+}
+// ['a', 1]
+// ['b', 2]
+// ['c', 3]
+
+for (let [key, value] of iterable) {
+  console.log(value);
+}
+// 1
+// 2
+// 3
+ +

Iterando un {{jsxref("Set")}}

+ +
let iterable = new Set([1, 1, 2, 2, 3, 3]);
+
+for (let value of iterable) {
+  console.log(value);
+}
+// 1
+// 2
+// 3
+ +

Iterando un objeto arguments

+ +
(function() {
+  for (let argument of arguments) {
+    console.log(argument);
+  }
+})(1, 2, 3);
+
+// 1
+// 2
+// 3
+ +

Iterando una colección del DOM

+ +

Iterando colecciones del DOM como un {{domxref("NodeList")}}: el siguiente ejemplo añade la clase "read" a los párrafos (<p>) que son descendientes directos de un (<article>):

+ +
// Nota: Esto solo funcionará en plataformas que tengan
+// implementado NodeList.prototype[Symbol.iterator]
+let articleParagraphs = document.querySelectorAll("article > p");
+
+for (let paragraph of articleParagraphs) {
+  paragraph.classList.add("read");
+}
+ +

Clausurando iteraciones

+ +

En los bucles for...of, se puede causar que la iteración termine de un modo brusco usando: breakcontinue[4]throw or return[5]. En estos casos la iteración se cierra.

+ +
function* foo(){
+  yield 1;
+  yield 2;
+  yield 3;
+};
+
+for (let o of foo()) {
+  console.log(o);
+  break; // closes iterator, triggers return
+}
+ +

Iterando generadores

+ +

También es posible iterar las nuevas funciones generator:

+ +
function* fibonacci() { // una función generador
+  let [prev, curr] = [0, 1];
+  while (true) {
+    [prev, curr] = [curr, prev + curr];
+    yield curr;
+  }
+}
+
+for (let n of fibonacci()) {
+  console.log(n);
+  // interrumpir la secuencia en 1000
+  if (n >= 1000) {
+    break;
+  }
+}
+ +
+

No se deben reutilizar los generadores

+ +

Los generadores no deben ser reutilizados, incluso si el bucle for...of se ha terminado antes de tiempo con la sentencia break. Una vez abandonado el bucle, el generador está cerrado y tratar de iterar sobre él de nuevo no dará más resultados. Firefox no ha implementado aún este comportamiento y el generador puede ser reutilizado en contra de lo escrito en el estándar ES6 (13.7.5.13, step 5m), pero esto cambiará una vez que el bug {{Bug(1147371)}} haya sido corregido.

+
+ +
var gen = (function *(){
+  yield 1;
+  yield 2;
+  yield 3;
+})();
+for (let o of gen) {
+  console.log(o);
+  break;  // Finaliza la iteración
+}
+
+// El generador no debe ser reutilizado, lo siguiente no tiene sentido
+for (let o of gen) {
+  console.log(o); // Nunca será llamado
+}
+ +

Iterando otros objetos iterables

+ +

Es posible, además, iterar un objeto que explicitamente implemente el protocolo iterable:

+ +
var iterable = {
+  [Symbol.iterator]() {
+    return {
+      i: 0,
+      next() {
+        if (this.i < 3) {
+          return { value: this.i++, done: false };
+        }
+        return { value: undefined, done: true };
+      }
+    };
+  }
+};
+
+for (var value of iterable) {
+  console.log(value);
+}
+// 0
+// 1
+// 2
+ +

Diferencia entre for...of y for...in

+ +

El bucle for...in iterará sobre todas las propiedades de un objeto. Más tecnicamente, iterará sobre cualquier propiedad en el objeto que haya sido internamente definida con su propiedad [[Enumerable]] configurada como true

+ +

La sintaxis de  for...of es específica para las colecciones, y no para todos los objetos. Esta Iterará sobre cualquiera de los elementos de una colección que tengan la propiedad [Symbol.iterator].

+ +

El siguiente ejemplo muestra las diferencias entre un bucle for...of y un bucle for...in

+ +
let arr = [3, 5, 7];
+arr.foo = "hola";
+
+for (let i in arr) {
+   console.log(i); // logs "0", "1", "2", "foo"
+}
+
+for (let i of arr) {
+   console.log(i); // logs "3", "5", "7"
+}
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoCometario
{{SpecName('ES6', '#sec-for-in-and-for-of-statements', 'for...of statement')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-for-in-and-for-of-statements', 'for...of statement')}}{{Spec2('ESDraft')}}
+ +

Compatibilidad de navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)EdgeOperaSafari
Soporte básico{{CompatChrome(38)}} [1]
+ {{CompatChrome(51)}} [3]
{{CompatGeckoDesktop("13")}} [2] [4]12257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico5.1{{CompatChrome(38)}} [1]{{CompatGeckoMobile("13")}} [2]{{CompatNo}}{{CompatUnknown}}8
+
+ +

[1] Desde Chrome 29 a Chrome 37 esta funcionalidad estuvo disponible al activar la opción chrome://flags/#enable-javascript-harmony: “JavaScript experimental”.

+ +

[2] Antes de Firefox 51, el uso de for...of usando {{jsxref("const")}} resultaba en un {{jsxref("SyntaxError")}} ("missing = in const declaration"). El problema ha sido resuelto ({{bug(1101653)}}).

+ +

[3] Chrome 51 añadió soporte para iterar objetos.

+ +

[4] Firefox aún permite el uso de un generador después de haber interrumpido el bucle {{Bug(1147371)}}. Como se vio más arriba, no se deben reutilizar los generadores.

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/statements/for/index.html b/files/es/web/javascript/reference/statements/for/index.html new file mode 100644 index 0000000000..875236ba2b --- /dev/null +++ b/files/es/web/javascript/reference/statements/for/index.html @@ -0,0 +1,57 @@ +--- +title: for +slug: Web/JavaScript/Referencia/Sentencias/for +tags: + - JavaScript + - Statement +translation_of: Web/JavaScript/Reference/Statements/for +--- +
+ {{jsSidebar("Statements")}}
+

Resumen

+

Crea un bucle que consiste en tres expresiones opcionales, encerradas en paréntesis y separadas por puntos y comas, seguidas de una sentencia ejecutada en un bucle.

+

Sintaxis

+
for ([expresion-inicial]; [condicion]; [expresion-final])sentencia
+
+
+
+ expresion-inicial
+
+ Una expresión (incluyendo las expresiones de asignación) o la declaración de variable. Típicamente se utiliza para usarse como variable contador. Esta expresión puede opcionalmente declarar nuevas variables con la palabra clave var. Estas variables no son locales del bucle, es decir, están en el mismo alcance en el que está el bucle for. El resultado de esta expresión es descartado.
+
+
+
+ condicion
+
+ Una expresión para ser evaluada antes de cada iteración del bucle. Si esta expresión se evalúa como verdadera, se ejecuta sentencia. Esta comprobación condicional es opcional. Si se omite, la condición siempre se evalúa como verdadera. Si la expresión se evalúa como falsa, la ejecución salta a la primera expresión que sigue al constructor de for.
+
+
+
+ expresion-final
+
+ Una expresión para ser evaluada al final de cada iteración del bucle. Esto ocurre antes de la siguiente evaluación de la condicion. Generalmente se usa para actualizar o incrementar la variable contador.
+
+
+
+ sentencia
+
+ Una sentencia que se ejecuta mientras la condición se evalúa como verdadera. Para ejecutar múltiples sentencias dentro del bucle, utilice una sentencia {{jsxref("Sentencias/block", "block")}} ({ ... }) para agrupar aquellas sentecias.
+
+

Ejemplos

+

Ejemplo: Usando for

+

La siguiente sentencia for comienza mediante la declaración de la variable i y se inicializa a 0. Comprueba que i es menor que nueve, realiza las dos sentencias con éxito e incrementa i en 1 después de cada pase del bucle.

+
for (var i = 0; i < 9; i++) {
+   n += i;
+   mifuncion(n);
+}
+
+

Vea También

+ diff --git a/files/es/web/javascript/reference/statements/function/index.html b/files/es/web/javascript/reference/statements/function/index.html new file mode 100644 index 0000000000..36b02935d9 --- /dev/null +++ b/files/es/web/javascript/reference/statements/function/index.html @@ -0,0 +1,52 @@ +--- +title: function +slug: Web/JavaScript/Referencia/Sentencias/function +tags: + - JavaScript + - Statement +translation_of: Web/JavaScript/Reference/Statements/function +--- +
+ {{jsSidebar("Statements")}}
+

Resumen

+

Declara una función con los parámetros especificados.

+

Puede también definir funciones usando el constructor {{jsxref("Function")}} y el {{jsxref("Operadors/function", "function")}} (expresión function).

+

Sintaxis

+
function nombre([parametro1] [,parametro2] [..., parametroN]) {sentencias}
+
+
+
+ nombre
+
+ El nombre de la función.
+
+
+
+ parametroN
+
+ El nombre de un argumento que se pasa a la función. Una función puede tener hasta 255 argumentos.
+
+
+
+ sentencias
+
+ Las sentencias que comprenden el cuerpo de la función.
+
+

Descripción

+

Para devolver un valor, la función debe tener una sentencia {{jsxref("Sentencias/return", "return")}} que especifica el valor a devolver.

+

Una función creada con la sentencia function es un objeto Function y tiene todas las propiedades, métodos, y comportamiento de los objetos Function. Vea {{jsxref("Function")}} para información detallada sobre funciones.

+

Una función puede también ser declarada dentro de una expresión. En este caso la función es normalmente anónima. Vea {{jsxref("Operadores/function", "function expression")}} para más información acerca de function (expresión function).

+

Las funciones pueden declararse condicionalmente. Es decir, una definición de una función puede estar anidada dentro de una sentecia if. Técnicamente, tales declaraciones no son en realidad declaraciones de funciones; son expresiones function (expresiones de función).

+

Ejemplo

+

Ejemplo: Usando function

+

El siguiente código declara una función que devuelve la cantidad total de ventas, cuando se da el número de unidades vendidas de productos a, b, y c.

+
function calcular_ventas(unidades_a, unidades_b, unidades_c) {
+   return unidades_a*79 + unidades_b * 129 + unidades_c * 699;
+}
+
+

Vea También

+ diff --git a/files/es/web/javascript/reference/statements/function_star_/index.html b/files/es/web/javascript/reference/statements/function_star_/index.html new file mode 100644 index 0000000000..79ff51b7f2 --- /dev/null +++ b/files/es/web/javascript/reference/statements/function_star_/index.html @@ -0,0 +1,224 @@ +--- +title: function* +slug: Web/JavaScript/Referencia/Sentencias/function* +tags: + - Declaración + - Experimental + - Expérimental(2) + - Iterador + - función +translation_of: Web/JavaScript/Reference/Statements/function* +--- +
{{jsSidebar("Statements")}}
+ +

La declaración function* (la palabra clave function seguida de un asterisco) define una función generadora, que devuelve un objeto {{jsxref("Global_Objects/Generator","Generator")}}.

+ +
+

También puedes definir funciones generadoras usando el constructor {{jsxref("GeneratorFunction")}} y una {{jsxref("Operators/function*", "function* expression")}}.

+
+ +

Sintaxis

+ +
function* nombre([param[, param[, ... param]]]) {
+   instrucciones
+}
+
+ +
+
nombre
+
El nombre de la función.
+
+ +
+
param
+
El nombre de los argumentos que se le van a pasar a la función. Una función puede tener hasta 255 argumentos.
+
+ +
+
instrucciones
+
Las instrucciones que componen el cuerpo de la función.
+
+ +

Descripción

+ +

Los generadores son funciones de las que se puede salir y volver a entrar. Su contexto (asociación de variables) será conservado entre las reentradas.

+ +

La llamada a una función generadora no ejecuta su cuerpo inmediatamente; se devuelve un objeto iterador para la función en su lugar. Cuando el metodo next() del iterador es llamado , el cuerpo de la función generadora es ejecutado hasta la primera expresión {{jsxref("Operators/yield", "yield")}}, la cual especifica el valor que será retornado por el iterador o con, {{jsxref("Operators/yield*", "yield*")}}, delega a otra función generadora. El método next() retorna un objeto con una propiedad value que contiene el valor bajo el operador yield y una propiedad done que indica, con un booleano, si la función generadora ha hecho yield al último valor.

+ +

Ejemplos

+ +

Ejemplo simple

+ +
function* idMaker(){
+  var index = 0;
+  while(index < 3)
+    yield index++;
+}
+
+var gen = idMaker();
+
+console.log(gen.next().value); // 0
+console.log(gen.next().value); // 1
+console.log(gen.next().value); // 2
+console.log(gen.next().value); // undefined
+// ...
+ +

Ejemplo con yield*

+ +
function* anotherGenerator(i) {
+  yield i + 1;
+  yield i + 2;
+  yield i + 3;
+}
+
+function* generator(i){
+  yield i;
+  yield* anotherGenerator(i);
+  yield i + 10;
+}
+
+var gen = generator(10);
+
+console.log(gen.next().value); // 10
+console.log(gen.next().value); // 11
+console.log(gen.next().value); // 12
+console.log(gen.next().value); // 13
+console.log(gen.next().value); // 20
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + +
EspecificacionesStatusComentarios
{{SpecName('ES2015', '#', 'function*')}}{{Spec2('ES2015')}}Initial definition.
+ +

Compatibilidad con navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Soporte básico{{CompatChrome(39.0)}}{{CompatGeckoDesktop("26.0")}}{{CompatNo}}26{{CompatNo}}
yield*{{CompatVersionUnknown}}{{CompatGeckoDesktop("27.0")}}{{CompatNo}}26{{CompatNo}}
IteratorResult object instead of throwing{{CompatVersionUnknown}}{{CompatGeckoDesktop("29.0")}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatChrome(39.0)}}{{CompatGeckoMobile("26.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
yield*{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("27.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
IteratorResult object instead of throwing{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("29.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Notas específicas de Firefox

+ +

Generadores e iteradores en versiones de Firefox anteriores a 26

+ +

Las versiones anteriores de FireFox implementan así mismo una versión anterior de la propuesta de generadores. En la versión anterior, los generadores eran definidos utilizando la declaración function de una manera regular (Sin asterisco).  Véase Legacy generator function para mayor información.

+ +

IteratorResult object returned instead of throwing

+ +

Starting with Gecko 29 {{geckoRelease(29)}}, the completed generator function no longer throws a {{jsxref("TypeError")}} "generator has already finished". Instead, it returns an IteratorResult object like { value: undefined, done: true } ({{bug(958951)}}).

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/statements/if...else/index.html b/files/es/web/javascript/reference/statements/if...else/index.html new file mode 100644 index 0000000000..3bac571218 --- /dev/null +++ b/files/es/web/javascript/reference/statements/if...else/index.html @@ -0,0 +1,109 @@ +--- +title: if...else +slug: Web/JavaScript/Referencia/Sentencias/if...else +tags: + - JavaScript + - Statement +translation_of: Web/JavaScript/Reference/Statements/if...else +--- +
{{jsSidebar("Statements")}}
+ +

Resumen

+ +

Ejecuta una sentencia si una condición específicada es evaluada como verdadera. Si la condición es evaluada como falsa, otra sentencia puede ser ejecutada.

+ +

Sintaxis

+ +
if (condición) sentencia1 [else sentencia2]
+
+ +
+
condición
+
Una expresión que puede ser evaluada como verdadera o falsa.
+
+ +
+
sentencia1
+
Sentencia que se ejecutará si condición es evaluada como verdadera. Puede ser cualquier sentencia, incluyendo otras sentenccias if anidadas. Para ejecutar múltiples sentencias, use una sentencia {{jsxref("Sentencias/block", "block")}} ({ ... }) para agruparlas.
+
+ +
+
sentencia2
+
Sentencia que se ejecutará si condición se evalúa como falsa, y exista una cláusula else. Puede ser cualquier sentencia, incluyendo sentencias block y otras sentencias if anidadas.
+
+ +

Descripción

+ +

Multiples sentencias if...else pueden ser anidadas para crear una cláusula else if:

+ +
if (condición1)
+   sentencia1
+else if (condición2)
+   sentencia2
+else if (condición3)
+   sentencia3
+...
+else
+   sentenciaN
+
+ +

Para entender como esto funciona, así es como se vería si el anidamiento hubiera sido indentado correctamente:

+ +
if (condición1)
+   sentencia1
+else
+   if (condición2)
+      sentencia2
+   else
+      if (condición3)
+        ...
+
+ +

Para ejecutar varias sentencias en una cláusula, use una sentencia block ({ ... }) para agruparlas. Generalmente, es una buena práctica usar siempre sentencias block, especialmente en código que incluya sentencias if anidadas:

+ +
if (condición) {
+   sentencia1
+} else {
+   sentencia2
+}
+
+ +

No confundir los valores primitivos true y false con los valores true y false del objeto {{jsxref("Boolean")}}. Cualquier valor diferente de undefined, null, 0, -0, NaN, o la cadena vacía (""), y cualquier objecto, incluso un objeto Boolean cuyo valor es false, se evalúa como verdadero en una sentencia condicional. Por ejemplo:

+ +
var b = new Boolean(false);
+if (b) // Esta condición se evalúa como verdadera
+
+ +

Ejemplos

+ +

Ejemplo: Uso de if...else

+ +
if (cipher_char == from_char) {
+   result = result + to_char;
+   x++;
+} else
+   result = result + clear_char;
+
+ +

Ejemplo: Asignación en una expresión condicional

+ +

Es aconsejable no usar asignaciones simples en una expresión condicional, porque la asignación puede ser confundida con igualdad (operador relacional) cuando se lee el código. Por ejemplo, no use el siguiente código:

+ +
if (x = y) {
+   /* sentencia */
+}
+
+ +

Si realmente necesita una asignación dentro de una exprsión condicional, una práctica común es poner paréntesis adicionales alrededor del la asignación, por ejemplo:

+ +
if ((x = y)) {
+   /* sentencia */
+}
+
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/statements/import.meta/index.html b/files/es/web/javascript/reference/statements/import.meta/index.html new file mode 100644 index 0000000000..8c09e97475 --- /dev/null +++ b/files/es/web/javascript/reference/statements/import.meta/index.html @@ -0,0 +1,93 @@ +--- +title: import.meta +slug: Web/JavaScript/Referencia/Sentencias/import.meta +translation_of: Web/JavaScript/Reference/Statements/import.meta +--- +
{{JSSidebar("Statements")}}
+ +

El objeto import.meta expone el contenido especifico de la metadata al módulo JavaScript. Este contiene informacion sobre el módulo, como por ejemplo, la URL del mismo.

+ +

Syntax

+ +
import.meta
+ +

Descripción

+ +

La sintasis consiste de la palabra clave  {{JSxRef("Statements/import","import")}},un punto, y un identificador meta. Normalmente, la parte a la izquierda del punto es el objeto sobre el cual la accion es realizada, pero aqui import no es realmente un objeto.

+ +

El objeto import.meta es creado por la implementacion ECMAScript , con un prototipo {{JSxRef("null")}} . El objeto es extensible y sus propiedades son grabables, editables y enumerables.

+ +

Ejemplos

+ +

Usando import.meta

+ +

Dado un módulo my-module.js

+ +
<script type="module" src="my-module.js"></script>
+
+ +

puedes acceder a la meta información  sobre el módulo usando el objeto import.meta.

+ +
console.log(import.meta); // { url: "file:///home/user/my-module.js" }
+ +

Este retorna un objeto con una propiedad  url  indicando la URL base del módulo.Esta será la URL de la que el script fue obtenido, por scripts externos, o  la URL base del documento que contiene el documento, por scripts inline.

+ +

Nota que este incluirá parametros de la consulta y/o el hash (ej: seguido del ? or #).

+ +

Por ejemplo, con el siguiente HTML:

+ +
<script type="module">
+import './index.mjs?someURLInfo=5';
+</script>
+ +

..El siguiente archivo JavaScript registrará el parámetro someURLInfo:

+ +
// index.mjs
+new URL(import.meta.url).searchParams.get('someURLInfo'); // 5
+ +

Lo mismo aplica cuando un archivo importa otro:

+ +
// index.mjs
+import './index2.mjs?someURLInfo=5';
+
+// index2.mjs
+new URL(import.meta.url).searchParams.get('someURLInfo'); // 5
+ +

Nota que mientras Node.js pasa en la consulta los parámetros (o el hash ) como en el último ejemplo, a partir de Node 14.1.0, una URL con parametros en la consulta fallará  cuando se  carguen en el formato node --experimental-modules index.mjs?someURLInfo=5 (es tratado como un archivo en lugar de una URL en este contexto).

+ +

Tal argumento específico del archivo podria ser complementario al  usado en toda la aplicacion  location.href (con consultas strings o hash añadidas despues de la ruta HTML) (o en Node.js, mediante process.argv).

+ +

Especificaciones

+ + + + + + + + + + + + + +
Especificaciones
import.meta proposal
{{SpecName("HTML WHATWG", "webappapis.html#hostgetimportmetaproperties", "import.meta")}}
+ +

Browser compatibility

+ + + +

{{Compat("javascript.statements.import_meta")}}

+ +

Implementation Progress

+ +

La siguiente tabla provee el estatus de implementación diaria para esta caracteristica, porque esta caracteristica aun no ha alcanzado la estabilidad entre navegadores. La información es generada corriendo los test relevantes de la caracteristica en Test262, la suite estandar de test de JavaScript, en el build nocturno,  o en el último release de cada  motor de los browser de JavaScript.

+ +
{{EmbedTest262ReportResultsTable("import.meta")}}
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/statements/import/index.html b/files/es/web/javascript/reference/statements/import/index.html new file mode 100644 index 0000000000..7d2c261d0e --- /dev/null +++ b/files/es/web/javascript/reference/statements/import/index.html @@ -0,0 +1,177 @@ +--- +title: import +slug: Web/JavaScript/Referencia/Sentencias/import +tags: + - ECMAScript 2015 + - JavaScript + - Módulos + - Sentencia + - import +translation_of: Web/JavaScript/Reference/Statements/import +--- +
{{jsSidebar("Sentencias")}}
+ +

La sentencia import se usa para importar funciones que han sido exportadas desde un módulo externo.

+ +
+

Por el momento, esta característica sólo está comenzando a ser implementada de forma nativa en los navegadores. Está implementada en muchos transpiladores, tales como Typescript y Babel, y en empaquetadores como Rollup y Webpack.

+
+ +

Sintaxis

+ +
import defaultExport from "module-name";
+import * as name from "module-name";
+import { export } from "module-name";
+import { export as alias } from "module-name";
+import { export1 , export2 } from "module-name";
+import { export1 , export2 as alias2 , [...] } from "module-name";
+import defaultExport, { export [ , [...] ] } from "module-name";
+import defaultExport, * as name from "module-name";
+import "module-name";
+ +
+
defaultExport
+
Nombre que se referirá al export por defecto del módulo.
+
module-name
+
El módulo desde el que importar. Normalmente es una ruta relativa o absoluta al archivo .js que contiene el módulo, excluyendo la extensión .js. Algunos empaquetadores pueden permitir o requerir el uso de la extensión; comprueba tu entorno. Sólo se permiten Strings con comillas simples o dobles.
+
name
+
Nombre del objeto del módulo que se utilizará como nombre de dominio al hacer referencia a los imports.
+
export, exportN
+
+ +
+
Nombre de los exports a ser importados.
+
alias, aliasN
+
Nombre del objeto que recibirá la propiedad importada.
+
+ +

Descripción

+ +

El parámetro name es el nombre del objeto que recibirá los miembros exportados. El parámetro member especifica miembros individuales, mientras el parámetro name importa todos ellos. name puede también ser una función si el módulo exporta un sólo parámetro por defecto en lugar de una serie de miembros. Abajo hay ejemplos que explican la sintaxis.

+ +

Importa el contenido de todo un módulo.

+ +

Esto inserta myModule en el ámbito actual, que contiene todos los elementos exportados en el archivo ubicado en  /modules/my-module.js.

+ +
import * as myModule from '/modules/my-module.js';
+ +

Aquí, para acceder a los miembros exportados habrá que usar el alias del módulo ("myModule" en este caso) como namespace. Por ejemplo, si el módulo importado arriba incluye un miembre exportado llamado doAllTheAmazingThings(), habría que invocarlo de la siguiente manera:

+ +
myModule.doAllTheAmazingThings();
+ +

Importa un solo miembro de un módulo.

+ +

Dado un objeto o valor llamado myExport que ha sido exportado del módulo my-module ya sea implícitamente (porque todo el módulo ha sido exportado) o explícitamente (usando la sentencia {{jsxref("Sentencias/export", "export")}} ), esto inserta myExport en el ámbito actual.

+ +
import {myExport} from '/modules/my-module.js';
+ +

Importa multiples miembros de un módulo.

+ +

Esto inserta foo y bar en el ámbito actual.

+ +
import {foo, bar} from "my-module.js";
+ +

Importa un miembre con un alias mas conveniente

+ +

Se puede renombrar un miembro exportado cuando se importa. Por ejemplo, esto inserta shortName en el ámbito actual.

+ +
import {reallyReallyLongModuleExportName as shortName}
+  from '/modules/my-module.js';
+ +

Renombra multiples miembros durante la importación

+ +

Importa múltiples miembros exportados de un módulo con un alias conveniente.

+ +
import {
+  reallyReallyLongModuleExportName as shortName,
+  anotherLongModuleName as short
+} from '/modules/my-module.js';
+ +

Importa un módulo entero para efectos secundarios sólamente

+ +

Importa un módulo entero para efectos secundarios sólamente, sin importar ningun elemento. Esto ejecuta el código global del módulo, pero no importa ningún valor.

+ +
import '/modules/my-module.js';
+ +

Importación de elementos por defecto

+ +

Es posible tener una exportación por defecto (tanto si se trata de un objeto, función, clase, etc.). Recíprocamente, es posible usa la instrucción import para importar esos elementos establecidos como por defecto.

+ +

La versión más sencilla de importar un elemento por defecto es:

+ +
import myDefault from '/modules/my-module.js';
+ +

También es posible usar la sintaxis por defecto con lo que hemos visto anteriormente (importación de espacios de nombres o importaciones con nombre. En esos casos, la importación por defecto se deberá realizar en primer lugar. Por ejemplo:

+ +
import myDefault, * as myModule from '/modules/my-module.js';
+// myModule used as a namespace
+ +

o

+ +
import myDefault, {foo, bar} from '/modules/my-module.js';
+// specific, named imports
+ +

Ejemplos

+ +

Importar un archivo secundario para asistir en un procesamiento de una petición JSON AJAX.

+ +

El módulo: file.js

+ +
function getJSON(url, callback) {
+  let xhr = new XMLHttpRequest();
+  xhr.onload = function () {
+    callback(this.responseText)
+  };
+  xhr.open('GET', url, true);
+  xhr.send();
+}
+
+export function getUsefulContents(url, callback) {
+  getJSON(url, data => callback(JSON.parse(data)));
+}
+ +

El programa principal: main.js

+ +
import { getUsefulContents } from '/modules/file.js';
+
+getUsefulContents('http://www.example.com',
+    data => { doSomethingUseful(data); });
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + +
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-imports', 'Imports')}}{{Spec2('ES6')}}Definición inical
{{SpecName('ESDraft', '#sec-imports', 'Imports')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidad entre navegadores

+ + + +

{{Compat("javascript.statements.import")}}

+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/statements/index.html b/files/es/web/javascript/reference/statements/index.html new file mode 100644 index 0000000000..bbf0ce42e8 --- /dev/null +++ b/files/es/web/javascript/reference/statements/index.html @@ -0,0 +1,141 @@ +--- +title: Sentencias +slug: Web/JavaScript/Referencia/Sentencias +tags: + - JavaScript + - Referencia + - sentencias +translation_of: Web/JavaScript/Reference/Statements +--- +
{{jsSidebar("Statements")}}
+ +

Las aplicaciones JavaScript se componen de sentencias con una sintaxis propia. Una sentencia puede estar formada por múltiples líneas. Puede haber varias sentencias en una sola línea si separamos cada una de las sentencias por un punto y coma. No es una palabra clave, sino un grupo de palabras clave.

+ +

Sentencias y declaraciones por categoría

+ +

Puedes encontrarlas por orden alfabético en la columna de la izquierda .

+ +

Control de flujo

+ +
+
{{jsxref("Sentencias/block", "Block")}}
+
Un bloque de sentencias se utiliza para agrupar cero o mas sentencias. El bloque se delimita por un par de llaves.
+
{{jsxref("Sentencias/break", "break")}}
+
Finaliza la sentencia actual loop, switch, o label y transfiere el control del programa a la siguiente sentencia de la sentencia finalizada.
+
{{jsxref("Sentencias/continue", "continue")}}
+
Finaliza la ejecucion de las sentencias dentro de la iteracion actual del actual bucle,  y continua la ejecucion del bucle con la siguiente iteracion.
+
{{jsxref("Sentencias/Empty", "Empty")}}
+
Una sentencia vacía se utiliza para proveer una "no sentencia", aunque la sintaxis de JavaScript esperaba una.
+
{{jsxref("Sentencias/if...else", "if...else")}}
+
Ejecuta una sentencia si una condición especificada es true. Si la condición es false, otra sentencia puede ser ejecutada.
+
{{jsxref("Sentencias/switch", "switch")}}
+
Evalua una expresión, igualando el valor de la expresión a una clausula case y ejecuta las sentencias asociadas con dicho case.
+
{{jsxref("Sentencias/throw", "throw")}}
+
Lanza una excepción definida por el usuario.
+
{{jsxref("Sentencias/try...catch", "try...catch")}}
+
Marca un bloque de sentencias para ser probadas (try) y especifica una respuesta, en caso de que se lance una excepción.
+
+ +

Declaraciones

+ +
+
{{jsxref("Sentencias/var", "var")}}
+
Declara una variable, opcionalmente inicializándola a un valor.
+
{{jsxref("Sentencias/let", "let")}}
+
Declara una variable local de ambito de bloque, opcionalmente inicializándola a un valor.
+
{{jsxref("Sentencias/const", "const")}}
+
Declara una constante de solo lectura.
+
+ +

Funciones

+ +
+
{{jsxref("Sentencias/function", "function")}}
+
Declara una función con los parámetros especificados.
+
{{jsxref("Sentencias/function*", "function*")}}
+
Los generadores de funciones permiten escribir {{jsxref("Iteration_protocols", "iteradores")}} con mas facilidad.
+
{{experimental_inline}} {{jsxref("Statements/async_function", "async function")}}
+
Declara una función asíncrona con los parámetros especificados.
+
{{jsxref("Statements/return", "return")}}
+
Especifica el valor a ser retornado por una función.
+
{{jsxref("Statements/class", "class")}}
+
Declara una clase.
+
+ +

Iteraciones

+ +
+
{{jsxref("Sentencias/do...while", "do...while")}}
+
Crea un bucle que ejecuta una instrucción especificada hasta que la condición de prueba se evalúa como falsa. La condición se evalúa después de ejecutar la instrucción, lo que da como resultado que la instrucción especificada se ejecute al menos una vez.
+
{{jsxref("Sentencias/for", "for")}}
+
Creates a loop that consists of three optional expressions, enclosed in parentheses and separated by semicolons, followed by a statement executed in the loop.
+
{{deprecated_inline()}} {{non-standard_inline()}}{{jsxref("Sentencias/for_each...in", "for each...in")}}
+
Itera una variable especificada sobre todos los valores de las propiedades del objeto. Para cada propiedad distinta, se ejecuta una instrucción especificada.
+
{{jsxref("Sentencias/for...in", "for...in")}}
+
Itera sobre las propiedades enumerables de un objeto, en orden albitrario. Para cada propiedad distinta, las instrucciones pueden ser ejecutadas.
+
{{jsxref("Sentencias/for...of", "for...of")}}
+
Iterates over iterable objects (including {{jsxref("Array", "array")}}, array-like objects, iterators and generators), invoking a custom iteration hook with statements to be executed for the value of each distinct property.
+
{{jsxref("Sentencias/while", "while")}}
+
Crea un bucle que ejecuta la instrucción especificada siempre que la condición de prueba se evalúe como verdadera. La condición se evalúa antes de ejecutar la instrucción.
+
+ +

Otros

+ +
+
{{jsxref("Sentencias/debugger", "debugger")}}
+
Invoca cualquier funcionalidad de depuración disponible. Si no hay funcionalidad de depuración disponible, esta isntrucción no tiene efecto.
+
{{jsxref("Sentencias/export", "export")}}
+
Usada para permitir a un script firmada proveer propiedades, funciones y objetos a otros scripts firmada o sin firmar. Esta antigua funcionalidad de Netscape ha sido removida y será redefinida por los modulos de ECMAScript 6
+
{{jsxref("Sentencias/import", "import")}}
+
Usada para permitir a un escript importar propiedades, funciones y objetos desde otro script firmado que ha exportado su información. Esta antigua funcionalidad de Netscape ha sido removida y será redefinida por los modulos de ECMAScript 6.
+
{{jsxref("Sentencias/label", "label")}}
+
Provee una instrucción con un identificador que puedes referir usando una instrucción break o continue .
+
+ +
+
{{deprecated_inline()}} {{jsxref("Sentencias/with", "with")}}
+
Extiende la cadena de alcance para una instrucción.
+
+ +

Especificaciones

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaciónStatusComentario
{{SpecName('ES1', '#sec-12', 'Statements')}}{{Spec2('ES1')}}Definición inicial
{{SpecName('ES3', '#sec-12', 'Statements')}}{{Spec2('ES3')}}
{{SpecName('ES5.1', '#sec-12', 'Statements')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-ecmascript-language-statements-and-declarations', 'ECMAScript Language: Statements and Declarations')}}{{Spec2('ES6')}}Nuevo: function*, let, for...of, yield, class
{{SpecName('ESDraft', '#sec-ecmascript-language-statements-and-declarations', 'ECMAScript Language: Statements and Declarations')}}{{Spec2('ESDraft')}}
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/statements/label/index.html b/files/es/web/javascript/reference/statements/label/index.html new file mode 100644 index 0000000000..03f3108e0e --- /dev/null +++ b/files/es/web/javascript/reference/statements/label/index.html @@ -0,0 +1,35 @@ +--- +title: label +slug: Web/JavaScript/Referencia/Sentencias/label +tags: + - JavaScript + - Statement +translation_of: Web/JavaScript/Reference/Statements/label +--- +
+ {{jsSidebar("Statements")}}
+

Resumen

+

Proporciona una sentencia con un identificador al que se puede referir al usar las sentencias {{jsxref("Sentencias/break", "break")}} o {{jsxref("Sentencias/continue", "continue")}}.

+

Por ejemplo, puede usar una etiqueta para identificar un bucle, y entonces usar las sentencias break o continue para indicar si un programa debería interrumpir el bucle o continuar su ejecución.

+

Sintaxis

+
etiqueta :sentencia
+
+
+
+ etiqueta
+
+ Cualquier identificador JavaScript que no sea una palabra reservada.
+
+
+
+ sentencia
+
+ Sentencias. break puede ser usado con cualquier sentencia etiquetada, y continue puede usarse con bucles etiquetados de sentencias.
+
+

Ejemplos

+

Para un ejemplo de una sentencia label usando break, vea break. Para un ejemplo de una sentencia label usando continue, vea continue.

+

Vea También

+ diff --git a/files/es/web/javascript/reference/statements/let/index.html b/files/es/web/javascript/reference/statements/let/index.html new file mode 100644 index 0000000000..8c450b37d4 --- /dev/null +++ b/files/es/web/javascript/reference/statements/let/index.html @@ -0,0 +1,393 @@ +--- +title: let +slug: Web/JavaScript/Referencia/Sentencias/let +tags: + - Característica del lenguaje + - Declaración de variable + - ECMAScript 2015 + - JavaScript + - Variables + - let + - sentencias +translation_of: Web/JavaScript/Reference/Statements/let +--- +
{{jsSidebar("Statements")}}
+ +

La instrucción let declara una variable de alcance local con ámbito de bloque(block scope), la cual, opcionalmente, puede ser inicializada con algún valor.

+ +
+

La palabra reservada let en Mozilla Firefox 44 y anteriores, está solo disponible para bloques de código en HTML que esten envueltos en una etiqueta <script type="application/javascript;version=1.7"> (o de una version mayor). Las etiquetas XUL tienen acceso a esas características sin necesidad de dicho bloque.  Es necesario tomar en cuenta que esta es una característica no estándar que ya se ha hecho actualmente estándar, esto pero puede crear conflictos con otros navegadores, ya que fue una característica no estándar.

+
+ +

Sintaxis

+ +
let var1 [= valor1] [, var2 [= valor2]] [, ..., varN [= valorN]];
+ +

Parámetros

+ +
+
var1, var2, …, varN
+
Los nombres de la variable o las variables a declarar. Cada una de ellas debe ser un identificador legal de JavaScript
+
value1, value2, …, valueN
+
Por cada una de las variables declaradas puedes, opcionalmente, especificar su valor inicial como una expresión legal JavaScript.
+
+ +

Descripción

+ +

let te permite declarar variables limitando su alcance (scope) al bloque, declaración, o expresión donde se está usando.a diferencia de la palabra clave var la cual define una variable global o local en una función sin importar el ámbito del bloque. La otra diferencia entre var y let es que este último se inicializa a un valor sólo cuando un analizador lo evalúa (ver abajo).

+ +

Al igual que const, let no crea propiedades del objeto se declara globalmente (en el alcance más alto).

+ +

Alcance (scope) a nivel de bloque con let

+ +

Usar la palabra reservada let para definir variables dentro de un bloque.

+ +
if (x > y) {
+  let gamma = 12.7 + y;
+  i = gamma * x;
+}
+
+ +

Es posible usar definiciones let para asociar código en extensiones con un pseudo-espacio-de-nombre (pseudo-namespace). (Ver Mejores prácticas de seguridad en extensiones.)

+ +
let Cc = Components.classes, Ci = Components.interfaces;
+
+ +

let puede ser útil para escribir código más limpio cuando usamos funciones internas.

+ +
var list = document.getElementById("list");
+
+for (var i = 1; i <= 5; i++) {
+  var item = document.createElement("LI");
+  item.appendChild(document.createTextNode("Item " + i));
+
+  let j = i;
+  item.onclick = function (ev) {
+    console.log("Item " + j + " is clicked.");
+  };
+  list.appendChild(item);
+}
+
+ +

El ejemplo anterior trabaja como se espera porque las cinco instancias de la función (anónima) interna hacen referencia a cinco diferentes instancias de la variable j. Nótese que esto no funcionaría como se espera si reemplazamos let con var o si removemos la variable j y simplemente usamos la variable i dentro de la función interna.

+ +

Reglas de alcance

+ +

Variables declaradas por let tienen por alcance el bloque en el que se han definido, así mismo, como en cualquier bloque interno. De esta manera, let trabaja muy parecido a var. La más notable diferencia es que el alcance de una variable var es la función contenedora:

+ +
function varTest() {
+  var x = 31;
+  if (true) {
+    var x = 71;  // ¡misma variable!
+    console.log(x);  // 71
+  }
+  console.log(x);  // 71
+}
+
+function letTest() {
+  let x = 31;
+  if (true) {
+    let x = 71;  // variable diferente
+    console.log(x);  // 71
+  }
+  console.log(x);  // 31
+}
+// llamamos a las funciones
+varTest();
+letTest();
+
+ +

En el nivel superior de un programa y funciones, let , a diferencia de var, no crea una propiedad en el objeto global, por ejemplo:

+ +
var x = 'global';
+let y = 'global';
+console.log(this.x); // "global"
+console.log(this.y); // undefined
+
+ +

La salida de este código desplegaría "global" una vez.

+ +

Zona muerta temporal y errores con let

+ +

La redeclaración de la misma variable bajo un mismo ámbito léxico terminaría en un error de tipo SyntaxError. Esto también es extensible si usamos var dentro del ámbito léxico. Esto nos salvaguarda de redeclarar una variable accidentalmente y que no era posible  solo con var.

+ +
if (x) {
+  let foo;
+  let foo; // Terminamos con un SyntaxError.
+}
+if (x) {
+  let foo;
+  var foo; // Terminamos con un SyntaxError.
+}
+
+ +

En ECMAScript 2015, let no eleva la variable a la parte superior del bloque. Si se hace una referencia a la variable declarada con let (let foo) antes de su declaración, terminaríamos con un error de tipo ReferenceError (al contrario de la variable declarada con var, que tendrá el valor undefined), esto porque la variables vive en una "zona muerta temporal" desde el inicio del bloque hasta que la declaración ha sido procesada.

+ +
function do_something() {
+  console.log(bar); // undefined
+  console.log(foo); // ReferenceError: foo no está definido
+  var bar = 1;
+  let foo = 2;
+}
+ +

Es posible encontrar errores en bloques de control switch debido a que solamente existe un block subyacente.

+ +
switch (x) {
+  case 0:
+    let foo;
+    break;
+
+  case 1:
+    let foo; // Terminamos con un error de tipo SyntaxError.
+             // esto debido a la redeclaracion
+    break;
+}
+ +

Otro ejemplo de zona muerta temporal combinada con ámbito léxico

+ +

Debido al alcance léxico, el identificador num dentro de la expresión (num + 55) se evalúa como num del bloque if, y no como la variable num con el valor 33 que esta por encima

+ +

En esa misma línea, el num del bloque if ya se ha creado en el ámbito léxico, pero aún no ha alcanzado (y terminado) su inicialización (que es parte de la propia declaración): todavía está en la zona muerta temporal.

+ +
function prueba(){
+   var num = 33;
+   if (true) {
+      let num = (num + 55);//ReferenceError: no se puede acceder a la declaración léxica `num'antes de la inicialización 
+   }
+}
+prueba();
+
+ +

Ejemplos

+ +

let vs var

+ +

Cuando usamos let dentro de un bloque, podemos limitar el alcance de la variable a dicho bloque. Notemos la diferencia con var, cuyo alcance reside dentro de la función donde ha sido declarada la variable.

+ +
var a = 5;
+var b = 10;
+
+if (a === 5) {
+  let a = 4; // El alcance es dentro del bloque if
+  var b = 1; // El alcance es global
+
+  console.log(a);  // 4
+  console.log(b);  // 1
+}
+
+console.log(a); // 5
+console.log(b); // 1
+ +

let en bucles

+ +

Es posible usar la palabra reservada let para enlazar variables con alcance local dentro del alcance de un bucle en lugar de usar una variable global (definida usando var) para dicho propósito.

+ +
for (let i = 0; i<10; i++) {
+  console.log(i); // 0, 1, 2, 3, 4 ... 9
+}
+
+console.log(i); // ReferenceError: i is not defined
+
+ +

Extensiones let no-estandar

+ +

Bloques let

+ +
+

La sintaxis del bloque y expresion let es no-estandar y sera deshechado en un futuro. ¡No deben ser usados! ver error 1023609 y error 1167029 para mas detalles.

+
+ +

Un bloque let provee una manera de asociar valores con variables dentro del alcance de un bloque sin afectar el valor de variables con nombre similar fuera del bloque.

+ +

Sintaxis

+ +
let (var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]]) {declaración};
+ +

Descripción

+ +

El bloque let provee alcance local para las variables. Funciona enlazando cero o más variables en el alcance léxico de un solo bloque de código; de otra manera, es exactamente lo mismo que una declaración de bloque. Hay que notar particularmente que el alcance de una variable declarada dentro de un bloque let usando var es equivalente a declarar esa variable fuera del bloque let; dicha variable aún tiene alcance dentro de la función. Al usar la sintaxis de bloque let, los paréntesis siguientes a let son requeridos. Una falla al incluir dichos paréntesis resultará en un error de sintaxis.

+ +

Ejemplo

+ +
var x = 5;
+var y = 0;
+
+let (x = x+10, y = 12) {
+  console.log(x+y); // 27
+}
+
+console.log(x + y); // 5
+
+ +

Las reglas para el bloque de código son las mismas que para cualquier otro bloque de código en JavaScript. Es posible tener sus propias variables locales usando declaraciones let en dicho bloque.

+ +

Reglas de alcance

+ +

El alcance de las variables definidas usando let es el mismo bloque let, así como cualquier bloque interno contenido dentro de el bloque, a menos que esos bloques internos definan variables con el mismo nombre.

+ +

expresiones let

+ +
+

Soporte de expresiones let ha sido removido en Gecko 41 ({{bug(1023609)}}).

+
+ +

Una expresion let permite establecer variables con alcance dentro de una expresión.

+ +

Sintaxis

+ +
let (var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]]) expression;
+ +

Ejemplo

+ +

Podemos usar let para establecer variables que tienen como alcance solo una expresión:

+ +
var a = 5;
+let(a = 6) console.log(a); // 6
+console.log(a); // 5
+ +

Reglas de alcance

+ +

Dada la expresión let siguiente:

+ +
let (decls) expr
+
+ +

Existe un bloque implícito creado alrededor de expr.

+ +

Especificaciones

+ + + + + + + + + + + + + + +
EspecificaciónEstadoComentarios
{{SpecName('ES2015', '#sec-let-and-const-declarations', 'Let and Const Declarations')}}{{Spec2('ES2015')}}Definición initial. No especifica expresiones ni declaraciones let.
+ +

Compatibilidad en navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico +

{{CompatChrome(41.0)}}

+
{{ CompatGeckoDesktop("1.8.1") }} [1]1117{{CompatUnknown}}
Zona muerta temporal{{CompatUnknown}}{{ CompatGeckoDesktop("35") }} [1]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Expresión let {{non-standard_inline}}{{CompatNo}}{{ CompatGeckoDesktop("1.8.1") }}-{{ CompatGeckoDesktop("40") }} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
Bloque let {{non-standard_inline}}{{CompatNo}}{{ CompatGeckoDesktop("1.8.1") }} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatUnknown}} +

{{CompatChrome(41.0)}}

+
{{ CompatGeckoMobile("1.8.1") }} [1]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Zona muerta temporal{{CompatUnknown}}{{CompatUnknown}}{{ CompatGeckoMobile("35") }} [1]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Expresión let {{non-standard_inline}}{{CompatNo}}{{CompatNo}}{{ CompatGeckoMobile("1.8.1") }}-{{ CompatGeckoMobile("40") }}[1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
Bloque let {{non-standard_inline}}{{CompatNo}}{{CompatNo}}{{ CompatGeckoMobile("1.8.1") }} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Notas específicas a Firefox

+ + + +

Ver también

+ + diff --git a/files/es/web/javascript/reference/statements/return/index.html b/files/es/web/javascript/reference/statements/return/index.html new file mode 100644 index 0000000000..6497e97632 --- /dev/null +++ b/files/es/web/javascript/reference/statements/return/index.html @@ -0,0 +1,73 @@ +--- +title: return +slug: Web/JavaScript/Referencia/Sentencias/return +tags: + - JavaScript + - Statement +translation_of: Web/JavaScript/Reference/Statements/return +--- +
{{jsSidebar("Statements")}}
+ +

Resumen

+ +

La sentencia return finaliza la ejecución de la función y especifica un valor para ser devuelto a quien llama a la función.

+ +

Sintaxis

+ +
return [[ expresion ]];
+ +
+
expresion
+
La expresión a retornar. Si se omite, undefined es retornado en su lugar.
+
+ +

Description

+ +

Cuando una instrucción de retorno se llama en una función, se detiene la ejecución de esta. Si se especifica un valor dado, este se devuelve a quien llama a la función. Si se omite la expresión, undefined se devuelve en su lugar. Todas las siguientes sentencias de retorno rompen la ejecución de la función:

+ +
return;
+return true;
+return false;
+return x;
+return x + y / 3;
+ +


+ La inserción automática Punto y coma

+ +

La instrucción de retorno se ve afectada por la inserción automática de punto y coma (ASI). No se permite el terminador de línea entre la palabra clave de retorno y la expresión.

+ +
return
+a + b;
+ +
+
+ +


+ se transforma por ASI en:

+ +
return;
+a + b;
+ +


+ La consola le advertirá "código inalcanzable después de la declaración de retorno".

+ +
+

A partir de Gecko 40 {{geckoRelease(40)}}, una advertencia es mostrada en la consola si se encuentra código inalcanzable despues de una instrucción return.

+
+ +

Ejemplos

+ +

Ejemplo: Usando return

+ +

La siguiente función devuelve el cuadrado de su argumento, x, donde x es un número.

+ +
function cuadrado(x) {
+   return x * x;
+}
+
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/statements/switch/index.html b/files/es/web/javascript/reference/statements/switch/index.html new file mode 100644 index 0000000000..c550477f2c --- /dev/null +++ b/files/es/web/javascript/reference/statements/switch/index.html @@ -0,0 +1,245 @@ +--- +title: switch +slug: Web/JavaScript/Referencia/Sentencias/switch +translation_of: Web/JavaScript/Reference/Statements/switch +--- +
{{jsSidebar("Statements")}}
+ +

La declaración switch evalúa una expresión, comparando el valor de esa expresión con una instancia case, y ejecuta declaraciones asociadas a ese case, así como las declaraciones en los case que siguen.

+ +

Syntaxis

+ +
switch (expresión) {
+  case valor1:
+    //Declaraciones ejecutadas cuando el resultado de expresión coincide con el valor1
+    [break;]
+  case valor2:
+    //Declaraciones ejecutadas cuando el resultado de expresión coincide con el valor2
+    [break;]
+  ...
+  case valorN:
+    //Declaraciones ejecutadas cuando el resultado de expresión coincide con valorN
+    [break;]
+  default:
+    //Declaraciones ejecutadas cuando ninguno de los valores coincide con el valor de la expresión
+    [break;]
+}
+ +
+
expresión
+
Es una expresión que es comparada con el valor de cada instancia case.
+
case valorN
+
Una instancia case valorN es usada para ser comparada con la expresión. Si la expresión coincide con el valorN, las declaraciones dentro de la instancia case se ejecutan hasta que se encuentre el final de la declaración switch o hasta encontrar una interrupción break.
+
+ +
+
default
+
Una instancia default, cuando es declarada, es ejecutada si el valor de la expresión no coincide con cualquiera de las otras instancias case valorN.
+
+ +

Descripción

+ +

Si ocurre una coincidencia, el programa ejecuta las declaraciones asociadas correspondientes. Si la expresión coincide con múltiples entradas, la primera será la seleccionada, incluso si las mayúsculas son tenidas en cuenta.

+ +

El programa primero busca la primer instacia case cuya expresión se evalúa con el mismo valor de la expresión de entrada (usando comparación estricta, ===) y luego transfiere el control a esa cláusula, ejecutando las declaraciones asociadas. Si no se encuentra una cláusula de case coincidente, el programa busca la cláusula default opcional, y si se encuentra, transfiere el control a esa instancia, ejecutando las declaraciones asociadas. Si no se encuentra una instancia default  el programa continúa la ejecución en la instrucción siguiente al final del switch. Por convención, la instancia default es la última cláusula, pero no tiene que ser así.

+ +

La declaración break es opcional y está asociada con cada etiqueta de case y asegura que el programa salga del switch una vez que se ejecute la instrucción coincidente y continúe la ejecución en la instrucción siguiente. Si se omite el  break  el programa continúa la ejecución en la siguiente instrucción en la declaración de switch .

+ +

Ejemplos

+ +

Usando switch

+ +

En el siguiente ejemplo, si expresión se resuelve a "Platanos", el algoritmo compara el valor con el case "Platanos" y ejecuta la declaración asociada. Cuando se encuentra un break, el programa sale del condicional switch y ejecuta la declaración que lo procede. Si se omite el break, el case "Cerezas" también es ejecutado.

+ +
switch (expr) {
+  case 'Naranjas':
+    console.log('El kilogramo de naranjas cuesta $0.59.');
+    break;
+  case 'Manzanas':
+    console.log('El kilogramo de manzanas cuesta $0.32.');
+    break;
+  case 'Platanos':
+    console.log('El kilogramo de platanos cuesta $0.48.');
+    break;
+  case 'Cerezas':
+    console.log('El kilogramo de cerezas cuesta $3.00.');
+    break;
+  case 'Mangos':
+  case 'Papayas':
+    console.log('El kilogramo de mangos y papayas cuesta $2.79.');
+    break;
+  default:
+    console.log('Lo lamentamos, por el momento no disponemos de ' + expr + '.');
+}
+
+console.log("¿Hay algo más que te quisiera consultar?");
+ +

¿Qué pasa si olvido un break?

+ +

Si olvidas un break, el script se ejecutará desde donde se cumple la condición y ejecutará el siguiente case independientemente si esta condición se cumple o no. Ver el siguiente ejemplo:

+ +
var foo = 0;
+switch (foo) {
+  case -1:
+    console.log('1 negativo');
+    break;
+  case 0: // foo es 0, por lo tanto se cumple la condición y se ejecutara el siguiente bloque
+    console.log(0)
+    // NOTA: el "break" olvidado debería estar aquí
+  case 1: // No hay sentencia "break" en el 'case 0:', por lo tanto este caso también será ejecutado
+    console.log(1);
+    break; // Al encontrar un "break", no será ejecutado el 'case 2:'
+  case 2:
+    console.log(2);
+    break;
+  default:
+    console.log('default');
+}
+
+ +

¿Puedo usar un <default> entre condiciones?

+ +

Sí, ¡es posible! JavaScript retornará a la instancia default en caso de no encontrar una coincidencia:

+ +
var foo = 5;
+switch (foo) {
+  case 2:
+    console.log(2);
+    break; // al encontrar este 'break' no se continuará con el siguiente 'default:'
+  default:
+    console.log('default')
+    // fall-through
+  case 1:
+    console.log('1');
+}
+ +

Al estar el case 1: a continuación de default, y al no haber un break de por medio, veremos que la declaración del case 1: será ejecutada, apareciendo el resultado 1 en el log de consola.

+ +

Metodos para casos con múltiple criterio

+ +

La fuente de esta técnica esta aquí:

+ +

Switch statement multiple cases in JavaScript (Stack Overflow)

+ +

Operación única con múltiples casos

+ +

Este método toma ventaja del hecho de que, si no hay un break debajo de una declaración case, continuará la ejecución hasta el siguiente case, ignorando si en dicho caso se cumple o no el criterio indicado. Comprobar en la sección ¿Qué pasa si olvido un break?

+ +

Este es un ejemplo de operación única con sentencia switch secuencial, donde cuatro valores diferentes se comportan exactamente de la misma manera:

+ +
var Animal = 'Jirafa';
+switch (Animal) {
+  case 'Vaca':
+  case 'Jirafa':
+  case 'Perro':
+  case 'Cerdo':
+    console.log('Este animal subirá al Arca de Noé.');
+    break;
+  case 'Dinosaurio':
+  default:
+    console.log('Este animal no lo hará.');
+}
+ +

Operaciones encadenadas con múltiples casos

+ +

Este es un ejemplo de una sentencia switch secuencial con múltiples operaciones, donde, dependiendo del valor entero dado, se pueden recibir diferentes resultados. Esto demuestra que el algoritmo correrá en el orden en que se coloquen las declaraciones case, y que no tiene que ser numéricamente secuencial. En JavaScript, también es posible combinar definiciones con valores "string" dentro de estas declaraciones case.

+ +
var foo = 1;
+var output = 'Salida: ';
+switch (foo) {
+  case 10:
+    output += '¿Y ';
+  case 1:
+    output += 'Cuál ';
+    output += 'Es ';
+  case 2:
+    output += 'Tu ';
+  case 3:
+    output += 'Nombre';
+  case 4:
+    output += '?';
+    console.log(output);
+    break;
+  case 5:
+    output += '!';
+    console.log(output);
+    break;
+  default:
+    console.log('Por favor, selecciona un valor del 1 al 6.');
+}
+ +

La salida (output) de este ejemplo:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ValueLog text
foo es NaN o no es 1, 2, 3, 4, 5 ni 10Por favor, selecciona un valor del 1 al 6.
10Salida: ¿Y Cuál Es Tu Nombre?
1Salida: Cuál Es Tu Nombre?
2Salida: Tu Nombre?
3Salida: Nombre?
4Salida: ?
5Salida: !
+ +

Variables centradas en bloques sin un estamento de switch

+ +

Con ECMAScript 2015 (ES6) 

+ +

Compatibilidad en Navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/reference/statements/throw/index.html b/files/es/web/javascript/reference/statements/throw/index.html new file mode 100644 index 0000000000..d3e52f83ac --- /dev/null +++ b/files/es/web/javascript/reference/statements/throw/index.html @@ -0,0 +1,153 @@ +--- +title: throw +slug: Web/JavaScript/Referencia/Sentencias/throw +tags: + - JavaScript + - Statement +translation_of: Web/JavaScript/Reference/Statements/throw +--- +
{{jsSidebar("Statements")}}
+ +

Resumen

+ +

Lanza una excepcion definida por el usuario.

+ +

Sintaxis

+ +
throw expresion;
+ +
+
expresion
+
Expresión a lanzar.
+
+ +

Descripción

+ +

Utilice la sentencia throw para lanzar una excepción. Cuando lanza una excepción, expresion especifica el valor de la excepción. Cada uno de los siguientes ejemplos lanza una excepción:

+ +
throw "Error2"; // genera una excepción con un valor cadena
+throw 42; // genera una excepción con un valor 42
+throw true; // genera una excepción con un valor true
+ +

Ejemplos

+ +

Ejemplo: Lanzar un objeto

+ +

Puede especificar un objeto cuando lanza una excepción. Puede entonces referenciar las propiedades del objeto en el bloque catch. El siguiente ejemplo crea un objeto miExcepcionUsuario del tipo ExceptionUsuario y la utiliza usándola en una sentencia throw.

+ +
function ExceptionUsuario(mensaje) {
+   this.mensaje = mensaje;
+   this.nombre = "ExceptionUsuario";
+}
+
+function getNombreMes(mes) {
+   mes = mes - 1; // Ajustar el número de mes al índice del arreglo (1 = Ene, 12 = Dic)
+   var meses = new Array("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul",
+      "Ago", "Sep", "Oct", "Nov", "Dic");
+   if (meses[mes] != null) {
+      return meses[mes];
+   } else {
+      miExcepcionUsuario = new ExceptionUsuario("NumeroMesNoValido");
+      throw miExcepcionUsuario;
+   }
+}
+
+try {
+   // sentencias para try
+   nombreMes = getNombreMes(miMes);
+} catch (excepcion) {
+   nombreMes = "desconocido";
+   registrarMisErrores(excepcion.mensaje, excepcion.nombre); // pasa el objeto exception al manejador de errores
+}
+
+ +

Ejemplo: Otro ejemplo sobre lanzar un objeto

+ +

El siguiente ejemplo comprueba una cadena de entrada para un código postal de EE.UU. Si el código postal utiliza un formato no válido, la sentencia throw lanza una excepción creando un objeto de tipo ExcepcionFormatoCodigoPostal.

+ +
/*
+ * Creates a ZipCode object.
+ *
+ * Accepted formats for a zip code are:
+ *    12345
+ *    12345-6789
+ *    123456789
+ *    12345 6789
+ *
+ * If the argument passed to the ZipCode constructor does not
+ * conform to one of these patterns, an exception is thrown.
+ */
+
+function ZipCode(zip) {
+   zip = new String(zip);
+   pattern = /[0-9]{5}([- ]?[0-9]{4})?/;
+   if (pattern.test(zip)) {
+      // zip code value will be the first match in the string
+      this.value = zip.match(pattern)[0];
+      this.valueOf = function() {
+         return this.value
+      };
+      this.toString = function() {
+         return String(this.value)
+      };
+   } else {
+      throw new ExcepcionFormatoCodigoPostal(zip);
+   }
+}
+
+function ExcepcionFormatoCodigoPostal(valor) {
+   this.valor = valor;
+   this.mensaje = "no conforme con el formato esperado de código postal";
+   this.toString = function() {
+      return this.valor + this.mensaje
+   };
+}
+
+/*
+ * Esto podría estar en un script que valida los datos de una dirección de EE.UU.
+ */
+
+var CODIGOPOSTAL_NOVALIDO = -1;
+var CODIGOPOSTAL_DESCONOCIDO_ERROR = -2;
+
+function verificarCodigoPostal(codigo) {
+   try {
+      codigo = new CodigoPostal(codigo);
+   } catch (excepcion) {
+      if (excepcion instanceof ExcepcionFormatoCodigoPostal) {
+         return CODIGOPOSTAL_NOVALIDO;
+      } else {
+         return CODIGOPOSTAL_DESCONOCIDO_ERROR;
+      }
+   }
+   return codigo;
+}
+
+a = verificarCodigoPostal(95060);         // devuelve 95060
+b = verificarCodigoPostal(9560;)          // devuelve -1
+c = verificarCodigoPostal("a");           // devuelve -1
+d = verificarCodigoPostal("95060");       // devuelve 95060
+e = verificarCodigoPostal("95060 1234");  // devuelve 95060 1234
+
+ +

Ejemplo: Relanzar una excepción

+ +

Puede usar throw para volver a lanzar una excepción después de cogerla. El siguiente ejemplo coge una excepción con un valor numérico y la vuelve a lanzar si el valor es superior a 50. La excepción relanzada propaga hacia arriba la función adjunta o a un nivel superior para que el usuario pueda verla.

+ +
try {
+   throw n; // lanza una excepción con un valor numérico
+} catch (excepcion) {
+   if (excepcion <= 50) {
+      // sentencias para manejar la excepción 1-50
+   } else {
+      // no se puede manejar esta excepción, así que se vuelve a lanzar
+      throw excepcion;
+   }
+}
+
+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/statements/try...catch/index.html b/files/es/web/javascript/reference/statements/try...catch/index.html new file mode 100644 index 0000000000..d429db6163 --- /dev/null +++ b/files/es/web/javascript/reference/statements/try...catch/index.html @@ -0,0 +1,254 @@ +--- +title: try...catch +slug: Web/JavaScript/Referencia/Sentencias/try...catch +tags: + - Error + - Excepción + - JavaScript + - Statement +translation_of: Web/JavaScript/Reference/Statements/try...catch +--- +
{{jsSidebar("Statements")}}
+ +

La declaración try...catch señala un bloque de instrucciones a intentar (try), y especifica una respuesta si se produce una excepción (catch).

+ +
{{EmbedInteractiveExample("pages/js/statement-trycatch.html")}}
+ +

Sintaxis

+ +
try {
+   try_statements
+}
+[catch (exception_var_1 if condition_1) { // non-standard
+   catch_statements_1
+}]
+...
+[catch (exception_var_2) {
+   catch_statements_2
+}]
+[finally {
+   finally_statements
+}]
+
+ +
+
try_statements
+
Las sentencias que serán ejecutadas.
+
+ +
+
catch_statements_1, catch_statements_2
+
Sentencias que se ejecutan si una excepción es lanzada en el bloque try.
+
+ +
+
exception_var_1, exception_var_2
+
Identificador que contiene un objeto de excepcion asociado a la cláusula catch.
+
+ +
+
condition_1
+
Una expresión condicional.
+
+ +
+
finally_statements
+
Sentencias que se ejecutan después de que se completa la declaración try . Estas sentencias se ejecutan independientemente de si una excepcion fue lanzada o capturada.
+
+ +

Descripción

+ +

La sentencia try consiste en un bloque try que contiene una o más sentencias. Las llaves {} se deben utilizar siempre, incluso para una bloques de una sola sentencia. Al menos un bloque catch o un bloque finally debe estar presente. Esto nos da tres formas posibles para la sentencia try:

+ +
    +
  1. try...catch
  2. +
  3. try...finally
  4. +
  5. try...catch...finally
  6. +
+ +

Un bloque catch contiene sentencias que especifican que hacer si una excepción es lanzada en el bloque try. Si cualquier sentencia dentro del bloque try (o en una funcion llamada desde dentro del bloque try) lanza una excepción, el control cambia inmediatamente al bloque catch . Si no se lanza ninguna excepcion en el bloque try, el bloque catch se omite.

+ +

La bloque finally se ejecuta despues del bloque try y el/los bloque(s) catch hayan finalizado su ejecución. Éste bloque siempre se ejecuta, independientemente de si una excepción fue lanzada o capturada.

+ +

Puede anidar una o más sentencias try. Si una sentencia try interna no tiene una bloque catch, se ejecuta el bloque catch de la sentencia try que la encierra.

+ +

Usted también puede usar la declaración try para manejar excepciones de JavaScript. Consulte la Guía de JavaScript para obtener mayor información sobre excepciones de JavaScript.
+  

+ +

Bloque catch incondicional

+ +

Cuando solo se utiliza un bloque catch, el bloque catch es ejecutado cuando cualquier excepción es lanzada. Por ejemplo, cuando la excepción ocurre en el siguiente código, el control se transfiere a la cláusula catch.

+ +
try {
+   throw "myException"; // genera una excepción
+}
+catch (e) {
+   // sentencias para manejar cualquier excepción
+   logMyErrors(e); // pasa el objeto de la excepción al manejador de errores
+}
+
+ +

El bloque catch especifíca un identificador ( e en el ejemplo anterior) que contiene el valor de la excepción. Este valor está solo disponible en el {{Glossary("Scope", "scope")}} de el bloque catch

+ +

Bloques catch condicionales

+ +

Tambien se pueden crear "bloques catch condicionales", combinando bloques try...catch con estructuras  if...else if...else como estas:

+ +
try {
+    myroutine();  // puede lanzar tres tipos de excepciones
+} catch (e) {
+    if (e instanceof TypeError) {
+        // sentencias para manejar excepciones TypeError
+    } else if (e instanceof RangeError) {
+        // sentencias para manejar excepciones RangeError
+    } else if (e instanceof EvalError) {
+        // sentencias para manejar excepciones EvalError
+    } else {
+       // sentencias para manejar cualquier excepción no especificada
+       logMyErrors(e); // pasa el objeto de la excepción al manejador de errores
+}
+ +

El identificador de excepciones

+ +

Cuando una excepción es lanzada en el bloque try, exception_var (por ejemplo, la e en catch (e)) guarda el valor de la excepción. Se puede usar éste identificador para obtener información acerca de la excepción que fue lanzada. Este valor está solo disponible en el {{Glossary("Scope", "scope")}} de el bloque catch.

+ +
function isValidJSON(text) {
+  try {
+    JSON.parse(text);
+    return true;
+  } catch {
+    return false;
+  }
+}
+ +

La cláusula finally

+ +

La cláusula finally contiene sentencias a ejecutarse después de que las cláusulas try y catch se ejecuten, pero antes de las sentencias que le siguen al bloque try..catch..finally. Note que la cláusula finally se ejecuta sin importar si una excepción es o no lanzada. Si una excepción es lanzada, las instrucciones en la cláusula finally se ejecutan incluso si ninguna cláusula catch maneja la excepción.

+ +

Usted puede usar la cláusula finally para hacer que su script falle plácidamente cuando una excepción ocurra; por ejemplo, para hacer una limpieza general, usted puede necesitar liberar un recurso que su script haya retenido.

+ +

Puede parecer extraño tener una cláusula relacionada a una excepción que se ejecuta sin importar si hay una excepción o no, pero esta concepción en realidad sirve a un propósito. El punto importante no es que la cláusula finally siempre se ejecuta, si no más bien que el codigo ordinario que le sigue a try..catch no.

+ +

Por ejemplo, si otra excepción ocurre dentro de un bloque catch de una declaración try, cualquier codigo restante en el mismo bloque exterior try que encierra ese try..catch (o en el flujo principal, si no es un bloque try exterior) , no será ejecutado, dado que el control es inmediatamente transferido al bloque catch del try exterior (o el generador de error interno, si no es en un bloque try).

+ +

Por lo tanto, cualquier rutina de limpieza hecha en esa sección encerrada (o la principal) antes de que exista, será saltada. Sin embargo, si la declaración try tiene un bloque finally, entonces el código de ese bloque finally será ejecutado primero para permitir tal limpieza, y ENTONCES el bloque catch de la otra declaración try (o el generador de error) tomará el control para manejar la segunda excepción.

+ +

Ahora, si esa rutina de limpieza debiera ser hecha ya sea que el código del try..catch tenga éxito o no, entonces si el bloque finally se ejecutase solo después de una excepción, el mismo código de limpieza tendría que estar presente dentro y fuera del bloque finally, y por lo tanto no hay razón para no tener el bloque finally solo, y dejarlo ejecutarse sin importar si hay excepciones o no.

+ +

El siguiente ejemplo abre un archivo y despues ejecuta sentencias que usan el archivo (JavaScript del lado del servidor permite acceder a archivos). Si una excepción es lanzada mientras el archivo está abierto, la cláusula finally cierra el archivo antes de que el script falle. El código en finally también se ejecuta después de un retorno explícito de los bloques try o catch.

+ +
openMyFile()
+try {
+   // retiene un recurso
+   writeMyFile(theData);
+}
+finally {
+   closeMyFile(); // siempre cierra el recurso
+}
+
+ +

Ejemplos

+ +

Bloques try anidados

+ +

Primero, veamos que pasa con esto:

+ +
try {
+  try {
+    throw new Error('oops');
+  }
+  finally {
+    console.log('finally');
+  }
+}
+catch (ex) {
+  console.error('outer', ex.message);
+}
+
+// Output:
+// "finally"
+// "outer" "oops"
+ +

Ahora, si nosotros ya capturamos la excepción en una declaración try interna agregando un bloque catch.

+ +
try {
+  try {
+    throw new Error('oops');
+  }
+  catch (ex) {
+    console.error('inner', ex.message);
+  }
+  finally {
+    console.log('finally');
+  }
+}
+catch (ex) {
+  console.error('outer', ex.message);
+}
+
+// Output:
+// "inner" "oops"
+// "finally"
+ +

Y ahora vamos a relanzar el error.

+ +
try {
+  try {
+    throw new Error('oops');
+  }
+  catch (ex) {
+    console.error('inner', ex.message);
+    throw ex;
+  }
+  finally {
+    console.log('finally');
+  }
+}
+catch (ex) {
+  console.error('outer', ex.message);
+}
+
+// Output:
+// "inner" "oops"
+// "finally"
+// "outer" "oops"
+ +

Cualquier excepción dad será capturada solo una vez por el bloque catch más cercano a menos que sea relanzado. Por supuesto cualquier nueva excepción que se origine en el bloque 'interno' (porque el código en el bloque catch puede hacer algo que lanze un error), será capturado por el bloque 'externo'.

+ +

Retornando de un bloque finally

+ +

Si el bloque finally retorna un valor, este valor se convierte en el valor de retorno de toda la producción try-catch-finally, a pesar de cualquier sentencia return en los bloques try y catch. Esto incluye excepciones lanzadas dentro del bloque catch.

+ +
(function() {
+  try {
+    try {
+      throw new Error('oops');
+    }
+    catch (ex) {
+      console.error('inner', ex.message);
+      throw ex;
+    }
+    finally {
+      console.log('finally');
+      return;
+    }
+  }
+  catch (ex) {
+    console.error('outer', ex.message);
+  }
+})();
+
+// Output:
+// "inner" "oops"
+// "finally"
+ +

El "oops" externo no es lanzado debido al retorno en el bloque finally. Lo mismo aplicaría para cualquier valor retornado del bloque catch.

+ +

Vea los ejemplos para {{jsxref("Sentencias/throw", "throw")}}.

+ +

Vea también

+ + diff --git a/files/es/web/javascript/reference/statements/var/index.html b/files/es/web/javascript/reference/statements/var/index.html new file mode 100644 index 0000000000..006e40a270 --- /dev/null +++ b/files/es/web/javascript/reference/statements/var/index.html @@ -0,0 +1,163 @@ +--- +title: var +slug: Web/JavaScript/Referencia/Sentencias/var +tags: + - JavaScript + - Statement +translation_of: Web/JavaScript/Reference/Statements/var +--- +
{{jsSidebar("Statements")}}
+ +

Resumen

+ +

La sentencia var declara una variable, opcionalmente inicializándola con un valor.

+ +

Sintaxis

+ +
var nombreDeVariable1 [= valor1] [, nombreDeVariable2 [= valor2] ... [, nombreDeVariableN [=valorN]]]; 
+ +
+
nombreDeVariableN
+
Representa el nombre que el programador da a la variable. Puede ser cualquier identificador legal.
+
+ +
+
valorN
+
Valor inicial de la variable. Puede ser cualquier expresión legal. El valor predeterminado es undefined (en español, indefinida).
+
+ +

Descripción

+ +

Las  declaraciones de variables, donde sea que ocurran, son procesadas antes de que cualquier otro código sea ejecutado. El ámbito de una variable declarada con la palabra reservada var es su contexto de ejecución en curso, que puede ser la función que la contiene o, para las variables declaradas afuera de cualquier función, un ámbito global. Si re-declaras una variable Javascript, esta no perderá su valor.

+ +

Asignar un valor a una variable no declarada implica crearla como variable global (se convierte en una propiedad del objeto global) cuando la asignación es ejecutada. Las diferencias entre una variable declarada y otra sin declarar son:

+ +

1. Las variables declaradas se limitan al contexto de ejecución en el cual son declaradas. Las variables no declaradas siempre son globales.

+ +
function x() {
+  y = 1;   // Lanza un error de tipo "ReferenceError" en modo estricto ('use strict')
+  var z = 2;
+}
+
+x();
+
+console.log(y); // Imprime "1" 
+console.log(z); // Lanza un error de tipo "ReferenceError": z no está definida afuera de x
+ +

2. Las variables declaradas son creadas antes de ejecutar cualquier otro código. Las variables sin declarar no existen hasta que el código que las asigna es ejecutado.

+ +
console.log(a);                // Lanza un error de tipo "ReferenceError".
+console.log('trabajando...'); // Nunca se ejecuta.
+ +
var a;
+console.log(a);                // Imprime "undefined" o "" dependiendo del navegador.
+console.log('trabajando...'); // Imprime "trabajando...".
+ +

3. Las variables declaradas son una propiedad no-configurable de su contexto de ejecución (de función o global). Las variables sin declarar son configurables (p. ej. pueden borrarse).

+ +
var a = 1;
+b = 2;
+
+delete this.a; // Lanza un error de tipo "ReferenceError" en modo estricto ('use strict'), de lo contrario falla silenciosamente.
+delete this.b;
+
+console.log(a, b); // Lanza un error de tipo "ReferenceError". 
+// La propiedad 'b' se eliminó y ya no existe.
+ +

Debido a esas tres diferencias, fallar al declarar variables muy probablemente llevará a resultados inesperados. Por tanto se recomienda siempre declarar las variables, sin importar si están en una función o un ámbito global. Y en el modo estricto (strict mode) de ECMAScript 5, asignar valor a una variable sin declarar lanzará un error.

+ +

Elevación de variables

+ +

Como la declaración de variables (y todas las declaraciones en general) se procesa antes de ejecutar cualquier código, declarar una variable en cualquier parte del código es equivalente a declararla al inicio del mismo. Esto también significa que una variable puede parecer usarse antes de ser declarada. Este comportamiento es llamado hoisting (del inglés "elevación"), ya que la declaración de una variable parecer haber sido movida a la cima de la función o código global.

+ +
bla = 2;
+var bla;
+// ...
+
+// Es entendido implicitamente como:
+
+var bla;
+bla = 2;
+ +

Por esa razón, se recomienda siempre declarar variables al inicio de su ámbito (la cima del código global y la cima del código de función) para que sea claro cuáles variables pertenecen al ámbito de función (local) y cuáles son resueltas en la cadena de ámbito.

+ +

Es importante señalar que la elevación afectará la declaración de variables, pero no su inicialización. El valor será asignado precisamente cuando la sentencia de asignación sea alcanzada:

+ +
function haz_algo() {
+  console.log(bar); // undefined (valor indefinido)
+  var bar = 111;
+  console.log(bar); // 111
+}
+
+// Se entiende implícitamente como: 
+function haz_algo() {
+  var bar;
+  console.log(bar); // undefined (valor indefinido)
+  bar = 111;
+  console.log(bar); // 111
+}
+ +

 

+ +

Ejemplos

+ +

Declarando e inicializando dos variables

+ +
var a = 0, b = 0;
+ +

Asignando dos variables con un solo valor de cadena

+ +
var a = 'A';
+var b = a;
+
+// Equivalente a:
+
+var a, b = a = 'A';
+ +

Sé consciente del orden:

+ +
var x = y, y = 'A';
+console.log(x + y); // Imprimirá "undefinedA"
+ +

Aquí, 'x' & 'y' son declaradas antes de ejecutarse cualquier código, y la asignación ocurre después. Al momento de evaluar "x = y", 'y' existe así que ningún error "ReferenceError" es lanzado y su valor es 'undefined', de modo que 'x' también tiene asignada el valor 'undefined'. Después, a 'y' se le asigna el valor 'A'. Consecuentemente, luego de la primera línea, 'x' es exactamente igual a 'undefined' & 'y' es igual a 'A', de ahí el resultado.

+ +

Initialización de muchas variables

+ +
var x = 0;
+
+function f() {
+  var x = y = 1; // 'x' es declarada localmente, ¡'y' no lo es!
+}
+f();
+
+console.log(x, y); // Lanza un error de tipo "ReferenceError" en modo estricto ('y' no está definida). De lo contrario se imprimiría "0, 1".
+// En modo no-estricto:
+// 'x' es la variable global como se esperaría
+// 'y' sin embargo, se sale de la función
+ +

Globales implícitas y ámbito externo a una función

+ +

Las variables que parecen ser globales implícitas pueden ser referencias a variables en un ámbito externo a  la función:

+ +
var x = 0;  // 'x' es declarada globalmente, luego se le asigna el valor 0.
+
+console.log(typeof z); // Imprime "undefined", pues 'z' aún no existe.
+
+function a() { // Cuando 'a()' es invocada,
+  var y = 2;   // 'y' es declarada localmente en la function 'a()', después se le asigna el valor 2.
+
+  console.log(x, y);   // Imprime "0, 2".
+
+  function b() {       // Cuando 'b()' es invocada,
+    x = 3;  // Asigna el valor 3 a la global 'x' ya existente, no crea una nueva variable global.
+    y = 4;  // Asigna 4 a la externa existente 'y', no crea una nueva variable global.
+    z = 5;  // Crea una nueva variable global 'z' y le asigna un valor de 5. 
+  }         // (Lanza un error de tipo "ReferenceError" en modo estricto.)
+
+  b();     // Invocar 'b()' crea 'z' como variable global.
+  console.log(x, y, z);  // Imprime "3, 4, 5".
+}
+
+a();                   // Invocar 'a()' también llama a 'b()'.
+console.log(x, z);     // Imprime "3, 5", porque 'z' ya es una global.
+console.log(typeof y); // Imprime 'undefined' porque 'y' es local en la función 'a()'
diff --git a/files/es/web/javascript/reference/statements/while/index.html b/files/es/web/javascript/reference/statements/while/index.html new file mode 100644 index 0000000000..8eab047884 --- /dev/null +++ b/files/es/web/javascript/reference/statements/while/index.html @@ -0,0 +1,58 @@ +--- +title: while +slug: Web/JavaScript/Referencia/Sentencias/while +tags: + - JavaScript + - Statement +translation_of: Web/JavaScript/Reference/Statements/while +--- +
{{jsSidebar("Statements")}}
+ +

Resumen

+ +

Crea un bucle que ejecuta una sentencia especificada mientras cierta condición se evalúe como verdadera. Dicha condición es evaluada antes de ejecutar la sentencia

+ +

Sintaxis

+ +
while (condicion)
+  sentencia
+
+ +
+
condicion
+
Una expresión que se evalúa antes de cada paso del bucle. Si esta condición se evalúa como verdadera, se ejecuta sentencia. Cuando la condición se evalúa como false, la ejecución continúa con la sentencia posterior al bucle while.
+
+ +
+
sentencia
+
Una sentecia que se ejecuta mientras la condición se evalúa como verdadera. Para ejecutar múltiples sentencias dentro de un bucle, utiliza una sentencia {{jsxref("Sentencias/block", "block")}} ({ ... }) para agrupar esas sentencias.
+
+ +

Ejemplos

+ +

El siguiente bucle while itera mientras n es menor que tres.

+ +
n = 0;
+x = 0;
+while (n < 3) {
+  n ++;
+  x += n;
+}
+
+ +

Cada interación, el bucle incrementa n y la añade a x. Por lo tanto, x y n toman los siguientes valores:

+ + + +

Después de completar el tercer pase, la condición n < 3 no será verdadera más tiempo, por lo que el bucle terminará.

+ +

Vea También

+ + diff --git a/files/es/web/javascript/reference/statements/with/index.html b/files/es/web/javascript/reference/statements/with/index.html new file mode 100644 index 0000000000..d5dc78d600 --- /dev/null +++ b/files/es/web/javascript/reference/statements/with/index.html @@ -0,0 +1,166 @@ +--- +title: with +slug: Web/JavaScript/Referencia/Sentencias/with +translation_of: Web/JavaScript/Reference/Statements/with +--- +
El uso de la declaración no es recomendado,  ya que puede ser el origen de los errores de confusión y problemas de compatibilidad. See the "Ambiguity Con" paragraph in the "Description" section below for details.
+ +
{{jsSidebar("Statements")}}
+ +

La sentencia with extiende el alcance de una cadena con la declaración.

+ +

Sintaxis

+ +
with (expresión) {
+  declaración
+}
+
+ +
+
expresión
+
Añade la expresión dada a la declaración. Los parentesis alrededor de la expresión son necesarios.
+
declaración
+
Se puede ejecutar cualquier declaración. Para ejecutar varias declaraciónes, utilizar una declaración de bloque ({ ... }) para agrupar esas declaraciónes.
+
+ +

Descripción

+ +

JavaScript looks up an unqualified name by searching a scope chain associated with the execution context of the script or function containing that unqualified name. The 'with' statement adds the given object to the head of this scope chain during the evaluation of its statement body. If an unqualified name used in the body matches a property in the scope chain, then the name is bound to the property and the object containing the property. Otherwise a {{jsxref("ReferenceError")}} is thrown.

+ +
Using with is not recommended, and is forbidden in ECMAScript 5 strict mode. The recommended alternative is to assign the object whose properties you want to access to a temporary variable.
+ +

Performance pro & contra

+ +

Pro: The with statement can help reduce file size by reducing the need to repeat a lengthy object reference without performance penalty. The scope chain change required by 'with' is not computationally expensive. Use of 'with' will relieve the interpreter of parsing repeated object references. Note, however, that in many cases this benefit can be achieved by using a temporary variable to store a reference to the desired object.

+ +

Contra: The with statement forces the specified object to be searched first for all name lookups. Therefore all identifiers that aren't members of the specified object will be found more slowly in a 'with' block. Where performance is important, 'with' should only be used to encompass code blocks that access members of the specified object.

+ +

Ambiguity contra

+ +

Contra: The with statement makes it hard for a human reader or JavaScript compiler to decide whether an unqualified name will be found along the scope chain, and if so, in which object. So given this example:

+ +
function f(x, o) {
+  with (o)
+    print(x);
+}
+ +

Only when f is called is x either found or not, and if found, either in o or (if no such property exists) in f's activation object, where x names the first formal argument. If you forget to define x in the object you pass as the second argument, or if there's some similar bug or confusion, you won't get an error -- just unexpected results.

+ +

Contra: Code using with may not be forward compatible, especially when used with something else than a plain object. Consider this example:

+ +
+
function f(foo, values) {
+    with (foo) {
+        console.log(values)
+    }
+}
+
+ +

If you call f([1,2,3], obj) in an ECMAScript 5 environment, then the values reference inside the with statement will resolve to obj. However, ECMAScript 6 introduces a values property on Array.prototype (so that it will be available on every array). So, in a JavaScript environment that supports ECMAScript 6, the values reference inside the with statement will resolve to [1,2,3].values.

+
+ +

Examples

+ +

Using with

+ +

The following with statement specifies that the Math object is the default object. The statements following the with statement refer to the PI property and the cos and sin methods, without specifying an object. JavaScript assumes the Math object for these references.

+ +
var a, x, y;
+var r = 10;
+
+with (Math) {
+  a = PI * r * r;
+  x = r * cos(PI);
+  y = r * sin(PI / 2);
+}
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-with-statement', 'with statement')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-12.10', 'with statement')}}{{Spec2('ES5.1')}}Now forbidden in strict mode.
{{SpecName('ES3', '#sec-12.10', 'with statement')}}{{Spec2('ES3')}} 
{{SpecName('ES1', '#sec-12.10', 'with statement')}}{{Spec2('ES1')}}Initial definition
+ +

Browser compatibility

+ +

{{CompatibilityTable}}

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

See also

+ + diff --git a/files/es/web/javascript/reference/strict_mode/index.html b/files/es/web/javascript/reference/strict_mode/index.html new file mode 100644 index 0000000000..d6a596b3e5 --- /dev/null +++ b/files/es/web/javascript/reference/strict_mode/index.html @@ -0,0 +1,368 @@ +--- +title: Modo Estricto +slug: Web/JavaScript/Referencia/Modo_estricto +tags: + - ECMAScript5 + - Guía + - JavaScript + - Modo estricto +translation_of: Web/JavaScript/Reference/Strict_mode +--- +
{{JsSidebar("More", "Más")}}
+ +
A veces, verás que llaman {{Glossary("Sloppy_mode", "sloppy mode — modo poco riguroso")}} al modo no estricto predeterminado. Este no es un término oficial, pero tenlo en cuenta, por si acaso.
+ +

El modo estricto de ECMAScript 5 es una forma de elegir una variante restringida de JavaScript, así implícitamente se deja de lado el modo poco riguroso. El modo estricto no es sólo un subconjunto: intencionalmente tiene diferencia semántica del código normal. Los navegadores que no admiten el modo estricto ejecutarán el código con un comportamiento diferente a los que sí lo soportan, por lo tanto no confíes en el modo estricto sin antes hacer pruebas de sus características más relevantes. Los modos estricto y no estricto pueden coexistir, por lo tanto el código se puede transformar a modo estricto incrementalmente.

+ +

El modo estricto tiene varios cambios en la semántica normal de JavaScript:

+ +
    +
  1. Elimina algunos errores silenciosos de JavaScript cambiándolos para que lancen errores.
  2. +
  3. Corrige errores que hacen difícil para los motores de JavaScript realizar optimizaciones: a veces, el código en modo estricto puede correr más rápido que un código idéntico pero no estricto.
  4. +
  5. Prohíbe cierta sintaxis que probablemente sea definida en futuras versiones de ECMAScript.
  6. +
+ +

Ve transición a modo estricto, si deseas cambiar tu código para trabajar en la variante estricta de JavaScript.

+ +

Invocar el modo estricto

+ +

El modo estricto se aplica a un script completo o a funciones individuales. No se aplica a bloques entre corchetes {}; intentar aplicarlo en tales contextos no hace nada. Código eval, código Function, atributos de controladores de eventos, cadenas pasadas a setTimeout, y similares son scripts enteros, de modo que invocar modo estricto en tales contextos funciona como se espera.

+ +

Modo estricto para scripts

+ +

Para invocar el modo estricto en todo un script, escribe exactamente "use strict"; (o 'use strict';) antes de cualquier otra expresión.

+ +
// Sintaxis del modo estricto para todo el script
+'use strict';
+var v = "¡Hola! ¡Estoy en modo estricto para script!";
+
+ +

Esta sintaxis tiene un problema que ya ha afectado a cierta página bien conocida: no es posible concatenar ciegamente scripts conflictivos entre sí. Si concatena un script en modo estricto con otro que no es, la concatenación de ambos producirá código en modo estricto. Lo contrario también es cierto: código en modo no estricto mas código estricto produce código que no es estricto. Concatenar scripts no produce problemas si todos están en modo estricto (o si todos están en modo no estricto). El problema es mezclar scripts en modo estricto con scripts en modo no estricto. Por eso se recomienda habilitar el modo estricto a nivel de función solamente (al menos durante el periodo de transición de un programa).

+ +

Otra opción es envolver el contenido completo del script en una función y tener esa función externa en modo estricto. Así se elimina el problema de la concatenación, pero entonces tienes que hacerte cargo de exportar explícitamente las variables globales fuera del ámbito de la función.

+ +

Modo estricto para funciones

+ +

De igual forma, para invocar el modo estricto para una función, escribe exactamente "use strict"; (o 'use strict';) en el cuerpo de la función antes de cualquier otra expresión.

+ +
function strict() {
+  // Sintaxis del modo estricto a nivel de función
+  'use strict';
+  function nested() { return "¡Y yo también!"; }
+  return "¡Hola!  ¡Soy una función en modo estricto!  " + nested();
+}
+function notStrict() { return "Yo no soy estricto."; }
+
+ +

Modo estricto para módulos

+ +

ECMAScript 2015 introdujo módulos y por tanto una tercera manera de entrar en el modo estricto. Todo el contenido de los módulos de JavaScript se encuentra automáticamente en modo estricto, sin necesidad de una declaración para iniciarlo.

+ +
function strict() {
+    // debido a que este es un módulo, soy estricto por omisión
+}
+export default strict;
+
+ +

Cambios en modo estricto

+ +

El modo estricto cambia la sintaxis y el comportamiento en tiempo de ejecución. Los cambios generalmente caen dentro de estas categorías: cambios que convierten equivocaciones en errores (como errores de sintaxis o en tiempo de ejecución), cambios que simplifican cómo se calcula el nombre de una variable particular, cambios que simplifican el uso de eval y arguments, cambios que hacen más fácil escribir JavaScript "seguro", y cambios que anticipan la evolución futura de ECMAScript.

+ +

Convertir equivocaciones en errores

+ +

El modo estricto cambia algunos errores de sintaxis tolerados en modo no estricto y los convierte en errores. JavaScript fue diseñado de modo que fuera fácil para programadores novatos, y puede haber operaciones semánticas que deberían ser errores pero son tratadas como libres de error. A veces esto sirve para solucionar el problema en el momento, pero puede crear problemas más graves en el futuro. El modo estricto trata las equivocaciones como errores, para que se puedan descubrir y subsanar inmediatamente.

+ +

En primer lugar, el modo estricto hace imposible crear variables globales por accidente. En JavaScript no estricto, si se escribe mal una variable en una asignación, se creará una nueva propiedad en el objeto global y el código continuará "trabajando" como si nada (aunque es posible que el código así escrito falle en el futuro, en concreto, en JavaScript moderno). En modo estricto, cualquier asignación que produzca variables globales por accidente lanzará un error:

+ +
'use strict';
+                       // Asumiendo que exista una variable global llamada mistypedVariable
+mistypeVariable = 17;  // esta línea lanza un ReferenceError debido a
+                       // una errata en el nombre de la variable
+
+ +

En segundo lugar, el modo estricto lanza una excepción en asignaciones que de otro modo fallarían silenciosamente. Por ejemplo, NaN es una variable global que no puede ser asignada. En un código normal, asignar a NaN no tiene efecto; el programador no recibe ningún mensaje de error. En cambio, en modo estricto, si se intenta asignar un valor a NaN, el programador recibirá una excepción. Cualquier asignación que falle silenciosamente en código normal (asignaciones a una propiedad de no escritura, asignaciones a una propiedad captadora, asignaciones a una nueva propiedad o a un objecto {{jsxref("Global_Objects/Object/preventExtensions", "no extensible")}}) lanzará una excepción en modo estricto:

+ +
'use strict';
+
+// Asignación a una no-escritura global
+var undefined = 5; // lanza un TypeError
+var Infinity = 5; // lanza un TypeError
+
+// Asignación a una propiedad de no-escritura
+var obj1 = {};
+Object.defineProperty(obj1, "x", { value: 42, writable: false });
+obj1.x = 9; // lanza un TypeError
+
+// Asignación a una propiedad de tipo getter
+var obj2 = { get x() { return 17; } };
+obj2.x = 5; // lanza un TypeError
+
+// Asignación a una nueva propiedad en un objeto no extensible
+var fixed = {};
+Object.preventExtensions(fixed);
+fixed.newProp = "ohai"; // lanza un TypeError
+
+ +

En tercer lugar, el modo estricto lanza una excepción al intentar eliminar propiedades no eliminables (mientra que en código normal el intento no tendría ningún efecto):

+ +
'use strict';
+delete Object.prototype; // lanza un TypeError
+
+ +

En cuarto lugar, la versión de modo estricto anterior a Gecko 34 requiere que todas las propiedades nombradas en un objeto sean únicas. En código normal se pueden duplicar nombres, siendo el último el que determina el valor de la propiedad. Pero como el último es el único que hace algo, la duplicidad da origen a errores si el código se modifica para cambiar el valor de la propiedad. Duplicar nombres de propiedades es un error de sintaxis en modo estricto.

+ +
+

Este ya no es el caso en ECMAScript 2015 (error 1041128).

+
+ +
'use strict';
+var o = { p: 1, p: 2 }; // !!! error de sintaxis
+
+ +

En quinto lugar, el modo estricto requiere que los nombres de los parámetros de una función sean únicos. En código normal, el último argumento repetido oculta argumentos anteriores con el mismo nombre. Estos argumentos permanecen disponibles a través de arguments[i], de modo que no son completamente inaccesibles. Aun así, esta ocultación tiene poco sentido y es probablemente indeseable (pues puede ocultar, por ejemplo, un error al teclear una letra). Por lo tanto, en modo estricto, duplicar nombres de argumentos es un error de sintaxis:

+ +
function sum(a, a, c) { // !!! error de sintaxis
+  'use strict';
+  return a + a + c; // incorrecto si este código se ejecutó
+}
+
+ +

En sexto lugar, en modo estricto ECMAScript 5 se prohíbe la notación octal. La notación octal no es parte de ECMAScript 5, pero está soportada en todos los navegadores al poner como prefijo un cero al número: 0644 == 420 y "\045" === "%". En ECMAScript 2015, el número octal es compatible con el prefijo de un número con "0o". Es decir:

+ +
var a = 0o10; // ES2015: Octal
+ +

Los programadores novatos a veces creen que un prefijo cero inicial no tiene un significado semántico, por lo que lo usan como dispositivo de alineación, ¡pero esto cambia el significado del número! Una sintaxis de cero a la izquierda para los octales rara vez es útil y se puede usar por error, por lo que el modo estricto lo convierte en un error de sintaxis:

+ +
'use strict';
+var sum = 015 + // !!! error de sintaxis
+          197 +
+          142;
+
+var sumWithOctal = 0o10 + 8;
+console.log(sumWithOctal); // 16
+
+ +

Séptimo, el modo estricto en ECMAScript 2015 prohíbe establecer propiedades en valores {{Glossary("Primitive", "primitivos")}}. La sintaxis octal rara vez es útil y se puede usar equivocadamente, de modo que en modo estricto, utilizar notación octal lanza un {{jsxref("TypeError")}}:

+ +
(function() {
+'use strict';
+
+false.true = '';         // TypeError
+(14).sailing = 'home';   // TypeError
+'with'.you = 'far away'; // TypeError
+
+})();
+ +

Simplificación en el uso de variables

+ +

El modo estricto simplifica el modo en que el nombre de una variable es asignado a un variable particular en el código. Muchas optimizaciones del compilador se basan en la habilidad para decir el lugar específico en que una variable está almacenada, lo cual es crítico para una optimización completa del código JavaScript. Algunas veces JavaScript hace que esta asignación básica del nombre de una variable y su valor no suceda hasta que no se está en tiempo de ejecución. El modo estricto elimina muchos de los casos en los que esto pasa, de modo que el compilador puede optimizar mejor el código que es estricto.

+ +

Primero, el modo estricto prohíbe el uso de with. El problema con with es que cualquier nombre dentro del bloque pude ser asignado a una propiedad del objecto pasado como argumento, o a una variable en su ámbito circundante (o incluso global), en tiempo de ejecución: es imposible saber de antemano cuál será. El modo estricto hace que el uso de with sea un error de sintaxis, de modo que no hay oportunidad de que una variable dentro de un with se refiera a una dirección desconocida en tiempo de ejecución:

+ +
'use strict';
+var x = 17;
+with (obj) { // !!! error de sintaxis
+  // Si este no estuviera un modo estricto, ¿sería var x?, o
+  // ¿sería obj.x en su lugar?  Es imposible en general
+  // decirlo sin ejecutar el código, por lo que el nombre no
+  // se puede optimizar.
+  x;
+}
+
+ +

En vez de usar with, existe la simple alternativa de asignar el objecto a una variable de nombre más corto, y después acceder a la propiedad correspondiente de esa variable.

+ +

Segundo, el uso de eval en modo estricto no introduce nuevas variables en el ámbito circundante. En código normal, eval("var x;") introduce una variable x dentro de la función circundante o el ámbito global. Esto significa que, en general, en una función que contiene una llamada a eval en cada nombre que no se refiera a un argumento o a una variable local, se debe asignar a una definición en particular en tiempo de ejecución (debido a que eval puedo haber introducido una nueva variable que podría ocultar una variable externa). En modo estricto, eval crea variables solo para el código que se está evaluando, por lo que eval no puede afectar si un nombre se refiere a una variable externa o a alguna variable local:

+ +
var x = 17;
+var evalX = eval("'use strict'; var x = 42; x");
+console.assert(x === 17);
+console.assert(evalX === 42);
+
+ +

En el ejemplo anterior, si la función eval es invocada por una expresión de la forma eval(...) en código de modo estricto, el código será evaluado en modo estricto. El código puede explícitamente invocar el modo estricto, pero no es necesario.

+ +
function strict1(str) {
+  'use strict';
+  return eval(str); // str será tratado como código de modo estricto
+}
+function strict2(f, str) {
+  'use strict';
+  return f(str); // no eval(...): str es estricto si y solo
+                 // si invoca el modo estricto
+}
+function nonstrict(str) {
+  return eval(str); // str es estricto si y solo
+                    // si invoca el modo estricto
+}
+
+strict1("'¡Código en modo estricto!'");
+strict1("'use strict'; '¡Código en modo estricto!'");
+estricto2(eval, "'Código no estricto'");
+strict2(eval, "'use strict'; '¡Código en modo estricto!'");
+nonstrict("'Código no estricto'");
+nonstrict("'use strict'; '¡Código en modo estricto!'");
+
+ +

Así los nombres en modo estricto usando eval se comportan idénticamente a los nombres en modo estricto no siendo evaluados como resultado de eval.

+ +

Tercero, el modo estricto prohíbe eliminar nombres planos. De este modo, delete name produce un error de sintaxis.

+ +
'use strict';
+
+var x;
+delete x; // !!! error de sintaxis
+
+eval("var y; delete y;"); // !!! error de sintaxis
+ +

Haciendo eval y arguments más simples

+ +

El modo estricto hace que el uso de arguments y eval sea más intuitivo. Ambos envuelven un considerable misticismo en código normal: eval al añadir o remover los enlaces y cambiar los valores de dichos enlaces, y arguments al poder sustituir los nombres de los argumentos por propiedades indexadas. El modo estricto ofrece un gran paso al tratar a eval y a arguments como palabras clave, aunque soluciones finales no estarán disponibles hasta futuras ediciones de ECMAScript.

+ +

Primero, las palabras eval y arguments no se pueden ligar o asignar en la sintaxis del lenguaje. Cualquier intento producirá un error de sintaxis:

+ +
'use strict';
+eval = 17;
+arguments++;
+++eval;
+var obj = { set p(arguments) { } };
+var eval;
+try { } catch (arguments) { }
+function x(eval) { }
+function arguments() { }
+var y = function eval() { };
+var f = new Function("arguments", "'use strict'; return 17;");
+
+ +

Segundo, el modo estricto no permite usar alias en elementos del objecto arguments creados dentro de la función. En una función en código normal cuyo primer parámetro sea args, si se cambia el valor de args también se cambiará de arguments[0], y viceversa (a menos que no se proporcionen parámetros o se elimine arguments[0]). El objecto arguments para el modo estricto almacena los parámetros originales cuando la función es invocada. arguments[i] no guarda el valor del correspondiente nombre del parámetro, ni tampoco un parámetro con nombre guarda el valor correspondiente de arguments[i].

+ +
function f(a) {
+  'use strict';
+  a = 42;
+  return [a, arguments[0]];
+}
+var pair = f(17);
+console.assert(pair[0] === 42);
+console.assert(pair[1] === 17);
+
+ +

Tercero, arguments.callee no está soportado. En código normal, arguments.callee se refiere a la función envolvente. Este caso de uso es débil: ¡simplemente nombra la función envolvente!. Además arguments.callee merma el desempeño de funciones en línea pues debe ser posible proveer la referencia de la función que llamó a la función original cada vez que se usa arguments.callee. arguments.callee en modo estricto es una propiedad no eliminable y lanza una excepción cuando se le asigna un valor o se intenta regresar su valor.

+ +
'use strict';
+var f = function() { return arguments.callee; };
+f(); // lanza un TypeError
+
+ +

+ +

El modo estricto hace más fácil el escribir código "seguro" en JavaScript. Algunos sitios web ofrecen ahora medios para que los usuarios codifiquen en JavaScript para que el código corra en el sitio en beneficio de otros usuarios. JavaScript en los navegadores puede acceder a la información privada del usuario, por lo que dicho JavaScript se debe transformar parcialmente antes de ejecutarse, para censurar el acceso a funciones prohibidas. La flexibilidad de JavaScript hace que efectivamente sea imposible hacer esto sin muchas comprobaciones en tiempo de ejecución. La flexibilidad de JavaScript hace casi imposible hacer esto sin hacer revisiones en tiempo de ejecución. Unos pocos ajustes del modo estricto, además de requerir que el JavaScript enviado por el usuario sea código de modo estricto y que se invoque de cierta manera, reducen sustancialmente la necesidad de esas comprobaciones en tiempo de ejecución.

+ +

Primero, el valor this pasado a una función en modo estricto no forzosamente debe ser un objeto (es decir, "empaquetado"). Para una función normal, this siempre es un objeto: o el objeto proporcionado si se llama con un this con valor de objeto; el valor, empaquetado, si se llama con un booleano, una cadena o un número this; o el objeto global si se llama con un undefined o null this. (Usar {{jsxref("Global_Objects/Function/call", "call")}}, {{jsxref("Global_Objects/Function/apply", "apply")}}, o {{jsxref("Global_Objects/Function/bind", "bind")}} para especificar un valor del this particular). Este empaquetado automático al pasar valores a una función tiene un costo en el rendimiento; no solo eso, si no que al exponer el objeto global en los navegadores es un riesgo de seguridad, debido a que el objeto global provee acceso a una funcionalidad que el código de JavaScript "seguro" debe restringir. Así, en una función en modo estricto , el valor de this no está empaquetado dentro de un objecto, y si no se especifica, this toma el valor de undefined.

+ +
'use strict';
+function fun() { return this; }
+console.assert(fun() === undefined);
+console.assert(fun.call(2) === 2);
+console.assert(fun.apply(null) === null);
+console.assert(fun.call(undefined) === undefined);
+console.assert(fun.bind(true)() === true);
+
+ +

Esto significa, entre otras cosas, que en los navegadores no es posible hacer referencia al objeto window a través de this dentro de una función en modo estricto.

+ +

Segundo, en modo estricto ya no es posible "recorrer" la pila de JavaScript a través de extensiones de ECMAScript. En código normal con estas extensiones, cuando una función llamada fun está en medio de su ejecución, fun.caller es la función que más recientemente llamó a fun, y fun.arguments son los parámetros para esa invocación de fun. Ambas extensiones son problemáticas para JavaScript "seguro", debido a que permiten acceder a funciones "privilegiadas" y sus (potencialmente inseguros) argumentos. Si fun está en modo estricto, tanto fun.caller como fun.arguments son propiedades no eliminables que lanzan una excepción cuando se establecen o recuperan:

+ +
function restricted() {
+  'use strict';
+  restricted.caller;    // lanza un TypeError
+  restricted.arguments; // lanza un TypeError
+}
+function privilegedInvoker() {
+  return restricted();
+}
+privilegedInvoker();
+
+ +

Tercero, en funciones de modo estricto, el objeto arguments no provee acceso a las variables usadas al llamar a la función. En algunas implementaciones antiguas de ECMAScript, arguments.caller era un objeto cuyas propiedades apuntaban a las variables en la función. Esto es una amenaza de seguridad por que rompe la habilidad de ocultar valores privilegiados a través de la abstracción de la función; además, frena algunas optimizaciones. Por estas razones los navegadores modernos no la implementan. Por su funcionalidad a lo largo de los años, arguments.caller en una función de modo estricto es una propiedad que lanza una excepción cuando se usa.

+ +
'use strict';
+function fun(a, b) {
+  'use strict';
+  var v = 12;
+  return arguments.caller; // lanza un TypeError
+}
+fun(1, 2); // no expone v (o a o b)
+
+ +

Preparando el camino para futuras versiones de ECMAScript

+ +

Las futuras versiones de ECMAScript introducirán nuevos cambios, y el modo estricto en ECMAScript 5 aplica algunos de esos cambios para hacer una transición más suave. Será más fácil hacer cambios si las bases de esos cambios son prohibidas en modo estricto.

+ +

Primero, en modo estricto una lista de identificadores se convierte en palabras reservadas. Estas palabras son implements, interface, let, package, private, protected, public, static, y yield. De modo que en modo estricto, no se pueden usar estas palabras para nombrar variables o argumentos.

+ +
function package(protected) { // !!!
+  'use strict';
+  var implements; // !!!
+
+  interface: // !!!
+  while (true) {
+    break interface; // !!!
+  }
+
+  function private() { } // !!!
+}
+function fun(static) { 'use strict'; } // !!!
+
+
+ +

Dos advertencias específicas de Mozilla: Primero, si tu código esta escrito en JavaScript 1.7 o mayor (por ejemplo en código chrome o cuando se usa bien <script type="">) y el código esta en modo estricto, let y yield tienen la funcionalidad que han tenido desde que esas palabras clave se introdujeron por primera vez. Pero el código en modo estricto en la web, cargado con <script src=""> o <script>...</script>, no podrá usar let/yield como identificadores. Segundo, mientras que ES5 incondicionalmente reserva las palabras class, enum, export, extends, import y super, Mozilla Firefox 5 solo las reserva en modo estricto.

+ +

En segundo lugar, el modo estricto prohíbe las declaraciones de función, no en el nivel superior de un script o función. En el modo normal de los navegadores, las declaraciones de función se permiten "en todas partes". ¡Esto no es parte de ES5 (ni siquiera de ES3)! Es una extensión con semántica incompatible en diferentes navegadores. Ten en cuenta que en ES2015 se permiten declaraciones de función fuera del nivel superior.

+ +
'use strict';
+if (true) {
+  function f() { } // !!! error de sintaxis
+  f();
+}
+
+for (var i = 0; i < 5; i++) {
+  function f2() { } // !!! error de sintaxis
+  f2();
+}
+
+function baz() {   // legal
+  function eit() { } // también legal
+}
+
+ +

Esta prohibición no es el modo estricto propiamente dicho porque tales declaraciones de función son una extensión de ES5 básico. Pero es la recomendación del comité ECMAScript y los navegadores la implementarán.

+ +

Modo estricto en navegadores

+ +

La mayoría de los navegadores ya implementan el modo estricto. Sin embargo, no dependas ciegamente de él, ya que todavía hay numerosas Versiones del navegador utilizadas en la naturaleza que solo tienen soporte parcial para el modo estricto o no lo admiten en absoluto (por ejemplo, Internet Explorer por debajo de la versión 10). El modo estricto cambia la semántica. Depender de esos cambios provocará equivocaciones y errores en los navegadores que no implementan el modo estricto. Ten cuidado al usar el modo estricto y respalda la dependencia del modo estricto con pruebas de funciones que comprueben si se implementan las partes relevantes del modo estricto. Finalmente, asegúrate de probar tu código en navegadores que admitan y no admitan el modo estricto. Si realizas tus pruebas solo en navegadores que no admiten el modo estricto, es muy probable que tengas problemas en los navegadores que sí lo hacen, y viceversa.

+ +

Especificaciones

+ + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-strict-mode-code', 'Código en modo estricto')}}
+ +

Ve también

+ + diff --git a/files/es/web/javascript/reference/template_literals/index.html b/files/es/web/javascript/reference/template_literals/index.html new file mode 100644 index 0000000000..708c879383 --- /dev/null +++ b/files/es/web/javascript/reference/template_literals/index.html @@ -0,0 +1,314 @@ +--- +title: Plantillas literales (plantillas de cadenas) +slug: Web/JavaScript/Referencia/template_strings +tags: + - ECMAScript 2015 + - Experimental + - Expérimental(2) + - JavaScript +translation_of: Web/JavaScript/Reference/Template_literals +--- +
{{JsSidebar("More")}}
+ +

Las plantillas literales son cadenas literales que habilitan el uso de expresiones incrustadas. Con ellas, es posible utilizar cadenas de caracteres de más de una línea, y funcionalidades de interpolación de cadenas de caracteres.

+ +

En ediciones anteriores de la especificación ES2015, solían llamarse "plantillas de cadenas de caracteres".

+ +

Sintaxis

+ +
`texto de cadena de caracteres`
+
+`línea 1 de la cadena de caracteres
+ línea 2 de la cadena de caracteres`
+
+`texto de cadena de caracteres ${expresión} texto adicional`
+
+etiqueta`texto de cadena de caracteres ${expresión} texto adicional`
+
+ +

Descripción

+ +

Las plantillas literales se delimitan con el caracter de comillas o tildes invertidas (` `) (grave accent), en lugar de las comillas sencillas o dobles.

+ +

Las plantillas de cadena de caracteres pueden contener marcadores, identificados por el signo de dólar y envueltos en llaves (${expresión}). Las expresiones contenidas en los marcadores, junto con el texto entre ellas, son enviados como argumentos a una función.

+ +

La función por defecto sencillamente concatena las partes para formar una única cadena de caracteres. Si hay una expresión antes de la plantilla literal (aquí indicada mediante etiqueta), se le conoce como "plantilla etiquetada". En este caso, la expresión de etiqueta (típicamente una función) es llamada con la plantilla literal como parámetro, que luego puede ser manipulada antes de ser devuelta.

+ +

En caso de querer escapar una comilla o tilde invertida en una plantilla literal, se debe poner una barra invertida (\) antes de la comilla o tilde invertida.

+ +
`\`` === '`' // --> true (cierto)
+ +

Cadenas de más de una línea

+ +

Los caracteres de fin de línea encontrados forman parte de la plantilla literal.

+ +

Utilizando cadenas de caracteres normales, sería necesario utilizar la siguiente sintaxes para producir cadenas de más de una línea:

+ +
console.log('línea 1 de cadena de texto\n' +
+'\línea 2 de cadena de texto');
+// "línea 1 de cadena de texto
+// línea 2 de cadena de texto"
+
+ +

Utilizando plantillas literales, se puede obtener el mismo resultado de la siguiente forma:

+ +
console.log(`línea 1 de la cadena de texto
+línea 2 de la cadena de texto`);
+// "línea 1 de la cadena de texto
+// línea 2 de la cadena de texto"
+ +

Interpolación de expresiones

+ +

Para insertar expresiones dentro de cadenas de caracteres normales, se utilizaría la siguiente sintaxis:

+ +
let a = 5;
+let b = 10;
+console.log('Quince es ' + (a + b) + ' y\nno ' + (2 * a + b) + '.');
+// "Quince es 15 y
+// no 20."
+ +

Ahora, con las plantillas literales, se pueden utilizar sus nuevas capacidades (es decir, insertar expresiones con ${ } e incluir caracteres de fin de linea literales dentro de la cadena) para simplificar la sintaxis:

+ +
let a = 5;
+let b = 10;
+console.log(`Quince es ${a + b} y
+no ${2 * a + b}.`);
+// "Quince es 15 y
+// no 20."
+ +

Anidamiento de plantillas

+ +

En ciertos casos, anidar una plantilla es la forma más fácil, e incluso más legible, de tener cadenas configurables. Dentro de una plantilla con tildes invertidas, es sencillo permitir tildes invertidas interiores simplemente usándolas dentro de un marcador de posición ${ } dentro de la plantilla.

+ +

Por ejemplo, si la condición a es true (cierta): entonces return (devuelva) este literal con plantilla.

+ +

En ES5:

+ +
let classes = 'header'
+classes += (isLargeScreen() ?
+   '' : item.isCollapsed ?
+     ' icon-expander' : ' icon-collapser');
+ +

En ES2015 con plantillas literales y sin anidamiento:

+ +
const classes = `header ${ isLargeScreen() ? '' :
+    (item.isCollapsed ? 'icon-expander' : 'icon-collapser') }`;
+ +

En ES5 con plantillas literales anidadas:

+ +
const classes = `header ${ isLargeScreen() ? '' :
+ `icon-${item.isCollapsed ? 'expander' : 'collapser'}` }`;
+ +

Plantillas etiquetadas

+ +

Una forma más avanzada de plantillas literales son las plantillas etiquetadas.

+ +

Con ellas es posible modificar la salida de las plantillas utilizando una función. El primer argumento contiene un array con una o más cadenas de caracteres. El segundo y subsiguientes argumentos se asocian con las expresiones de la plantilla.

+ +

La función de etiqueta puede ejecutar cualesquiera operaciones deseadas con estos argumentos, y luego devolver la cadena manipulada. (También puede devolver algo totalmente distinto, como se muestra en uno de los siguientes ejemplos.)

+ +

El nombre de la función utilizada con la etiqueta no es nada especial, se puede utilizar cualquier nombre de función en su lugar.

+ +
let persona = 'Mike';
+let edad = 28;
+
+function myTag(strings, expPersona, expEdad)
+{
+  let str0 = strings[0]; // "Ese "
+  let str1 = strings[1]; // " es un "
+
+  // Tecnicamente, hay una cadena de
+  // caracteres después de la expresión
+  // final (en nuestro ejemplo) pero
+  // está vacia (""), asi que se ignora.
+  // let str2 = strings[2];
+
+  let strEdad;
+  if (expEdad > 99)
+  {
+    strEdad = 'viejo';
+  }
+  else
+  {
+    strEdad = 'joven';
+  }
+
+  // Podemos incluso retornar una cadena de
+  // caracteres utilizando una plantilla literal.
+  return `${str0}${expPersona}${str1}${strEdad}`;
+}
+
+var salida = myTag`Ese ${ persona } es un ${ edad }`;
+
+console.log(salida);
+// Ese Mike es un joven
+
+ +

Las funciones de etiqueta incluso pueden devolver valores que no sean cadenas de caracteres:

+ +
function plantilla(cadenas, ...claves) {
+  return (function(...valores) {
+    let diccio = valores[valores.length - 1] || {};
+    let resultado = [cadenas[0]];
+    claves.forEach(function(clave, i) {
+      let valor = Number.isInteger(clave) ? valores[clave] : diccio[clave];
+      resultado.push(valor, cadenas[i + 1]);
+    });
+    return resultado.join('');
+  });
+}
+
+let t1Closure = plantilla`¡${0}${1}${2}${2}${3}!`;
+//let t1Closure = plantilla(["¡","","","","","","!"],0,1,2,3);
+t1Closure('H', 'U', 'R', 'A');              // "¡HURRA!"
+
+let t2Closure = plantilla`${0} ${'foo'}!`;
+//let t2Closure = plantilla(["¡",""," ","!"],0,"foo");
+t2Closure('Hola', {foo: 'Mundo'}); // "¡Hola Mundo!"
+
+let t3Closure = plantilla`Me llamo ${'nombre'}. Tengo casi ${'edad'} años.`;
+//let t3Closure = plantilla(["Me llamo ", ". Tengo casi ", " años."], "nombre", "edad");
+t3Closure('foo', {nombre: 'MDN', edad: 30}); //"Me llamo MDN. Tengo casi 30 años."
+t3Closure({nombre: 'MDN', edad: 30}); //"Me llamo MDN. Tengo casi 30 años."
+ +

Cadenas en crudo (raw)

+ +

La propiedad especial raw, disponible en el primer argumento de la función de etiqueta, permite acceso a las cadenas de caracteres tal como fueron ingresadas, sin procesar secuencias de escape.

+ +
function etiqueta(cadenas) {
+  console.log(cadenas.raw[0]);
+}
+
+etiqueta`texto de cadena de caracteres 1 \n texto de cadena de caracteres 2`;
+// muestra "texto de cadena de caracteres 1 \n texto de cadena de caracteres 2" ,
+// incluyendo los caracteres '\' y 'n'
+ +

Adicionalmente, el método {{jsxref("String.raw()")}} permite crear cadenas de caracteres en crudo tal como serían generadas por la función por defecto de plantilla, concatenando sus partes.

+ +
let cadena = String.raw`¡Hola\n${2+3}!`;
+// "¡Hola\n5!"
+
+cadena.length;
+// 9
+
+Array.from(cadena).join(',');
+// "¡,H,o,l,a,\,n,5,!"
+
+ +

Plantillas etiquetadas y secuencias de escape

+ +

Comportamiento en ES2016

+ +

Comenzando con ECMAScript 2016, las plantillas etiquetadas se comportan de acuerdo con las normas de las siguientes secuencias de escape:

+ + + +

Esto significa que una plantilla etiquetada como la siguiente podría causar problemas, dado que, de acuerdo con la gramática de ECMAScript, un analizador buscará secuencias de escape de formato Unicode válidas pero encontrará sintaxis equivocado:

+ +
latex`\unicode`
+// En ECMAScript 2016 y versiones anteriores, lanza
+// SyntaxError: malformed Unicode character escape sequence
+ +

Revision de secuencias de escape no permitidas en ES2018

+ +

Las plantillas etiquetadas deberías permitir la inserción de lenguages (como los DSL, o LaTeX), en donde otras secuencias de escape se ven comúnmente. La propuesta para ECMAScript Template Literal Revision (Revisión de Plantilla Literal) (Cuarta Etapa, en camino a ser integrada al estándar de ECMAScript 2018) elimina la restricción de las secuencias de escape en ECMAScript para las plantillas etiquetadas.

+ +

Aún así, las secuencias de escape no permitidas deben ser representadas en la representación "cocinada" de la cadena. Aparecerán como elementos no definidos en el array llamado "cocinado" en el siguiente ejemplo.

+ +
function latex(str) {
+  return { "cocinado": str[0], "en crudo": str.raw[0] }
+}
+
+latex`\unicode`
+
+// { cocinado: undefined, en crudo: "\\unicode" }
+ +

Cabe destacar que la restricción para secuencias de escape solo ha sido eliminada para plantillas etiquetadas. Aún permanece para plantillas literales sin etiqueta:

+ +
let bad = `bad escape sequence: \unicode`;
+ +

Especificaciones

+ + + + + + + + + + + + + + +
EspecificaciónStatusComentarios
{{SpecName('ES6', '#sec-template-literals', 'Template Literals')}}
+ {{SpecName('ES6', '#sec-tagged-templates', 'Tagged Templates')}}
{{Spec2('ES6')}}Definición inicial.
+ +

Compatibilidad de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FuncionalidadChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome(41)}}{{CompatGeckoDesktop("34")}}{{CompatNo}}{{CompatOpera(29)}}{{CompatSafari(9.1)}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FuncionalidadAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatAndroid(67)}} +

{{CompatChrome(71)}}

+
{{CompatGeckoMobile("63")}}{{CompatNo}}{{CompatOpera(46)}}{{CompatSafari(9)}}
+
+ +

Ver también

+ + diff --git a/files/es/web/javascript/referencia/acerca_de/index.html b/files/es/web/javascript/referencia/acerca_de/index.html deleted file mode 100644 index 3382ea7dca..0000000000 --- a/files/es/web/javascript/referencia/acerca_de/index.html +++ /dev/null @@ -1,158 +0,0 @@ ---- -title: Acerca de -slug: Web/JavaScript/Referencia/Acerca_de -tags: - - JavaScript -translation_of: Web/JavaScript/Reference/About ---- -
{{JsSidebar}}
- -

Nuevas características en esta versión

- -

JavaScript versión 1.5 provee las siguientes nuevas características y extensiones:

- -

Errores en tiempo de ejecución
- Los errores en tiempo de ejecución son ahora reportados como excepciones.

- -

Extensiones para el formato de números
- El formato de números ha sido extendido para incluir los métodos Number.prototype.toExponential, Number.prototype.toFixed y Number.prototype.toPrecision.

- -

Extensiones de expresiones regulares
- Las siguientes extensiones para expresiones regulares han sido añadidas:

- - - -

Declaraciones condicionales de funciones
- Las funciones ahora pueden ser declaradas al interior de una cláusula if.

- -

Expresiones funcionales
- Las funciones ahora pueden ser declaradas al interior de una expresión.

- -

Cláusulas Catch múltiples
- Las cláusulas Catch múltiples en una sentencia try...catch son soportadas.

- -

Constantes
- Constantes nominadas como sólo de lectura son soportadas. Esta característica está disponible únicamente en la implementación C de JavaScript.

- -

Obtenedores y Modificadores (Getters and Setters)
- Los editores de JavaScript ahora pueden añadir obtenedores {{ mediawiki.external('getters') }} y modificadores {{ mediawiki.external('setters') }} a sus objetos. Esta característica está disponible únicamente en la implementación C de JavaScript.

- -

Qué debería saberse ya

- -

Esta referencia asume que usted tiene a su respaldo el siguiente conocimiento básico:

- - - -

Es beneficioso alguna experiencia en programación en lenguajes como C o Visual Basic, pero no es requerido.

- -

Versiones de JavaScript

- -

Cada versión del servidor Netscape Enterprise también soporta una versión diferente de JavaScript. Para ayudarle a escribir sus scripts para que sean compatibles con múltiples versiones de un servidor Enterprise, este manual lista la versión de JavaScript en la cual cada característica fue implementada.

- -

La siguiente tabla lista las veriones de JavaScript soportadas por las diferentes versiones de Navegadores. Versiones de Navegadores anteriores a la 2.0 no soportan JavaScript.

- -

JavaScript y Versiones de Navegadores

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Versión de JavaScriptVersión del Navegador
JavaScript 1.0Navegador 2.0
JavaScript 1.1Navegador 3.0
JavaScript 1.2Navegador 4.0-4.05
JavaScript 1.3Navegador 4.06-4.7x
JavaScript 1.4n/a
JavaScript 1.5Navegador 6.0 -

Mozilla 0.6x-0.9x
- (navegador de código abierto)

-
JavaScript 1.6Mozilla Firefox 1.5
JavaScript 1.7Mozilla Firefox 2
- -

Cada versión del servidor Netscape Enterprise también soporta una versión diferente de JavaScript. Para ayudarle a escribir sus scripts para que sean compatibles con múltiples versiones de un servidor Enterprise, este manual usa una abreviación para indicar la versión del servidor en el cual cada característica fue implementada.

- -

JavaScript and Netscape Enterprise Server Versions

- - - - - - - - - - - - - - - - -
AbbreviationEnterprise Server Version
NES 2.0Netscape Enterprise Server 2.0
NES 3.0Netscape Enterprise Server 3.0
- -

Dónde encontrar información de JavaScript

- -

La documentación de JavaScript incluye los siguientes libros:

- - - -

Si usted es principiante con JavaScript, comience por la Guía de JavaScript y una vez que haya obtenido firmes entendimientos de sus fundamentos, debe seguir con la Referencia de JavaScript 1.5 para conseguir más detalles individuales acerca de los objetos y las sentencias.

- -

Convenciones en el documento

- -

Las aplicaciones JavaScript se ejecutan en muchos sistemas operativos; la información en este libro se aplica a todas las versiones. Las rutas {{ mediawiki.external('paths') }} para archivos y directorios están dadas en un formato Windows (con backslashes separando los nombres de directorios). Para las versiones Unix, la ruta de los directorios son las mismas, excepto que deben usarse slashes en vez de backslashes para separar los directorios.

- -

Esta guía utiliza los localizadores uniformes de recursos {{ mediawiki.external('uniform resource locators') }} (URLs) de la siguiente forma:

- -

http://servidor.dominio/path/file.html

- -

En estos URLs, "servidor" representa el nombre del servidor en el cual puede ejecutar su aplicación (p.e., busqueda1, www), "dominio" representa un nombre de dominio de Internet (p.e., netscape.com, uiuc.edu), "path" representa la estructura de directorios en el servidor y "file.html" representa un nombre individual de archivo. En general, los items en italica en un URLs se mantienen en su lugar y los items en un tipo normal de fuente monospace son literales. Si su servidor tiene habilitada la capa de sockets seguros {{ mediawiki.external('Secure Sockets Layer') }} (SSL), deberá usar https en lugar de http en el URL.

- -

Esta guía utiliza las siguientes convenciones de tipo de fuente:

- - - -

 

diff --git "a/files/es/web/javascript/referencia/caracter\303\255sticas_desaprobadas/index.html" "b/files/es/web/javascript/referencia/caracter\303\255sticas_desaprobadas/index.html" deleted file mode 100644 index f0f18cfbd7..0000000000 --- "a/files/es/web/javascript/referencia/caracter\303\255sticas_desaprobadas/index.html" +++ /dev/null @@ -1,292 +0,0 @@ ---- -title: Características en desuso y obsoletas -slug: Web/JavaScript/Referencia/Características_Desaprobadas -tags: - - Deprecated - - JavaScript - - Obsolete -translation_of: Web/JavaScript/Reference/Deprecated_and_obsolete_features ---- -

{{JsSidebar("More")}}

- - -

Esta página enumera las características de JavaScript que están en desuso (es decir, todavía están disponibles pero se planea eliminarlas) y obsoletas (es decir, que ya no se pueden usar).

- -

Características en desuso

- -

Estas características desaconsejadas aún se pueden usar, pero se deben usar con precaución porque se espera que se eliminen por completo en el futuro. Deberías trabajar para sustituirlas con las versiones recomendadas en tu código.

- -

Propiedades de RegExp

- -

las siguientes propiedades están en desuso. Esto no afecta su uso en el {{jsxref("String.replace", "reemplazo de cadenas", "", 1)}}:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropiedadDescripción
{{jsxref("RegExp.n", "$1-$9")}} -

Coincidencias de subcadenas entre paréntesis, si las hay.
- Precaución: El uso de estas propiedades puede generar problemas, ya que las extensiones del navegador pueden modificarlas. ¡Evítalas!

-
{{jsxref("RegExp.input", "$_")}}Consulta entrada.
{{jsxref("RegExp.multiline", "$*")}}Consulta multiline.
{{jsxref("RegExp.lastMatch", "$&")}}Consulta lastMatch.
{{jsxref("RegExp.lastParen", "$+")}}Consulta lastParen.
{{jsxref("RegExp.leftContext", "$`")}}Consulta leftContext.
{{jsxref("RegExp.rightContext", "$'")}}Consulta rightContext.
{{jsxref("RegExp.input", "input")}}La cadena contra la que se compara una expresión regular.
{{jsxref("RegExp.lastMatch", "lastMatch")}}Los últimos caracteres coincidentes.
{{jsxref("RegExp.lastParen", "lastParen")}}La última coincidencia de subcadena entre paréntesis, si la hubiera.
{{jsxref("RegExp.leftContext", "leftContext")}}La subcadena que precede a la coincidencia más reciente.
{{jsxref("RegExp.rightContext", "rightContext")}}La subcadena que sigue a la coincidencia más reciente.
- -

Las siguientes ahora son propiedades de instancias de RegExp, ya no del objeto RegExp:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropiedadDescripción
{{jsxref("RegExp.global", "global")}}Si se debe probar o no la expresión regular con todas las posibles coincidencias en una cadena, o solo con la primera.
{{jsxref("RegExp.ignoreCase", "ignoreCase")}}Si se deben o no ignorar las mayúsculas/minúsculas al intentar una coincidencia en una cadena.
{{jsxref("RegExp.lastIndex", "lastIndex")}}El índice en el que comenzará la siguiente coincidencia.
{{jsxref("RegExp.multiline", "multiline")}}Si buscar o no en cadenas de varias líneas.
{{jsxref("RegExp.source", "source")}}El texto del patrón.
- -

Métodos RegExp

- - - -

Propiedades de función

- - - -

Generador heredado

- - - -

Iterador

- - - -

Métodos de objeto

- - - -

Métodos de Date

- - - -

Funciones

- - - -

Proxy

- - - -

Secuencias de escape

- - - -

Métodos de cadena

- - - -

Características obsoletas

- -

Estas características obsoletas se han eliminado por completo de JavaScript y ya no se pueden utilizar a partir de la versión indicada de JavaScript.

- -

Objeto

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropiedadDescripción
{{jsxref("Global_Objects/Object/count", "__count__")}}Devuelve el número de propiedades enumerables directamente en un objeto definido por el usuario.
{{jsxref("Global_Objects/Object/Parent", "__parent__")}}Apunta al contexto de un objeto.
{{jsxref("Global_Objects/Object/eval", "Object.prototype.eval()")}}Evalúa una cadena de código JavaScript en el contexto del objeto especificado.
{{jsxref("Object.observe()")}}Observar de forma asincrónica los cambios en un objeto.
{{jsxref("Object.unobserve()")}}Elimina observadores.
{{jsxref("Object.getNotifier()")}}Crea un objeto que permite desencadenar sintéticamente un cambio.
- -

Función

- - - - - - - - - - - - -
PropiedadDescripción
{{jsxref("Global_Objects/Function/arity", "arity")}}Número de argumentos formales.
- -

Array

- - - - - - - - - - - - - - - - -
PropiedadDescripción
{{jsxref("Array.observe()")}}Observación asincrónica de cambios en los arreglos.
{{jsxref("Array.unobserve()")}}Elimina observadores.
- -

Número

- - - -

ParallelArray

- - - -

Declaraciones

- - - -

E4X

- -

Consulta E4X para obtener más información.

- -

Variables nítidas

- -

Consulta Variables nítidas en JavaScript para obtener más información.

diff --git "a/files/es/web/javascript/referencia/caracter\303\255sticas_desaprobadas/the_legacy_iterator_protocol/index.html" "b/files/es/web/javascript/referencia/caracter\303\255sticas_desaprobadas/the_legacy_iterator_protocol/index.html" deleted file mode 100644 index 5ef865f0bb..0000000000 --- "a/files/es/web/javascript/referencia/caracter\303\255sticas_desaprobadas/the_legacy_iterator_protocol/index.html" +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: The legacy Iterator protocol -slug: >- - Web/JavaScript/Referencia/Características_Desaprobadas/The_legacy_Iterator_protocol -translation_of: >- - Web/JavaScript/Reference/Deprecated_and_obsolete_features/The_legacy_Iterator_protocol ---- -
{{jsSidebar("More")}}
- -
Non-standard. The legacy iterator protocol is a SpiderMonkey-specific feature, and will be removed at some point. For future-facing usages, consider using for..of loops and the iterator protocol.
- -

The deprecated Firefox-only iterator protocol

- -

Firefox, prior to version 26 implemented another iterator protocol that is similar to the standard ES6 Iterator protocol.

- -

An object is an legacy iterator when it implements a next() method with the following semantics, and throws {{jsxref("Global_Objects/StopIteration", "StopIteration")}} at the end of iteration.

- - - - - - - - - - - - -
PropertyValue
nextA zero arguments function that returns an value.
- -

Difference between legacy and ES6 iterator protocols

- - - -

Simple example with the old protocol

- -
function makeIterator(array){
-    var nextIndex = 0;
-
-    return {
-       next: function(){
-           if(nextIndex < array.length){
-               return array[nextIndex++];
-           else
-               throw new StopIteration();
-       }
-    }
-}
-
-var it = makeIterator(['yo', 'ya']);
-
-console.log(it.next()); // 'yo'
-console.log(it.next()); // 'ya'
-try{
-    console.log(it.next());
-}
-catch(e){
-    if(e instanceof StopIteration){
-         // iteration over
-    }
-}
-
- -

Mira también

- - diff --git a/files/es/web/javascript/referencia/classes/class_fields/index.html b/files/es/web/javascript/referencia/classes/class_fields/index.html deleted file mode 100644 index 446c63c001..0000000000 --- a/files/es/web/javascript/referencia/classes/class_fields/index.html +++ /dev/null @@ -1,386 +0,0 @@ ---- -title: Class fields -slug: Web/JavaScript/Referencia/Classes/Class_fields -tags: - - Clases - - JavaScript -translation_of: Web/JavaScript/Reference/Classes/Public_class_fields ---- -
{{JsSidebar("Classes")}}
- -
Las declaraciones de campos públicos y privados son una característica experimental (en estado 3) propuesta por el TC39, el comite de estandares de JavaScript. El soporte y funcionamiento en navegadores es limitado, pero la funcionalidad puede ser usada a través de un paso durante el proceso del build por medio de sistemas como Babel. Revise compat information mas abajo.
- -

Los campos públicos y estáticos son propieades editables, enumerables, y configurables. A diferencia de su contraparte privada, estos participan en la herencia de prototipo.

- -

Sintaxis

- -
class ClassWithInstanceField {
-  instanceField = 'instance field'
-}
-
-class ClassWithStaticField {
-  static staticField = 'static field'
-}
-
-class ClassWithPublicInstanceMethod {
-  publicMethod() {
-    return 'hello world'
-  }
-}
-
- -

Ejemplos

- -

Campos públicos estáticos

- -

Los campos estáticos públicos son útiles cuando desea que exista un campo solo una vez por clase, no en cada instancia de clase que cree. Esto es útil para cachés, configuración fija o cualquier otro dato que no necesite replicarse en todas las instancias.

- -

Los campos estáticos públicos se declaran utilizando la palabra clave static. Se agregan al constructor de la clase en el momento de la evaluación de la clase utilizando {{jsxref("Global_Objects/Object/defineProperty", "Object.defineProperty()")}}. Se accede nuevamente desde el constructor de la clase.

- -
class ClassWithStaticField {
-  static staticField = 'static field';
-}
-
-console.log(ClassWithStaticField.staticField);
-// expected output: "static field"​
-
- -

Campos sin inicializadores son inicializados como undefined.

- -
class ClassWithStaticField {
-  static staticField;
-}
-
-console.assert(ClassWithStaticField.hasOwnProperty('staticField'));
-console.log(ClassWithStaticField.staticField);
-// expected output: "undefined"
- -

Los campos estáticos públicos no se reinicializan en las subclases, pero se puede acceder a ellos a través de la cadena de prototipo.

- -
class ClassWithStaticField {
-  static baseStaticField = 'base field';
-}
-
-class SubClassWithStaticField extends ClassWithStaticField {
-  static subStaticField = 'sub class field';
-}
-
-console.log(SubClassWithStaticField.subStaticField);
-// expected output: "sub class field"
-
-console.log(SubClassWithStaticField.baseStaticField);
-// expected output: "base field"
- -

Cuando se inicializasn campos this se refiere al constuctor de clase. Tambien puede ser referenciado por nombre, y se puede usar super para obtener el constructor de la superclase si lo tiene.

- -
class ClassWithStaticField {
-  static baseStaticField = 'base static field';
-  static anotherBaseStaticField = this.baseStaticField;
-
-  static baseStaticMethod() { return 'base static method output'; }
-}
-
-class SubClassWithStaticField extends ClassWithStaticField {
-  static subStaticField = super.baseStaticMethod();
-}
-
-console.log(ClassWithStaticField.anotherBaseStaticField);
-// expected output: "base static field"
-
-console.log(SubClassWithStaticField.subStaticField);
-// expected output: "base static method output"
-
- -

Campos de instancia públicos

- -

Los campos de instancia públicos existen en cada instancia de la clase que se ha creado. Al declarar un campo publico podemos asegurarnos que dicho campo siempre esta presente, y la definicion de la clase esta auto-documentada.

- -

Los campos de instancia públicos son agregados with Object.defineProperty ya sea a la hora de ser construido en la clase base (antes que el metodo constructor corra), o justo despues que  super() returne en una subclase.

- -
class ClassWithInstanceField {
-  instanceField = 'instance field';
-}
-
-const instance = new ClassWithInstanceField();
-console.log(instance.instanceField);
-// expected output: "instance field"
- -

Campos sin inicializadores son inicilizados en undefined.

- -
class ClassWithInstanceField {
-  instanceField;
-}
-
-const instance = new ClassWithInstanceField();
-console.assert(instance.hasOwnProperty('instanceField'));
-console.log(instance.instanceField);
-// expected output: "undefined"
- -

Al igual que las propiedades, los nombres de campos pueden ser calculados (computed)

- -
const PREFIX = 'prefix';
-
-class ClassWithComputedFieldName {
-    [`${PREFIX}Field`] = 'prefixed field';
-}
-
-const instance = new ClassWithComputedFieldName();
-console.log(instance.prefixField);
-// expected output: "prefixed field"
- -

Cuando se inicializan campos this se refiere a la instancia de clase que esta siendo construida. Al igual que con los metodos publicos de instancia, si usted esta en una subclase puede acceder a al prototypo de la superclase usando super.

- -
class ClassWithInstanceField {
-  baseInstanceField = 'base field';
-  anotherBaseInstanceField = this.baseInstanceField;
-  baseInstanceMethod() { return 'base method output'; }
-}
-
-class SubClassWithInstanceField extends ClassWithInstanceField {
-  subInstanceField = super.baseInstanceMethod();
-}
-
-const base = new ClassWithInstanceField();
-const sub = new SubClassWithInstanceField();
-
-console.log(base.anotherBaseInstanceField);
-// expected output: "base field"
-
-console.log(sub.subInstanceField);
-// expected output: "base method output"
- -

Métodos públicos

- -

Métodos públicos estáticos

- -

La palabra reservada static define un metodo estático para una clase. Los métodos estáticos no son llamads usando una instancia de la clase. En lugar de eso son llamados sobre la clase como tal. Estos metodos estáticos son frecuentemente funciones utilitarias que permiten por ejemplo la creación y clonacion de objetos.

- -
class ClassWithStaticMethod {
-  static staticMethod() {
-    return 'static method has been called.';
-  }
-}
-
-console.log(ClassWithStaticMethod.staticMethod());
-// expected output: "static method has been called."
- -

Los métodos estáticos son agregados al constructor de la clase usando Object.defineProperty duranten el evaluación de la clase. Estos metodos son "escribibles" (writable), no-enumerables y configurables.

- -

Métodos públicos de instancia

- -

Como su nombre lo indica, los métodos publicos de instancia son metodos que estan disponibles para cualquier instancia de una clase.

- -
class ClassWithPublicInstanceMethod {
-  publicMethod() {
-    return 'hello world';
-  }
-}
-
-const instance = new ClassWithPublicInstanceMethod();
-console.log(instance.publicMethod());
-// expected output: "hello worl​d"
- -

Los métodos públicos de instancia son agregeados al prototipo de clase durante la evaluacón de la clase usando Object.defineProperty. Estos metodos son "escribibles" (writable), no-enumerables y configurables.

- -

Usted puede usar un generador, async y funciones generadoras asincronas

- -
class ClassWithFancyMethods {
-  *generatorMethod() { }
-  async asyncMethod() { }
-  async *asyncGeneratorMethod() { }
-}
- -

Dentro de un metodo de instancia, this se referie a la instancia como tal. En las subclases, super le permite acceder el prototipo de la superclase, permitiendo así llamar métodos de la superclase.

- -
class BaseClass {
-  msg = 'hello world';
-  basePublicMethod() {
-    return this.msg;
-  }
-}
-
-class SubClass extends BaseClass {
-  subPublicMethod() {
-    return super.basePublicMethod();
-  }
-}
-
-const instance = new SubClass();
-console.log(instance.subPublicMethod());
-// expected output: "hello worl​d"
-
- -

Existen metodos especiales llamados "Getters" y "Setters" que se vinculan a una propiedad de una clase, y que son ejecutados o llamados cuando esa propiedad es consultada o moditficada. Puede usar las palabras reservaddas get y set para declarar una instancia pública de "getter" or "setter". [N.T. preferí decir Getter/Setter que decir Consultadores/Mofificadores]

- -
class ClassWithGetSet {
-  #msg = 'hello world';
-  get msg() {
-    return this.#msg;
-  }
-  set msg(x) {
-    this.#msg = `hello ${x}`;
-  }
-}
-
-const instance = new ClassWithGetSet();
-console.log(instance.msg);
-// expected output: "hello worl​d"
-
-instance.msg = 'cake';
-console.log(instance.msg);
-// expected output: "hello cake"
-
- -

Campos privados

- -

Campos privados estáticos

- -

Private fields are accessible on the class constructor from inside the class declaration itself.

- -

The limitation of static variables being called by only static methods still holds.

- -
class ClassWithPrivateStaticField {
-  static #PRIVATE_STATIC_FIELD;
-
-  static publicStaticMethod() {
-    ClassWithPrivateStaticField.#PRIVATE_STATIC_FIELD = 42;
-    return ClassWithPrivateStaticField.#PRIVATE_STATIC_FIELD;
-  }
-}
-
-assert(ClassWithPrivateStaticField.publicStaticMethod() === 42);
- -

Private static fields are added to the class constructor at class evaluation time.

- -

There is a provenance restriction on private static fields. Only the class which defines the private static field can access the field. This can lead to unexpected behaviour when using this

- -
class BaseClassWithPrivateStaticField {
-  static #PRIVATE_STATIC_FIELD;
-
-  static basePublicStaticMethod() {
-    this.#PRIVATE_STATIC_FIELD = 42;
-    return this.#PRIVATE_STATIC_FIELD;
-  }
-}
-
-class SubClass extends BaseClassWithPrivateStaticField { }
-
-assertThrows(() => SubClass.basePublicStaticMethod(), TypeError);
-
- -

Campos privados de instancia

- -

Private instance fields are declared with # names ( pronounced "hash names"), which are identifiers prefixed with #. The # is a part of the name itself and is used for declaration and accessing as well.

- -

The encapsulation is enforced by the language. It is a syntax error to refer to # names not in scope.

- -
class ClassWithPrivateField {
-  #privateField;
-
-  constructor() {
-    this.#privateField = 42;
-    this.#randomField = 666; # Syntax error
-  }
-}
-
-const instance = new ClassWithPrivateField();
-instance.#privateField === 42; // Syntax error
-
- -

Métodos privados

- -

Métodos privados estáticos

- -

Like their public equivalent, private static methods are called on the class, not instances of the class. Like private static fields, they are only accessible from inside the class declaration.

- -

Private static methods may be generator, async and async generator functions.

- -
class ClassWithPrivateStaticMethod {
-    static #privateStaticMethod() {
-        return 42;
-    }
-
-    static publicStaticMethod() {
-        return ClassWithPrivateStaticMethod.#privateStaticMethod();
-    }
-}
-
-assert(ClassWithPrivateStaticField.publicStaticMethod() === 42);
-
- -

Métodos privados de instancia

- -

Private instance methods are methods available on class instances whose access is restricted in the same manner as private instance fields.

- -
class ClassWithPrivateMethod {
-  #privateMethod() {
-    return 'hello world';
-  }
-
-  getPrivateMessage() {
-      return #privateMethod();
-  }
-}
-
-const instance = new ClassWithPrivateMethod();
-console.log(instance.getPrivateMessage());
-// expected output: "hello worl​d"
- -

Private instance methods may be generator, async or async generator functions. Private getters and setters are also possible:

- -
class ClassWithPrivateAccessor {
-  #message;
-
-  get #decoratedMessage() {
-    return `✨${this.#message}✨`;
-  }
-  set #decoratedMessage(msg) {
-    this.#message = msg;
-  }
-
-  constructor() {
-    this.#decoratedMessage = 'hello world';
-    console.log(this.#decoratedMessage);
-  }
-}
-
-new ClassWithPrivateAccessor();
-// expected output: "✨hello worl​d✨"
-
- -

Especificaciones

- - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
FieldDefinition productionStage 3
- -

Compatibilidad de navegadores

- -

Campos públicos de clse

- - - -

{{Compat("javascript.classes.public_class_fields")}}

- -

Campos privados de clase

- - - -

{{Compat("javascript.classes.private_class_fields")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/classes/constructor/index.html b/files/es/web/javascript/referencia/classes/constructor/index.html deleted file mode 100644 index 9ad7ec8de9..0000000000 --- a/files/es/web/javascript/referencia/classes/constructor/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: constructor -slug: Web/JavaScript/Referencia/Classes/constructor -tags: - - Clases - - ECMAScript6 - - JavaScript -translation_of: Web/JavaScript/Reference/Classes/constructor ---- -
{{jsSidebar("Classes")}}
- -

El método constructor es un metodo especial para crear e inicializar un objeto creado a partir de una clase.

- -

El código fuente para este ejemplo interactivo se encuentra almacenado en un repositorio de Github. Si quieres contribuir al proyecto de ejemplos interactivos, por favor clona https://github.com/mdn/interactive-examples y envíanos una solicitud para extraer el código (pull request).

- -

Sintaxis

- -
constructor([argumentos]) { ... }
- -

Descripción

- -

Sólo puede haber un método especial con el nombre de "constructor" en una clase. Un error de sintaxis será lanzado, si la clase contiene más de una ocurrencia de un método constructor.

- -

Un constructor puede utilizar la palabra clave super para llamar al constructor de una clase padre.

- -

Si no especifica un método constructor, se utiliza un constructor predeterminado.

- -

Ejemplos

- -

Usando el método constructor

- -

Este fragmento de código se toma de la classes sample (live demo).

- -
class Square extends Polygon {
-  constructor(length) {
-    // Aquí, llama al constructor de la clase padre con sus longitudes
-    // contemplando la anchura y la altura del Polígono
-    super(length, length);
-    // Nota: En las clases derivadas, super() se debe llamar primero
-    // Se puede utilizar "this". Dejando esto causará un error de
-    //referencia.
-    this.name = 'Square';
-  }
-
-  get area() {
-    return this.height * this.width;
-  }
-
-  set area(value) {
-    this.area = value;
-  }
-}
- -

Constructores por defecto

- -

Si no especifica un método constructor, se utiliza un constructor predeterminado. Para las clases base, el constructor por defecto es:

- -
constructor() {}
-
- -

Para las clases derivadas, el constructor por defecto es:

- -
constructor(...args) {
-  super(...args);
-}
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES6', '#sec-static-semantics-constructormethod', 'Constructor Method')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-static-semantics-constructormethod', 'Constructor Method')}}{{Spec2('ESDraft')}}
- -

Compatibilidad del navegador

- -

{{Compat("javascript.classes.constructor")}}

- -

La tabla de compatibilidad de esta pagina está generada a partir de data estructurada. Si quieres contribuir a la data, por favor dirígete a https://github.com/mdn/browser-compat-data y envíanos una solicitud de extracción

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/classes/extends/index.html b/files/es/web/javascript/referencia/classes/extends/index.html deleted file mode 100644 index 6781c3801e..0000000000 --- a/files/es/web/javascript/referencia/classes/extends/index.html +++ /dev/null @@ -1,167 +0,0 @@ ---- -title: extends -slug: Web/JavaScript/Referencia/Classes/extends -translation_of: Web/JavaScript/Reference/Classes/extends ---- -
{{jsSidebar("Classes")}}
- -

La palabra clave extends es usada en la declaración o expresión de clases, para crear una clase hija de otra.

- -

Sintaxis

- -
class ChildClass extends ParentClass { ... }
- -

Descripción

- -

La palabra clave extends se puede usar para crear una subclase a partir de clases personalizadas, así como sus objetos incorporados.

- -

La propiedad .prototype de la nueva subclase debe ser un {{jsxref("Object")}} o {{jsxref("null")}}.

- -

Ejemplos

- -

Como usar extends

- -

El primer ejemplo crea una clase con el nombre Square a partir de una clase llamada Polygon. Este ejemplo ha sido extraido del siguiente live demo (código fuente).

- -
class Square extends Polygon {
-  constructor(length) {
-    // Aquí se invoca el constructor de la clase padre con longitud
-    // proporcionada por el ancho y alto de Polygon
-    super(length, length);
-    // Nota: En las clases extendidas, se debe llamar a super()
-    // antes de poder usar 'this'. El no hacerlo provocará un reference error.
-    this.name = 'Square';
-  }
-
-  get area() {
-    return this.height * this.width;
-  }
-
-  set area(value) {
-    this.area = value;
-  }
-}
- -

Como usar extends con objetos incorporados

- -

Este ejemplo extiende el objeto incorporado {{jsxref("Date")}}. Este ejemplo ha sido extraido del siguiente live demo (código fuente).

- -
class myDate extends Date {
-  constructor() {
-    super();
-  }
-
-  getFormattedDate() {
-    var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
-    return this.getDate() + "-" + months[this.getMonth()] + "-" + this.getFullYear();
-  }
-}
- -

Extendiendo de null

- -

Extender de {{jsxref("null")}} es como hacerlo de una clase normal, excepto que el objeto prototype no hereda de {{jsxref("Object.prototype")}}.

- -
class nullExtends extends null {
-  constructor() {}
-}
-
-Object.getPrototypeOf(nullExtends); // Function.prototype
-Object.getPrototypeOf(nullExtends.prototype) // null
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
{{SpecName('ES6', '#sec-class-definitions', 'extends')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-class-definitions', 'extends')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad en navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(42.0)}}{{CompatGeckoDesktop(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Array subclassing{{CompatChrome(43.0)}}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}{{CompatGeckoMobile(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(42.0)}}
Array subclassing{{CompatNo}}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(43.0)}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/classes/index.html b/files/es/web/javascript/referencia/classes/index.html deleted file mode 100644 index 0f108dda68..0000000000 --- a/files/es/web/javascript/referencia/classes/index.html +++ /dev/null @@ -1,372 +0,0 @@ ---- -title: Clases -slug: Web/JavaScript/Referencia/Classes -tags: - - Classes - - ECMAScript 2015 - - Herencia - - Intermedio - - JavaScript - - NeedsContent - - NeedsTranslation - - Reference - - TopicStub -translation_of: Web/JavaScript/Reference/Classes ---- -
{{JsSidebar("Classes")}}
- -

Las clases de javascript, introducidas en ECMAScript 2015, son una mejora sintáctica sobre la herencia basada en prototipos de JavaScript. La sintaxis de las clases no introduce un nuevo modelo de herencia orientada a objetos en JavaScript. Las clases de JavaScript proveen una sintaxis mucho más clara y simple para crear objetos y lidiar con la herencia.

- -

Definiendo clases

- -

Las clases son "funciones especiales", como las expresiones de funciones y declaraciones de funciones, la sintaxis de una clase tiene dos componentes: expresiones de clases y declaraciones de clases.

- -

Declaración de clases

- -

Una manera de definir una clase es mediante una declaración de clase. Para declarar una clase, se utiliza la palabra reservada class y un nombre para la clase "Rectangulo".

- -
class Rectangulo {
-  constructor(alto, ancho) {
-    this.alto = alto;
-    this.ancho = ancho;
-  }
-}
- -

Alojamiento

- -

Una importante diferencia entre las declaraciones de funciones y las declaraciones de clases es que las declaraciones de funciones son alojadas y las declaraciones de clases no lo son. En primer lugar necesitas declarar tu clase y luego acceder a ella, de otro modo el ejemplo de código siguiente arrojará un {{jsxref("ReferenceError")}}:

- -
const p = new Rectangle(); // ReferenceError
-
-class Rectangle {}
-
- -

Expresiones de clases

- -

Una expresión de clase es otra manera de definir una clase. Las expresiones de clase pueden ser nombradas o anónimas. El nombre dado a la expresión de clase nombrada es local dentro del cuerpo de la misma.

- -
// Anonima
-let Rectangulo = class {
-  constructor(alto, ancho) {
-    this.alto = alto;
-    this.ancho = ancho;
-  }
-};
-
-console.log(Rectangulo.name);
-// output: "Rectangulo"
-
-// Nombrada
-let Rectangulo = class Rectangulo2 {
-  constructor(alto, ancho) {
-    this.alto = alto;
-    this.ancho = ancho;
-  }
-};
-console.log(Rectangulo.name);
-// output: "Rectangulo2"
-
- -
-

Nota: Las expresiones de clase están sujetas a las mismas restricciones de elevación que se describen en la sección {{anch("Class declarations")}}.

-
- -

Cuerpo de la clase y definición de métodos

- -

El contenido de una clase es la parte que se encuentra entre las llaves {}. Este es el lugar se definen los miembros de clase, como los métodos o constructores.

- -

Modo estricto

- -

El cuerpo de las declaraciones de clase y las expresiones de clase son ejecutadas en modo estricto. En otras palabras, el código escrito aquí está sujeto a una sintaxis más estricta para aumentar el rendimiento, se arrojarán algunos errores silenciosos y algunas palabras clave están reservadas para versiones futuras de ECMAScript.

- -

Constructor

- -

El método constructor es un método especial para crear e inicializar un objeto creado con una clase. Solo puede haber un método especial con el nombre "constructor" en una clase. Si esta contiene mas de una ocurrencia del método constructor, se arrojará un Error {{jsxref("SyntaxError")}}

- -

Un constructor puede usar la palabra reservada super para llamar al constructor de una superclase

- -

Métodos prototipo

- -

Vea también métodos definidos.

- -
class Rectangulo {
-  constructor (alto, ancho) {
-    this.alto = alto;
-    this.ancho = ancho;
-  }
-  // Getter
-  get area() {
-     return this.calcArea();
-   }
-  // Método
-  calcArea () {
-    return this.alto * this.ancho;
-  }
-}
-
-const cuadrado = new Rectangulo(10, 10);
-
-console.log(cuadrado.area); // 100
- -
- -

Métodos estáticos

- -

La palabra clave static define un método estático para una clase. Los métodos estáticos son llamados sin instanciar su clase y no pueden ser llamados mediante una instancia de clase. Los métodos estáticos son a menudo usados para crear funciones de utilidad para una aplicación.

- -
class Punto {
-  constructor ( x , y ){
-    this.x = x;
-    this.y = y;
-  }
-
-  static distancia ( a , b) {
-    const dx = a.x - b.x;
-    const dy = a.y - b.y;
-
-    return Math.sqrt ( dx * dx + dy * dy );
-  }
-}
-
-const p1 = new Punto(5, 5);
-const p2 = new Punto(10, 10);
-
-console.log (Punto.distancia(p1, p2)); // 7.0710678118654755
- -

"Boxing" con prototipos y métodos estáticos

- -

Cuando un método estático o método del prototipo es llamado sin un valor para "this" (o con "this" como booleano, cadena, número, undefined o null), entonces el valor de "this" será undefined dentro de la funciona llamada. Autoboxing no ocurrirá. El comportamiento será igual inclusive si se escribe el código en modo no estricto.

- -
class Animal {
-  hablar() {
-    return this;
-  }
-  static comer() {
-    return this;
-  }
-}
-
-let obj = new Animal();
-obj.hablar(); // Animal {}
-let hablar = obj.hablar;
-hablar(); // undefined
-
-Animal.comer() // class Animal
-let comer = Animal.comer;
-comer(); // undefined
- -

Si se escribe el código del cuadro superior usando clases función tradicionales, entonces autoboxing ocurrirara porque tomará valor de "this" sobre la función que es llamada.

- -
function Animal() { }
-
-Animal.prototype.hablar = function(){
-  return this;
-}
-
-Animal.comer = function() {
-  return this;
-}
-
-let obj = new Animal();
-let hablar = obj.hablar;
-hablar(); // global object
-
-let hablar = Animal.hablar;
-hablar(); // global object
- -

Subclases con extends

- -

La palabra clave extends es usada en declaraciones de clase o expresiones de clase para crear una clase hija.

- -
class Animal {
-  constructor(nombre) {
-    this.nombre = nombre;
-  }
-
-  hablar() {
-    console.log(this.nombre + ' hace un ruido.');
-  }
-}
-
-class Perro extends Animal {
-  hablar() {
-    console.log(this.nombre + ' ladra.');
-  }
-}
- -

También se pueden extender las clases tradicionales basadas en funciones:

- -
function Animal (nombre) {
-  this.nombre = nombre;
-}
-Animal.prototype.hablar = function () {
-  console.log(this.nombre + 'hace un ruido.');
-}
-
-class Perro extends Animal {
-  hablar() {
-    super.hablar();
-    console.log(this.nombre + ' ladra.');
-  }
-}
-
-var p = new Perro('Mitzie');
-p.hablar();
- -

Fijarse que las clases no pueden extender objectos regulares (literales). Si se quiere heredar de un objecto regular, se debe user {{jsxref("Object.setPrototypeOf()")}}::

- -
var Animal = {
-  hablar() {
-    console.log(this.nombre + 'hace ruido.');
-  }
-};
-
-class Perro {
-  constructor(nombre) {
-    this.nombre = nombre;
-  }
-  hablar() {
-    console.log(this.nombre + ' ladra.');
-  }
-}
-
-Object.setPrototypeOf(Perro.prototype, Animal);
-
-var d = new Perro('Mitzie');
-d.hablar();
- -

Especies

- -

Quizás se quiera devolver objetos {{jsxref("Array")}} derivados de la clase array MyArray. El patron species permite sobreescribir constructores por defecto.

- -

Por ejemplo, cuando se usan metodos del tipo {{jsxref("Array.map", "map()")}} que devuelven el constructor por defecto, se quiere que esos métodos devuelvan un objeto padre Array, en vez de MyArray. El símbolo {{jsxref("Symbol.species")}} permite hacer:

- -
class MyArray extends Array {
-  // Sobre escribe species sobre el constructor padre Array
-  static get [Symbol.species]() { return Array; }
-}
-
-var a = new MyArray(1,2,3);
-var mapped = a.map(x => x * x);
-
-console.log(mapped instanceof MyArray); // false
-console.log(mapped instanceof Array);   // true
-
- -

Llamadas a súperclases con super

- -

La palabra clave super es usada para llamar funciones del objeto padre.

- -
class Gato {
-  constructor(nombre) {
-    this.nombre = nombre;
-  }
-
-  hablar() {
-    console.log(this.nombre + ' hace ruido.');
-  }
-}
-
-class Leon extends Gato {
-  hablar() {
-    super.hablar();
-    console.log(this.nombre + ' maulla.');
-  }
-}
- -

Mix-ins

- -

Subclases abstractas or mix-ins son plantillas de clases. Una clase ECMAScript solo puede tener una clase padre, con lo cual la herencia multiple no es posible. La funcionalidad debe ser proporcionada por la clase padre.

- -

Una función con una clase padre como entrada y una subclase extendiendo la clase padre como salida puede ser usado para implementar mix-ins en EMCAScript:

- -
var calculatorMixin = Base => class extends Base {
-  calc() { }
-};
-
-var randomizerMixin = Base => class extends Base {
-  randomize() { }
-};
- -

Una clase que use este método puede ser escrita tal que así:

- -
class Foo { }
-class Bar extends calculatorMixin(randomizerMixin(Foo)) { }
- -

Especificaciones

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES2015', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES2015')}}Initial definition.
- -

Compatibilidad entre navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(42.0)}}Available in the Nightly channel only (since February 2015){{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}Available in the Nightly channel only (since February 2015){{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(42.0)}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/classes/private_class_fields/index.html b/files/es/web/javascript/referencia/classes/private_class_fields/index.html deleted file mode 100644 index 5826cc125b..0000000000 --- a/files/es/web/javascript/referencia/classes/private_class_fields/index.html +++ /dev/null @@ -1,201 +0,0 @@ ---- -title: Private class fields -slug: Web/JavaScript/Referencia/Classes/Private_class_fields -translation_of: Web/JavaScript/Reference/Classes/Private_class_fields ---- -
-

Las propiedades de la clase son públicas de forma predeterminada y se pueden examinar o modificar fuera de la clase. Sin embargo, existe una propuesta experimental  para permitir la definición de campos de clase privados utilizando un #prefijo hash .

-
- -

Syntax

- -
class ClassWithPrivateField {
-  #privateField
-}
-
-class ClassWithPrivateMethod {
-  #privateMethod() {
-    return 'hello world'
- }
-}
-
-class ClassWithPrivateStaticField {
-  static #PRIVATE_STATIC_FIELD
-}
-
- -

Campos estáticos privados 

- -

Los campos privados son accesibles en el constructor de clases desde dentro de la propia declaración de clases.

- -

La limitación de las variables estáticas que se llaman solo por métodos estáticos aún se mantiene

- -
class ClassWithPrivateStaticField {
-  static #PRIVATE_STATIC_FIELD
-
-  static publicStaticMethod() {
-    ClassWithPrivateStaticField.#PRIVATE_STATIC_FIELD = 42
-    return ClassWithPrivateStaticField.#PRIVATE_STATIC_FIELD
-  }
-}
-
-console.assert(ClassWithPrivateStaticField.publicStaticMethod() === 42)
- -

Los campos estáticos privados se agregan al constructor de la clase en el momento de la evaluación de la clase.

- -

Existe una restricción de procedencia en los campos estáticos privados. Solo la clase que define el campo estático privado puede acceder al campo.

- -

Esto puede conducir a un comportamiento inesperado al usar this.

- -
class BaseClassWithPrivateStaticField {
-  static #PRIVATE_STATIC_FIELD
-
-  static basePublicStaticMethod() {
-    this.#PRIVATE_STATIC_FIELD = 42
-    return this.#PRIVATE_STATIC_FIELD
-  }
-}
-
-class SubClass extends BaseClassWithPrivateStaticField { }
-
-let error = null
-
-try {
-  SubClass.basePublicStaticMethod()
-} catch(e) { error = e}
-
-console.assert(error instanceof TypeError)
-
- -

Campos de instancia privados

- -

Los campos de instancia privados se declaran con # nombres  (pronunciados " nombres hash "), que son identificadores con el prefijo #. El #es una parte del nombre propio. También se utiliza para la declaración y el acceso.

- -

La encapsulación es impuesta por el lenguaje. Es un error de sintaxis referirse a #nombres que están fuera del alcance.

- -
class ClassWithPrivateField {
-  #privateField
-
-  constructor() {
-    this.#privateField = 42
-    this.#randomField = 666 // Syntax error
-  }
-}
-
-const instance = new ClassWithPrivateField()
-instance.#privateField === 42 // Syntax error
-
- -

Métodos privados

- -

Métodos estáticos privados

- -

Al igual que su equivalente público, los métodos estáticos privados se invocan en la propia clase, no en instancias de la clase. Al igual que los campos estáticos privados, solo se puede acceder a ellos desde dentro de la declaración de clase.

- -

Los métodos estáticos privados pueden ser funciones generadoras, asíncronas y asíncronas.

- -
class ClassWithPrivateStaticMethod {
-    static #privateStaticMethod() {
-        return 42
-    }
-
-    static publicStaticMethod1() {
-        return ClassWithPrivateStaticMethod.#privateStaticMethod();
-    }
-
-    static publicStaticMethod2() {
-        return this.#privateStaticMethod();
-    }
-}
-
-console.assert(ClassWithPrivateStaticMethod.publicStaticMethod1() === 42);
-console.assert(ClassWithPrivateStaticMethod.publicStaticMethod2() === 42);
-
- -

Esto puede conducir a un comportamiento inesperado al usar this. En el siguiente ejemplo se thishace referencia a la Derivedclase (no a la Baseclase) cuando intentamos llamar Derived.publicStaticMethod2(), y por lo tanto exhibe la misma "restricción de procedencia" que se mencionó anteriormente:

- -
class Base {
-    static #privateStaticMethod() {
-        return 42;
-    }
-    static publicStaticMethod1() {
-        return Base.#privateStaticMethod();
-    }
-    static publicStaticMethod2() {
-        return this.#privateStaticMethod();
-    }
-}
-
-class Derived extends Base {}
-
-console.log(Derived.publicStaticMethod1()); // 42
-console.log(Derived.publicStaticMethod2()); // TypeError
-
- -

Métodos de instancia privada

- -

Los métodos de instancia privada son métodos disponibles en instancias de clase cuyo acceso está restringido de la misma manera que los campos de instancia privada.

- -
class ClassWithPrivateMethod {
-  #privateMethod() {
-    return 'hello world'
-  }
-
-  getPrivateMessage() {
-      return this.#privateMethod()
-  }
-}
-
-const instance = new ClassWithPrivateMethod()
-console.log(instance.getPrivateMessage())
-// expected output: "hello worl​d"
- -

Los métodos de instancia privada pueden ser funciones generadoras, asíncronas o asíncronas. Los getters y setters privados también son posibles:

- -
class ClassWithPrivateAccessor {
-  #message
-
-  get #decoratedMessage() {
-    return `✨${this.#message}✨`
-  }
-  set #decoratedMessage(msg) {
-    this.#message = msg
-  }
-
-  constructor() {
-    this.#decoratedMessage = 'hello world'
-    console.log(this.#decoratedMessage)
-  }
-}
-
-new ClassWithPrivateAccessor();
-// expected output: "✨hello worl​d✨"
-
- -

Specifications

- - - - - - - - - - - - -
Specification
{{SpecName('Public and private instance fields', '#prod-FieldDefinition', 'FieldDefinition')}}
- -

Browser compatibility

- - - -

{{Compat("javascript.classes.private_class_fields")}}

- -

See also

- - diff --git a/files/es/web/javascript/referencia/classes/static/index.html b/files/es/web/javascript/referencia/classes/static/index.html deleted file mode 100644 index 92f972f171..0000000000 --- a/files/es/web/javascript/referencia/classes/static/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: static -slug: Web/JavaScript/Referencia/Classes/static -translation_of: Web/JavaScript/Reference/Classes/static ---- -
{{jsSidebar("Classes")}}
- -

La palabra clave static define un método estático para una clase.

- -

Sintaxis

- -
static methodName() { ... }
- -

Descripción

- -

Los métodos estáticos son llamados sin instanciar su clase. Son habitualmente utilizados para crear funciones para una aplicación.

- -

Ejemplos

- -

El siguiente ejemplo demuestra varias cosas. Una de ellas es cómo un método estático es implementado en una clase, otra es que una clase con un miembro estático puede ser sub-claseada. Finalmente demuestra cómo un método estático puede (y cómo no) ser llamado.

- -
class Tripple {
-  static tripple(n) {
-    n = n || 1;
-    return n * 3;
-  }
-}
-
-class BiggerTripple extends Tripple {
-  static tripple(n) {
-    return super.tripple(n) * super.tripple(n);
-  }
-}
-
-console.log(Tripple.tripple());
-console.log(Tripple.tripple(6));
-console.log(BiggerTripple.tripple(3));
-var tp = new Tripple();
-console.log(tp.tripple()); //Logs 'tp.tripple is not a function'.
- -

Especificaciones

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES6', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES6')}}Initial definition.
- -

Compatibilidad de navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(42.0)}}Available in the Nightly channel only (since February 2015){{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatChrome(42.0)}}Available in the Nightly channel only (since February 2015){{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

 

- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/funciones/arguments/callee/index.html b/files/es/web/javascript/referencia/funciones/arguments/callee/index.html deleted file mode 100644 index 1902131055..0000000000 --- a/files/es/web/javascript/referencia/funciones/arguments/callee/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: callee -slug: Web/JavaScript/Referencia/Funciones/arguments/callee -tags: - - JavaScript - - JavaScript Reference - - Referencia -translation_of: Web/JavaScript/Reference/Functions/arguments/callee ---- -
-
{{jsSidebar("Functions")}}
-
- -

Resumen

- -

Especifica la función que se está ejecutando actualmente.

- -

Descripción

- -

callee es una propiedad de la variable local arguments disponible dentro de todos los objetos function; callee como una propiedad de {{jsxref("Funciones/arguments", "Function.arguments")}} ya no se utiliza. (Function.arguments en sí mismo está también desaconsejado.)

- -

arguments.callee permite a funciones anónimas referirse a ellas mismas, lo cual es necesario en funciones anónimas recursivas.

- -

La palabra clave this no se refiere a la función que se ejecuta actualmente. Use la propiedad callee para referirse a la función dentro del cuerpo de la función.

- -

Ejemplos

- -

Ejemplo: Usando arguments.callee en funciones anónimas recursivas

- -

Una función recursiva debe ser capaz de referirse a sí misma. Típicamente, una función se refiere a sí misma por su nombre. Sin embargo, una función anónima no tiene nombre y por tanto es una variable de referencia para ella, es decir, si la función no está asignada a ninguna variable, la función no puede referirse a sí misma. (Se pueden crear funciones anónimas mediante una expresión {{jsxref("Operadores/function", "function")}} o el constructor {{jsxref("Function")}}.) Aquí es donde entra arguments.callee.

- -

El siguiente ejemplo define una función, la cuál, en cada turno, define y devuelve una función factorial.

- -
function makeFactorialFunc() {
-   alert('making a factorial function!');
-   return function(x) {
-      if (x <= 1)
-         return 1;
-      return x * arguments.callee(x - 1);
-   };
-}
-
-var result = makeFactorialFunc()(5); // returns 120 (5 * 4 * 3 * 2 * 1)
-
- -

this example isn't very practical, but then again, there are few practical cases where arguments.callee is necessary, and most of the those cases involve closures

- -

 

diff --git a/files/es/web/javascript/referencia/funciones/arguments/index.html b/files/es/web/javascript/referencia/funciones/arguments/index.html deleted file mode 100644 index ab768cff21..0000000000 --- a/files/es/web/javascript/referencia/funciones/arguments/index.html +++ /dev/null @@ -1,229 +0,0 @@ ---- -title: El objeto arguments -slug: Web/JavaScript/Referencia/Funciones/arguments -tags: - - Funciones - - JavaScript - - Namespace - - argumentos - - arguments - - espacio de nombres - - multiples -translation_of: Web/JavaScript/Reference/Functions/arguments ---- -
{{jsSidebar("Functions", "Funciones")}}
- -

arguments es un objeto similar a Array accesible dentro de funciones que contiene los valores de los argumentos pasados a esa función.

- -
{{EmbedInteractiveExample("pages/js/functions-arguments.html")}}
- - - -

Descripción

- -
-

Nota: Si estás escribiendo código compatible con ES6, entonces se deben preferir los {{jsxref("Functions/rest_parameters", "parámetros resto")}}.

-
- -
-

Nota: "similar a Array" significa que arguments tiene una propiedad {{jsxref("Functions/arguments/length", "lenght")}} y propiedades indexadas desde cero, pero no tiene métodos integrados de {{jsxref("Array")}} como {{jsxref("Array.forEach", "forEach()")}} o {{jsxref("Array.map", "map()")}}. Ve la §Descripción para obtener más detalles.

-
- -

El objeto arguments es una variable local disponible en todas las funciones que no son {{jsxref("Functions/Arrow_functions", "funciones flecha")}}. Puedes hacer referencia a los argumentos de una función dentro de esa función utilizando su objeto arguments. Tiene entradas para cada argumento con el que se llamó a la función, con el índice de la primera entrada en 0.

- -

Por ejemplo, si a una función se le pasan 3 argumentos, puedes acceder a ellos de la siguiente manera:

- -
arguments[0] // primer argumento
-arguments[1] // segundo argumento
-arguments[2] // tercer argumento
-
- -

También puedes establecer o reasignar cada argumento:

- -
arguments[1] = 'new value';
-
- -

El objeto arguments no es un {{jsxref("Array")}}. Es similar, pero carece de todas las propiedades de Array excepto de {{jsxref("Array.length", "length")}}. Por ejemplo, no tiene el método {{jsxref("Array.pop", "pop()")}}.

- -

Sin embargo, se puede convertir en un Array real:

- -
var args = Array.prototype.slice.call(arguments);
-// El uso de un arreglo literal es más corto que el anterior pero asigna un arreglo vacío
-var args = [].slice.call(arguments);
-
- -

Así como puedes hacer con cualquier objeto tipo Array, puedes usar el método {{jsxref("Array.from()")}} de ES2015 o la {{jsxref("Operators/Spread_syntax", "propagación de sintaxis")}} para convertir arguments en un arreglo real:

- -
let args = Array.from(arguments);
-// o
-let args = [...arguments];
-
- -

El objeto arguments es útil para funciones llamadas con más argumentos de los que declara aceptar formalmente. Esta técnica es útil para funciones a las que se les puede pasar un número variable de argumentos, como {{jsxref("Math.min()")}}. Esta función de ejemplo acepta cualquier número de argumentos de cadena y devuelve la más larga:

- -
function longestString() {
-  var longest = '';
-  for (var i=0; i < arguments.length; i++) {
-    if (arguments[i].length > longest.length) {
-      longest = arguments[i];
-    }
-  }
-  return longest;
-}
-
- -

Puedes usar {{jsxref("Functions/arguments/lenght", "arguments.length")}} para contar con cuántos argumentos se llamó a la función. Si, en cambio, deseas contar cuántos parámetros se declara que acepta una función, inspecciona la propiedad {{jsxref("Function.length", "length")}} de esa función.

- -

Usar typeof con arguments

- -

El operador {{jsxref("Operators/typeof", "typeof")}} devuelve 'object' cuando se usa con arguments

- -
console.log(typeof arguments); // 'object' 
- -

El tipo de argumentos individuales se puede determinar indexando arguments:

- -
console.log(typeof arguments[0]); // devuelve el tipo del primer argumento
- -

Propiedades

- -
-
{{jsxref("Functions/arguments/callee", "arguments.callee")}}
-
Referencia a la función en ejecución a la que pertenecen los argumentos. Prohibida en modo estricto.
-
{{jsxref("Functions/arguments/length", "arguments.length")}}
-
El número de argumentos que se pasaron a la función.
-
{{jsxref("Functions/arguments/@@iterator", "arguments[@@iterator]")}}
-
Devuelve un nuevo objeto {{jsxref("Array/@@iterator", "Array iterator", "", 0)}} que contiene los valores de cada índice en arguments.
-
- -

Ejemplos

- -

Definición de una función que concatena varias cadenas

- -

Este ejemplo define una función que concatena varias cadenas. El único argumento formal de la función es una cadena que contiene los caracteres que separan los elementos a concatenar.

- -
function myConcat(separator) {
-  let args = Array.prototype.slice.call(arguments, 1);
-  return args.join(separator);
-}
- -

Puedes pasar tantos argumentos como desees a esta función. Devuelve una lista de cadenas usando cada argumento en la lista:

- -
// returns "red, orange, blue"
-myConcat(', ', 'red', 'orange', 'blue');
-
-// devuelve "elephant; giraffe; lion; cheetah"
-myConcat('; ', 'elephant', 'giraffe', 'lion', 'cheetah');
-
-// devuelve "sage. basil. oregano. pepper. parsley"
-myConcat('. ', 'sage', 'basil', 'oregano', 'pepper', 'parsley');
- -

Definición de una función que crea listas HTML

- -

Este ejemplo define una función que crea una cadena que contiene HTML para una lista. El único argumento formal para la función es una cadena que es "u" si la lista debe estar {{htmlelement("ul", "desordenada (con viñetas)")}}, u "o" si la lista es {{htmlelement("ol", "ordenada (numerada)")}}. La función se define de la siguiente manera:

- -
function list(type) {
-  var html = '<' + type + 'l><li>';
-  var args = Array.prototype.slice.call(arguments, 1);
-  html += args.join('</li><li>');
-  html += '</li></' + type + 'l>'; // fin de la lista
-  return html;
-}
- -

Puedes pasar cualquier número de argumentos a esta función y agregar cada argumento como un elemento de lista a una lista del tipo indicado. Por ejemplo:

- -
let listHTML = list('u', 'One', 'Two', 'Three');
-
-/* la listHTML es:
-"<ul><li>One</li><li>Two</li><li>Three</li></ul>"
-*/
- -

Parámetros rest, predeterminados y desestructurados

- -
-

El objeto arguments se puede utilizar junto con parámetros {{jsxref("Functions/rest_parameters", "rest")}}, {{jsxref("Functions/Default_parameters", "predeterminados")}} y {{jsxref("Operators/Destructuring_assignment", "desestructurados")}}.

-
- -
function foo(...args) {
-  return args;
-}
-foo(1, 2, 3); // [1, 2, 3]
-
- -

Si bien la presencia de parámetros rest, predeterminados o desestructurados no altera el comportamiento del objeto arguments en el código de modo estricto, existen sutiles diferencias para el código no estricto.

- -

En el código de modo estricto, el objeto arguments se comporta de la misma manera independientemente de que se pasen parámetros rest, predeterminados o desestructurados a una función. Es decir, asignar nuevos valores a las variables en el cuerpo de la función no afectará al objeto arguments. La asignación de nuevas variables al objeto arguments tampoco afectará el valor de las variables.

- -
-

Nota: No puedes escribir una directiva "use strict"; en el cuerpo de una definición de función que acepte parámetros rest, predeterminados o desestructurados. Si lo haces, generará un {{jsxref("Errors/Strict_Non_Simple_Params", "error de sintaxis")}}.

-
- -

Las funciones no estrictas a las que se les pasan solo parámetros simples (es decir, no parámetros rest, predeterminados o desestructurados) sincronizarán el valor de los nuevos valores de las variables en el cuerpo de la función con el objeto arguments, y viceversa:

- -
function func(a) {
-  arguments[0] = 99; // actualiza arguments[0] además actualiza a
-  console.log(a);
-}
-func(10); // 99
-
- -

Y también:

- -
function func(a) {
-  a = 99; // la actualización también actualiza arguments[0]
-  console.log(arguments[0]);
-}
-func(10); // 99
-
- -

Por el contrario, las funciones no estrictas a las que se les pasan parámetros rest, predeterminados o desestructurados no sincronizarán los nuevos valores asignados a las variables de los argumentos en el cuerpo de la función con el objeto arguments. En cambio, el objeto arguments en funciones no estrictas con parámetros complejos siempre reflejarán los valores pasados a la función cuando se invocó (este es el mismo comportamiento exhibido por todas las funciones en modo estricto, independientemente del tipo de variables que se le pasen):

- -
function func(a = 55) {
-  arguments[0] = 99; // actualizar arguments[0] tampoco actualiza a
-  console.log(a);
-}
-func(10); // 10
- -

Y también:

- -
function func(a = 55) {
-  a = 99; // actualizar a tampoco actualiza arguments[0]
-  console.log(arguments[0]);
-}
-func(10); // 10
-
- -

Y también:

- -
// Un parámetro predeterminado sin seguimiento
-function func(a = 55) {
-  console.log(arguments[0]);
-}
-func(); // undefined
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-arguments-exotic-objects', 'Objectos arguments exóticos')}}
- -

Compatibilidad del navegador

- - - -

{{Compat("javascript.functions.arguments")}}

- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/funciones/arguments/length/index.html b/files/es/web/javascript/referencia/funciones/arguments/length/index.html deleted file mode 100644 index b1d7698194..0000000000 --- a/files/es/web/javascript/referencia/funciones/arguments/length/index.html +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: arguments.length -slug: Web/JavaScript/Referencia/Funciones/arguments/length -tags: - - Funciones - - JavaScript - - Propiedades - - argumentos -translation_of: Web/JavaScript/Reference/Functions/arguments/length ---- -
{{jsSidebar("Functions")}}
- -

La propiedad arguments.length contiene el número de argumentos pasados a una función.

- -

Sintaxis

- -
arguments.length
- -

Descripción

- -

La propiedad arguments.length devuelve el número total de argumentos pasados a una función. Esto puede ser más o menos que el número de parametros definidos. (Véase {{jsxref("Function.length")}}).

- -

Ejemplos

- -

Usando arguments.length

- -

En este ejemplo definimos una función que puede sumar dos o más números.

- -
function adder(base /*, n2, ... */) {
-  base = Number(base);
-  for (var i = 1; i < arguments.length; i++) {
-    base += Number(arguments[i]);
-  }
-  return base;
-}
-
- -
-

Tenga en cuenta la diferencia entre {{jsxref("Function.length")}} y arguments.length

-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en JavaScript 1.1
{{SpecName('ES5.1', '#sec-10.6', 'Arguments Object')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con los 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}}
-
- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/funciones/arrow_functions/index.html b/files/es/web/javascript/referencia/funciones/arrow_functions/index.html deleted file mode 100644 index 6ea9a35595..0000000000 --- a/files/es/web/javascript/referencia/funciones/arrow_functions/index.html +++ /dev/null @@ -1,530 +0,0 @@ ---- -title: Funciones Flecha -slug: Web/JavaScript/Referencia/Funciones/Arrow_functions -tags: - - ECMAScript6 - - Intermedio - - JavaScript - - Referencia - - función -translation_of: Web/JavaScript/Reference/Functions/Arrow_functions ---- -
{{jsSidebar("Functions", "Funciones")}}
- -

Una expresión de función flecha es una alternativa compacta a una {{JSxRef("Operadores/function", "expresión de función")}} tradicional, pero es limitada y no se puede utilizar en todas las situaciones.

- -

Diferencias y limitaciones:

- - - -

{{EmbedInteractiveExample("pages/js/functions-arrow.html")}}

- -

Comparación de funciones tradicionales con funciones flecha

- -

Observa, paso a paso, la descomposición de una "función tradicional" hasta la "función flecha" más simple:
- Nota: Cada paso a lo largo del camino es una "función flecha" válida

- -
// Función tradicional
-function (a){
-  return a + 100;
-}
-
-// Desglose de la función flecha
-
-// 1. Elimina la palabra "function" y coloca la flecha entre el argumento y el corchete de apertura.
-(a) => {
-  return a + 100;
-}
-
-// 2. Quita los corchetes del cuerpo y la palabra "return" — el return está implícito.
-(a) => a + 100;
-
-// 3. Suprime los paréntesis de los argumentos
-a => a + 100;
- -
-

Como se muestra arriba, los { corchetes }, ( paréntesis ) y "return" son opcionales, pero pueden ser obligatorios.

-
- -

Por ejemplo, si tienes varios argumentos o ningún argumento, deberás volver a introducir paréntesis alrededor de los argumentos:

- -
// Función tradicional
-function (a, b){
-  return a + b + 100;
-}
-
-// Función flecha
-(a, b) => a + b + 100;
-
-// Función tradicional (sin argumentos)
-let a = 4;
-let b = 2;
-function (){
-  return a + b + 100;
-}
-
-// Función flecha (sin argumentos)
-let a = 4;
-let b = 2;
-() => a + b + 100;
- -

Del mismo modo, si el cuerpo requiere líneas de procesamiento adicionales, deberás volver a introducir los corchetes Más el "return" (las funciones flecha no adivinan mágicamente qué o cuándo quieres "volver"):

- -
// Función tradicional
-function (a, b){
-  let chuck = 42;
-  return a + b + chuck;
-}
-
-// Función flecha
-(a, b) => {
-  let chuck = 42;
-  return a + b + chuck;
-}
- -
Y finalmente, en las funciones con nombre tratamos las expresiones de flecha como variables
- -
-
// Función tradicional
-function bob (a){
-  return a + 100;
-}
-
-// Función flecha
-let bob = a => a + 100;
-
- -
- -
- -

Sintaxis

- -

Sintaxis básica

- -

Un parámetro. Con una expresión simple no se necesita return:

- -
param => expression
- -

Varios parámetros requieren paréntesis. Con una expresión simple no se necesita return:

- -
(param1, paramN) => expression
- -

Las declaraciones de varias líneas requieren corchetes y return:

- -
param => {
-  let a = 1;
-  return a + b;
-}
- -

Varios parámetros requieren paréntesis. Las declaraciones de varias líneas requieren corchetes y return:

- -
(param1, paramN) => {
-   let a = 1;
-   return a + b;
-}
- -

Sintaxis avanzada

- -

Para devolver una expresión de objeto literal, se requieren paréntesis alrededor de la expresión:

- -
params => ({foo: "a"}) // devuelve el objeto {foo: "a"}
- -

Los {{JSxRef("Funciones/parametros_rest", "parámetros rest")}} son compatibles:

- -
(a, b, ...r) => expression
- -

Se admiten los {{JSxRef("Funciones/Parametros_por_defecto", "parámetros predeterminados")}}:

- -
(a=400, b=20, c) => expression
- -

{{JSxRef("Operadores/Destructuring_assignment", "Desestructuración")}} dentro de los parámetros admitidos:

- -
([a, b] = [10, 20]) => a + b;  // el resultado es 30
-({ a, b } = { a: 10, b: 20 }) => a + b; // resultado es 30
-
- -

Descripción

- -

Consulta también "ES6 en profundidad: funciones flecha" en hacks.mozilla.org.

- -

"this" y funciones flecha

- -

Una de las razones por las que se introdujeron las funciones flecha fue para eliminar complejidades del ámbito ({{JSxRef("Operadores/this", "this")}}) y hacer que la ejecución de funciones sea mucho más intuitiva.

- -
-

Si this es un misterio para ti, consulta {{JSxRef("Operadores/this", "este documento")}} para obtener más información sobre cómo funciona this. Para resumir, this se refiere a la instancia. Las instancias se crean cuando se invoca la palabra clave new. De lo contrario, this se establecerá —de forma predeterminada— en el {{Glossary("Scope", "ámbito o alcance")}} de window.

-
- -

En las funciones tradicionales de manera predeterminada this está en el ámbito de window:

- - - -
window.age = 10; // <-- ¿me notas?
-function Person() {
-  this.age = 42; // <-- ¿me notas?
-  setTimeout(function () {// <-- La función tradicional se está ejecutando en el ámbito de window
-    console.log("this.age", this.age); // genera "10" porque la función se ejecuta en el ámbito de window
-  }, 100);
-}
-
-var p = new Person();
-
-
- -

Las funciones flecha no predeterminan this al {{Glossary("Scope", "ámbito o alcance")}} de window, más bien se ejecutan en el {{Glossary("Scope", "ámbito o alcance")}} en que se crean:

- -
window.age = 10; // <-- ¿me notas?
-function Person() {
-  this.age = 42; // <-- ¿me notas?
-  setTimeout(() => {// <-- Función flecha ejecutándose en el ámbito de "p" (una instancia de Person)
-    console.log("this.age", this.age); // genera "42" porque la función se ejecuta en el ámbito de Person
-  }, 100);
-}
-
-var p = new Person();
-
-
- -

En el ejemplo anterior, la función flecha no tiene su propio this. Se utiliza el valor this del {{Glossary("Scope", "ámbito")}} léxico adjunto; las funciones flecha siguen las reglas normales de búsqueda de variables. Entonces, mientras busca this que no está presente en el {{Glossary("Scope", "ámbito")}} actual, una función flecha termina encontrando el this de su {{Glossary("Scope", "ámbito")}} adjunto.

- -

Relación con el modo estricto

- -

Dado que this proviene del contexto léxico circundante, en el {{JSxRef("Modo_estricto", "modo estricto")}} se ignoran las reglas con respecto a this.

- -
var f = () => {
-    'use strict';
-    return this;
-};
-
-f() === window; // o el objeto global
- -

Todas las demás reglas del {{JSxRef("Modo_estricto", "modo estricto")}} se aplican normalmente.

- -
-

Nota: Comprueba las notas sobre el {{JSxRef("Modo_estricto", "modo estricto")}}.

-
- -

Funciones flecha utilizadas como métodos

- -

Como se indicó anteriormente, las expresiones de función flecha son más adecuadas para funciones que no son métodos. Observa qué sucede cuando intentas usarlas como métodos:

- -
'use strict';
-
-var obj = { // no crea un nuevo ámbito
-  i: 10,
-  b: () => console.log(this.i, this),
-  c: function() {
-    console.log(this.i, this);
-  }
-}
-
-obj.b(); // imprime indefinido, Window {...} (o el objeto global)
-obj.c(); // imprime 10, Object {...}
- -

Las funciones flecha no tienen su propio this. Otro ejemplo que involucra {{JSxRef("Object.defineProperty()")}}:

- -
'use strict';
-
-var obj = {
-  a: 10
-};
-
-Object.defineProperty(obj, 'b', {
-  get: () => {
-    console.log(this.a, typeof this.a, this); // indefinida 'undefined' Window {...} (o el objeto global)
-    return this.a + 10; // representa el objeto global 'Window', por lo tanto 'this.a' devuelve 'undefined'
-  }
-});
-
- -

call, apply y bind

- -

Los métodos {{JSxRef("Objetos_globales/Function/call", "call")}}, {{JSxRef("Objetos_globales/Function/apply", "apply")}} y {{JSxRef("Objetos_globales/Function/bind", "bind")}} NO son adecuados para las funciones flecha, ya que fueron diseñados para permitir que los métodos se ejecuten dentro de diferentes ámbitos, porque las funciones flecha establecen "this" según el ámbito dentro del cual se define la función flecha.

- -

Por ejemplo, {{JSxRef("Objetos_globales/Function/call", "call")}}, {{JSxRef("Objetos_globales/Function/apply", "apply")}} y {{JSxRef("Objetos_globales/Function/bind", "bind")}} funcionan como se esperaba con las funciones tradicionales, porque establecen el ámbito para cada uno de los métodos:

- -
// ----------------------
-// Ejemplo tradicional
-// ----------------------
-// Un objeto simplista con su propio "this".
-var obj = {
-    num: 100
-}
-
-// Establece "num" en window para mostrar cómo NO se usa.
-window.num = 2020; // ¡Ay!
-
-// Una función tradicional simple para operar en "this"
-var add = function (a, b, c) {
-  return this.num + a + b + c;
-}
-
-// call
-var result = add.call(obj, 1, 2, 3) // establece el ámbito como "obj"
-console.log(result) // resultado 106
-
-// apply
-const arr = [1, 2, 3]
-var result = add.apply(obj, arr) // establece el ámbito como "obj"
-console.log(result) // resultado 106
-
-// bind
-var result = add.bind(obj) // estable el ámbito como "obj"
-console.log(result(1, 2, 3)) // resultado 106
- -

Con las funciones flecha, dado que la función add esencialmente se crea en el ámbito del window (global), asumirá que this es window.

- -
// ----------------------
-// Ejemplo de flecha
-// ----------------------
-
-// Un objeto simplista con su propio "this".
-var obj = {
-    num: 100
-}
-
-// Establecer "num" en window para mostrar cómo se recoge.
-window.num = 2020; // ¡Ay!
-
-// Función flecha
-var add = (a, b, c) => this.num + a + b + c;
-
-// call
-console.log(add.call(obj, 1, 2, 3)) // resultado 2026
-
-// apply
-const arr = [1, 2, 3]
-console.log(add.apply(obj, arr)) // resultado 2026
-
-// bind
-const bound = add.bind(obj)
-console.log(bound(1, 2, 3)) // resultado 2026
-
- -

Quizás el mayor beneficio de usar las funciones flecha es con los métodos a nivel del DOM (setTimeout, setInterval, addEventListener) que generalmente requieren algún tipo de cierre, llamada, aplicación o vinculación para garantizar que la función se ejecute en el ámbito adecuado.

- -

Ejemplo tradicional:

- -
var obj = {
-    count : 10,
-    doSomethingLater : function (){
-        setTimeout(function(){ // la función se ejecuta en el ámbito de window
-            this.count++;
-            console.log(this.count);
-        }, 300);
-    }
-}
-
-obj.doSomethingLater(); // la consola imprime "NaN", porque la propiedad "count" no está en el ámbito de window.
- -

Ejemplo de flecha:

- -
var obj = {
-    count : 10,
-    doSomethingLater : function(){  // por supuesto, las funciones flecha no son adecuadas para métodos
-        setTimeout( () => { // dado que la función flecha se creó dentro del "obj", asume el "this" del objeto
-            this.count++;
-            console.log(this.count);
-        }, 300);
-    }
-}
-
-obj.doSomethingLater();
- -

Sin enlace de arguments

- -

Las funciones flecha no tienen su propio objeto {{JSxRef("Funciones/arguments", "arguments")}}. Por tanto, en este ejemplo, arguments simplemente es una referencia a los argumentos del ámbito adjunto:

- -
var arguments = [1, 2, 3];
-var arr = () => arguments[0];
-
-arr(); // 1
-
-function foo(n) {
-  var f = () => arguments[0] + n; // Los argumentos implícitos de foo son vinculantes. arguments[0] es n
-  return f();
-}
-
-foo(3); // 6
- -

En la mayoría de los casos, usar {{JSxRef("Funciones/parametros_rest", "parámetros rest")}} es una buena alternativa a usar un objeto arguments.

- -
function foo(n) {
-  var f = (...args) => args[0] + n;
-  return f(10);
-}
-
-foo(1); // 11
- -

Uso del operador new

- -

Las funciones flecha no se pueden usar como constructores y arrojarán un error cuando se usen con new.

- -
var Foo = () => {};
-var foo = new Foo(); // TypeError: Foo no es un constructor
- -

Uso de la propiedad prototype

- -

Las funciones flecha no tienen una propiedad prototype.

- -
var Foo = () => {};
-console.log(Foo.prototype); // undefined
-
- -

Uso de la palabra clave yield

- -

La palabra clave {{JSxRef("Operadores/yield", "yield")}} no se puede utilizar en el cuerpo de una función flecha (excepto cuando está permitido dentro de las funciones anidadas dentro de ella). Como consecuencia, las funciones flecha no se pueden utilizar como generadores.

- -

Cuerpo de función

- -

Las funciones flecha pueden tener un "cuerpo conciso" o el "cuerpo de bloque" habitual.

- -

En un cuerpo conciso, solo se especifica una expresión, que se convierte en el valor de retorno implícito. En el cuerpo de un bloque, debes utilizar una instrucción return explícita.

- -
var func = x => x * x;
-// sintaxis de cuerpo conciso, "return" implícito
-
-var func = (x, y) => { return x + y; };
-// con cuerpo de bloque, se necesita un "return" explícito
-
- -

Devolver objetos literales

- -

Ten en cuenta que devolver objetos literales utilizando la sintaxis de cuerpo conciso params => {object: literal} no funcionará como se esperaba.

- -
var func = () => { foo: 1 };
-// ¡Llamar a func() devuelve undefined!
-
-var func = () => { foo: function() {} };
-// SyntaxError: la declaración function requiere un nombre
- -

Esto se debe a que el código entre llaves ({}) se procesa como una secuencia de declaraciones (es decir, foo se trata como una etiqueta, no como una clave en un objeto literal).

- -

Debes envolver el objeto literal entre paréntesis:

- -
var func = () => ({ foo: 1 });
- -

Saltos de línea

- -

Una función flecha no puede contener un salto de línea entre sus parámetros y su flecha.

- -
var func = (a, b, c)
-  => 1;
-// SyntaxError: expresión esperada, obtuve '=>'
- -

Sin embargo, esto se puede modificar colocando el salto de línea después de la flecha o usando paréntesis/llaves como se ve a continuación para garantizar que el código se mantenga bonito y esponjoso. También puedes poner saltos de línea entre argumentos.

- -
var func = (a, b, c) =>
-  1;
-
-var func = (a, b, c) => (
-  1
-);
-
-var func = (a, b, c) => {
-  return 1
-};
-
-var func = (
-  a,
-  b,
-  c
-) => 1;
-
-// no se lanza SyntaxError
- -

Orden de procesamiento

- -

Aunque la flecha en una función flecha no es un operador, las funciones flecha tienen reglas de procesamiento especiales que interactúan de manera diferente con {{JSxRef("Operadores/Operator_Precedence", "prioridad de operadores")}} en comparación con las funciones regulares.

- -
let callback;
-
-callback = callback || function() {}; // ok
-
-callback = callback || () => {};
-// SyntaxError: argumentos de función flecha no válidos
-
-callback = callback || (() => {});    // bien
-
- -

Ejemplos

- -

Uso básico

- -
// Una función flecha vacía devuelve undefinided
-let empty = () => {};
-
-(() => 'foobar')();
-// Devuelve "foobar"
-// (esta es una expresión de función invocada inmediatamente)
-
-var simple = a => a > 15 ? 15 : a;
-simple(16); // 15
-simple(10); // 10
-
-let max = (a, b) => a > b ? a : b;
-
-// Fácil filtrado de arreglos, mapeo, ...
-
-var arr = [5, 6, 13, 0, 1, 18, 23];
-
-var sum = arr.reduce((a, b) => a + b);
-// 66
-
-var even = arr.filter(v => v % 2 == 0);
-// [6, 0, 18]
-
-var double = arr.map(v => v * 2);
-// [10, 12, 26, 0, 2, 36, 46]
-
-// Cadenas de promesas más concisas
-promise.then(a => {
-  // ...
-}).then(b => {
-  // ...
-});
-
-// Funciones flecha sin parámetros que son visualmente más fáciles de procesar
-setTimeout( () => {
-  console.log('sucederá antes');
-  setTimeout( () => {
-    // código más profundo
-    console.log ('Sucederá más tarde');
-  }, 1);
-}, 1);
-
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-arrow-function-definitions', 'Definición de función flecha')}}
- -

Compatibilidad del navegador

- -
- - -

{{Compat("javascript.functions.arrow_functions")}}

-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/funciones/get/index.html b/files/es/web/javascript/referencia/funciones/get/index.html deleted file mode 100644 index 7125ab0caa..0000000000 --- a/files/es/web/javascript/referencia/funciones/get/index.html +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: get -slug: Web/JavaScript/Referencia/Funciones/get -tags: - - ECMAScript5 - - JavaScript - - Operator -translation_of: Web/JavaScript/Reference/Functions/get ---- -
{{jsSidebar("Funciones")}}
- -

Enlaza la propiedad de un objeto con una función que será llamada cuando la propiedad es buscada.

- -

Sintaxis

- -

{get prop() { . . . } }

- -

Parámetros

- -
-
prop
-
el nombre de la propiedad a unir con la función dada
-
- -

Descripción

- -

A veces es deseable permitir acceso a una propiedad que retorna un valor dinámicamente calculado, o si desea mostrar el estado de alguna variable interna sin requerir el uso de llamadas a métodos explícitos. En JavaScript, esto se puede lograr con el uso de un getter (captador). No es posible tener simultáneamente un getter ligado a una propiedad y que dicha propiedad tenga actualmente un valor, aunque es posible usar un getter junto con un setter para crear un tipo de pseudo-propiedad.

- -

Tenga en cuenta lo siguiente al trabajar con la sintaxis get:

- - - -

El getter puede ser removido usando el operador {{jsxref("Operadores/delete", "delete")}}.

- -

Ejemplos

- -

Definir un getter con el operador get

- -

Esto creará una pseudo-propiedad latest (ver ejemplo) del objecto o que podría retornar la más reciente entrada dentro de o.log:

- -
var o = {
-  get latest () {
-    if (this.log.length > 0) {
-      return this.log[this.log.length - 1];
-    }
-    else {
-      return null;
-    }
-  },
-  log: []
-}
-
- -

Note que intentar asignar un valor a latest no lo cambiará.

- -

Borrar un getter usando el operador delete

- -
delete o.latest;
-
- -

Compatibilidad de navegadores

- -

Basado en la página de página de Robert Nyman

- -

Sin soporte (notablemente en IE6-8) significa que el script lanzará un error de sintaxis.

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaFirefox (Gecko)ChromeInternet ExplorerOperaSafari
Soporte básico{{ CompatGeckoDesktop("1.8.1") }}199.53
-
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaFirefox Mobile (Gecko)AndroidIE MobileOpera MobileSafari Mobile
Soporte básico{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}{{ CompatUnknown() }}
-
- -

Consulta también

- - - -
-

 

-
- -

 

diff --git a/files/es/web/javascript/referencia/funciones/index.html b/files/es/web/javascript/referencia/funciones/index.html deleted file mode 100644 index ac1bea24ea..0000000000 --- a/files/es/web/javascript/referencia/funciones/index.html +++ /dev/null @@ -1,661 +0,0 @@ ---- -title: Funciones -slug: Web/JavaScript/Referencia/Funciones -tags: - - Funciones - - Guia(2) - - JavaScript - - función -translation_of: Web/JavaScript/Reference/Functions ---- -
{{jsSidebar("Functions")}}
- -

En términos generales, una función es un "subprograma" que puede ser llamado por código externo (o interno en caso de recursión) a la función. Al igual que el programa en sí mismo, una función se compone de una secuencia de declaraciones, que conforman el llamado cuerpo de la función. Se pueden pasar valores a una función, y la función puede devolver un valor.

- -

En JavaScript, las funciones son objetos de primera clase, es decir, son objetos y se pueden manipular y transmitir al igual que cualquier otro objeto. Concretamente son objetos {{jsxref("Function")}}.

- -

General

- -

Toda función en JavaScript es un objeto Function. Ver {{jsxref("Function")}} para obtener información sobre las propiedades y métodos de los objetos Function.

- -

Las funciones no son lo mismo que los procedimientos. Una función siempre devuelve un valor, pero un procedimiento, puede o no puede devolver un valor.

- -

Para devolver un valor especifico distinto del predeterminado, una función debe tener una sentencia {{jsxref("Sentencias/return", "return")}}, que especifique el valor a devolver. Una función sin una instrucción return devolverá el valor predeterminado. En el caso de un {{jsxref("Object.prototype.constructor", "constructor")}} llamado con la palabra clave {{jsxref("new")}}, el valor predeterminado es el valor de su parametro. Para el resto de funciones, el valor predeterminado es undefined.

- -

Los parámetros en la llamada a una función son los argumentos de la función. Los argumentos se pasan a las funciones por valor. Si la función cambia el valor de un argumento, este cambio no se refleja globalmente ni en la llamada de la función. Sin embargo, las referencias a objetos también son valores, y son especiales: si la función cambia las propiedades del objeto referenciado, ese cambio es visible fuera de la función, tal y como se muestra en el siguiente ejemplo:

- -
/* Declarando la función 'myFunc' */
- function myFunc(elobjeto)
- {
-   elobjeto.marca= "Toyota";
- }
-
- /*
-  * Declarando la variable 'mycar';
-  * Se crea e inicializa el nuevo objeto;
-  * para hacer referencia a él mediante 'mycar'
-  */
- var mycar = {
-   marca: "Honda",
-   modelo: "Accord",
-   año: 1998
- };
-
- /* Mostrando 'Honda' */
- window.alert(mycar.marca);
-
- /* Paso por referencia del objeto 'mycar' a la función 'myFunc'*/
- myFunc(mycar);
-
- /*
-  * Muestra 'Toyota' como valor de la propiedad 'marca'
-  * del objeto, que ha sido cambiado por la función.
-  */
- window.alert(mycar.marca);
- -

La palabra clave this no hace referencia a la función que está ejecutandose actualmente, por lo que debes referirte a los objetos Function por nombre, incluso dentro del cuerpo de la función. Como alternativa, puedes utilizar la propiedad arguments.callee (que no se recomienda).

- -

Definiendo funciones

- -

Hay varias formas de definir funciones:

- -

Declaración de una función (La instrucción function)

- -

Hay una sintaxis especial para declarar funciones (ver la instrucción {{jsxref("Sentencias/function","function")}} para más detalles):

- -
function nombre([param[,param[, ...param]]]) {
-   instrucciones
-}
-
- -
-
nombre
-
El nombre de la función.
-
- -
-
param
-
El nombre de un argumento que se pasará a la función. Una función puede tener hasta 255 argumentos.
-
- -
-
instrucciones
-
Las instruciones que forman el cuerpo de la función.
-
- -

Expresión de una función (El operador function)

- -

Una expresión function es similar y tiene la misma sintaxis que una declaración de función (ver operador {{jsxref("Operadores/function", "function")}} para más detalles):

- -
function [nombre]([param[, param[, ...param]]]) {
-   instrucciones
-}
-
- -
-
nombre
-
El nombre de la función, se puede omitir, en ese caso la función se conoce como función anónima.
-
- -
-
param
-
El nombre de los argumentos que se pasarán a la función. Una función puede tener hasta 255 argumentos.
-
- -
-
instrucciones
-
Las instrucciones que forman el cuerpo de la función.
-
- -

La expresión de función flecha (=>)

- -
-

Nota: Las expresiones de función Flecha son una tecnología experimental, parte de la proposición Harmony (EcmaScript 6) y no son ampliamente implementadas por los navegadores.

-
- -

Una expresión de función flecha tiene una sintaxis más corta y su léxico se une a este valor (ver {{jsxref("Funciones/Arrow_functions", "arrow functions", "", 1)}} para más detalles):

- -
([param] [, param]) => { instrucciones }
-
-param => expresión
-
- -
-
param
-
El nombre de un argumento. Si no hay argumentos se tiene que indicar con (). Para un único argumento no son necesarios los parentesis. (como foo => 1)
-
instrucciones o expresión
-
Multiples instrucciones deben ser encerradas entre llaves. Una única expresión no necesita llaves. La expresión es, así mismo, el valor de retorno implícito de esa función.
-
- -

El constructor Function

- -

Como todos los demás objetos, los objetos {{jsxref("Function")}} se pueden crear mediante el operador new:

- -
new Function (arg1, arg2, ... argN, functionBody)
-
- -
-
arg1, arg2, ... argN
-
Ningún o varios argumentos  son pasados para ser utilizados por la función como nombres de argumentos formales. Cada uno debe ser una cadena que se ajuste a las reglas de identificadores válidos en JavaScript, o a una lista de este tipo de cadenas separadas por comas; por ejemplo "x", "theValue", o "a,b".
-
- -
-
Cuerpo de la función
-
Una cadena conteniendo las instrucciones JavaScript que comprenden la definición de la función.
-
- -

Llamar al contructor Function como una función, sin el operador new, tiene el mismo efecto que llamarlo como un constructor.

- -
Nota: Utilizar el constructor Function no se recomienda, ya que necesita el cuerpo de la función como una cadena, lo cual puede ocasionar que no se optimize correctamente por el motor JS, y puede también causar otros problemas.
- -

El objeto arguments

- -

Puedes referirte a los argumentos de una función dentro de la misma, utilizando el objeto arguments. Ver {{jsxref("Functiones/argument", "Function")}}.

- -

Ámbito de ejecución y pila de funciones

- -

some section about scope and functions calling other functions

- -

Repaso

- -

Una función puede referirse y llamarse a sí misma. Hay tres maneras en la que una función puede referirse a sí misma.

- -
    -
  1. El nombre de la función
  2. -
  3. {{jsxref("arguments.callee")}}
  4. -
  5. una función dentro del ambito de ejecución que refiere a la función
  6. -
- -

Por ejemplo, considere la siguiente definición de función:

- -
var foo = function bar() {
-   // el cuerpo va aqui
-};
-
- -

Dentro del cuerpo de la función, todo lo siguientes son lo mismo:

- -
    -
  1. bar()
  2. -
  3. arguments.callee()
  4. -
  5. foo()
  6. -
- -

Una función que se llama a sí misma es llamada una función recursiva. En algunas ocaciones, la recursión es análoga a un bucle. Ambos ejecutan el mismo código múltiples veces, y ambas requieren una condición (para evitar un bucle infinito, o en su lugar, recursión infinita en este caso). Por ejemplo, el siguiente bucle:

- -
var x = 0;
-while (x < 10) { // "x < 10" es la condición
-   // haz algo
-   x++;
-}
-
- -

puede ser convertida en una función recursiva y una llamada a esa función:

- -
function loop(x) {
-   if (x >= 10) // "x >= 10" es la condición de salida (equivalente a "!(x < 10)")
-      return;
-   // haz algo
-   loop(x + 1); // la llamada recursiva
-}
-loop(0);
-
- -

Sin embargo, algunos algoritmos no pueden ser bucles iterativos simples. Por ejemplo, obtener todos los nodos de una estructura de arbol (e.g. el DOM) es realizado de manera más fácil usando recursión:

- -
function recorrerArbol (nodo) {
-   if (nodo == null) //
-      return;
-   // haz algo con el nodo
-   for (var i = 0; i < nodo.nodosHijos.length; i++) {
-       recorrerArbol(nodo.nodosHijos[i]);
-   }
-}
-
- -

En comparación con el bucle de la función loop, cada llamada recursiva hace muchas llamadas recursivas aquí.

- -

Es posible convertir cualquier algoritmo recursivo en uno no recursivo, pero a menudo la lógica es mucho más compleja y hacerlo requiere el uso de una pila. De hecho, la recursión utiliza una pila: la pila de funciones.

- -

El comportamiento similar a la pila se puede ver en el ejemplo siguiente:

- -
function foo(i) {
-   if (i < 0)
-      return;
-   document.writeln('inicio:' + i);
-   foo(i - 1);
-   document.writeln('fin:' + i);
-}
-foo(3);
- -

que produce:

- -
inicio:3
-inicio:2
-inicio:1
-inicio:0
-fin:0
-fin:1
-fin:2
-fin:3
-
- -

Funciones anidadas y cierres

- -

Puede anidar una función dentro de una función. La función anidada (inner) es privada a la función que la contiene (outer). También con la forma: aclosure.

- -
-
Un cierre es una expresión (normalmente una función) que puede tener variables libres junto con un entorno que enlaza esas variables (que "cierra" la expresión).
- Dado que una función anidada es un cierre, esto significa que una función anidada puede "heredar" los argumentos y las variables de su función contenedora. En otras palabras, la función interna contiene el ámbito de la función externa.
-
- -

Desde que la función anidada es un cierre (closure), esto significa que una función anidada puede "heredar" los argumentos y variables de su función contenedora. En otras palabras, la función interna contiene un scope (alcance) de la función externa.

- -

Para resumir:

- - - - - -

El ejemplo siguiente muestra funciones anidadas:

- -
function addCuadrado(a,b) {
-   function cuadrado(x) {
-      return x * x;
-   }
-   return cuadrado(a) + cuadrado(b);
-}
-a = addCuadrado(2,3); // retorna 13
-b = addCuadrado(3,4); // retorna 25
-c = addCuadrado(4,5); // retorna 41
-
- -

Dado que la función interna forma un cierre, puede llamar a la función externa y especificar argumentos para la función externa e interna

- -
function fuerade(x) {
-   function dentro(y) {
-      return x + y;
-   }
-   return dentro;
-}
-resultado = fuerade(3)(5); // retorna 8
-
- -

Consideraciones sobre la eficiencia

- -

Observe cómo se conserva x cuando se devuelve dentro. Un cierre conserva los argumentos y las variables en todos los ámbitos que contiene. Puesto que cada llamada proporciona argumentos potencialmente diferentes, debe crearse un cierre para cada llamada a la función externa. En otras palabras, cada llamada a fuerade crea un cierre. Por esta razón, los cierres pueden usar una gran cantidad de memoria. La memoria se puede liberar sólo cuando el dentro devuelto ya no es accesible. En este caso, el cierre del dentro se almacena en resultado. Como el resultado está en el ámbito global, el cierre permanecerá hasta que se descargue el script (en un navegador, esto sucedería cuando la página que contiene el script esté cerrada).

- -

Debido a esta ineficiencia, evite cierres siempre que sea posible, es decir, evite las funciones de anidamiento siempre que sea posible. Por ejemplo, considere el siguiente ejemplo:

- -
function assignOnclick(elemento) {
-   element.onclick = function() {
-      this.style.backgroundColor = 'blue';
-   };
-}
-
- -

Esto se puede volver a escribir para evitar el cierre. Sin embargo, la función interna anónima necesitaría ser nombrada y ya no sería privada para assignOnclick:

- -
function assignOnclick(elemento) {
-   elemento.onclick = elemento_onclick;
-}
-
-function elemento_onclick() {
-   this.style.backgroundColor = 'blue';
-}
-
- -

Multiples funciones anidadas

- -

Las funciones pueden ser anidadas contigua de la otra, es decir, una función (A) que contiene una función (B) que contiene una función (C), etc. Ambas funciones B y C forman cierres aquí, por lo que B puede acceder a A y C pueden acceder a B. Además, como C puede acceder a B, que puede acceder a A, C también puede acceder a A. Por lo tanto, los cierres pueden contener múltiples ámbitos; contienen recursivamente el alcance de las funciones que lo contienen. Esto es llamado encadenamiento de objetos(scope chaining). (Por qué se llama "chaining"("encadenamiento") se explicará más adelante.)

- -

Considere el siguiente ejemplo:

- -
function A(x) {
-   function B(y) {
-      function C(z) {
-         alert(x + y + z);
-      }
-      C(3);
-   }
-   B(2);
-}
-A(1); // alerts 6 (1 + 2 + 3)
-
- -

En este ejemplo, C accede a las B que hayan en y y A en x. Esto se puede hacer porque:

- -
    -
  1. B forma un cierre que incluye a A, es decir, B puede acceder a los argumentos y variables de A.
  2. -
  3. C forma un cierre que incluye a B.
  4. -
  5. Como el cierre de B incluye a A, el cierre de C incluye a A, C puede acceder a los argumentos y variables de la Banda A. En otras palabras, codifica los ámbitos de B y A en ese orden.
  6. -
- -

Lo contrario, sin embargo, no es cierto. A no puede acceder a C, porque A no puede acceder a ningún argumento o variable de B, que C es una variable de. Así, C permanece privado de sólo B.

- -

Conflictos de nombre

- -

Cuando dos argumentos o variables en los ámbitos de un cierre tienen el mismo nombre, existe un conflicto de nombres("name conflict"). Más alcances internos tienen prioridad, por lo que el alcance más interno tiene la más alta precedencia, mientras que el alcance más externo toma el más bajo. Esta es la cadena de alcance. El primero en la cadena es el alcance más interno, y el último es el alcance más exterior. Considera lo siguiente:

- -
function fuerade() {
-   var x = 10;
-   function dentro(x) {
-      return x;
-   }
-   return dentro;
-}
-resultado = fuerade()(20); // retorna 20 en lugar de 10
-
- -

El conflicto de nombres ocurre en la sentencia return x y está entre el parámetro x del dentroy la variable x del fuerade. La cadena de alcance aquí es {dentro, fuerade, global object}. Por lo tanto, la x de insidetiene precedentes sobre la x de fuerade, y 20 (dentrode x) se devuelve en lugar de 10 (fuerade de x).

- -

Constructor vs declaración vs expresión

- -

Las diferencias entre la Function constructora, la de declaración y la de expresión.

- -

Compare lo siguiente:

- -
    -
  1. Una función definida con el constructor Function asignado a la variable multiply                                                                                                                     - -
    var multiply = new Function("x", "y", "return x * y;");
    -
    -
  2. -
  3. Una declaración de una función denominada multiply                                                  -
    function multiply(x, y) {
    -   return x * y;
    -}
    -
    -
  4. -
  5. Una expresión de función anónima asignada a la variable multiply                           -
    var multiply = function(x, y) {
    -   return x * y;
    -}
    -
    -
  6. -
  7. Una declaración de una función denominada func_name asignada a la variable multiply                                                                                                                  -
    var multiply = function func_name(x, y) {
    -   return x * y;
    -}
    -
    -
  8. -
- -

Todos hacen aproximadamente la misma cosa, con algunas diferencias sutiles:

- - - -

Una declaración de función es muy fácilmente (ya menudo involuntariamente) convertida en una expresión de función. Una declaración de función deja de ser una cuando:

- - - -

Ejemplos:

- - - -

Definición condicional de una función

- -

Las funciones se pueden definir de forma condicional utilizando expresiones de función o el constructor Function.

- -

En la siguiente secuencia de comandos, la función zero nunca se define y no se puede invocar, porque 'if (0)' se evalúa como false:

- -
if (0)
-   function zero() {
-      document.writeln("Esto es zero.");
-   }
-
- -

Si se cambia el script para que la condición se convierta en 'if (1)', se define la función zero.

- -
-

Nota: Aunque esto parece una declaración de función, ésta es en realidad una expresión de función ya que está anidada dentro de otra instrucción. Ver las diferencias entre las funciones de declaración y de expresión.

-
- -
-

Nota: Algunos motores JavaScript, sin incluir SpiderMonkey, tratan incorrectamente cualquier expresión de función con un nombre como una declaración de función. Esto llevaría a que se definiera zero incluso con el siempre-falso("always-false") condicional. Una manera más segura de definir funciones condicionalmente es definir la función anónimamente y asignarla a una variable:

-
- -
if (0)
-   var zero = function() {
-      document.writeln("Esto es zero.");
-   }
-
- -

Funciones como manejadores de eventos

- -

En JavaScript, los controladores de eventos DOM son funciones (en oposición a los objetos que contienen un método handleEvent en otros enlaces de idioma DOM). Las funciones se pasan un objeto de evento como el primer y único parámetro. Como cualquier otro parámetro, si el objeto de evento no necesita ser utilizado, puede omitirse en la lista de parámetros formales.

- -

Los posibles objetivos de eventos en un documento HTML incluyen: window (Window objects("objeto de ventana"), including frames("marcos")), document (HTMLDocument objects("objetos HTMLDocument")), y elementos (Element objects("objetos Elemento")). En el HTML DOM, los destinos de evento tienen propiedades de controlador de eventos. Estas propiedades son nombres de eventos en minúsculas con prefijo "on", e.g. onfocus. Los eventos DOM Level 2 Events proporcionan una forma alternativa y más sólida de agregar oyentes de eventos.

- -
-

Nota: Los eventos son parte del DOM, no de JavaScript. (JavaScript simplemente proporciona un enlace al DOM.)

-
- -

El ejemplo siguiente asigna una función a un manejador de eventos de "foco"("focus") de ventana.

- -
window.onfocus = function() {
-   document.body.style.backgroundColor = 'white';
-}
-
- -

Si se asigna una función a una variable, puede asignar la variable a un controlador de eventos. El siguiente código asigna una función a la variable setBGColor.

- -
var setBGColor = new Function("document.body.style.backgroundColor = 'white';");
-
- -

Puede utilizar esta variable para asignar una función a un controlador de eventos de varias maneras. Aquí hay dos formas:

- -
    -
  1. Escritura con propiedades de evento DOM HTML
    - -
    document.form1.colorButton.onclick = setBGColor;
    -
    -
  2. -
  3. Atributo de evento HTML
    - -
    <input name="colorBoton" type="button"
    -   value="Cambia color de fondo"
    -   onclick="setBGColor();"/>
    -
    - -

    Un manejador de eventos establecido de esta manera es en realidad una función, denominada después del atributo, envuelta alrededor del código especificado. Esta es la razón por la que los paréntesis en "setBGColor()" son necesarios aquí (en lugar de sólo "setBGColor").

    -
  4. -
- -

Es equivalente a:

- -
document.form1.colorButton.onclick = function onclick(event) {
-   setBGColor();
-}
-
- -

Observe cómo se pasa el objeto de evento a esta función anónima como event de parámetro. Esto permite que el código especificado utilice el objeto Evento("Event object)":

- -
<input ...
-    onclick="alert(event.target.tagName);"/>
-
- -

Al igual que cualquier otra propiedad que se refiere a una función, el controlador de eventos puede actuar como un método, y this se refiere al elemento que contiene el controlador de eventos. En el ejemplo siguiente, se llama a la función referida por onfocus con this igual a window.

- -
window.onfocus();
-
- -

Un error común de principiante de JavaScript es el añadir paréntesis y / o parámetros al final de la variable, es decir, llamar al manejador de eventos cuando lo asigna. La adición de estos paréntesis asignará el valor devuelto al llamar al manejador de eventos, que a menudo es undefined (si la función no devuelve nada), en lugar del controlador de eventos en sí:

- -
document.form1.button1.onclick = setBGColor();
-
- -

Para pasar parámetros a un manejador de eventos, el manejador debe ser envuelto en otra función de la siguiente manera:

- -
document.form1.button1.onclick = function() {
-   setBGColor('Algun valor');
-};
-
- -

Compatibilidad con versiones anteriores

- -

JavaScript 1.1 y anteriores

- -

No puede anidar una sentencia de función en otra instrucción o en sí misma.

- -

Variables locales dentro de las funciones

- -

arguments: Objeto similar a una matriz que contiene los argumentos pasados a la función en ejecución.

- -

arguments.callee: Especifica la función en ejecución.

- -

arguments.caller: Especifica la función que invocó la función en ejecución.

- -

arguments.length: Especifica el número de argumentos pasados a la función.

- -

Ejemplos

- -

1) Devolver un número con formato

- -

La siguiente función devuelve una cadena que contiene la representación formateada de un número rellenado con ceros a la izquierda.

- -
// Esta función devuelve una cadena rellenada con ceros a la izquierda
-
-function padZeros(num, totalLen) {
-   var numStr = num.toString();             // Inicializa un valor de retorno como cadena
-   var numZeros = totalLen - numStr.length; // Calcula el no. de ceros
-   for (var i = 1; i <= numZeros; i++) {
-      numStr = "0" + numStr;
-   }
-   return numStr;
-}
-
- -

Las siguientes sentencias llaman a la función padZeros.

- -
var resultado;
-resultado = padZeros(42,4); // retorna "0042"
-resultado = padZeros(42,2); // retorna "42"
-resultado = padZeros(5,4);  // retorna "0005"
-
- -

2) Determinar si existe una función

- -

Puede determinar si existe una función utilizando el operador typeof. En el ejemplo siguiente, se realiza una prueba para determinar si el objeto window tiene una propiedad llamada noFunc que es una función. Si es así, se utiliza; de lo contrario, se tomarán otras medidas.

- -
 if ('function' == typeof window.noFunc) {
-   // utiliza noFunc()
- } else {
-   // hacer algo mas
- }
-
- -
-

Nota: Tenga en cuenta que en la prueba if, e utiliza una referencia a noFunc aquí no hay paréntesis "()" después del nombre de la función para que la función real no se llame.

-
- -

Ver también

- -

Function, sentencia function, operador function

- -

{{ languages( { "en": "en/Core_JavaScript_1.5_Reference/Functions", "ru": "ru/\u042f\u0434\u0440\u043e_JavaScript_1.5_\u0421\u043f\u0440\u043e\u0432\u0447\u043d\u0438\u043a/Functions", "fr": "fr/R\u00e9f\u00e9rence_de_JavaScript_1.5_Core/Fonctions", "ja": "ja/Core_JavaScript_1.5_Reference/Functions" } ) }}

diff --git a/files/es/web/javascript/referencia/funciones/method_definitions/index.html b/files/es/web/javascript/referencia/funciones/method_definitions/index.html deleted file mode 100644 index 2aa23ca9b3..0000000000 --- a/files/es/web/javascript/referencia/funciones/method_definitions/index.html +++ /dev/null @@ -1,226 +0,0 @@ ---- -title: Method definitions -slug: Web/JavaScript/Referencia/Funciones/Method_definitions -translation_of: Web/JavaScript/Reference/Functions/Method_definitions ---- -
{{JsSidebar("Functions")}}
- -
A partir de ECMAScript 2015 (ES6), se introdujo una sintaxis abreviada para la definición de métodos en inicializadores de objetos. Es una forma abreviada para la asignación de una función al nombre del método.
- -
 
- -

Sintaxis

- -
var obj = {
-  property( parameters… ) {},
-  *generator( parameters… ) {},
-// also with computed keys:
-  [property]( parameters… ) {},
-  *[generator]( parameters… ) {},
-// compare ES5 getter/setter syntax:
-  get property() {},
-  set property(value) {}
-};
-
- -

Descripción

- -

La sintaxis abreviada es similar a la introducida en ECMAScript 5 con getter y setter.

- -

Dado el siguiente código:

- -
var obj = {
-  foo: function() {},
-  bar: function() {}
-};
- -

Ahora se puede abreviar esto mismo como:

- -
var obj = {
-  foo() {},
-  bar() {}
-};
- -
-

Nota : La sintaxis abreviada usa funciones con nombre en lugar de funciones anónimas (como en …foo: function() {}…). Las funciones con nombre pueden ser llamadas desde el cuerpo de la función (esto es imposible con funciones anónimas, ya que no existe un identificador al que referirse). Para más detalles, ver {{jsxref("Operators/function","function","#Examples")}}.

-
- -

Abreviatura de métodos generadores

- -

Los métodos generadores también pueden definirse usando la sintaxis abreviada. Note que el asterisco (*) en la sintaxis abreviada debe estar antes del nombre de propiedad del generador. Esto es, * g(){} funcionará, pero g *(){} no.

- -
// Usando una propiedad con nombre (pre-ES6)
-var obj2 = {
-  g: function*() {
-    var index = 0;
-    while(true)
-      yield index++;
-  }
-};
-
-// El mismo objeto, usando la sintaxis abreviada
-var obj2 = {
-  * g() {
-    var index = 0;
-    while(true)
-      yield index++;
-  }
-};
-
-var it = obj2.g();
-console.log(it.next().value); // 0
-console.log(it.next().value); // 1
- -

Las definiciones de métodos no son constructores (instanciables con new)

- -

Las las definiciones de métodos no son constructores y generarán un {{jsxref("TypeError")}} si intenta instanciarlos.

- -
var obj = {
-  method() {},
-};
-new obj.method; // TypeError: obj.method no es un constructor
-
-var obj = {
-  * g() {}
-};
-new obj.g; // TypeError: obj.g no es un constructor (cambiado en ES2016)
-
- -

Ejemplos

- -

Caso de prueba simple

- -
var obj = {
-  a : "foo",
-  b(){ return this.a; }
-};
-console.log(obj.b()); // "foo"
-
- -

Nombres de propiedad computados

- -

La sintaxis abreviada también soporta nombres de propiedades computados.

- -
var bar = {
-  foo0 : function (){return 0;},
-  foo1(){return 1;},
-  ["foo" + 2](){return 2;},
-};
-
-console.log(bar.foo0()); // 0
-console.log(bar.foo1()); // 1
-console.log(bar.foo2()); // 2
- -

Especificaciónes

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoObservaciones
{{SpecName('ES6', '#sec-method-definitions', 'Method definitions')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ES7', '#sec-method-definitions', 'Method definitions')}}{{Spec2('ES7')}}Cambiado el que los métodos generadores no deban tener una  trampa [[Construct]] y deban fallar cuando se usen con new.
{{SpecName('ESDraft', '#sec-method-definitions', 'Method definitions')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
PrestaciónChromeFirefox (Gecko)Internet ExplorerOperaSafari
Definición de métodos abreviada{{CompatChrome("39")}}{{CompatGeckoDesktop("34")}}{{CompatNo}}{{CompatOpera("26")}}{{CompatNo}}
Métodos generadors no son constructores (ES2016){{CompatUnknown}}{{CompatGeckoDesktop("43")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PrestaciónAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Definición de métodos abreviada{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("34")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
Métodos generadores no son constructores (ES2016){{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile("43")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Notas específicas para SpiderMonkey

- - - -

Ver también

- - diff --git a/files/es/web/javascript/referencia/funciones/parametros_por_defecto/index.html b/files/es/web/javascript/referencia/funciones/parametros_por_defecto/index.html deleted file mode 100644 index e319a3606b..0000000000 --- a/files/es/web/javascript/referencia/funciones/parametros_por_defecto/index.html +++ /dev/null @@ -1,234 +0,0 @@ ---- -title: Parámetros predeterminados -slug: Web/JavaScript/Referencia/Funciones/Parametros_por_defecto -tags: - - Característica del lenguaje - - ECMAScript 2015 - - Funciones - - JavaScript -translation_of: Web/JavaScript/Reference/Functions/Default_parameters ---- -
{{jsSidebar("Functions", "Funciones")}}
- -

Parámetros predeterminados de función permiten que los parámetros con nombre se inicien con valores predeterminados si no se pasa ningún valor o undefined.

- -
{{EmbedInteractiveExample("pages/js/functions-default.html")}}
- - - -

Sintaxis

- -
function [name]([param1[ = defaultValue1 ][, ..., paramN[ = defaultValueN ]]]) {
-   statements
-}
-
- -

Descripción

- -

En JavaScript, los parámetros de función están predeterminados en {{jsxref("undefined")}}. Sin embargo, a menudo es útil establecer un valor predeterminado diferente. Aquí es donde los parámetros predeterminados pueden ayudar.

- -

En el pasado, la estrategia general para establecer valores predeterminados era probar los valores de los parámetros en el cuerpo de la función y asignar un valor si eran undefined.

- -

En el siguiente ejemplo, si no se proporciona ningún valor para b cuando se llama a multiply, el valor de b sería undefined al evaluar a * b y multiply devolvería NaN.

- -
function multiply(a, b) {
-  return a * b
-}
-
-multiply(5, 2)  // 10
-multiply(5)     // NaN !
-
- -

Para protegerte contra esto, usarías algo como la segunda línea, donde b se establece en 1 si llamas a multiply con un solo argumento:

- -
function multiply(a, b) {
-  b = (typeof b !== 'undefined') ?  b : 1
-  return a * b
-}
-
-multiply(5, 2)  // 10
-multiply(5)     // 5
-
- -

Con los parámetros predeterminados en ES2015, las comprobaciones en el cuerpo de la función ya no son necesarias. Ahora, puedes asignar 1 como valor predeterminado para b en el encabezado de la función:

- -
function multiply(a, b = 1) {
-  return a * b
-}
-
-multiply(5, 2)          // 10
-multiply(5)             // 5
-multiply(5, undefined)  // 5
-
- -

Ejemplos

- -

Pasar undefined vs. otros valores falsos

- -

En la segunda llamada de este ejemplo, incluso si el primer argumento se establece explícitamente en undefined (aunque no null u otros valores {{Glossary("falsy", "falsos", "", 1)}} , el valor del argumento num sigue siendo el predeterminado.

- -
function test(num = 1) {
-  console.log(typeof num)
-}
-
-test()           // 'number' (num se establece en 1)
-test(undefined)  // 'number' (num se establece en 1 también)
-
-// prueba con otros valores falsos:
-test('')         // 'string' (num se establece en '')
-test(null)       // 'object' (num se establece en null)
-
- -

Evaluado en el momento de la llamada

- -

El argumento predeterminado se evalúa en el momento de la llamada. Entonces, a diferencia de (por ejemplo) Python, se crea un nuevo objeto cada vez que se llama a la función.

- -
function append(value, array = []) {
-  array.push(value)
-  return array
-}
-
-append(1)  // [1]
-append(2)  // [2], no [1, 2]
-
- -

Esto incluso se aplica a funciones y variables:

- -
function callSomething(thing = something()) {
-  return thing
-}
-
-let numberOfTimesCalled = 0
-function something() {
-  numberOfTimesCalled += 1
-  return numberOfTimesCalled
-}
-
-callSomething()  // 1
-callSomething()  // 2
-
- -

Los parámetros anteriores están disponibles para los parámetros predeterminados posteriores

- -

Los parámetros definidos anteriormente (a la izquierda) están disponibles para los parámetros predeterminados posteriores:

- -
function greet(name, greeting, message = greeting + ' ' + name) {
-  return [name, greeting, message]
-}
-
-greet('David', 'Hi')                     // ["David", "Hi", "Hi David"]
-greet('David', 'Hi', 'Happy Birthday!')  // ["David", "Hi", "Happy Birthday!"]
-
- -

Esta funcionalidad se puede aproximar de esta manera, lo que demuestra cuántos casos extremos se manejan:

- -
function go() {
-  return ':P'
-}
-
-function withDefaults(a, b = 5, c = b, d = go(), e = this,
-                      f = arguments, g = this.value) {
-  return [a, b, c, d, e, f, g]
-}
-
-function withoutDefaults(a, b, c, d, e, f, g) {
-  switch (arguments.length) {
-    case 0:
-      a;
-    case 1:
-      b = 5;
-    case 2:
-      c = b;
-    case 3:
-      d = go();
-    case 4:
-      e = this;
-    case 5:
-      f = arguments;
-    case 6:
-      g = this.value;
-    default:
-  }
-  return [a, b, c, d, e, f, g];
-}
-
-withDefaults.call({value: '=^_^='});
-// [undefined, 5, 5, ":P", {value:"=^_^="}, arguments, "=^_^="]
-
-withoutDefaults.call({value: '=^_^='});
-// [undefined, 5, 5, ":P", {value:"=^_^="}, arguments, "=^_^="]
-
- -

Efectos de el ámbito

- -

Si se definen parámetros predeterminados para uno o más parámetros, se crea un segundo ámbito (registro de entorno), específicamente para los identificadores dentro de la lista de parámetros. Este ámbito es padre del ámbito creado para el cuerpo de la función.

- -

Esto significa que no se puede hacer referencia a las funciones y variables declaradas en el cuerpo de la función desde los iniciadores de parámetros de valor predeterminado; intentar hacerlo arroja un {{jsxref("ReferenceError")}} en tiempo de ejecución.

- -

También significa que las variables declaradas dentro del cuerpo de la función usando var enmascararán los parámetros del mismo nombre, en lugar de que el comportamiento habitual de las declaraciones var duplicadas no tenga ningún efecto.

- -

La siguiente función arrojará un ReferenceError cuando se invoca, porque el valor del parámetro predeterminado no tiene acceso al ámbito secundario del cuerpo de la función:

- -
function f(a = go()) { // Lanza un `ReferenceError` cuando se invoca a `f`.
-  function go() { return ':P' }
-}
-
- -

...y esta función imprimirá undefined porque la variable var a se eleva solo a la parte superior del ámbito creado para el cuerpo de la función (y no hasta el ámbito principal creado para la lista de parámetros):

- -
function f(a, b = () => console.log(a)) {
-  var a = 1
-  b() // Imprime `undefined`, porque los valores de los parámetros predeterminados existen en su propio ámbito
-}
-
- -

Parámetros sin valores predeterminados después de los parámetros predeterminados

- -

Los parámetros aún se establecen de izquierda a derecha, sobrescribiendo los parámetros predeterminados incluso si hay parámetros posteriores sin valores predeterminados.

- -
function f(x = 1, y) {
-  return [x, y]
-}
-
-f()   // [1, undefined]
-f(2)  // [2, undefined]
-
- -

Parámetro desestructurado con asignación de valor predeterminado

- -

Puedes usar la asignación de valor predeterminado con la notación {{jsxref("Operators/Destructuring_assignment", "la desestructuración", "", 1)}}:

- -
function f([x, y] = [1, 2], {z: z} = {z: 3}) {
-  return x + y + z
-}
-
-f()  // 6
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-function-definitions', 'Definición de Funciones')}}
- -

Compatibilidad del navegador

- -
- - -

{{Compat("javascript.functions.default_parameters")}}

-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/funciones/parametros_rest/index.html b/files/es/web/javascript/referencia/funciones/parametros_rest/index.html deleted file mode 100644 index 2e26e2c6e0..0000000000 --- a/files/es/web/javascript/referencia/funciones/parametros_rest/index.html +++ /dev/null @@ -1,266 +0,0 @@ ---- -title: Parámetros Rest -slug: Web/JavaScript/Referencia/Funciones/parametros_rest -tags: - - Funciones - - JavaScript - - Parametros Rest -translation_of: Web/JavaScript/Reference/Functions/rest_parameters ---- -
{{jsSidebar("Functions")}}
- -

La sintaxis de los parámetros rest nos permiten representar un número indefinido de argumentos como un array.

- -

{{EmbedInteractiveExample("pages/js/functions-restparameters.html")}}

- -

La fuente interactiva de este ejemplo es almacenado en un repositorio de GitHub. Si a ti te gustaría contribuir al proyecto de ejemplos interactivos, por favor clona este repositorio https://github.com/mdn/interactive-examples y envíanos un pull-request.

- -

Sintaxis

- -
function(a, b, ...theArgs) {
-  // ...
-}
-
- -

Descripción

- -

El último parámetro de una función se puede prefijar con ..., lo que hará que todos los argumentos restantes (suministrados por el usuario) se coloquen dentro de un array de javascript "estándar".

- -

Sólo el último parámetro puede ser un "parámetro rest".

- -
function myFun(a, b, ...manyMoreArgs) {
-  console.log("a", a);
-  console.log("b", b);
-  console.log("manyMoreArgs", manyMoreArgs);
-}
-
-myFun("one", "two", "three", "four", "five", "six");
-
-// Console Output:
-// a, one
-// b, two
-// manyMoreArgs, [three, four, five, six]
-
- -

Diferencia entre los parámetros rest y el objeto arguments

- -

Hay tres principales diferencias entre los parámetros rest y el objeto arguments:

- - - -

De argumentos a array

- -

Los parámetros rest han sido agregados para reducir el código repetitivo que se usaba en los parámetros.

- -
// Antes de los parámetros rest, "arguments" se podía convertir en un array usando:
-
-function f(a, b) {
-
-  let normalArray = Array.prototype.slice.call(arguments)
-  // -- o  --
-  let normalArray = [].slice.call(arguments)
-  // -- o  --
-  let normalArray = Array.from(arguments)
-
-  let first = normalArray.shift()  // OK, nos da el primer argumento
-  let first = arguments.shift()    // ERROR (arguments no es un array)
-}
-
-// Ahora, puedes acceder fácilmente a un array usando un parametro rest.
-
-function f(...args) {
-  let normalArray = args
-  let first = normalArray.shift() // OK, gives the first argument
-}
- -

Desestructuración de los parametros rest

- -

Los parámetros rest pueden ser desestructurados, eso significa que sus datos pueden ser desempaquetados dentro de distintas variables. Ver Destructuring assignment.

- -
function f(...[a, b, c]) {
-  return a + b + c;
-}
-
-f(1)          // NaN (b y c son indefinidos)
-f(1, 2, 3)    // 6
-f(1, 2, 3, 4) // 6 (el cuarto parámetro no está desestructurado)
- -

Ejemplos

- -

Usando parámetros rest

- -

En este ejemplo, el primer argumento es mapeado con 'a' y el segundo con 'b', entonces, esos argumentos nombrados, son usados normalmente

- -

De todas formas, el tercer argumento, manyMoreArgs, será un array que contendrá tantos argumentos como el usuario incluya (3er, 4to, 5to ...).

- -
function myFun(a, b, ...manyMoreArgs) {
-  console.log("a", a)
-  console.log("b", b)
-  console.log("manyMoreArgs", manyMoreArgs)
-}
-
-myFun("one", "two", "three", "four", "five", "six")
-
-// a, one
-// b, two
-// manyMoreArgs, [three, four, five, six]
- -

Debajo... incluso si hay solo un valor, el ultimo argumento seguirá siendo colocado dentro de un array.

- -
// usando la misma definición de función del ejemplo anterior
-myFun("one", "two", "three")
-
-// a, one
-// b, two
-// manyMoreArgs, [three]
- -

Debajo, el tercer argumento no esta provisto, pero manyMoreArgs continúa siendo un array (aunque uno vacío).

- -
//usando la misma definición de función del ejemplo anterior
-
-myFun("one", "two")
-
-// a, one
-// b, two
-// manyMoreArgs, []
- -

Argument length

- -

Puesto que theArgs es un array, su tamaño (un conteo de sus elementos) es dado por la propiedad length :

- -
function fun1(...theArgs) {
-  console.log(theArgs.length);
-}
-
-fun1();  // 0
-fun1(5); // 1
-fun1(5, 6, 7); // 3
-
- -

Ordinary parameter and rest parameters

- -

En el siguiente ejemplo, se usa un parámetro rest para agrupar  dentro de un array a todos los argumentos despues del primero.  Luego cada uno es multiplicado por el primero y el arreglo es retornado:

- -
function multiply(multiplier, ...theArgs) {
-  return theArgs.map(function (element) {
-    return multiplier * element;
-  });
-}
-
-let arr = multiply(2, 1, 2, 3);
-console.log(arr); // [2, 4, 6]
-
- -

El siguiente ejemplo muestra que se puede usar los métodos de Array en los parámetros rest , pero no en el objeto arguments:

- -
function sortRestArgs(...theArgs) {
-  var sortedArgs = theArgs.sort();
-  return sortedArgs;
-}
-
-console.log(sortRestArgs(5,3,7,1)); // muestra 1,3,5,7
-
-function sortArguments() {
-  var sortedArgs = arguments.sort();
-  return sortedArgs; // esto nunca va a ocurrir
-}
-
-// lanza un TypeError: arguments.sort is not a function
-console.log(sortArguments(5,3,7,1));
-
- -

Para poder usar los métodos de  Array en el objeto arguments, se debe convertir a un Array primero.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-function-definitions', 'Function Definitions')}}{{Spec2('ES6')}}definción inicial.
{{SpecName('ESDraft', '#sec-function-definitions', 'Function Definitions')}}{{Spec2('ESDraft')}}
- -

Compatibilidad en Navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico{{CompatChrome(47)}}{{CompatVersionUnknown}}{{CompatGeckoDesktop("15.0")}}{{CompatNo}}34{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Soporte Básico{{CompatNo}}{{CompatChrome(47)}}{{CompatGeckoMobile("15.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatChrome(47)}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/funciones/set/index.html b/files/es/web/javascript/referencia/funciones/set/index.html deleted file mode 100644 index ef555e6759..0000000000 --- a/files/es/web/javascript/referencia/funciones/set/index.html +++ /dev/null @@ -1,217 +0,0 @@ ---- -title: setter -slug: Web/JavaScript/Referencia/Funciones/set -translation_of: Web/JavaScript/Reference/Functions/set ---- -
{{jsSidebar("Funciones")}}
- -

La sintaxis  set  asocia la propiedad de un objeto a una función que será llamada cuando haya un intento de asignar valor a esa propiedad.

- -

Sintaxis

- -
{set prop(val) { . . . }}
-{set [expression](val) { . . . }}
- -

Parámetros

- -
-
prop
-
El nombre de la propiedad a asociar con la función dada.
-
- -
-
val
-
Un alias para la variable que contiene el valor a asignar a la propiedad.
-
expression
-
A partir de ECMAScript 2015, se puede también usar expresiones para nombres de propiedades computados para asociar a la función dada.
-
- -

Descripción

- -

En JavaScript, un setter puede ser usado para ejecutar una función donde sea que una propiedad se intente cambiar. Los setters son regularmente usados en conjunto con getters para crear un tipo de pseudo-propiedad. No es posible tener simultáneamente un setter en una propiedad que ya tiene un valor.

- -

Tenga en cuenta lo siguiente al trabajar con setters:

- -
- -
- -

Ejemplos

- -

Definiendo un setter en el inicializador de nuevos objetos

- -

En el siguiente ejemplo definimos una pseudo-propiedad  actual  al objeto lenguaje. Cuando se le asigne un valor a actual, actualiza log con ese valor:

- -
var lenguaje = {
-  set actual(mensaje) {
-    this.log.push(mensaje);
-  },
-  log: []
-}
-lenguaje.actual='ES';
-console.log(lenguaje.log); // ['ES']
-
-lenguaje.actual='FR';
-console.log(lenguaje.log); // ['ES', 'FR']
-
- - - -

Note que actual no está definido y cualquier intento de accederlo devolverá undefined.

- -

Eliminando un setter con el operador delete 

- -

Si desea eliminar el setter, puede simplemente aplicar delete en él:

- -
delete lenguaje.actual;
-
- -

Definiendo un setter en un objecto existente usando defineProperty

- -

Para añadir un setter a un objeto existente, use {{jsxref("Object.defineProperty()")}}

- -
consr o = {a: 0};
-
-Object.defineProperty(o, 'b', {
-  set: function (x) { this.a = x / 2; }
-});
-
-o.b = 10; // Ejecuta el setter, el cual asigna 10 / 2 (5) a la propiedad 'a'
-console.log(o.a) // 5
- -

Usando un nombre de propiedad computado

- -
-

Nota: Propiedades computadas son 'experimental technology', parte de la propuesta para ECMAScript 6, y no está soportado en todos los navegadores. Dará error de sintaxis en entornos no soportados.

-
- -
const expr = 'foo';
-
-var obj = {
-  baz: 'bar',
-  set [expr](v) { this.baz = v; }
-};
-
-console.log(obj.baz); // "bar"
-obj.foo = "baz";      // ejecuta el setter
-console.log(obj.baz); // "baz"
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES5.1', '#sec-11.1.5', 'Object Initializer')}}{{Spec2('ES5.1')}}Definición inicial.
{{SpecName('ES6', '#sec-method-definitions', 'Method definitions')}}{{Spec2('ES6')}}Se añaden las propiedades computadas.
{{SpecName('ESDraft', '#sec-method-definitions', 'Method definitions')}}{{Spec2('ESDraft')}}
- -

Compatibilidad con navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(1)}}{{ CompatGeckoDesktop("1.8.1") }}{{ CompatIE(9) }}9.53
Computed property names{{CompatNo}}{{ CompatGeckoDesktop("34") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{ CompatGeckoMobile("1.8.1") }}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Computed property names{{CompatNo}}{{CompatNo}}{{ CompatGeckoMobile("34.0") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

Notas específicas para SpiderMonkey-specific

- - - -

Ver también

- - diff --git a/files/es/web/javascript/referencia/gramatica_lexica/index.html b/files/es/web/javascript/referencia/gramatica_lexica/index.html deleted file mode 100644 index fd6a12d8c5..0000000000 --- a/files/es/web/javascript/referencia/gramatica_lexica/index.html +++ /dev/null @@ -1,661 +0,0 @@ ---- -title: Gramática léxica -slug: Web/JavaScript/Referencia/Gramatica_lexica -tags: - - Gramática léxica - - Guía - - JaveScript - - Literal - - Palabra clave -translation_of: Web/JavaScript/Reference/Lexical_grammar ---- -
{{JsSidebar("Más")}}
- -

Esta página describe la gramática léxica de JavaScript. El texto fuente de los scripts de ECMAScript se escanea de izquierda a derecha y se convierte en una secuencia de elementos de entrada que son segmentos, caracteres de control, terminadores de línea, comentarios o {{Glossary("Espacio en blanco")}}. ECMAScript también define ciertas palabras clave y literales y tiene reglas para la inserción automática del punto y coma en las declaraciones finales.

- -

Caracteres de control

- -

Los caracteres de control no tienen representación visual, pero se utilizan para controlar la interpretación del texto.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Caracteres de control de formato Unicode
Punto de códigoNombreAbreviaturaDescripción
U+200CSeparador de ancho cero<ZWNJ>Colocado entre caracteres para evitar que se conecten a ligaduras en ciertos idiomas (Wikipedia).
U+200DConector de ancho cero<ZWJ>Colocado entre caracteres que normalmente no estarían conectados para hacer que los caracteres se rendericen usando su forma conectada en ciertos idiomas (Wikipedia).
U+FEFFMarca de orden de bytes<BOM>Se usa al comienzo del script para marcarlo como Unicode y el orden de bytes del texto (Wikipedia).
- -

Espacio en blanco

- -

Los caracteres de {{Glossary("Espacio_en_blanco")}} mejoran la legibilidad del texto fuente y separan los fragmentos entre sí. Estos caracteres suelen ser innecesarios para la funcionalidad del código. Las herramientas de minificación se utilizan a menudo para eliminar espacios en blanco con el fin de reducir la cantidad de datos que se deben transferir.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Caracteres de espacio en blanco
Punto de códigoNombreAbreviaturaDescripciónSecuencia de escape
U+0009Caracter de tabulación<HT>Tabulación horizontal\t
U+000BTabulación de línea<VT>Tabulación vertical\v
U+000CAvance de Página<FF>Carácter de control de salto de página (Wikipedia).\f
U+0020Espacio<SP>Espacio normal
U+00A0Espacio irrompible<NBSP>Espacio normal, pero ningún punto en el que una línea se pueda romper
OtrosOtros caracteres de espacio Unicode<USP>Espacios Unicode en Wikipedia
- -

Terminadores de línea

- -

Además de los caracteres de {{Glossary("Espacio_en_blanco", "espacio en blanco")}}, los caracteres de terminación de línea se utilizan para mejorar la legibilidad del texto fuente. Sin embargo, en algunos casos, los terminadores de línea pueden influir en la ejecución del código JavaScript, ya que hay algunos lugares donde están prohibidos. Los terminadores de línea también afectan el proceso de la inserción automática de punto y coma. Los terminadores de línea se corresponden con la clase \s en expresiones regulares.

- -

Solo los siguientes puntos de código Unicode se tratan como terminadores de línea en ECMAScript, otros caracteres de salto de línea se tratan como espacios en blanco (por ejemplo, Next Line, NEL, U+0085 se consideran como espacios en blanco).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Caracteres terminadores de línea
Punto de códigoNombreAbreviaturaDescripciónSecuencia de escape
U+000AAlimentación de linea<LF>Caracter de nueva línea en sistemas UNIX.\n
U+000DRetorno de carro<CR>Caracter de nueva línea en Commodore y los primeros sistemas Mac.\r
U+2028Separador de línea<LS>Wikipedia
U+2029Separador de párrafos<PS>Wikipedia
- -

Comentarios

- -

Los comentarios se utilizan para agregar consejos, notas, sugerencias o advertencias al código JavaScript. Esto puede facilitar su lectura y comprensión. También se pueden utilizar para deshabilitar el código y evitar que se ejecute; esta puede ser una valiosa herramienta de depuración.

- -

JavaScript tiene dos formas antiguas de agregar comentarios al código.

- -

La primera forma son las dobles barras inclinadas // comentario; esta convierte en comentario todo el texto que le sigue en la misma línea. Por ejemplo:

- -
function comment() {
-  // Este es un comentario JavaScript de una línea
-  console.log('¡Hola mundo!');
-}
-comment();
-
- -

La segunda forma es el estilo /* */, que es mucho más flexible.

- -

Por ejemplo, lo puedes usar en una sola línea:

- -
function comment() {
-  /* Este es un comentario JavaScript de una línea */
-  console.log('¡Hola mundo!');
-}
-comment();
- -

También puedes hacer comentarios de varias líneas, como este:

- -
function comment() {
-  /* Este comentario abarca varias líneas. Aviso
-     No necesitamos cerrar el comentario hasta que terminemos. */
-  console.log('¡Hola mundo!');
-}
-comment();
- -

También lo puedes usar en medio de una línea, si lo deseas, aunque esto puede hacer que tu código sea más difícil de leer, por lo que se debe usar con precaución:

- -
function comment(x) {
-  console.log('¡Hola' + x /* inserta el valor de x */ + ' !');
-}
-comment('mundo');
- -

Además, lo puedes usar para deshabilitar el código y evitar que se ejecute, envolviendo el código en un comentario, como este:

- -
function comment() {
-  /* console.log('¡Hola mundo!'); */
-}
-comment();
- -

En este caso, la llamada a console.log() nunca se emite, debido a que está dentro de un comentario. De esta forma se puede desactivar cualquier número de líneas de código.

- -

Comentarios hashbang

- -

Una sintaxis de tercer comentario especializado, el comentario hashbang, está en proceso de estandarización en ECMAScript (consulta la Propuesta de gramática Hashbang).

- -

Un comentario hashbang se comporta exactamente como un comentario de una sola línea (//). En cambio, comienza con #! y solo son válidos al comienzo absoluto de un script o módulo. También ten en cuenta que no se permiten espacios en blanco de ningún tipo antes del #!. El comentario consta de todos los caracteres después de #! hasta el final de la primera línea; sólo se permite uno de esos comentarios.

- -

El comentario hashbang especifica la ruta a un intérprete de JavaScript específico que deseas utilizar para ejecutar el script. Aquí tienes un sencillo ejemplo:

- -
#!/usr/bin/env node
-
-console.log("Hola mundo");
-
- -
-

Nota: Los comentarios hashbang en JavaScript imitan a los shebangs en Unix utilizados para ejecutar archivos con el intérprete apropiado.

-
- -
-

Aunque BOM antes de que el comentario hashbang funcione en un navegador, no se recomienda utilizar BOM en un script con hashbang. BOM no funcionará cuando intentes ejecutar el script en Unix/Linux. Por lo tanto, usa UTF-8 sin BOM si deseas ejecutar scripts directamente desde el intérprete.

-
- -

¡Solo debes usar el estilo de comentario #! para especificar un intérprete de JavaScript. En todos los demás casos, utiliza un comentario // (o un comentario multilínea).

- -

Palabras clave

- -

Palabras clave reservadas a partir de ECMAScript 2015

- - - -

Futuras palabras clave reservadas

- -

Las siguientes están reservadas como palabras clave futuras por la especificación ECMAScript. No tienen ninguna funcionalidad especial en la actualidad, pero es posible que lo hagan en el futuro, por lo que no se pueden utilizar como identificadores.

- -

Estas siempre están reservadas:

- - - -

Las siguientes solo están reservadas cuando se encuentran en código de modo estricto:

- - - -

Las siguientes solo están reservadas cuando se encuentran en código de módulo:

- - - -

Futuras palabras clave reservadas en estándares más antiguos

- -

Las siguientes están reservadas como palabras clave futuras según las especificaciones de ECMAScript anteriores (ECMAScript 1 a 3).

- - - -

Además, los literales null, true y false no se pueden utilizar como identificadores en ECMAScript.

- -

Uso de palabras reservadas

- -

Las palabras reservadas en realidad solo se aplican a los identificadores (frente a los nombres de identificadores). Como se describe en es5.github.com/#A.1, todos estos son IdentifierNames que no excluyen Palabras reservadas.

- -
a.import
-a['import']
-a = { import: 'test' }.
-
- -

Por otro lado, lo siguiente es ilegal porque es un Identificador, que es un IdentifierName sin palabras reservadas. Los identificadores se utilizan para FunctionDeclaration, FunctionExpression, VariableDeclaration y así sucesivamente. Los IdentifierNames se utilizan para MemberExpression, CallExpression y así sucesivamente.

- -
function import() {} // Ilegal.
- -

Identificadores con significado especial

- -

Algunos identificadores tienen un significado especial en algunos contextos sin ser palabras clave de ningún tipo. Estos incluyen:

- - - -

Literales

- -

null literal

- -

Consulta también {{jsxref("null")}} para obtener más información.

- -
null
- -

Booleanos literales

- -

Consulta también {{jsxref("Boolean", "Booleano")}} para obtener más información.

- -
true
-false
- -

Literales numéricos

- -

Los tipos {{jsxref("Number")}} y {{jsxref("BigInt")}} usan literales numéricos.

- -

Decimal

- -
1234567890
-42
-
-// Precaución al usar con un cero a la izquierda:
-0888 // 888 procesado como decimal
-0777 // procesado como octal, 511 en decimal
-
- -

Ten en cuenta que los decimales literales pueden comenzar con un cero (0) seguido de otro dígito decimal, pero si todos los dígitos después del 0 inicial son menores que 8, el número se interpreta como un número octal. Esto no arrojará JavaScript, consulta error 957513. Consulta también la página sobre {{jsxref("parseInt", "parseInt()")}}

- -
Exponencial
- -

El literal exponencial decimal se especifica mediante el siguiente formato: beN; donde b es un número base (entero o flotante), seguido del caracter e (que sirve como separador o indicador de exponente) y N, que es un número exponente o potencia: un entero con signo (según las especificaciones ECMA-262 de 2019):

- -
0e-5   // => 0
-0e+5   // => 0
-5e1    // => 50
-175e-2 // => 1.75
-1e3    // => 1000
-1e-3   // => 0.001
-
- -

Binario

- -

La sintaxis de números binarios utiliza un cero inicial seguido de una letra "B" latina en minúscula o mayúscula (0b o 0B). Debido a que esta sintaxis es nueva en ECMAScript 2015, consulta la tabla de compatibilidad del navegador a continuación. Si los dígitos después de 0b no son 0 o 1, se muestra el siguiente {{jsxref("SyntaxError")}}: "Faltan dígitos binarios después de 0b".

- -
var FLT_SIGNBIT  = 0b10000000000000000000000000000000; // 2147483648
-var FLT_EXPONENT = 0b01111111100000000000000000000000; // 2139095040
-var FLT_MANTISSA = 0B00000000011111111111111111111111; // 8388607
- -

Octal

- -

La sintaxis de números octales utiliza un cero inicial seguido de una letra "O" latina en minúscula o mayúscula (0o o 0O). Debido a que esta sintaxis es nueva en ECMAScript 2015, consulta la tabla de compatibilidad del navegador a continuación. Si los dígitos después del 0o están fuera del rango (01234567), se lanza el siguiente {{jsxref("SyntaxError")}}: "Dígitos octales faltantes después del 0o".

- -
var n = 0O755; // 493
-var m = 0o644; // 420
-
-// También es posible con solo un cero inicial (ve la nota sobre los decimales arriba)
-0755
-0644
-
- -

Hexadecimal

- -

La sintaxis de números hexadecimales utiliza un cero inicial seguido de una letra "X" latina en minúscula o mayúscula (0x o 0X). Si los dígitos después de 0x están fuera del rango (0123456789ABCDEF), se lanza el siguiente {{jsxref("SyntaxError")}}: "El identificador comienza inmediatamente después del literal numérico".

- -
0xFFFFFFFFFFFFFFFFF // 295147905179352830000
-0x123456789ABCDEF   // 81985529216486900
-0XA                 // 10
-
- -

BigInt literal

- -

El tipo {{jsxref("BigInt")}} es una primitiva numérica en JavaScript que puede representar números enteros con precisión arbitraria. Los BigInt literales se crean agregando n al final de un número entero.

- -
123456789123456789n     // 123456789123456789
-0o777777777777n         // 68719476735
-0x123456789ABCDEFn      // 81985529216486895‬
-0b11101001010101010101n // 955733
-
- -

Ten en cuenta que los números octales heredados con solo un cero a la izquierda no funcionarán para BigInt:

- -
// 0755n
-// SyntaxError: sintaxis de BigInt no válida
- -

Para números BigInt octales, siempre utiliza cero seguido de la letra "o" (mayúscula o minúscula):

- -
0o755n
- -

Para obtener más información sobre BigInt, consulta también estructuras de datos JavaScript.

- -

Separadores numéricos

- -

Para mejorar la legibilidad de literales numéricos, se pueden usar guiones bajos (_, U+005F) como separadores:

- -
// separadores en números decimales
-1_000_000_000_000
-1_050.95
-
-// separadores en números binarios
-0b1010_0001_1000_0101
-
-// separadores en números octales
-0o2_2_5_6
-
-// separadores en números hexadecimales
-0xA0_B0_C0
-
-// separadores en BigInts
-1_000_000_000_000_000_000_000n
-
- -

Ten en cuenta estas limitaciones:

- -
 // No se permite más de un guión bajo en una fila
-100__000; // SyntaxError
-
-// No permitido al final de literales numéricos
-100_; // SyntaxError
-
-// No se puede usar después de 0
-0_1; // SyntaxError
-
- -

Objetos literales

- -

Consulta también {{jsxref("Object")}} e Iniciador de objeto para obtener más información.

- -
var o = { a: 'foo', b: 'bar', c: 42 };
-
-// notación abreviada. Nueva en ES2015
-var a = 'foo', b = 'bar', c = 42;
-var o = {a, b, c};
-
-// en vez de
-var o = { a: a, b: b, c: c };
-
- -

Arreglos literales

- -

Consulta también {{jsxref("Array")}} para obtener más información.

- -
[1954, 1974, 1990, 2014]
- -

Cadenas literales

- -

Una cadena literal es cero o más puntos de código Unicode entre comillas simples o dobles. Los puntos de código Unicode también se pueden representar mediante una secuencia de escape. Literalmente todos los puntos de código pueden aparecer en una cadena literal, excepto estos puntos de código de cierre de cita:

- - - -

Antes de la propuesta para hacer que todo el texto JSON sea ECMA-262 válido, U+2028 <LS> y U+2029 <PS>, tampoco se permitió que aparecieran sin escape en las cadenas literales.

- -

Cualquier punto de código puede aparecer en forma de secuencia de escape. Las cadenas literales se evalúan como valores de cadena de ECMAScript. Al generar estos valores de cadena, los puntos de código Unicode están codificados en UTF-16.

- -
'foo'
-"bar"
- -

Secuencias de escape hexadecimales

- -

Las secuencias de escape hexadecimales constan de \x seguido de exactamente dos dígitos hexadecimales que representan una unidad de código o un punto de código en el rango de 0x0000 a 0x00FF.

- -
'\xA9' // "©"
-
- -

Secuencias de escape Unicode

- -

Una secuencia de escape Unicode consta exactamente de cuatro dígitos hexadecimales después de \u. Representa una unidad de código en la codificación UTF-16. Para los puntos de código U+0000 a U+FFFF, la unidad de código es igual al punto de código. Los puntos de código U+10000 a U+10FFFF requieren dos secuencias de escape que representan las dos unidades de código (un par sustituto) utilizadas para codificar el carácter; el par sustituto es distinto del punto de código.

- -

Consulta también {{jsxref("String.fromCharCode()")}} y {{jsxref("String.prototype.charCodeAt()")}}.

- -
'\u00A9' // "©" (U+A9)
- -

Puntos de escape de código Unicode

- -

Un punto de código de escape Unicode consta de \u{, seguido de un punto de código en base hexadecimal, seguido de }. El valor de los dígitos hexadecimales debe estar en el rango 0 y 0x10FFFF inclusive. Los puntos de código en el rango U+10000 a U+10FFFF no necesitan representarse como un par sustituto. Se agregaron puntos de código de escape a JavaScript en ECMAScript 2015 (ES6).

- -

Consulta también {{jsxref("String.fromCodePoint()")}} y {{jsxref("String.prototype.codePointAt()")}}.

- -
'\u{2F804}' // CJK COMPATIBILIDAD IDEOGRÁFICA-2F804 (U+2F804)
-
-// el mismo caracter representado como un par suplente
-'\uD87E\uDC04'
- -

Expresión regular literal

- -

Consulta también {{jsxref("RegExp")}} para obtener más información.

- -
/ab+c/g
-
-// Una expresión regular literal "vacía"
-// El grupo de no captura vacío es necesario
-// para evitar la ambigüedad con comentarios de una sola línea.
-/(?:)/
- -

Plantillas literales

- -

Consulta también cadenas de plantilla para obtener más información.

- -
`string text`
-
-`string text line 1
- string text line 2`
-
-`string text ${expression} string text`
-
-tag `string text ${expression} string text`
- -

Inserción automática de punto y coma

- -

Algunas declaraciones JavaScript se deben terminar con punto y coma y, por lo tanto, se ven afectadas por la inserción automática del punto y coma (IAPC):

- - - -

La especificación ECMAScript menciona tres reglas de inserción de punto y coma.

- -

1. Se inserta un punto y coma antes, cuando se encuentra un terminador de línea o "}" que no está permitido por la gramática.

- -
{ 1 2 } 3
-
-// La IAPC lo transforma en
-
-{ 1 2 ;} 3;
- -

2. Se inserta un punto y coma al final, cuando se detecta el final del flujo de entrada de símbolos y el analizador no puede procesar el único flujo de entrada como un programa completo.

- -

Aquí ++ no se trata como un operador sufijo que se aplica a la variable b, porque se produce un terminador de línea entre b y ++.

- -
a = b
-++c
-
-// IAPC lo transforma en
-
-a = b;
-++c;
-
- -

3. Se inserta un punto y coma al final, cuando una declaración con producción restringida en la gramática va seguida de un terminador de línea. Estas declaraciones con reglas "no LineTerminator aquí" son:

- - - -
return
-a + b
-
-// La IAPC lo transforma en
-
-return;
-a + b;
-
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-ecmascript-language-lexical-grammar', 'Gramática léxica')}}
- -

Compatibilidad del navegador

- - - -

{{Compat("javascript.grammar")}}

- -

Progreso de la implementación

- -

La siguiente tabla proporciona un estado de implementación diario para esta función, porque esta función aún no ha alcanzado la estabilidad entre navegadores. Los datos se generan al ejecutar las pruebas de funciones relevantes en Test262, el conjunto de pruebas estándar de JavaScript, en la compilación nocturna o en la última versión del motor JavaScript de cada navegador.

- -
{{EmbedTest262ReportResultsTable("hashbang")}}
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/index.html b/files/es/web/javascript/referencia/index.html deleted file mode 100644 index 29d75a4161..0000000000 --- a/files/es/web/javascript/referencia/index.html +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Referencia de JavaScript -slug: Web/JavaScript/Referencia -tags: - - JavaScript -translation_of: Web/JavaScript/Reference ---- -

{{JsSidebar}}

- -

Objetos globales

- -
{{page('/es/docs/Web/JavaScript/Referencia/Objetos_globales', 'Objetos_est.C3.A1ndar_(por_categor.C3.ADa)')}}
- -

Sentencias

- -

{{page('/es/docs/Web/JavaScript/Referencia/Sentencias', 'Statements_and_declarations_by_category')}}

- -

Expresiónes y Operadores

- -

{{page('/es/docs/Web/JavaScript/Referencia/Operadores', 'Expressions_and_operators_by_category')}}

- -

Gramática léxica

- - - -

Apéndice - Características Desaprobadas

- -

Original Document At: http://devedge-temp.mozilla.org/libr...1.5/reference/

diff --git a/files/es/web/javascript/referencia/iteration_protocols/index.html b/files/es/web/javascript/referencia/iteration_protocols/index.html deleted file mode 100644 index 7d8d31f2cd..0000000000 --- a/files/es/web/javascript/referencia/iteration_protocols/index.html +++ /dev/null @@ -1,320 +0,0 @@ ---- -title: Protocolos de Iteración -slug: Web/JavaScript/Referencia/Iteration_protocols -tags: - - ECMAScript6 - - Experimental - - Intermedio - - Iterable - - Iterador - - JavaScript -translation_of: Web/JavaScript/Reference/Iteration_protocols ---- -
{{jsSidebar("More")}}
- -
Las nuevas características de ECMAScript 6 no solo están asociadas a cambios y adiciones de sintaxis o a nuevos objetos nativos, sino también a protocolos. Dichos protocolos puede ser implementados por cualquier objeto en relación a algunas convenciones.
- -
 
- -
Existen dos protocolos: El protocolo iterable y el protocolo iterador.
- -
 
- -

El protocolo iterable

- -

El protocolo iterable le permite a los objetos en JavaScript definir o personalizar su comportamiento de iteración, como por ejemplo qué valores son iterados dentro de una sentencia {{jsxref("Statements/for...of", "for..of")}}. Algunos objetos nativos, como {{jsxref("Array")}} o {{jsxref("Map")}}, tienen un comportamiento de iteración por defecto, mientras otros objetos (como por ejemplo {{jsxref("Object")}}) no.

- -

Para ser iterable, un objeto debe implementar el método @@iterator, lo cual significa que el objeto (o uno de los objetos dentro de su cadena de prototipos) debe tener una propiedad con un identificador {{jsxref("Symbol")}}.iterator:

- - - - - - - - - - - - - - -
PropiedadValor
[Symbol.iterator]Una función sin argumentos que retorna un objeto, de acuerdo al protocolo iterador.
- -

Siempre que un objeto necesite ser iterado (como al comienzo de un for..of loop), su método @@iterator es llamado sin argumentos, y el iterador retornado es usado para obtener los valores a ser iterados.

- -

El protocolo iterador

- -

El protocolo iterador define una forma estándar que permite producir una secuencia de valores (sean estos finitos o infinitos).

- -

Un objeto es un iterador cuando este implementa un método next() con la siguiente semántica:

- - - - - - - - - - - - -
PropiedadValor
next -

Una función sin argumentos que retorna un objeto con dos propiedades:

- -
    -
  • done (boleano) - -
      -
    • Su valor es true si el iterador está más allá del final de la secuencia iterada. En este caso value opcionalmente especifica el valor retornado por el iterador. Los valores retornados son explicados aquí.
    • -
    • Su valor es false si el iterador pudo producir el siguiente valor en la secuencia. Esto es equivalente a no especificar la propiedad done en su totalidad.
    • -
    -
  • -
  • value - cualquier valor de JavaScript retornado por el iterador. Puede ser omitido cuando el valor de done es true.
  • -
-
- -

Algunos iteradores son a su vez iterables:

- -
var someArray = [1, 5, 7];
-var someArrayEntries = someArray.entries();
-
-someArrayEntries.toString();           // "[object Array Iterator]"
-someArrayEntries === someArrayEntries[Symbol.iterator]();    // true
-
- -

Ejemplos de protocolos de iteración

- -

Un {{jsxref("String")}} es un ejemplo de un objeto iterable nativo:

- -
var someString = "hi";
-typeof someString[Symbol.iterator];          // "function"
-
- -

Para objetos String su iterador por defecto retorna cada uno de sus caracteres, uno a la vez:

- -
var iterator = someString[Symbol.iterator]();
-iterator + "";                               // "[object String Iterator]"
-
-iterator.next();                             // { value: "h", done: false }
-iterator.next();                             // { value: "i", done: false }
-iterator.next();                             // { value: undefined, done: true }
- -

En algunas estructuras nativas del lenguaje como en el caso del operador de propagación spread operator, el mismo protocolo de iteración está presente en su parte interna:

- -
[...someString]                              // ["h", "i"]
- -

Podemos redefinir el comportamiento de iteración creando nuestro propio  @@iterator:

- -
// es necesario el uso de un objeto creado a partir de la función constructora String,
-// ya que al usar un string primitivo el auto-boxing generaría una referencia temporal
-// a un iterador que luego es descartado en el unbox
-
-var someString = new String("hi");
-
-someString[Symbol.iterator] = function() {
-  return { // este es el objeto iterador que retorna un único elemento, la cadena string "bye"
-    next: function() {
-      if (this._first) {
-        this._first = false;
-        return { value: "bye", done: false };
-      } else {
-        return { done: true };
-      }
-    },
-    _first: true
-  };
-};
-
- -

Nótese que al redefinir un @@iterator se puede afectar el comportamiento  de construcciones nativas que usan el protocolo de iteración:

- -
[...someString];                              // ["bye"]
-someString + "";                              // "hi"
-
- -

Ejemplos de iterables

- -

Iterables nativos

- -

{{jsxref("String")}}, {{jsxref("Array")}}, {{jsxref("TypedArray")}}, {{jsxref("Map")}} y {{jsxref("Set")}} son objetos iterables nativos, ya que en su objeto prototipo existe un método @@iterator.

- -

Iterables personalizados

- -

Podemos crear nuestros propios iterables de la siguiente manera:

- -
var myIterable = {};
-myIterable[Symbol.iterator] = function* () {
-    yield 1;
-    yield 2;
-    yield 3;
-};
-[...myIterable]; // [1, 2, 3]
-
- -

APIs nativas que aceptan iterables

- -

Existen varios APIs que aceptan iterables, como en el caso de: {{jsxref("Map", "Map([iterable])")}}, {{jsxref("WeakMap", "WeakMap([iterable])")}}, {{jsxref("Set", "Set([iterable])")}} y {{jsxref("WeakSet", "WeakSet([iterable])")}}:

- -
var myObj = {};
-new Map([[1,"a"],[2,"b"],[3,"c"]]).get(2);               // "b"
-new WeakMap([[{},"a"],[myObj,"b"],[{},"c"]]).get(myObj); // "b"
-new Set([1, 2, 3]).has(3);                               // true
-new Set("123").has("2");                                 // true
-new WeakSet(function*() {
-    yield {};
-    yield myObj;
-    yield {};
-}()).has(myObj);                                         // true
-
- -

De igual manera {{jsxref("Promise.all", "Promise.all(iterable)")}}, {{jsxref("Promise.race", "Promise.race(iterable)")}}, y {{jsxref("Array.from", "Array.from()")}}.

- -

Sintaxis que espera un iterable

- -

Algunas declaraciones y expresiones esperan iterables, por ejemplo el bucle for-of, el operador de propagación spread operator,  la expresión Yield*, y la asignación desestructurada destructuring assignment.

- -
for(let value of ["a", "b", "c"]){
-    console.log(value);
-}
-// "a"
-// "b"
-// "c"
-
-[..."abc"]; // ["a", "b", "c"]
-
-function* gen(){
-  yield* ["a", "b", "c"];
-}
-
-gen().next(); // { value:"a", done:false }
-
-[a, b, c] = new Set(["a", "b", "c"]);
-a // "a"
-
-
- -

Iterables mal definidos

- -

Un método @@iterator iterable que no retorne un objeto iterador no está correctamente definido, por lo tanto al ejecutarlo de esta manera podría resultar en excepciones en tiempo de ejecución y otros errores:

- -
var nonWellFormedIterable = {}
-nonWellFormedIterable[Symbol.iterator] = () => 1
-[...nonWellFormedIterable] // TypeError: [] is not a function
-
- -

Ejemplos de iteradores

- -

Iterador simple

- -
function makeIterator(array){
-    var nextIndex = 0;
-
-    return {
-       next: function(){
-           return nextIndex < array.length ?
-               {value: array[nextIndex++], done: false} :
-               {done: true};
-       }
-    };
-}
-
-var it = makeIterator(['yo', 'ya']);
-
-console.log(it.next().value); // 'yo'
-console.log(it.next().value); // 'ya'
-console.log(it.next().done);  // true
-
- -

Iterador infinito

- -
function idMaker(){
-    var index = 0;
-
-    return {
-       next: function(){
-           return {value: index++, done: false};
-       }
-    };
-}
-
-var it = idMaker();
-
-console.log(it.next().value); // '0'
-console.log(it.next().value); // '1'
-console.log(it.next().value); // '2'
-// ...
-
- -

Con un generador

- -
function* makeSimpleGenerator(array){
-    var nextIndex = 0;
-
-    while(nextIndex < array.length){
-        yield array[nextIndex++];
-    }
-}
-
-var gen = makeSimpleGenerator(['yo', 'ya']);
-
-console.log(gen.next().value); // 'yo'
-console.log(gen.next().value); // 'ya'
-console.log(gen.next().done);  // true
-
-
-
-function* idMaker(){
-    var index = 0;
-    while(true)
-        yield index++;
-}
-
-var gen = idMaker();
-
-console.log(gen.next().value); // '0'
-console.log(gen.next().value); // '1'
-console.log(gen.next().value); // '2'
-// ...
-
- -

¿Un objeto generador es un iterador o un iterable?

- -

Un objeto iterador es tanto un iterador como un iterable:

- -
var aGeneratorObject = function*(){
-    yield 1;
-    yield 2;
-    yield 3;
-}();
-typeof aGeneratorObject.next;
-// "function", ya que tiene un método next, por lo tanto es un iterador
-typeof aGeneratorObject[Symbol.iterator];
-// "function", ya que tiene un método @@iterator, por lo tanto es un iterable
-aGeneratorObject[Symbol.iterator]() === aGeneratorObject;
-// true, ya que su método @@iterator retorna a sí mismo (un iterador), por lo tanto es un iterable bien formado
-[...aGeneratorObject];
-// [1, 2, 3]
-
- -

Especificaciones

- - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-iteration', 'Iteration')}}{{Spec2('ES6')}}Definición inicial.
- -

Temas relacionados

- -

Para información adicional acerca de generadores generators en ES6, puede visitar la  página específica sobre este tema.

diff --git a/files/es/web/javascript/referencia/modo_estricto/index.html b/files/es/web/javascript/referencia/modo_estricto/index.html deleted file mode 100644 index d6a596b3e5..0000000000 --- a/files/es/web/javascript/referencia/modo_estricto/index.html +++ /dev/null @@ -1,368 +0,0 @@ ---- -title: Modo Estricto -slug: Web/JavaScript/Referencia/Modo_estricto -tags: - - ECMAScript5 - - Guía - - JavaScript - - Modo estricto -translation_of: Web/JavaScript/Reference/Strict_mode ---- -
{{JsSidebar("More", "Más")}}
- -
A veces, verás que llaman {{Glossary("Sloppy_mode", "sloppy mode — modo poco riguroso")}} al modo no estricto predeterminado. Este no es un término oficial, pero tenlo en cuenta, por si acaso.
- -

El modo estricto de ECMAScript 5 es una forma de elegir una variante restringida de JavaScript, así implícitamente se deja de lado el modo poco riguroso. El modo estricto no es sólo un subconjunto: intencionalmente tiene diferencia semántica del código normal. Los navegadores que no admiten el modo estricto ejecutarán el código con un comportamiento diferente a los que sí lo soportan, por lo tanto no confíes en el modo estricto sin antes hacer pruebas de sus características más relevantes. Los modos estricto y no estricto pueden coexistir, por lo tanto el código se puede transformar a modo estricto incrementalmente.

- -

El modo estricto tiene varios cambios en la semántica normal de JavaScript:

- -
    -
  1. Elimina algunos errores silenciosos de JavaScript cambiándolos para que lancen errores.
  2. -
  3. Corrige errores que hacen difícil para los motores de JavaScript realizar optimizaciones: a veces, el código en modo estricto puede correr más rápido que un código idéntico pero no estricto.
  4. -
  5. Prohíbe cierta sintaxis que probablemente sea definida en futuras versiones de ECMAScript.
  6. -
- -

Ve transición a modo estricto, si deseas cambiar tu código para trabajar en la variante estricta de JavaScript.

- -

Invocar el modo estricto

- -

El modo estricto se aplica a un script completo o a funciones individuales. No se aplica a bloques entre corchetes {}; intentar aplicarlo en tales contextos no hace nada. Código eval, código Function, atributos de controladores de eventos, cadenas pasadas a setTimeout, y similares son scripts enteros, de modo que invocar modo estricto en tales contextos funciona como se espera.

- -

Modo estricto para scripts

- -

Para invocar el modo estricto en todo un script, escribe exactamente "use strict"; (o 'use strict';) antes de cualquier otra expresión.

- -
// Sintaxis del modo estricto para todo el script
-'use strict';
-var v = "¡Hola! ¡Estoy en modo estricto para script!";
-
- -

Esta sintaxis tiene un problema que ya ha afectado a cierta página bien conocida: no es posible concatenar ciegamente scripts conflictivos entre sí. Si concatena un script en modo estricto con otro que no es, la concatenación de ambos producirá código en modo estricto. Lo contrario también es cierto: código en modo no estricto mas código estricto produce código que no es estricto. Concatenar scripts no produce problemas si todos están en modo estricto (o si todos están en modo no estricto). El problema es mezclar scripts en modo estricto con scripts en modo no estricto. Por eso se recomienda habilitar el modo estricto a nivel de función solamente (al menos durante el periodo de transición de un programa).

- -

Otra opción es envolver el contenido completo del script en una función y tener esa función externa en modo estricto. Así se elimina el problema de la concatenación, pero entonces tienes que hacerte cargo de exportar explícitamente las variables globales fuera del ámbito de la función.

- -

Modo estricto para funciones

- -

De igual forma, para invocar el modo estricto para una función, escribe exactamente "use strict"; (o 'use strict';) en el cuerpo de la función antes de cualquier otra expresión.

- -
function strict() {
-  // Sintaxis del modo estricto a nivel de función
-  'use strict';
-  function nested() { return "¡Y yo también!"; }
-  return "¡Hola!  ¡Soy una función en modo estricto!  " + nested();
-}
-function notStrict() { return "Yo no soy estricto."; }
-
- -

Modo estricto para módulos

- -

ECMAScript 2015 introdujo módulos y por tanto una tercera manera de entrar en el modo estricto. Todo el contenido de los módulos de JavaScript se encuentra automáticamente en modo estricto, sin necesidad de una declaración para iniciarlo.

- -
function strict() {
-    // debido a que este es un módulo, soy estricto por omisión
-}
-export default strict;
-
- -

Cambios en modo estricto

- -

El modo estricto cambia la sintaxis y el comportamiento en tiempo de ejecución. Los cambios generalmente caen dentro de estas categorías: cambios que convierten equivocaciones en errores (como errores de sintaxis o en tiempo de ejecución), cambios que simplifican cómo se calcula el nombre de una variable particular, cambios que simplifican el uso de eval y arguments, cambios que hacen más fácil escribir JavaScript "seguro", y cambios que anticipan la evolución futura de ECMAScript.

- -

Convertir equivocaciones en errores

- -

El modo estricto cambia algunos errores de sintaxis tolerados en modo no estricto y los convierte en errores. JavaScript fue diseñado de modo que fuera fácil para programadores novatos, y puede haber operaciones semánticas que deberían ser errores pero son tratadas como libres de error. A veces esto sirve para solucionar el problema en el momento, pero puede crear problemas más graves en el futuro. El modo estricto trata las equivocaciones como errores, para que se puedan descubrir y subsanar inmediatamente.

- -

En primer lugar, el modo estricto hace imposible crear variables globales por accidente. En JavaScript no estricto, si se escribe mal una variable en una asignación, se creará una nueva propiedad en el objeto global y el código continuará "trabajando" como si nada (aunque es posible que el código así escrito falle en el futuro, en concreto, en JavaScript moderno). En modo estricto, cualquier asignación que produzca variables globales por accidente lanzará un error:

- -
'use strict';
-                       // Asumiendo que exista una variable global llamada mistypedVariable
-mistypeVariable = 17;  // esta línea lanza un ReferenceError debido a
-                       // una errata en el nombre de la variable
-
- -

En segundo lugar, el modo estricto lanza una excepción en asignaciones que de otro modo fallarían silenciosamente. Por ejemplo, NaN es una variable global que no puede ser asignada. En un código normal, asignar a NaN no tiene efecto; el programador no recibe ningún mensaje de error. En cambio, en modo estricto, si se intenta asignar un valor a NaN, el programador recibirá una excepción. Cualquier asignación que falle silenciosamente en código normal (asignaciones a una propiedad de no escritura, asignaciones a una propiedad captadora, asignaciones a una nueva propiedad o a un objecto {{jsxref("Global_Objects/Object/preventExtensions", "no extensible")}}) lanzará una excepción en modo estricto:

- -
'use strict';
-
-// Asignación a una no-escritura global
-var undefined = 5; // lanza un TypeError
-var Infinity = 5; // lanza un TypeError
-
-// Asignación a una propiedad de no-escritura
-var obj1 = {};
-Object.defineProperty(obj1, "x", { value: 42, writable: false });
-obj1.x = 9; // lanza un TypeError
-
-// Asignación a una propiedad de tipo getter
-var obj2 = { get x() { return 17; } };
-obj2.x = 5; // lanza un TypeError
-
-// Asignación a una nueva propiedad en un objeto no extensible
-var fixed = {};
-Object.preventExtensions(fixed);
-fixed.newProp = "ohai"; // lanza un TypeError
-
- -

En tercer lugar, el modo estricto lanza una excepción al intentar eliminar propiedades no eliminables (mientra que en código normal el intento no tendría ningún efecto):

- -
'use strict';
-delete Object.prototype; // lanza un TypeError
-
- -

En cuarto lugar, la versión de modo estricto anterior a Gecko 34 requiere que todas las propiedades nombradas en un objeto sean únicas. En código normal se pueden duplicar nombres, siendo el último el que determina el valor de la propiedad. Pero como el último es el único que hace algo, la duplicidad da origen a errores si el código se modifica para cambiar el valor de la propiedad. Duplicar nombres de propiedades es un error de sintaxis en modo estricto.

- -
-

Este ya no es el caso en ECMAScript 2015 (error 1041128).

-
- -
'use strict';
-var o = { p: 1, p: 2 }; // !!! error de sintaxis
-
- -

En quinto lugar, el modo estricto requiere que los nombres de los parámetros de una función sean únicos. En código normal, el último argumento repetido oculta argumentos anteriores con el mismo nombre. Estos argumentos permanecen disponibles a través de arguments[i], de modo que no son completamente inaccesibles. Aun así, esta ocultación tiene poco sentido y es probablemente indeseable (pues puede ocultar, por ejemplo, un error al teclear una letra). Por lo tanto, en modo estricto, duplicar nombres de argumentos es un error de sintaxis:

- -
function sum(a, a, c) { // !!! error de sintaxis
-  'use strict';
-  return a + a + c; // incorrecto si este código se ejecutó
-}
-
- -

En sexto lugar, en modo estricto ECMAScript 5 se prohíbe la notación octal. La notación octal no es parte de ECMAScript 5, pero está soportada en todos los navegadores al poner como prefijo un cero al número: 0644 == 420 y "\045" === "%". En ECMAScript 2015, el número octal es compatible con el prefijo de un número con "0o". Es decir:

- -
var a = 0o10; // ES2015: Octal
- -

Los programadores novatos a veces creen que un prefijo cero inicial no tiene un significado semántico, por lo que lo usan como dispositivo de alineación, ¡pero esto cambia el significado del número! Una sintaxis de cero a la izquierda para los octales rara vez es útil y se puede usar por error, por lo que el modo estricto lo convierte en un error de sintaxis:

- -
'use strict';
-var sum = 015 + // !!! error de sintaxis
-          197 +
-          142;
-
-var sumWithOctal = 0o10 + 8;
-console.log(sumWithOctal); // 16
-
- -

Séptimo, el modo estricto en ECMAScript 2015 prohíbe establecer propiedades en valores {{Glossary("Primitive", "primitivos")}}. La sintaxis octal rara vez es útil y se puede usar equivocadamente, de modo que en modo estricto, utilizar notación octal lanza un {{jsxref("TypeError")}}:

- -
(function() {
-'use strict';
-
-false.true = '';         // TypeError
-(14).sailing = 'home';   // TypeError
-'with'.you = 'far away'; // TypeError
-
-})();
- -

Simplificación en el uso de variables

- -

El modo estricto simplifica el modo en que el nombre de una variable es asignado a un variable particular en el código. Muchas optimizaciones del compilador se basan en la habilidad para decir el lugar específico en que una variable está almacenada, lo cual es crítico para una optimización completa del código JavaScript. Algunas veces JavaScript hace que esta asignación básica del nombre de una variable y su valor no suceda hasta que no se está en tiempo de ejecución. El modo estricto elimina muchos de los casos en los que esto pasa, de modo que el compilador puede optimizar mejor el código que es estricto.

- -

Primero, el modo estricto prohíbe el uso de with. El problema con with es que cualquier nombre dentro del bloque pude ser asignado a una propiedad del objecto pasado como argumento, o a una variable en su ámbito circundante (o incluso global), en tiempo de ejecución: es imposible saber de antemano cuál será. El modo estricto hace que el uso de with sea un error de sintaxis, de modo que no hay oportunidad de que una variable dentro de un with se refiera a una dirección desconocida en tiempo de ejecución:

- -
'use strict';
-var x = 17;
-with (obj) { // !!! error de sintaxis
-  // Si este no estuviera un modo estricto, ¿sería var x?, o
-  // ¿sería obj.x en su lugar?  Es imposible en general
-  // decirlo sin ejecutar el código, por lo que el nombre no
-  // se puede optimizar.
-  x;
-}
-
- -

En vez de usar with, existe la simple alternativa de asignar el objecto a una variable de nombre más corto, y después acceder a la propiedad correspondiente de esa variable.

- -

Segundo, el uso de eval en modo estricto no introduce nuevas variables en el ámbito circundante. En código normal, eval("var x;") introduce una variable x dentro de la función circundante o el ámbito global. Esto significa que, en general, en una función que contiene una llamada a eval en cada nombre que no se refiera a un argumento o a una variable local, se debe asignar a una definición en particular en tiempo de ejecución (debido a que eval puedo haber introducido una nueva variable que podría ocultar una variable externa). En modo estricto, eval crea variables solo para el código que se está evaluando, por lo que eval no puede afectar si un nombre se refiere a una variable externa o a alguna variable local:

- -
var x = 17;
-var evalX = eval("'use strict'; var x = 42; x");
-console.assert(x === 17);
-console.assert(evalX === 42);
-
- -

En el ejemplo anterior, si la función eval es invocada por una expresión de la forma eval(...) en código de modo estricto, el código será evaluado en modo estricto. El código puede explícitamente invocar el modo estricto, pero no es necesario.

- -
function strict1(str) {
-  'use strict';
-  return eval(str); // str será tratado como código de modo estricto
-}
-function strict2(f, str) {
-  'use strict';
-  return f(str); // no eval(...): str es estricto si y solo
-                 // si invoca el modo estricto
-}
-function nonstrict(str) {
-  return eval(str); // str es estricto si y solo
-                    // si invoca el modo estricto
-}
-
-strict1("'¡Código en modo estricto!'");
-strict1("'use strict'; '¡Código en modo estricto!'");
-estricto2(eval, "'Código no estricto'");
-strict2(eval, "'use strict'; '¡Código en modo estricto!'");
-nonstrict("'Código no estricto'");
-nonstrict("'use strict'; '¡Código en modo estricto!'");
-
- -

Así los nombres en modo estricto usando eval se comportan idénticamente a los nombres en modo estricto no siendo evaluados como resultado de eval.

- -

Tercero, el modo estricto prohíbe eliminar nombres planos. De este modo, delete name produce un error de sintaxis.

- -
'use strict';
-
-var x;
-delete x; // !!! error de sintaxis
-
-eval("var y; delete y;"); // !!! error de sintaxis
- -

Haciendo eval y arguments más simples

- -

El modo estricto hace que el uso de arguments y eval sea más intuitivo. Ambos envuelven un considerable misticismo en código normal: eval al añadir o remover los enlaces y cambiar los valores de dichos enlaces, y arguments al poder sustituir los nombres de los argumentos por propiedades indexadas. El modo estricto ofrece un gran paso al tratar a eval y a arguments como palabras clave, aunque soluciones finales no estarán disponibles hasta futuras ediciones de ECMAScript.

- -

Primero, las palabras eval y arguments no se pueden ligar o asignar en la sintaxis del lenguaje. Cualquier intento producirá un error de sintaxis:

- -
'use strict';
-eval = 17;
-arguments++;
-++eval;
-var obj = { set p(arguments) { } };
-var eval;
-try { } catch (arguments) { }
-function x(eval) { }
-function arguments() { }
-var y = function eval() { };
-var f = new Function("arguments", "'use strict'; return 17;");
-
- -

Segundo, el modo estricto no permite usar alias en elementos del objecto arguments creados dentro de la función. En una función en código normal cuyo primer parámetro sea args, si se cambia el valor de args también se cambiará de arguments[0], y viceversa (a menos que no se proporcionen parámetros o se elimine arguments[0]). El objecto arguments para el modo estricto almacena los parámetros originales cuando la función es invocada. arguments[i] no guarda el valor del correspondiente nombre del parámetro, ni tampoco un parámetro con nombre guarda el valor correspondiente de arguments[i].

- -
function f(a) {
-  'use strict';
-  a = 42;
-  return [a, arguments[0]];
-}
-var pair = f(17);
-console.assert(pair[0] === 42);
-console.assert(pair[1] === 17);
-
- -

Tercero, arguments.callee no está soportado. En código normal, arguments.callee se refiere a la función envolvente. Este caso de uso es débil: ¡simplemente nombra la función envolvente!. Además arguments.callee merma el desempeño de funciones en línea pues debe ser posible proveer la referencia de la función que llamó a la función original cada vez que se usa arguments.callee. arguments.callee en modo estricto es una propiedad no eliminable y lanza una excepción cuando se le asigna un valor o se intenta regresar su valor.

- -
'use strict';
-var f = function() { return arguments.callee; };
-f(); // lanza un TypeError
-
- -

- -

El modo estricto hace más fácil el escribir código "seguro" en JavaScript. Algunos sitios web ofrecen ahora medios para que los usuarios codifiquen en JavaScript para que el código corra en el sitio en beneficio de otros usuarios. JavaScript en los navegadores puede acceder a la información privada del usuario, por lo que dicho JavaScript se debe transformar parcialmente antes de ejecutarse, para censurar el acceso a funciones prohibidas. La flexibilidad de JavaScript hace que efectivamente sea imposible hacer esto sin muchas comprobaciones en tiempo de ejecución. La flexibilidad de JavaScript hace casi imposible hacer esto sin hacer revisiones en tiempo de ejecución. Unos pocos ajustes del modo estricto, además de requerir que el JavaScript enviado por el usuario sea código de modo estricto y que se invoque de cierta manera, reducen sustancialmente la necesidad de esas comprobaciones en tiempo de ejecución.

- -

Primero, el valor this pasado a una función en modo estricto no forzosamente debe ser un objeto (es decir, "empaquetado"). Para una función normal, this siempre es un objeto: o el objeto proporcionado si se llama con un this con valor de objeto; el valor, empaquetado, si se llama con un booleano, una cadena o un número this; o el objeto global si se llama con un undefined o null this. (Usar {{jsxref("Global_Objects/Function/call", "call")}}, {{jsxref("Global_Objects/Function/apply", "apply")}}, o {{jsxref("Global_Objects/Function/bind", "bind")}} para especificar un valor del this particular). Este empaquetado automático al pasar valores a una función tiene un costo en el rendimiento; no solo eso, si no que al exponer el objeto global en los navegadores es un riesgo de seguridad, debido a que el objeto global provee acceso a una funcionalidad que el código de JavaScript "seguro" debe restringir. Así, en una función en modo estricto , el valor de this no está empaquetado dentro de un objecto, y si no se especifica, this toma el valor de undefined.

- -
'use strict';
-function fun() { return this; }
-console.assert(fun() === undefined);
-console.assert(fun.call(2) === 2);
-console.assert(fun.apply(null) === null);
-console.assert(fun.call(undefined) === undefined);
-console.assert(fun.bind(true)() === true);
-
- -

Esto significa, entre otras cosas, que en los navegadores no es posible hacer referencia al objeto window a través de this dentro de una función en modo estricto.

- -

Segundo, en modo estricto ya no es posible "recorrer" la pila de JavaScript a través de extensiones de ECMAScript. En código normal con estas extensiones, cuando una función llamada fun está en medio de su ejecución, fun.caller es la función que más recientemente llamó a fun, y fun.arguments son los parámetros para esa invocación de fun. Ambas extensiones son problemáticas para JavaScript "seguro", debido a que permiten acceder a funciones "privilegiadas" y sus (potencialmente inseguros) argumentos. Si fun está en modo estricto, tanto fun.caller como fun.arguments son propiedades no eliminables que lanzan una excepción cuando se establecen o recuperan:

- -
function restricted() {
-  'use strict';
-  restricted.caller;    // lanza un TypeError
-  restricted.arguments; // lanza un TypeError
-}
-function privilegedInvoker() {
-  return restricted();
-}
-privilegedInvoker();
-
- -

Tercero, en funciones de modo estricto, el objeto arguments no provee acceso a las variables usadas al llamar a la función. En algunas implementaciones antiguas de ECMAScript, arguments.caller era un objeto cuyas propiedades apuntaban a las variables en la función. Esto es una amenaza de seguridad por que rompe la habilidad de ocultar valores privilegiados a través de la abstracción de la función; además, frena algunas optimizaciones. Por estas razones los navegadores modernos no la implementan. Por su funcionalidad a lo largo de los años, arguments.caller en una función de modo estricto es una propiedad que lanza una excepción cuando se usa.

- -
'use strict';
-function fun(a, b) {
-  'use strict';
-  var v = 12;
-  return arguments.caller; // lanza un TypeError
-}
-fun(1, 2); // no expone v (o a o b)
-
- -

Preparando el camino para futuras versiones de ECMAScript

- -

Las futuras versiones de ECMAScript introducirán nuevos cambios, y el modo estricto en ECMAScript 5 aplica algunos de esos cambios para hacer una transición más suave. Será más fácil hacer cambios si las bases de esos cambios son prohibidas en modo estricto.

- -

Primero, en modo estricto una lista de identificadores se convierte en palabras reservadas. Estas palabras son implements, interface, let, package, private, protected, public, static, y yield. De modo que en modo estricto, no se pueden usar estas palabras para nombrar variables o argumentos.

- -
function package(protected) { // !!!
-  'use strict';
-  var implements; // !!!
-
-  interface: // !!!
-  while (true) {
-    break interface; // !!!
-  }
-
-  function private() { } // !!!
-}
-function fun(static) { 'use strict'; } // !!!
-
-
- -

Dos advertencias específicas de Mozilla: Primero, si tu código esta escrito en JavaScript 1.7 o mayor (por ejemplo en código chrome o cuando se usa bien <script type="">) y el código esta en modo estricto, let y yield tienen la funcionalidad que han tenido desde que esas palabras clave se introdujeron por primera vez. Pero el código en modo estricto en la web, cargado con <script src=""> o <script>...</script>, no podrá usar let/yield como identificadores. Segundo, mientras que ES5 incondicionalmente reserva las palabras class, enum, export, extends, import y super, Mozilla Firefox 5 solo las reserva en modo estricto.

- -

En segundo lugar, el modo estricto prohíbe las declaraciones de función, no en el nivel superior de un script o función. En el modo normal de los navegadores, las declaraciones de función se permiten "en todas partes". ¡Esto no es parte de ES5 (ni siquiera de ES3)! Es una extensión con semántica incompatible en diferentes navegadores. Ten en cuenta que en ES2015 se permiten declaraciones de función fuera del nivel superior.

- -
'use strict';
-if (true) {
-  function f() { } // !!! error de sintaxis
-  f();
-}
-
-for (var i = 0; i < 5; i++) {
-  function f2() { } // !!! error de sintaxis
-  f2();
-}
-
-function baz() {   // legal
-  function eit() { } // también legal
-}
-
- -

Esta prohibición no es el modo estricto propiamente dicho porque tales declaraciones de función son una extensión de ES5 básico. Pero es la recomendación del comité ECMAScript y los navegadores la implementarán.

- -

Modo estricto en navegadores

- -

La mayoría de los navegadores ya implementan el modo estricto. Sin embargo, no dependas ciegamente de él, ya que todavía hay numerosas Versiones del navegador utilizadas en la naturaleza que solo tienen soporte parcial para el modo estricto o no lo admiten en absoluto (por ejemplo, Internet Explorer por debajo de la versión 10). El modo estricto cambia la semántica. Depender de esos cambios provocará equivocaciones y errores en los navegadores que no implementan el modo estricto. Ten cuidado al usar el modo estricto y respalda la dependencia del modo estricto con pruebas de funciones que comprueben si se implementan las partes relevantes del modo estricto. Finalmente, asegúrate de probar tu código en navegadores que admitan y no admitan el modo estricto. Si realizas tus pruebas solo en navegadores que no admiten el modo estricto, es muy probable que tengas problemas en los navegadores que sí lo hacen, y viceversa.

- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-strict-mode-code', 'Código en modo estricto')}}
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/aggregateerror/index.html b/files/es/web/javascript/referencia/objetos_globales/aggregateerror/index.html deleted file mode 100644 index 524d0f9f5a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/aggregateerror/index.html +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: AggregateError -slug: Web/JavaScript/Referencia/Objetos_globales/AggregateError -tags: - - AggregateError - - Clase - - Experimental - - Interfaz - - JavaScript -translation_of: Web/JavaScript/Reference/Global_Objects/AggregateError ---- -
{{JSRef}}
- -

El objeto AggregateError representa un error cuando se deben agrupar varios errores en un solo error. Se lanza cuando una operación necesita informar de varios errores, por ejemplo, {{JSxRef("Promise.any()")}}, cuando todas las promesas que se le pasan son rechazadas.

- -

Constructor

- -
-
{{JSxRef("Global_Objects/AggregateError/AggregateError", "AggregateError()")}}
-
Crea un nuevo objeto AggregateError.
-
- -

Propiedades de la instancia

- -
-
{{JSxRef("Error.prototype.message", "AggregateError.prototype.message")}}
-
Mensaje de error, el valor predeterminado es "" (la cadena vacía).
-
{{JSxRef("Error.prototype.name", "AggregateError.prototype.name")}}
-
Nombre del error, el valor predeterminado es AggregateError.
-
- -

Ejemplos

- -

Capturar un error agregado

- -
Promise.any([
-  Promise.reject(new Error("algún error")),
-]).catch(e => {
-  console.log(e instanceof AggregateError); // true
-  console.log(e.message);                   // "Todas las promesas rechazadas"
-  console.log(e.name);                      // "AggregateError"
-  console.log(e.errors);                    // [ Error: "algún error" ]
-});
-
- -

Crear un AggregateError

- -
try {
-  throw new AggregateError([
-    new Error("algún error"),
-  ], 'Hola');
-} catch (e) {
-  console.log(e instanceof AggregateError); // true
-  console.log(e.message);                   // "Hola"
-  console.log(e.name);                      // "AggregateError"
-  console.log(e.errors);                    // [ Error: "algún error" ]
-}
-
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('Promise.any', '#sec-aggregate-error-objects', 'AggregateError')}}
- -

Compatibilidad del navegador

- -
- - -

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

-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/@@iterator/index.html b/files/es/web/javascript/referencia/objetos_globales/array/@@iterator/index.html deleted file mode 100644 index 65ac581204..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/@@iterator/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: 'Array.prototype[@@iterator]()' -slug: Web/JavaScript/Referencia/Objetos_globales/Array/@@iterator -tags: - - Array - - ECMAScript 2015 - - Iterator - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@iterator ---- -
{{JSRef}}
- -

El valor inicial de la propiedad @@iterator es el mismo objeto de función que el valor inicial de la propiedad {{jsxref("Array.prototype.values()", "values()")}}.

- -

Sintaxis

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

Valor de retorno

- -

El valor inicial dado por el iterador {{jsxref("Array.prototype.values()", "values()")}}. Por defecto, usar arr[Symbol.iterator] devolverá la función {{jsxref("Array.prototype.values()", "values()")}}.

- -

Ejemplos

- -

Iteración usando el bucle for...of 

- -
var arr = ['w', 'y', 'k', 'o', 'p'];
-var eArr = arr[Symbol.iterator]();
-// nuestro navegador debe ser compatible con el bucle for..of
-// y variables let-scoped en bucles for
-for (let letter of eArr) {
-  console.log(letter);
-}
-
- -

Iteración 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
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}}{{Spec2('ES2015')}}Definición inicial..
{{SpecName('ESDraft', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
- - -

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/@@species/index.html b/files/es/web/javascript/referencia/objetos_globales/array/@@species/index.html deleted file mode 100644 index 2f15ad345a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/@@species/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: 'get Array[@@species]' -slug: Web/JavaScript/Referencia/Objetos_globales/Array/@@species -tags: - - Array - - JavaScript - - Prototipo - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@species ---- -
{{JSRef}}
- -

La propiedad de acceso Array[@@species] devuelve el constructor de Array.

- -

Sintaxis

- -
Array[Symbol.species]
-
- -

Valor de retorno

- -

El constructor {{jsxref("Array")}}.

- -

Descripción

- -

La propiedad de acceso species devuelve el constructor predeterminado para objetos Array. Los constructores de subclase pueden anularlo para cambiar la asignación del constructor.

- -

Ejemplos

- -

La propiedad species devuelve la función de constructor predeterminada, que es el constructor Array para objetos Array:

- -
Array[Symbol.species]; // function Array()
- -

In a derived collection object (e.g. your custom array MyArray), the MyArray species is the MyArray constructor. However, you might want to overwrite this, in order to return parent Array objects in your derived class methods:

- -
class MyArray extends Array {
-  // Overwrite MyArray species to the parent Array constructor
-  static get [Symbol.species]() { return Array; }
-}
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-get-array-@@species', 'get Array [ @@species ]')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-get-array-@@species', 'get Array [ @@species ]')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
- - -

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/@@unscopables/index.html b/files/es/web/javascript/referencia/objetos_globales/array/@@unscopables/index.html deleted file mode 100644 index 43dc771ae7..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/@@unscopables/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: 'Array.prototype[@@unscopables]' -slug: Web/JavaScript/Referencia/Objetos_globales/Array/@@unscopables -tags: - - Array - - JavaScript - - Matriz - - Propiedad - - Prototipo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@unscopables ---- -
{{JSRef}}
- -

La propiedad de símbolo @@unscopable contiene nombres de propiedad que no se incluyeron en el estándar ECMAScript antes de la versión ES2015. Estas propiedades se excluyen de los enlaces de declaración with.

- -

Sintaxis

- -
arr[Symbol.unscopables]
- -

Descripción

- -

 

- -

Las propiedades de matriz predeterminadas que se excluyen de los enlaces with son: copyWithin, entries, fill, find, findIndex, includes, keys, y values.

- -

Consulte {{jsxref("Symbol.unscopables")}} para saber cómo configurar unscopables para sus propios objetos.

- -

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

- -

Ejemplos

- -

El siguiente código funciona bien en ES5 y más abajo. Sin embargo, en ECMAScript 2015 y posterior, se introdujo el método {{jsxref("Array.prototype.keys()")}}. Eso significa que dentro de los entornos with, las "keys" ahora serían el método y no la variable. Aquí es donde entra en juego la propiedad de símbolo @@unscopables Array.prototype[@@unscopables] incorporada y evita que algunos de los métodos Array tengan un alcance en la instrucción with.

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

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
- - -

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/concat/index.html b/files/es/web/javascript/referencia/objetos_globales/array/concat/index.html deleted file mode 100644 index dc7dfc999d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/concat/index.html +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: Array.prototype.concat() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/concat -tags: - - Array - - JavaScript - - Métodos - - Prototipo - - Referencia - - array.concat - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/concat ---- -
{{JSRef}}
- -

El método concat() se usa para unir dos o más arrays. Este método no cambia los arrays existentes, sino que devuelve un nuevo array.

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

Sintaxis

- -
var nuevo_array = viejo_array.concat(valor1[, valor2[, ...[, valorN]]])
- -

Parámetros

- -
-
valorN {{optional_inline}}
-
Arrays y/o valores a concatenar en el nuevo array. Ver la descripción posterior para más detalles.
-
- -

Valor devuelto

- -
-
Una nueva instancia de {{jsxref("Array")}}.
-
- -

Descripción

- -

El método concat crea un nuevo array que consta de los elementos del objeto que lo llama, seguido, en orden de ingreso, por los elementos de cada parámetro (en caso de que el parámetro sea un array), o el parámetro mismo (en caso de que no sea un array). No se aplica de forma recursiva a parámetros con arreglos anidados.

- -

El método concat no altera this el array original, ni ninguno de los que fueron ingresados como parámetros, sino que devuelve una copia superficial que contiene copias de los mismos elementos de los arrays originales combinados. Los elementos de los arrays originales son copiados en el nuevo array de la siguiente manera:

- - - -
-

Nota: Al concatenar arrays o valores no se modificarán los originales. Además, las operaciones en el nuevo array (excepto las operaciones en elementos que son referencias a objetos) no tendrán efecto en el array original, y viceversa.

-
- -

Ejemplos

- -

Concatenando dos arrays

- -

En el siguiente código se concatenan dos arrays:

- -
const letters = ['a', 'b', 'c'];
-const numbers = [1, 2, 3];
-
-letters.concat(numbers);
-// result in ['a', 'b', 'c', 1, 2, 3]
-
- -

Concatenando tres arrays

- -

En el siguiente código se concatenan tres arrays:

- -
const num1 = [1, 2, 3];
-const num2 = [4, 5, 6];
-const num3 = [7, 8, 9];
-
-const numbers = num1.concat(num2, num3);
-
-console.log(numbers);
-// results in [1, 2, 3, 4, 5, 6, 7, 8, 9]
-
- -

Concatenando valores a un array

- -

En el siguiente código se concatenan tres valores a un array:

- -
var alpha = ['a', 'b', 'c'];
-
-var alphaNumeric = alpha.concat(1, [2, 3]);
-
-console.log(alphaNumeric);
-// Da como resultado: ['a', 'b', 'c', 1, 2, 3]
-
- -

Concatenando arrays anidados

- -

En el siguiente código concatena arrays anidados y demuestra retención de referencias:

- -
var num1 = [[1]];
-var num2 = [2, [3]];
-
-var nums = num1.concat(num2);
-
-console.log(nums);
-// Da como resultado: [[1], 2, [3]]
-
-// modifica el primer elemento de num1
-num1[0].push(4);
-
-console.log(nums);
-// Da como resultado: [[1, 4], 2, [3]]
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-array.prototype.concat', 'Array.prototype.concat')}}
- -

Compatibilidad con navegadores

- -
-

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

-
- -
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/copywithin/index.html b/files/es/web/javascript/referencia/objetos_globales/array/copywithin/index.html deleted file mode 100644 index e28b99c382..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/copywithin/index.html +++ /dev/null @@ -1,165 +0,0 @@ ---- -title: Array.prototype.copyWithin() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/copyWithin -tags: - - Array - - ECMAScript 2015 - - JavaScript - - Prototipo - - Referencia - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/copyWithin ---- -
{{JSRef}}
- -

El método copyWithin() transfiere una copia  plana de una sección a otra dentro del mismo array ( o contexto similar ), sin modificar su propiedad length y lo devuelve.

- -

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

- -

Sintaxis

- -
arr.copyWithin(target)
-arr.copyWithin(target, start)
-arr.copyWithin(target, start, end)
- -

Parámetros

- -
-
target
-
Índice basado en cero que establece en dónde dentro de la secuencia original se insertará la secuencia copiada.  Si es negativo, target se contará desde el final. -1 es el último elemento, -2 el penúltimo, etc.
-
Si target es  igual o mayor que  arr.length, no se copiará nada. Si target es posicionado después de start, la secuencia copiada se recortará para que encaje con arr.length.
-
start {{optional_inline}}
-
Índice basado en cero a partir del cual comenzar la copia de elementos. Si es negativo, start comenzará a contarse desde el final.
-
Si start es omitido, copyWithin copiará desde el principio (por defecto es 0).
-
end {{optional_inline}}
-
Índice basado en cero hasta el cual se copiarán los elementos. copyWithin copiará hasta pero sin incluir el end. Si es negativo, end será contado desde el final.
-
Si end es omitido, copyWithin copiará hasta el final ( por defecto es arr.length ).
-
- -

Valor de retorno

- -

El array modificado.

- -

Descripción

- -

copyWithin es similar a la función memmove de C y C++  , siendo altamente eficiente para desplazar los datos en un {{jsxref("Array")}} o  {{jsxref("TypedArray")}}. La secuencia de datos es leída y escrita en una sola operación;  la escritura será correcta incluso en el caso de que la zona de lectura y el destino de escritura se solapen.

- -

La función copyWithin es intencionadamente genérica, permitiendo que se aplique en contextos en los cuales this no sea necesariamente un objeto {{jsxref("Array")}}.

- -

El método copyWithin es un método mutador. No altera la propiedad length de this, pero cambiará su contenido y creará nuevas propiedades si es necesario.

- -

Ejemplos

- -

En los siguientes ejemplos céntrate en los siguientes aspectos:

- - - -
[1, 2, 3, 4, 5].copyWithin(-2);
-// [1, 2, 3, 1, 2]
-
-[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(-2, -3, -1);
-// [1, 2, 3, 3, 4]
-
- -

A continuación se aplica en el contexto de un objeto array-like:

- - - -
[].copyWithin.call({length: 5, 3: 1}, 0, 3);
-// {0: 1, 3: 1, length: 5}
-
-
- -

Lo que sigue ahora son las subclases tipadas de Array en ES6:

- -
// Arrays tipados en ES6. Son subclases de Array
-var i32a = new Int32Array([1, 2, 3, 4, 5]);
-
-i32a.copyWithin(0, 2);
-// Int32Array [3, 4, 5, 4, 5]
-
-// En plataformas que todavía no siguen la norma 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 =
-  // Array: Number[, Number[, Number]]
-  function copyWithin(target, start, stop) {
-    var positiveT = target >= 0,
-        positiveS = (start = start | 0) >= 0,
-        length    = this.length,
-        zero      = 0,
-        r         = function() {return ((+new Date) * Math.random()).toString(36)},
-        delimiter = "\b" + r() + "-" + r() + "-" + r() + "\b",
-        hold;
-
-    stop = stop || this.length;
-    hold = this.slice.apply(this,
-      positiveT?
-        [start, stop]:
-      positiveS?
-        [start, -target]:
-      [start])
-    .join(delimiter);
-
-    return this.splice.apply(this,
-      positiveT?
-        [target, stop - start, hold]:
-      positiveS?
-        [target, stop, hold]:
-      [target, start, hold]),
-            this.join(delimiter).split(delimiter).slice(zero, length);
-  }
-}
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-array.prototype.copyWithin', 'Array.prototype.copyWithin')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.prototype.copyWithin', 'Array.prototype.copyWithin')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
-

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/entries/index.html b/files/es/web/javascript/referencia/objetos_globales/array/entries/index.html deleted file mode 100644 index 89fef6475f..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/entries/index.html +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Array.prototype.entries() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/entries -tags: - - Array - - ECMAScript 2015 - - Iterador - - Iterator - - JavaScript - - Prototipo - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/entries ---- -
{{JSRef}}
- -
El método entries() retorna un nuevo objeto Array Iterator que contiene los pares clave/valor para cada índice de la matriz.
- -
 
- -
-

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

-
- -

Sintaxis

- -
arr.entries()
- -

Valor de retorno

- -

Un nuevo objeto iterador {{jsxref("Array")}}.

- -

Ejemplos

- -

Usando un bucle for…of 

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

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
{{SpecName('ES6', '#sec-array.prototype.entries', 'Array.prototype.entries')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.prototype.entries', 'Array.prototype.entries')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
-

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

-
- -
 
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/every/index.html b/files/es/web/javascript/referencia/objetos_globales/array/every/index.html deleted file mode 100644 index 540ebbdfa9..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/every/index.html +++ /dev/null @@ -1,195 +0,0 @@ ---- -title: Array.prototype.every() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/every -tags: - - Arreglo - - ECMAScript 5 - - JavaScript - - Prototipo - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/every ---- -
{{JSRef}}
- -

Determina si todos los elementos en el array satisfacen una condición.

- -
-

Precaución: ¡Llamar este método en un array vacío devuelve true para cualquier condición!

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

Sintaxis

- -
arr.every(callback(element[, index[, array]])[, thisArg])
- -

Parámetros

- -
-
callback
-
Una función para probar cada elemento; recibe tres argumentos: -
-
currentValue (required)
-
El elemento actual del arreglo que está siendo procesado.
-
index {{Optional_inline}}
-
El índice del elemento actual del arreglo que está siendo procesado.
-
array {{Optional_inline}}
-
El arreglo sobre el cual fue llamado every.
-
-
-
thisArg {{Optional_inline}}
-
Valor por usar como this cuando se ejecute callback.
-
- -

Valor de retorno

- -

true si la función de devolución de llamada devuelve un valor de {{Glossary("truthy")}} para cada elemento de matriz; de lo contrario, false.

- -

Descripción

- -

El método every ejecuta la función callback dada una vez por cada elemento presente en el arreglo hasta encontrar uno que haga retornar un valor falso a callback (un valor que resulte falso cuando se convierta a booleano).  Si no se encuentra tal elemento, el método every de inmediato retorna  false. O si  callback retorna verdadero para todos los elementos, every retornará true. callback es llamada sólo para índices del arreglo que tengan valores asignados; no se llama para índices que hayan sido eliminados o a los que no se les haya asignado un valor.

- -

callback es llamada con tres argumetos: el valor del elemento, el índice del elemento y el objeto Array que está siendo recorrido.

- -

Si se proporciona un parámetro thisArg a every, será pasado a la función callback cuando sea llamada, usándolo como valor this. En otro caso, se pasará el valor undefined para que sea usado como valor this.  El valor this observable por parte de  callback se determina de acuerdo a las normas usuales para determinar el this visto por una función.

- -

every no modifica el arreglo sobre el cual es llamado.

- -

El intervalo de elementos procesados por every se establece antes de la primera llamada a callback.  Los elementos que se agreguen al arreglo después de que la función every comience no serán vistos por la función callback.  Si se modifican elementos existentes en el arreglo, su valor cuando sea pasado a callback será el valor que tengan cuando sean visitados; los elementos que se eliminen no serán visitados.

- -

every opera como el cuantificador "para todo" en matemáticas. En particular con el arreglo vacío retorna true. (es una verdad vacua que todos los elementos del conjunto vacío satisfacen una condición dada.)

- -

Ejemplos

- -

Probando el tamaño de todos los elementos de un arreglo

- -

El siguiente ejemplo prueba si todos los elementos de un arreglo son mayores que 10.

- -
function esSuficientementeGrande(elemento, indice, arrreglo) {
-  return elemento >= 10;
-}
-[12, 5, 8, 130, 44].every(esSuficientementeGrande);   // false
-[12, 54, 18, 130, 44].every(esSuficientementeGrande); // true
-
- -

Usar funciones flecha

- -

Las funciones flecha proveen una sintaxis más corta para la misma prueba.

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

Polyfill

- -

every fue añadida a la norma ECMA-262 en la 5ta edición; por lo que podría no estar presente en otras implementaciones de la norma.  Puede sobrellevarlo insertando el siguiente código al comienzo de su programa,  permitiendo el uso de every  en implementación que no lo soporten de manera nativa. Este algoritmo es exactamente el especificado en ECMA-262, 5ta edición, suponiendo que  Object y TypeError tienen sus valores originales y que  callbackfn.call evalua al 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;
-  };
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.4.4.16', 'Array.prototype.every')}}{{Spec2('ES5.1')}}Initial definition. Implemented in JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.every', 'Array.prototype.every')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.every', 'Array.prototype.every')}}{{Spec2('ESDraft')}}
- -

Compatibilidad con navegadores

- -
-

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

-
- -
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/fill/index.html b/files/es/web/javascript/referencia/objetos_globales/array/fill/index.html deleted file mode 100644 index 7113df34bd..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/fill/index.html +++ /dev/null @@ -1,145 +0,0 @@ ---- -title: Array.prototype.fill() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/fill -tags: - - Array - - ECMAScript 2015 - - JavaScript - - Prototipo - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/fill ---- -
{{JSRef}}
- -

El método fill() cambia todos los elementos en un arreglo por un valor estático, desde el índice start (por defecto 0) hasta el índice end (por defecto array.length). Devuelve el arreglo modificado.

- -

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

- -

Sintaxis

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

Parámetros

- -
-
value
-
Valor con el que se va a rellenar el arreglo. (Nótese que todos los elementos en el arreglo tendrán este mismo valor).
-
start {{optional_inline}}
-
Índice inicial, por defecto 0.
-
end {{optional_inline}}
-
Índice final, por defecto this.length.
-
- -

Valor de retorno

- -

El arreglo modificado, rellenado con valor.

- -

Descripción

- - - -

Ejemplos

- -
[1, 2, 3].fill(4);               // [4, 4, 4]
-[1, 2, 3].fill(4, 1);            // [1, 4, 4]
-[1, 2, 3].fill(4, 1, 2);         // [1, 4, 3]
-[1, 2, 3].fill(4, 1, 1);         // [1, 2, 3]
-[1, 2, 3].fill(4, 3, 3);         // [1, 2, 3]
-[1, 2, 3].fill(4, -3, -2);       // [4, 2, 3]
-[1, 2, 3].fill(4, NaN, NaN);     // [1, 2, 3]
-[1, 2, 3].fill(4, 3, 5);         // [1, 2, 3]
-Array(3).fill(4);                // [4, 4, 4]
-[].fill.call({ length: 3 }, 4);  // {0: 4, 1: 4, 2: 4, length: 3}
-
-// Objects by reference.
-var arr = Array(3).fill({}) // [{}, {}, {}];
-arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]
- -

Polyfill

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

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-array.prototype.fill', 'Array.prototype.fill')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.prototype.fill', 'Array.prototype.fill')}}{{Spec2('ESDraft')}}
- -

Compatibilidad con navegadores

- -
-

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/filter/index.html b/files/es/web/javascript/referencia/objetos_globales/array/filter/index.html deleted file mode 100644 index 98e6843c4f..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/filter/index.html +++ /dev/null @@ -1,231 +0,0 @@ ---- -title: Array.prototype.filter() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/filter -tags: - - Array - - ECMAScript 5 - - JavaScript - - Prototipo - - Referencia - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/filter ---- -
{{JSRef}}
- -

El método filter() crea un nuevo array con todos los elementos que cumplan la condición implementada por la función dada.

- -

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

- -

Sintaxis

- -
var newArray = arr.filter(callback(currentValue[, index[, array]])[, thisArg])
- -

Parámetros

- -
-
callback
-
Función que comprueba cada elemento del array para ver si cumple la condición (también llamada predicado).  Retorna true si el elemento la cumple o en caso contrario retornará false. Acepta tres parámetros:
-
-
-
currentValue
-
El elemento actual del array que está siendo procesado.
-
index {{optional_inline}}
-
El índice del elemento actual del array que está siendo procesado.
-
array {{optional_inline}}
-
El array sobre el que se ha llamado filter.
-
-
-
thisArg {{optional_inline}}
-
Opcional. Valor a utilizar como this cuando se ejecuta callback.
-
- -

Valor devuelto

- -

Un nuevo array con los elementos que cumplen la condición. Si ningún elemento cumple la condición, se devolverá un array vacío.

- -

Descripción

- -

filter() llama a la función callback  sobre cada elemento del array, y construye un nuevo array con todos los valores para los cuales  callback devuelve un valor verdadero. callback es invocada sólo para índices del array que tengan un valor asignado. No se invoca sobre índices que hayan sido borrados o a los que no se les haya asignado algún valor. Los elementos del array que no cumplan la condición callback  simplemente los salta, y no son incluidos en el nuevo array.

- -

callback se invoca con tres argumentos:

- -
    -
  1. El valor de cada elemento
  2. -
  3. El índice del elemento
  4. -
  5. El objeto Array que se está recorriendo
  6. -
- -

Si se proporciona un parámetro thisArg a filter(), este será pasado a callback cuando sea invocado, para usarlo como valor this.  De lo contrario, se pasará el valor undefined como valor this.  El valor this dentro del callback se determina conforme a las las normas habituales para determinar el this visto por una función.

- -

filter() no hace mutar el array sobre el cual es llamado.

- -

El rango de elementos procesados por filter() se establece antes de la primera invocación de  callback. Los elementos que se añadan al array después de que comience la llamada a filter() no serán visitados por callback. Si se modifica o elimina un elemento existente del array, cuando pase su valor a callback será el que tenga cuando filter() lo recorra; los elementos que son eliminados no son recorridos.

- -

Ejemplos

- -

Filtrando todos los valores pequeños

- -

El siguiente ejemplo usa filter() para crear un array filtrado que excluye todos los elementos con valores inferiores a 10.

- -
function esSuficientementeGrande(elemento) {
-  return elemento >= 10;
-}
-var filtrados = [12, 5, 8, 130, 44].filter(esSuficientementeGrande);
-// filtrados es [12, 130, 44]
-
- -

Filtrando entradas inválidas desde un JSON

- -

El siguiente ejemplo emplea filter() para crear un json filtrado con todos lo elementos que tengan id numérico distinto de cero.

- -
var arr = [
-  { id: 15 },
-  { id: -1 },
-  { id: 0 },
-  { id: 3 },
-  { id: 12.2 },
-  { },
-  { id: null },
-  { id: NaN },
-  { id: 'undefined' }
-];
-
-var entradasInvalidas = 0;
-// Si el elemento tiene un atributo id, y su valor correspondiente es un numero
-// Y no es el valor NaN, entonces es una entrada válida
-function filtrarPorID(obj) {
-  if ('id' in obj && typeof(obj.id) === 'number' && !isNaN(obj.id)) {
-    return true;
-  } else {
-    entradasInvalidas++;
-    return false;
-  }
-}
-
-var arrPorID = arr.filter(filtrarPorID);
-
-console.log('Array Filtrado\n', arrPorID);
-// [{ id: 15 }, { id: -1 }, { id: 0 }, { id: 3 }, { id: 12.2 }]
-
-console.log('Número de Entradas Invalidas = ', entradasInvalidas);
-// 4
- -

Búsqueda en el arreglo

- -

El siguiente ejemplo emplea filter() para filtrar el contendio de un arreglo en función de un criterio de búsqueda.

- -
var fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];
-
-/**
- * Filtra la matríz en función de un criterio de búsqueda (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']
- -

Implementación en ES2015

- -
const fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];
-
-/**
- * Filtra la matríz en función de un criterio de búsqueda (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() se añadió a la norma ECMA-262 en la 5ta edición; como tal puede no estar presente en todas las implementaciones de la norma. Puedes sobrellevarlo insertando el siguiente código al comienzo de su programa, para permitir el uso de filter() en implementaciones de ECMA-262 que no lo soporten de forma nativa. Este algoritmo es exactamente el especificado en ECMA-262, 5ta edición, supone que  fn.call evalua al valor original de {{jsxref("Function.prototype.call")}}, y que {{jsxref("Array.prototype.push")}} tiene su valor original.

- -
if (!Array.prototype.filter){
-  Array.prototype.filter = function(func, thisArg) {
-    'use strict';
-    if ( ! ((typeof func === 'Function' || typeof func === 'function') && this) )
-        throw new TypeError();
-
-    var len = this.length >>> 0,
-        res = new Array(len), // preallocate array
-        t = this, c = 0, i = -1;
-
-    var kValue;
-    if (thisArg === undefined){
-      while (++i !== len){
-        // checks to see if the key was set
-        if (i in this){
-          kValue = t[i]; // in case t is changed in callback
-          if (func(t[i], i, t)){
-            res[c++] = kValue;
-          }
-        }
-      }
-    }
-    else{
-      while (++i !== len){
-        // checks to see if the key was set
-        if (i in this){
-          kValue = t[i];
-          if (func.call(thisArg, t[i], i, t)){
-            res[c++] = kValue;
-          }
-        }
-      }
-    }
-
-    res.length = c; // shrink down array to proper size
-    return res;
-  };
-}
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.4.4.20', 'Array.prototype.filter')}}{{Spec2('ES5.1')}}Definición Inicial. Implementado en JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.filter', 'Array.prototype.filter')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.filter', 'Array.prototype.filter')}}{{Spec2('ESDraft')}}
- -

Compatibilidad con navegadores

- -
-

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/find/index.html b/files/es/web/javascript/referencia/objetos_globales/array/find/index.html deleted file mode 100644 index 7de7850cca..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/find/index.html +++ /dev/null @@ -1,233 +0,0 @@ ---- -title: Array.prototype.find() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/find -tags: - - Array - - ECMAScript 2015 - - JavaScript - - Prototipo - - Referencia - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/find ---- -
{{JSRef}}
- -

El método find() devuelve el valor del primer elemento del array que cumple la función de prueba proporcionada.

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

Sintaxis

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

Parámetros

- -
-
callback
-
Función que se ejecuta sobre cada valor en el array, tomando tres argumentos: -
-
element
-
El elemento actual que se está procesando en el array.
-
index {{optional_inline}}
-
El índice (posición) del elemento actual que se está procesando en el array.
-
array {{optional_inline}}
-
El array desde el que se llama al método find.
-
-
-
thisArg {{optional_inline}}
-
Objeto a usar como this cuando se ejecuta callback.
-
- -

Valor devuelto

- -

El valor del primer elemento del array que cumple la función de prueba proporcionada; de lo contrario, devuelve {{jsxref("undefined")}}.

- -

Descripción

- -

El método find ejecuta la función callback una vez por cada índice del array hasta que encuentre uno en el que el callback devuelva un valor verdadero. Si es así, find devuelve inmediatamente el valor del elemento. En caso contrario, find devuelve {{jsxref("undefined")}}.

- -

callback se invoca con tres argumentos: el valor del elemento, el índice del elemento y el objeto Array que está siendo recorrido.

- -

Si un parámetro thisArg es proporcionado al método find, este será utilizado como this para cada invocación del callback. Si no se proporciona el parámetro, entonces se utiliza {{jsxref("undefined")}}.

- -

El método find no transforma el array desde el cual es llamado, pero la función proporcionada en callback sí. En ese caso, los elementos procesados por find son establecidos antes de la primera invocación de callback. Por lo tanto:

- - - -

Ejemplos

- -

Encontrar un objeto en un array por una de sus propiedades

- -
const inventario = [
-    {nombre: 'manzanas', cantidad: 2},
-    {nombre: 'bananas', cantidad: 0},
-    {nombre: 'cerezas', cantidad: 5}
-];
-
-function esCereza(fruta) {
-    return fruta.nombre === 'cerezas';
-}
-
-console.log(inventario.find(esCereza));
-// { nombre: 'cerezas', cantidad: 5 }
- -

Utilizando funciones flecha y destructuring

- -
const inventario = [
-    {nombre: 'manzanas', cantidad: 2},
-    {nombre: 'bananas', cantidad: 0},
-    {nombre: 'cerezas', cantidad: 5}
-];
-
-const resultado = inventario.find( fruta => fruta.nombre === 'cerezas' );
-
-console.log(resultado); // { nombre: 'cerezas', cantidad: 5 }
- -

Encontrar un número primo en un array

- -

El siguiente ejemplo encuentra un elemento en un array que sea un número primo (o devuelve {{jsxref("undefined")}} si no hay un número primo).

- -
function isPrime(element, index, array) {
-  let 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, no encontrado
-console.log([4, 5, 8, 12].find(isPrime)); // 5
-
- -

Los siguientes ejemplos muestran cómo elementos no existentes o eliminados son visitados y el valor pasado a callback es su valor cuando son visitados.

- -
// Declarar un array sin elementos en los índices 2, 3 y 4
-const array = [0,1,,,,5,6];
-
-// Muestra todos los índices, no sólo aquellos que tienen valores asignados
-array.find(function(value, index) {
-  console.log('Visited index ' + index + ' with value ' + value);
-});
-
-// Mostrar todos los índices, incluyendo los eliminados
-array.find(function(value, index) {
-
-  // Eliminar el elemento 5 en la primera iteración
-  if (index == 0) {
-    console.log('Deleting array[5] with value ' + array[5]);
-    delete array[5];
-  }
-  // El elemento 5 se visita aun habiendo sido eliminado
-  console.log('Visited index ' + index + ' with value ' + value);
-});
-// expected output:
-// Deleting array[5] with value 5
-// Visited index 0 with value 0
-// Visited index 1 with value 1
-// Visited index 2 with value undefined
-// Visited index 3 with value undefined
-// Visited index 4 with value undefined
-// Visited index 5 with value undefined
-// Visited index 6 with value 6
-
- -

Polyfill

- -

Este método ha sido añadido a la espeficicación ECMAScript 2015 y puede no estar disponible en todas las implementaciones de JavaScript aún. Sin embargo, puedes utilizar el siguiente polyfill de Array.prototype.find:

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

Si necesitas dar soporte a motores de JavaScript realmente obsoletos que no soportan Object.defineProperty, es mejor no utilizar el polyfill para los métodos Array.prototype, ya que no podrás hacerlos no enumerables.

- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-array.prototype.find', 'Array.prototype.find')}}
- -

Compatibilidad en navegadores

- -
-

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/findindex/index.html b/files/es/web/javascript/referencia/objetos_globales/array/findindex/index.html deleted file mode 100644 index c249a3b2df..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/findindex/index.html +++ /dev/null @@ -1,187 +0,0 @@ ---- -title: Array.prototype.findIndex() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/findIndex -tags: - - Array - - ECMAScript 2015 - - JavaScript - - Protitipo - - Referencia - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/findIndex ---- -
{{JSRef}}
- -

El método findIndex() devuelve el índice del primer elemento de un array que cumpla con la función de prueba proporcionada. En caso contrario devuelve -1.

- -
{{EmbedInteractiveExample("pages/js/array-findindex.html","shorter")}}
- -

Vea también el método {{jsxref("Array.find", "find()")}}, que devuelve el valor de un elemento encontrado en el array en lugar de su índice.

- -

Sintaxis

- -
arr.findIndex(callback( element[, index[, array]] )[, thisArg])
-
- -

Parámetros

- -
-
callback
-
-

Función a ejecutar en cada uno de los valores del array hasta que devuelve true, indicando que el elemento que la cumple fue encontrado.

- -

Recibe tres argumentos:

- -
-
element
-
El elemento actual siendo procesado en el array.
-
index {{optional_inline}}
-
El índice del elemento actual que está siendo procesado en el array.
-
array {{optional_inline}}
-
El array findIndex() de donde fue llamado.
-
-
-
thisArg {{optional_inline}}
-
Objeto opcional para usar como this cuando se ejecuta el callback.
-
- -

Valor devuelto

- -

Un índice en el array si un elemento pasa la prueba; en caso contrario, -1.

- -

Descripción

- -

El método findIndex() ejecuta la función de callback una vez por cada índice del array hasta que encuentre uno donde callback devuelva un valor verdadero (eso es, un valor que fuerza un true).

- -

Si dicho elemento es encontrado, findIndex() inmediatamente devuelve el índice del elemento. Si la función callback nunca devuelve un valor verdadero (o el tamaño del array es 0), findIndex devuelve -1.

- -
-

Alerta de Edge Case: A diferencia de otros métodos de arrays como {{jsxref("Array.some()")}}, callback se ejecuta incluso en índices sin valores asignados.

-
- -

callback se invoca con tres argumentos:

- -
    -
  1. El valor del elemento
  2. -
  3. El índice del elemento
  4. -
  5. El Array que será recorrido.
  6. -
- -

Si el parámetro thisArg es provisto a findIndex, entonces será usado como el this para cada invocación del callback. Si no es provisto, entonces {{jsxref("undefined")}} será utilizado. 

- -

El rango de elementos procesados por findIndex() se establece antes de la primera invocación de la función callback. Los elementos añadidos al array después de que la llamada a findIndex() comience no serán visitados por el callback. Si un elemento existente que no ha sido visitado en el array es modificado por el callback, el valor pasado al callback que lo visite será el valor en el momento en que findIndex() visite el índice del elemento.

- -

Los elementos eliminados aún son visitados.

- -

Ejemplos

- -

Encontrar el índice de un número primo en un array

- -

El siguiente ejemplo encuentra el índice de un elemento en el array que sea número primo (o devuelve -1 si no hay ningún número primo).

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

Encontrar un índice utilizando funciones flecha

- -

El siguiente ejemplo encuentra el índice de una fruta utilizando funciones flecha.

- -
const fruits = ["apple", "banana", "cantaloupe", "blueberries", "grapefruit"];
-
-const index = fruits.findIndex(fruit => fruit === "blueberries");
-
-console.log(index); // 3
-console.log(fruits[index]); // blueberries
-
- -

Polyfill

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

Si necesita soporte para motores de JavaScript obsoletos que no soportan Object.defineProperty es mejor no emplear polyfills para métodos Array.prototype, ya que no puede hacerlos no-enumerables.

- -

Especificaciones

- - - - - - - - - - -
Specification
{{SpecName('ESDraft', '#sec-array.prototype.findindex', 'Array.prototype.findIndex')}}
- -

Compatibilidad en navegadores

- -
-

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/flat/index.html b/files/es/web/javascript/referencia/objetos_globales/array/flat/index.html deleted file mode 100644 index 67d1b3a4c7..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/flat/index.html +++ /dev/null @@ -1,174 +0,0 @@ ---- -title: Array.prototype.flat() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/flat -tags: - - Array - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/flat ---- -
{{JSRef}} {{SeeCompatTable}}
- -

El método flat() crea una nueva matriz con todos los elementos de sub-array concatenados recursivamente hasta la profundidad especificada.

- - - - - -

Sintaxis

- -
var newArray = arr.flat([depth]);
- -

Parámetros

- -
-
depth {{optional_inline}}
-
El nivel de profundidad que especifica qué tan profunda debe aplanarse una estructura de matriz anidada. El valor predeterminado es 1.
-
- -

Valor de retorno

- -

Una nueva matriz con los elementos de la sub-matriz concatenados en ella.

- -

Ejemplos

- -

Aplanar matrices anidadas

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

Aplanamiento y huecos de matriz

- -

El método de aplanar elimina las ranuras vacías en las matrices:

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

Alternativa

- -

reduce y concat

- -
var arr1 = [1, 2, [3, 4]];
-arr1.flat();
-
-//aplanar una matriz de nivel único
-arr1.reduce((acc, val) => acc.concat(val), []);// [1, 2, 3, 4]
-
-//o
-const flatSingle = arr => [].concat(...arr);
-
- -

 

- -
//para permitir el aplanamiento a nivel profundo use recursión con reduce y 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), []);
-}
-flattenDeep(arr1); // [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]
-
- -

 

- -
//aplanamiento profundo no recursivo usando un stack
-var arr1 = [1,2,3,[1,2,3,4, [2,3,4]]];
-function flatten(input) {
-  const stack = [...input];
-  const res = [];
-  while (stack.length) {
-    // elimina ultimo valor del stack
-    const next = stack.pop();
-    if (Array.isArray(next)) {
-      // agrega de nuevo los items al array, sin modificar la entrada original
-      stack.push(...next);
-    } else {
-      res.push(next);
-    }
-  }
-  //invierte para restaurar el orden de entrada
-  return res.reverse();
-}
-flatten(arr1);// [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]
- -

 

- -
//Aplanamiento profundo recursivo
-function flatten(array) {
-  var flattend = [];
-  !(function flat(array) {
-    array.forEach(function(el) {
-      if (Array.isArray(el)) flat(el);
-      else flattend.push(el);
-    });
-  })(array);
-  return flattend;
-}
- -

 

- -

Polyfill

- -
if (!Array.prototype.flat) {
-  Array.prototype.flat = function(depth) {
-    var flattend = [];
-    (function flat(array, depth) {
-      for (let el of array) {
-        if (Array.isArray(el) && depth > 0) {
-          flat(el, depth - 1);
-        } else {
-          flattend.push(el);
-        }
-      }
-    })(this, Math.floor(depth) || 1);
-    return flattend;
-  };
-}
- -

Especificaciones

- - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
Array.prototype.flat proposalFinalizado (4) 
- -

Compatibilidad con navegadores

- -
- - -

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/flatmap/index.html b/files/es/web/javascript/referencia/objetos_globales/array/flatmap/index.html deleted file mode 100644 index 0a93f97675..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/flatmap/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Array.prototype.flatMap() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/flatMap -tags: - - Array - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/flatMap ---- -
{{JSRef}} {{SeeCompatTable}}
- -

El método flatMap() primero mapea cada elemento usando una función de mapeo, luego aplana el resultado en una nueva matriz. Es idéntico a un map seguido de un flatten de profundidad 1, pero flatMap es a menudo útil y la fusión de ambos en un método es ligeramente más eficiente.

- - - - - -

Sintaxis

- -
var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) {
-    // return element for new_array
-}[, thisArg])
- -

Parámetros

- -
-
callback
-
Función que produce un elemento de la nueva matriz, tomando tres argumentos: -
-
-
currentValue
-
El elemento actual que se procesa en la matriz.
-
index{{optional_inline}}
-
El índice del elemento actual que se procesa en la matriz.
-
array{{optional_inline}}
-
La matriz map fue llamada.
-
-
-
thisArg{{optional_inline}}
-
Valor para usar como this al ejecutar callback.
-
- -

Valor de retorno

- -

Una nueva matriz con cada elemento es el resultado de la función de devolución de llamada y se aplana a una profundidad de 1.

- -

Descripción

- -

Ver {{jsxref("Array.prototype.map()")}} para una descripción detallada de la función de devolución de llamada. El método flatMap es idéntico a map seguido de una llamada a flatten de profundidad 1.

- -

Ejemplos

- -

map y 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]
-
-// solo un nivel es aplanado
-arr1.flatMap(x => [[x * 2]]);
-// [[2], [4], [6], [8]]
-
- -
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
- -

Alternativa

- -

reduce y concat

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

Polyfill

- -

Este polyfill necesita Array.prototype.flat polyfill

- -
if (!Array.prototype.flatMap) {
-  Array.prototype.flatMap = function() {
-    return Array.prototype.map.apply(this, arguments).flat(1);
-  };
-}
- -

Especificaciones

- - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
Array.prototype.flatMap Finalizado (4)
- -

Compatibilidad con navegadores

- -
- - -

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/foreach/index.html b/files/es/web/javascript/referencia/objetos_globales/array/foreach/index.html deleted file mode 100644 index bc6b693176..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/foreach/index.html +++ /dev/null @@ -1,257 +0,0 @@ ---- -title: Array.prototype.forEach() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/forEach -tags: - - Array - - ECMAScript5 - - JavaScript - - JavaScript 1.6 - - Method - - Prototype - - Referencia - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/forEach ---- -
{{JSRef}}
- -

El método forEach() ejecuta la función indicada una vez por cada elemento del array.

- -

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

- -

Sintaxis

- -
arr.forEach(function callback(currentValue, index, array) {
-    // tu iterador
-}[, thisArg]);
- -

Parámetros

- -
-
callback
-
Función a ejecutar por cada elemento, que recibe tres argumentos:
-
-
-
currentValue
-
El elemento actual siendo procesado en el array.
-
index {{optional_inline}}
-
El índice del elemento actual siendo procesado en el array.
-
array {{optional_inline}}
-
El vector en el que forEach() esta siendo aplicado.
-
-
-
thisArg {{optional_inline}}
-
Valor que se usará como this cuando se ejecute el callback.
-
- -

Valor de retorno

- -

{{jsxref("undefined")}}.

- -

Descripción

- -

forEach() ejecuta la función callback una vez por cada elemento presente en el array en orden ascendente. No es invocada para índices que han sido eliminados o que no hayan sido inicializados (Ej. sobre arrays sparse)

- -

callback es invocada con tres argumentos:

- -
    -
  1. el valor del elemento
  2. -
  3. el índice del elemento
  4. -
  5. el array que está siendo recorrido
  6. -
- -

Si un parámetro thisArg es proporcionado a forEach, será usado como el valor this para cada invocación de callback como si se llamara a callback.call(thisArg, element, index, array). Si thisArg es undefined o null, el valor this dentro de la función depende si la función está o no en modo estricto (valor pasado si está en modo estricto, objeto global si está en modo no-estricto).

- -

El rango de elementos procesados por forEach() se establece antes de la primera invocación del callback. Los elementos que sean añadidos al vector después de que inicie la llamada a forEach no serán visitados por callback. Si los valores de los elementos existentes en el vector son modificados, el valor pasado al callback será el valor al momento de que forEach los visite; no se evaluarán los elementos borrados antes de ser visitados por forEach.

- -

forEach() ejecuta la función callback una vez por cada elemento del array; a diferencia de {{jsxref("Array.prototype.map()", "map()")}} o {{jsxref("Array.prototype.reduce()", "reduce()")}} este siempre devuelve el valor {{jsxref("undefined")}} y no es encadenable. El típico uso es ejecutar los efectos secundarios al final de la cadena.

- -

foreach() no muta/modifica el array desde el que es llamado (aunque callback, si se invoca, podría hacerlo).

- -
Nota : No hay forma de detener o cortar un bucle forEach que no sea lanzar una excepción. Si necesita dicho comportamiento, el método .forEach() es la herramienta equivocada, use una simple iteración en su lugar. Si está probando los elementos del array para un predicado y necesita devolver un valor boleano, puede usar {{jsxref("Array.prototype.every()", "every()")}} o {{jsxref("Array.prototype.some()", "some()")}} en su lugar.
- -

Ejemplos

- -

Imprimiendo el contenido de un array

- -

El siguiente código imprime una línea por cada elemento en un array:

- -
function logArrayElements(element, index, array) {
-    console.log("a[" + index + "] = " + element);
-}
-// Nótese que se evita el 2° índice ya que no hay ningún elemento en esa posición del array
-[2, 5, , 9].forEach(logArrayElements);
-// salida:
-// a[0] = 2
-// a[1] = 5
-// a[2] = 9
-
- -

Usando thisArg

- -

El siguiente ejemplo actualiza las propiedades del objeto por cada entrada en el array:

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

Nota: Dado que el parámetro thisArg (this) se referencia en el forEach(), será pasado al callback cuando se invoque, para utilizarse como su valor this.

- -

Ejemplo: Función que copia objetos

- -

El siguiente código crea una copia de un objeto dado. Hay diferentes formas de crear una copia de un objeto, ésta es sólo una de ellas y sirve para explicar cómo funciona Array.prototype.forEach utilizando funciones Object.* de ECMAScript 5.

- -
function copy(o){
-  var copy = Object.create( Object.getPrototypeOf(o) );
-  var propNames = Object.getOwnPropertyNames(o);
-
-  propNames.forEach(function(name){
-    var desc = Object.getOwnPropertyDescriptor(o, name);
-    Object.defineProperty(copy, name, desc);
-  });
-
-  return copy;
-}
-
-var o1 = {a:1, b:2};
-var o2 = copy(o1); // o2 ahora se parece a o1
-
- -

Si el array se modifica durante la iteración, otros elementos pueden ser omitidos.

- -

El siguiente ejemplo muestra por consola "uno", "dos", "cuatro". Cuando se alcanza el registro que contiene el valor "dos", el primer registro del array se desplaza, lo que hace que los registros restantes se muevan una posición. Debido a que el elemento "cuatro" está ahora en una posición anterior en el array, "tres" se omitirá. forEach() no hace una copia del array antes de iterar.

- -
var words = ['uno', 'dos', 'tres', 'cuatro'];
-words.forEach(function(word) {
-  console.log(word);
-  if (word === 'dos') {
-    words.shift();
-  }
-});
-// uno
-// dos
-// cuatro
-
- -

Polyfill

- -

forEach se agregó de manera reciente al estándar ECMA-262; así que puede no estar presente en otras implementaciones del estándar. Se puede asegurar el uso del forEach con tan solo agregar el siguiente código al inicio de los scripts, permitiendo así el uso de forEach en implementaciones que no lo soportan de manera nativa. El algoritmo es el mismo que se especifica en la quinta versión de ECMA-262, asumiendo que {{jsxref("Object")}} y {{jsxref("TypeError")}} tienen sus valores originales y que callback.call evalúa el valor original de {{jsxref("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) {
-    'use strict';
-    var T, k;
-
-    if (this == null) {
-      throw new TypeError("this is null or not defined");
-    }
-
-    var kValue,
-        // 1. Let O be the result of calling ToObject passing the |this| value as the argument.
-        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).
-        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 (arguments.length >= 2) {
-      T = thisArg;
-    }
-
-    // 6. Let k be 0
-    k = 0;
-
-    // 7. Repeat, while k < len
-    while (k < len) {
-
-      // 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. 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
-  };
-}
-
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.4.4.18', 'Array.prototype.forEach')}}{{Spec2('ES5.1')}}Definición inicial. Implementada en 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')}}
- -

Compatibilidad con navegadores

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

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/from/index.html b/files/es/web/javascript/referencia/objetos_globales/array/from/index.html deleted file mode 100644 index a11d0ebd53..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/from/index.html +++ /dev/null @@ -1,242 +0,0 @@ ---- -title: Array.from() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/from -tags: - - ECMAScript 2015 - - JavaScript - - Referencia - - Vector - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/from ---- -
{{JSRef}}
- -

El método Array.from() crea una nueva instancia de Array a partir de un objeto iterable.

- -

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

- -

Sintaxis

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

Parámetros

- -
-
arrayLike
-
Objeto iterable para convertirlo en un array.
-
mapFn{{Optional_inline}}
-
Función de mapa para llamar a cada elemento de la matriz.
-
thisArg{{Optional_inline}}
-
Valor para usar como this al ejecutar mapFn.
-
- -

Valor de retorno

- -

Una nueva instancia de {{jsxref("Array")}}.

- -

Descripción

- -

Array.from() permite crear Arrays de:

- - - -

Array.from() tiene un parámetro opcional mapFn, que te permite ejecutar una función {{jsxref("Array.prototype.map", "map")}}  a cada elemento del array (o a la subclase del objeto) que se ha creado. Para aclararlo, Array.from(obj, mapFn, thisArg) es igual que Array.from(obj).map(mapFn, thisArg), excepto en que éste no crea un array intermedio. Esto es importante para ciertas subclases de array, vectores tipados, ya que el vector intermedio necesitaría tener valores truncados para trabajar con el tipo adecuado.

- -

La propiedad length del método from() es 1.

- -

En ES2015, la sintaxis de clase permite la subclasificación de clases integradas y definidas por el usuario; como resultado, los métodos estáticos como Array.from son "heredados" por subclases de Array y crean nuevas instancias de la subclase, no Array.

- -

Ejemplos

- -

Array desde un String

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

Array desde un Set

- -
const set = new Set(['foo', 'bar', 'baz', 'foo']);
-Array.from(set);
-// [ "foo", "bar", "baz" ]
- -

Array desde un Map

- -
const map = new Map([[1, 2], [2, 4], [4, 8]]);
-Array.from(map);
-// [[1, 2], [2, 4], [4, 8]]
-
-const mapper = new Map([['1', 'a'], ['2', 'b']]);
-Array.from(mapper.values());
-// ['a', 'b'];
-
-Array.from(mapper.keys());
-// ['1', '2'];
-
- -

Array desde un objeto Array-like (argumentos)

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

Usando una función de flecha y Array.from

- -
// Usando una función de flecha como función
-// para manipular los elementos
-Array.from([1, 2, 3], x => x + x);
-// [2, 4, 6]
-
-
-// Generar secuencia de números
-// Puesto que el array se inicializa con `undefined` en cada posición,
-// el valor de `v` a continuación será `undefined`
-Array.from({length: 5}, (v, i) => i);
-// [0, 1, 2, 3, 4]
-
- -

Generador de secuencia (rango)

- -
// Función generadora de secuencia (comúnmente llamado "rango", ej. Clojure, PHP, etc.)
-const range = (start, stop, step) => Array.from({ length: (stop - start) / step + 1}, (_, i) => start + (i * step));
-
-// Genera un rango de números entre 0..4
-range(0, 4, 1);
-// [0, 1, 2, 3, 4]
-
-// Genera un rango de números entre 1..10 con saltos de 2
-range(1, 10, 2);
-// [1, 3, 5, 7, 9]
-
-// Generar el abecedario utilizando Array.from haciendo uso de que se ordena como secuencia
-range('A'.charCodeAt(0), 'Z'.charCodeAt(0), 1).map(x => String.fromCharCode(x));
-// ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
-
- -

Polyfill

- -

Array.from fue añadido en el estándar ECMA-262 en la 6ta edición (ES2015); así que no puede estar presente en otras implementaciones del estándar. Puedes usarlo insertando este código al comienzo de sus scripts, permitiendo el uso de Array.from en implementaciones que no lo soportan. Este algoritmo es el mismo especificado en ECMA-262, 6ta edición, suponiendo que Object y TypeError tengan sus valores originales y callback.call evalúa el valor original de {{jsxref("Function.prototype.call")}}. Adicionalmente, ya que verdaderos iterables pueden no ser polyficados, esta implementación no soporta iterables genéricos como definidos en la 6ta edición de ECMA-262.

- -
// Pasos de producción de ECMA-262, Edición 6, 22.1.2.1
-// Referencia: 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);
-    };
-
-    // La propiedad length del método from es 1.
-    return function from(arrayLike/*, mapFn, thisArg */) {
-      // 1. Deje a C ser el este valor.
-      var C = this;
-
-      // 2. Deje que los elementos sean ToObject(arrayLike).
-      var items = Object(arrayLike);
-
-      // 3. Retornar IfAbrupt(items).
-      if (arrayLike == null) {
-        throw new TypeError("Array.from requiere un objeto array-like - not null or undefined");
-      }
-
-      // 4. Si mapfn no está definida, entonces deja que sea false.
-      var mapFn = arguments.length > 1 ? arguments[1] : void undefined;
-      var T;
-      if (typeof mapFn !== 'undefined') {
-        // 5. si no
-        // 5. a If IsCallable(mapfn) es false, lanza una excepción TypeError.
-        if (!isCallable(mapFn)) {
-          throw new TypeError('Array.from: si hay mapFn, el segundo argumento debe ser una función');
-        }
-
-        // 5. b. Si thisArg se suministró, deje que T sea thisArg; si no, deje que T esté indefinido.
-        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;
-    };
-  }());
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-array.from', 'Array.from')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.from', 'Array.from')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
-

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/includes/index.html b/files/es/web/javascript/referencia/objetos_globales/array/includes/index.html deleted file mode 100644 index 3831c7d73d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/includes/index.html +++ /dev/null @@ -1,181 +0,0 @@ ---- -title: Array.prototype.includes() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/includes -tags: - - Array - - JavaScript - - Prototipo - - Referencia - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/includes ---- -
{{JSRef}}
- -

El método includes() determina si una matriz incluye un determinado elemento, devuelve truefalse según corresponda.

- -

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

- -

Sintaxis

- -
arr.includes(searchElement[fromIndex])
- -

Parámetros

- -
-
valueToFind
-
-

El valor a buscar.

- -
-

Nota: Al comparar cadenas de texto y caracteres, includes() distingue mayúsculas y minúsculas.

-
-
-
fromIndex {{optional_inline}}
-
Posición en la matriz en la cuál se debe comenzar a buscar valueToFind; el primer caracter a buscar se encuentra en fromIndex. Un valor negativo inicia la búsqueda desde array.length + fromIndex en adelante. El valor por defecto es 0.
-
- -

Valor devuelto

- -

Un {{jsxref ("Boolean")}} que es true si el valor valueToFind se encuentra dentro de la matriz (o la parte de la matriz indicada por el índice fromIndex, si se especifica). Todos los valores de cero se consideran iguales independientemente del signo (es decir, -0 se considera igual a 0 y +0), pero false no se considera igual a 0.

- -
-

Note: Técnicamente hablando, include() usa el algoritmo sameValueZero para determinar si se encuentra el elemento dado

-
- -

Ejemplos

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

fromIndex es mayor o igual que la longitud de la matriz

- -

Si fromIndex es mayor o igual que la longitud de la matriz, se devuelve false. No se buscará en la matriz.

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

El índice calculado es menor que 0

- -

Si fromIndex es negativo, el índice calculado se calcula para usarse como una posición en la matriz en la cual comenzar a buscar searchElement. Si el índice calculado es menor que 0, se buscará la matriz completa.

- -
// la longitud de la matriz es 3
-// fromIndex es -100
-// el índice calculado es 3 + (-100) = -97
-
-var arr = ['a', 'b', 'c'];
-
-arr.includes('a', -100); // true
-arr.includes('b', -100); // true
-arr.includes('c', -100); // true
- -

includes() utilizado como método genérico

- -

El método includes() es intencionalmente genérico. No requiere que este valor sea un objeto Array, por lo que se puede aplicar a otros tipos de objetos (por ejemplo, objetos tipo array). El siguiente ejemplo ilustra el método includes() llamado en el objeto de argumentos de la función.

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

Polyfill

- -
// https://tc39.github.io/ecma262/#sec-array.prototype.includes
-if (!Array.prototype.includes) {
-  Object.defineProperty(Array.prototype, 'includes', {
-    value: function(searchElement, fromIndex) {
-
-      if (this == null) {
-        throw new TypeError('"this" es null o no está definido');
-      }
-
-      // 1. Dejar que O sea ? ToObject(this value).
-      var o = Object(this);
-
-      // 2. Dejar que len sea ? ToLength(? Get(O, "length")).
-      var len = o.length >>> 0;
-
-      // 3. Si len es 0, devuelve false.
-      if (len === 0) {
-        return false;
-      }
-
-      // 4. Dejar que n sea ? ToInteger(fromIndex).
-      //    (Si fromIndex no está definido, este paso produce el valor 0.)
-      var n = fromIndex | 0;
-
-      // 5. Si n ≥ 0, entonces
-      //  a. Dejar que k sea n.
-      // 6. Else n < 0,
-      //  a. Dejar que k sea len + n.
-      //  b. Si k < 0, Dejar que k sea 0.
-      var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
-
-      function sameValueZero(x, y) {
-        return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));
-      }
-
-      // 7. Repite, mientras k < len
-      while (k < len) {
-        // a. Dejar que elementK sea el resultado de ? Get(O, ! ToString(k)).
-        // b. Si SameValueZero(searchElement, elementK) es true, devuelve true.
-        if (sameValueZero(o[k], searchElement)) {
-          return true;
-        }
-        // c. Incrementa k por 1.
-        k++;
-      }
-
-      // 8. Devuelve false
-      return false;
-    }
-  });
-}
- -

Si necesita admitir motores de JavaScript realmente obsoletos que no son compatibles con Object.defineProperty, es mejor no rellenar los métodos Array.prototype, ya que no puede hacerlos no enumerables.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
{{SpecName('ES7', '#sec-array.prototype.includes', 'Array.prototype.includes')}}{{Spec2('ES7')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.prototype.includes', 'Array.prototype.includes')}}{{Spec2('ESDraft')}}
- -

Compatibilidad con navegadores

- -
-

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

-
- -
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/index.html b/files/es/web/javascript/referencia/objetos_globales/array/index.html deleted file mode 100644 index 45531c7a3e..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/index.html +++ /dev/null @@ -1,449 +0,0 @@ ---- -title: Array -slug: Web/JavaScript/Referencia/Objetos_globales/Array -tags: - - Array - - JavaScript - - Matriz unidimensional - - Referencia - - Vector -translation_of: Web/JavaScript/Reference/Global_Objects/Array ---- -

{{JSRef}}
- El objeto Array de JavaScript es un objeto global que es usado en la construcción de arrays, que son objetos tipo lista de alto nivel.

- -

Descripción

- -

Los arrays son objetos similares a una lista cuyo prototipo proporciona métodos para efectuar operaciones de recorrido y de mutación. Tanto la longitud como el tipo de los elementos de un array son variables. Dado que la longitud de un array puede cambiar en cualquier momento, y los datos se pueden almacenar en ubicaciones no contiguas, no hay garantía de que los arrays de JavaScript sean densos; esto depende de cómo el programador elija usarlos. En general estas características son cómodas, pero si, en su caso particular, no resultan deseables, puede considerar el uso de arrays con tipo.

- -

Operaciones habituales

- -

Crear un Array

- -
let frutas = ["Manzana", "Banana"]
-
-console.log(frutas.length)
-// 2
-
- -

Acceder a un elemento de Array mediante su índice

- -
let primero = frutas[0]
-// Manzana
-
-let ultimo = frutas[frutas.length - 1]
-// Banana
- -

Recorrer un Array

- -
frutas.forEach(function(elemento, indice, array) {
-    console.log(elemento, indice);
-})
-// Manzana 0
-// Banana 1
- -

Añadir un elemento al final de un Array

- -
let nuevaLongitud = frutas.push('Naranja') // Añade "Naranja" al final
-// ["Manzana", "Banana", "Naranja"]
- -

Eliminar el último elemento de un Array

- -
let ultimo = frutas.pop() // Elimina "Naranja" del final
-// ["Manzana", "Banana"]
- -

Añadir un elemento al principio de un Array

- -
let nuevaLongitud = frutas.unshift('Fresa') // Añade "Fresa" al inicio
-// ["Fresa" ,"Manzana", "Banana"]
-
- -

Eliminar el primer elemento de un Array

- -
let primero = frutas.shift() // Elimina "Fresa" del inicio
-// ["Manzana", "Banana"]
-
- -

Encontrar el índice de un elemento del Array

- -
frutas.push('Fresa')
-// ["Manzana", "Banana", "Fresa"]
-
-let pos = frutas.indexOf('Banana') // (pos) es la posición para abreviar
-// 1
- -

Eliminar un único elemento mediante su posición

- -
-
  Ejemplo:
-
Eliminamos "Banana" del array pasándole dos parámetros: la posición del primer elemento que se elimina y el número de elementos que queremos eliminar. De esta forma, .splice(pos, 1) empieza en la posición que nos indica el valor de la variable pos y elimina 1 elemento. En este caso, como pos vale 1, elimina un elemento comenzando en la posición 1 del array, es decir "Banana".
-
- -
let elementoEliminado = frutas.splice(pos, 1)
-// ["Manzana", "Fresa"]
- -

Eliminar varios elementos a partir de una posición

- -
-
  Nota:
-
Con .splice() no solo se puede eliminar elementos del array, si no que también podemos extraerlos guardándolo en un nuevo array. ¡Ojo! que al hacer esto estaríamos modificando el array de origen.
-
- -
let vegetales = ['Repollo', 'Nabo', 'Rábano', 'Zanahoria']
-console.log(vegetales)
-// ["Repollo", "Nabo", "Rábano", "Zanahoria"]
-
-let pos = 1, numElementos = 2
-
-let elementosEliminados = vegetales.splice(pos, numElementos)
-// ["Nabo", "Rábano"] ==> Lo que se ha guardado en "elementosEliminados"
-
-console.log(vegetales)
-// ["Repollo", "Zanahoria"] ==> Lo que actualmente tiene "vegetales" 
- -

Copiar un Array

- -
let copiaArray = vegetales.slice();
-// ["Repollo", "Zanahoria"]; ==> Copiado en "copiaArray"
- -

Acceso a elementos de un array

- -

Los índices de los arrays de JavaScript comienzan en cero, es decir, el índice del primer elemento de un array es 0, y el del último elemento es igual al valor de la propiedad length del array restándole 1.

- -

Si se utiliza un número de índice no válido, se obtendrá undefined.

- -
let arr = ['este es el primer elemento', 'este es el segundo elemento', 'este es el último elemento']
-console.log(arr[0])              // escribe en consola 'este es el primer elemento'
-console.log(arr[1])              // escribe en consola 'este es el segundo elemento'
-console.log(arr[arr.length - 1]) // escribe en consola 'este es el último elemento'
-
- -

Los elementos de un array pueden considerarse propiedades del objeto tanto como toString (sin embargo, para ser precisos, toString() es un método). Sin embargo, se obtendrá un error de sintaxis si se intenta acceder a un elemento de un array de la forma siguiente, ya que el nombre de la propiedad no sería válido:

- -
console.log(arr.0) // error de sintaxis
- -

No hay nada especial ni en los arrays de JavaScript ni en sus propiedades que ocasione esto. En JavaScript, las propiedades cuyo nombre comienza con un dígito no pueden referenciarse con la notación punto y debe accederse a ellas mediante la notación corchete.

- -

Por ejemplo, dado un objeto con una propiedad de nombre '3d', sólo podría accederse a dicha propiedad con la notación corchete.

- -
let decadas = [1950, 1960, 1970, 1980, 1990, 2000, 2010]
-console.log(decadas.0)  // error de sintaxis
-console.log(decadas[0]) // funciona correctamente
-
- -
renderizador.3d.usarTextura(modelo, 'personaje.png')
-renderizador['3d'].usarTextura(modelo, 'personaje.png')
- -

Obsérvese que, en el último ejemplo, ha sido necesario poner '3d' entre comillas. Es posible usar también comillas con los índices del los arrays de JavaScript (p. ej., decadas['2'] en vez de decadas[2]), aunque no es necesario.

- -

El motor de JavaScript transforma en un string el 2 de decadas[2] a través de una conversión implícita mediante toString. Por tanto, '2' y '02' harían referencia a dos posiciones diferentes en el objeto decadas, y el siguiente ejemplo podría dar true como resultado:

- -
console.log(decadas['2'] != decadas['02'])
- -

Relación entre length y las propiedades numéricas

- -

La propiedad length de un array de JavaScript está conectada con algunas otras de sus propiedades numéricas.

- -

Varios de los métodos propios de un array (p. ej., join(), slice(), indexOf(), etc.) tienen en cuenta el valor de la propiedad length de un array cuando se les llama.

- -

Otros métodos (p. ej., push()splice(), etc.) modifican la propiedad length de un array.

- -
const frutas = []
-frutas.push('banana', 'manzana', 'pera')
-
-console.log(frutas.length) // 3
-
- -

Cuando se le da a una propiedad de un array JavaScript un valor que corresponda a un índice válido para el array pero que se encuentre fuera de sus límites, el motor actualizará el valor de la propiedad length como corresponda:

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

Si se aumenta el valor de length:

- -
frutas.length = 10
-console.log(frutas)              // ['banana', 'manzana', 'pera', <2 empty items>, 'fresa', <4 empty items>]
-console.log(Object.keys(frutas)) // ['0', '1', '2', '5']
-console.log(frutas.length)       // 10
-console.log(frutas[8])           // undefined
-
- -

Si se disminuye el valor de la propiedad length pueden eliminarse elementos:

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

Hay más información sobre este tema en la página sobre Array.length.

- -

Creación de un array a partir de una expresión regular

- -

El resultado de una búsqueda con una RegExp en un string puede crear un array de JavaScript. Este array tendrá propiedades y elementos que proporcionan información sobre la correspondencia encontrada. Para obtener un array de esta forma puede utilizarse RegExp.exec(), String.match() o String.replace().

- -

El siguiente ejemplo, y la tabla que le sigue, pueden ayudar a comprender mejor las propiedades y elementos a los que nos referimos:

- -
// Buscar una d seguida de una o más b y, al final, de otra d
-// Recordar las b y la d final
-// No distinguir mayúsculas y minúsculas
-
-const miRe = /d(b+)(d)/i
-const miArray = miRe.exec('cdbBdbsbz')
- -

Las propiedades y elementos que se obtienen de esta búsqueda son los siguientes:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Propiedad/ElementoDescripciónEjemplo
input
- {{ReadOnlyInline}}
El string original sobre el que se ha realizado la búsqueda con la expresión regular"cdbBdbsbz"
index
- {{ReadOnlyInline}}
El índice de la correspondencia en el string, siendo cero el de la primera posición.1
[0]
- {{ReadOnlyInline}}
Los últimos caracteres que cumplen la correspondencia"dbBd"
[1], ...[n]
- {{ReadOnlyInline}}
Elementos que indican las correspondencias de substrings entre paréntesis (si se han incluido) de la expresión regular. No hay límite al número de substrings entre paréntesis que se puedan utilizar.[1]: "bB"
- [2]: "d"
- -

Constructor

- -
-
Array()
-
Crea un nuevo objeto Array.
-
- -

Propiedades estáticas

- -
-
get Array[@@species]
-
La función del constructor se utiliza para crear objetos derivados.
-
- -

Métodos estáticos

- -
-
Array.from()
-
Crea una nueva instancia de Array a partir de similarAUnArray, un objeto iterable o parecido a un array.
-
Array.isArray()
-
Devuelve true si valor es un array, y false en caso contrario.
-
Array.of()
-
Crea una nueva instancia de Array con un número variable de parámetros, independientemente del número y del tipo de dichos parámetros.
-
- -

Propiedades de instancia

- -
-
Array.prototype.length
-
Indica el número de elementos de un array.
-
Array.prototype[@@unscopables]
-
Símbolo que contiene todos los nombres de las propiedades que se excluyen de un ámbito de enlace with.
-
- -

Métodos de instancia

- -
-
Array.prototype.concat()
-
Devuelve un nuevo array que es la concatenación de aquél sobre el que se invoca, seguido de otros array(s) o valor(es).
-
Array.prototype.copyWithin()
-
Copia una secuencia de elementos de un array dentro del propio array.
-
Array.prototype.entries()
-
Devuelve un nuevo objeto Array Iterator que contiene los pares clave/valor para cada índice del array.
-
Array.prototype.every()
-
Devuelve true si todos los elementos del array cumplen el predicado que recibe como parámetro.
-
Array.prototype.fill()
-
Asigna un valor estático a todos los elementos del array entre las posiciones inicio y fin.
-
Array.prototype.filter()
-
Devuelve un nuevo array que contiene todos los elementos de aquél para el cual se llama que cumplan el predicado que se le pasa como parámetro.
-
Array.prototype.find()
-
Devuelve el primer elemento del array que cumpla el predicado que se pasa como parámetro, o undefined si ninguno lo cumple.
-
Array.prototype.findIndex()
-
Devuelve el índice del primer elemento del array que cumpla el predicado que se pasa como parámetro, o -1 si nunguno lo cumple.
-
Array.prototype.forEach()
-
Llama a la función pasada como parámetro para todos los elementos del array.
-
Array.prototype.includes()
-
Determina si el array contiene el valorBuscado y devuelve true o false según sea el caso.
-
Array.prototype.indexOf()
-
Devuelve el índice del primer elemento del array que sea igual a elementoBuscado, o -1 si no existe.
-
Array.prototype.join()
-
Concatena en un string todos los elementos de un array.
-
Array.prototype.keys()
-
Devuelve un nuevo Array Iterator que contiene las claves de cada índice del array.
-
Array.prototype.lastIndexOf()
-
Devuelve el índice del último elemento del array que sea igual a elementoBuscado, o -1 si no existe.
-
Array.prototype.map()
-
Devuelve un nuevo array que contiene el resultado de llamar a la función pasada como parámetro a todos los elementos del array sobre el que se invoca.
-
Array.prototype.pop()
-
Elimina el último elemento de un array, y devuelve dicho elemento.
-
Array.prototype.push()
-
Añade uno o más elementos al final de un array y devuelve el nuevo valor de su propiedad length.
-
Array.prototype.reduce()
-
Aplica la función pasada como parámetro a un acumulador y a cada valor del array, que se recorre de izquierda a derecha, para reducirlo a un único valor.
-
Array.prototype.reduceRight()
-
Aplica la función pasada como parámetro a un acumulador y a cada valor del array, que se recorre de derecha a izquierda, para reducirlo a un único valor.
-
Array.prototype.reverse()
-
Invierte el orden de los elementos de un array (el primero pasa a ser el último y el último a ser el primero) en el propio array. Este método modifica el array.
-
Array.prototype.shift()
-
Elimina el primer elemento de un array, y devuelve dicho elemento.
-
Array.prototype.slice()
-
Extrae una porción del array sobre el que se llama y devuelve un nuevo array.
-
Array.prototype.some()
-
Devuelve true si al menos un elemento del array cumple con el predicado que se pasa como parámetro.
-
Array.prototype.sort()
-
Ordena los elementos de un array, modificando éste, y devuelve el array ordenado.
-
Array.prototype.splice()
-
Añade, borra o modifica elementos de un array.
-
Array.prototype.toLocaleString()
-
Devuelve un string adaptado a la configuración regional que representa el array y sus elementos. Redefine el método Object.prototype.toLocaleString().
-
Array.prototype.toString()
-
Devuelve un string que representa el array y sus elementos. Redefine el método Object.prototype.toString().
-
Array.prototype.unshift()
-
Añada uno o más elementos al inicio de un array y devuelve el nuevo valor de length para el array resultante.
-
Array.prototype.values()
-
Devuelve un nuevo objeto Array Iterator que contiene los valores para cada índice del array.
-
Array.prototype[@@iterator]()
-
Devuelve un nuevo objeto Array Iterator que contiene los valores para cada índice del array.
-
- -

Ejemplos

- -

Creación de una matriz unidimensional

- -

El siguiente ejemplo crea un array mensajes con una longitud de 0, y luego asigna valores a mensajes[0] y a mensajes[99], con lo que la longitud del array pasa a ser 100.

- -
let mensajes = [];
-mensajes[0] = "Hola";
-mensajes[99] = "mundo";
-
-if (mensajes.length === 100) {
-   console.log("La longitud es de 100.");
-}
-
- -

Creación de una matriz de dos dimensiones

- -

El siguiente ejemplo crea una matriz bidimensional que representa un tablero de ajedrez. El primer movimiento se realiza copiando la 'p' de tablero[6][4] en tablero[4][4]. La posición [6][4] se limpia.

- -
let tablero = [
-  ['T','C','A','D','R','A','C','T'],
-  ['P','P','P','P','P','P','P','P'],
-  [' ',' ',' ',' ',' ',' ',' ',' '],
-  [' ',' ',' ',' ',' ',' ',' ',' '],
-  [' ',' ',' ',' ',' ',' ',' ',' '],
-  [' ',' ',' ',' ',' ',' ',' ',' '],
-  ['p','p','p','p','p','p','p','p'],
-  ['t','c','a','d','r','a','c','t'] ]
-
-console.log(tablero.join('\n') + '\n\n')
-
-// Adelantar dos posiciones el peón de rey
-tablero[4][4] = tablero[6][4]
-tablero[6][4] = ' '
-console.log(tablero.join('\n'))
- -

Este es el resultado:

- -
T,C,A,D,R,A,C,T
-P,P,P,P,P,P,P,P
- , , , , , , ,
- , , , , , , ,
- , , , , , , ,
- , , , , , , ,
-p,p,p,p,p,p,p,p
-t,c,a,d,r,a,c,t
-
-P,P,P,P,P,P,P,P
- , , , , , , ,
- , , , , , , ,
- , , , ,p, , ,
- , , , , , , ,
-p,p,p,p, ,p,p,p
-t,c,a,d,r,a,c,t
-
- -

Uso de un array para tabular un conjunto de valores

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

da como resultado:

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

(La primera columna es el índice).

- -

Especificaciones

- - - - - - - - - - - - - - -
EspecificaciónPublicación inicial
{{SpecName('ESDraft', '#sec-array-objects', 'Array')}}ECMAScript 1
- -

Compatibilidad con navegadores

- - - -

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

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/indexof/index.html b/files/es/web/javascript/referencia/objetos_globales/array/indexof/index.html deleted file mode 100644 index 7aad7773b1..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/indexof/index.html +++ /dev/null @@ -1,248 +0,0 @@ ---- -title: Array.prototype.indexOf() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/indexOf -tags: - - Array - - JavaScript - - Method - - Prototype - - Referencia - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/indexOf ---- -
{{JSRef}}
- -

El método indexOf() retorna el primer índice en el que se puede encontrar un elemento dado en el array, ó retorna -1 si el elemento no esta presente.

- -
-

Nota: Para el método String, ver {{jsxref("String.prototype.indexOf()")}}.

-
- -

Sintaxis

- -
array.indexOf(searchElement[, fromIndex])
- -

Parámetros

- -
-
searchElement
-
Elemento a encontrar en el array.
-
fromIndex {{optional_inline}}
-
Indica el índice por el que se comienza la búsqueda. Por defecto es 0, por lo que se busca en todo el array. Si el índice es mayor o igual a la longitud del array, devuelve -1, ya que no se buscaría en el array. Si el valor es negativo, se toma restando posiciones desde el final del array. Hay que tener en cuenta que aunque el índice sea negativo, la búsqueda seguirá realizándose en un orden incremental. Si el índice calculado es menor de 0, la búsqueda se realizará por todo el array.
-
- -

Valor de retorno

- -

El primer índice del elemento en la matriz; -1 si no se encuentra.

- -

Descripción

- -

indexOf() compara searchElement con los elementos del array usando igualdad estricta (el mismo método que cuando se usa ===, o el operador igualdad-triple).

- -

Ejemplos

- -

Usando indexOf()

- -

El siguiente ejemplo usa indexof() para localizar valores en un array 

- -
var array = [2, 9, 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 las apariciones de un elemento

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

Encontrar si un elemento existe en la matriz o no y actualizar la matriz

- -
function updateVegetablesCollection (veggies, veggie) {
-    if (veggies.indexOf(veggie) === -1) {
-        veggies.push(veggie);
-        console.log('La nueva colección de vegetales es: ' + veggies);
-    } else if (veggies.indexOf(veggie) > -1) {
-        console.log(veggie + ' ya existe en la colección de verduras.');
-    }
-}
-
-var veggies = ['patata', 'tomate', 'chiles', 'pimientoverde'];
-
-updateVegetablesCollection(veggies, 'espinaca');
-// La nueva colección de verduras es : patata, tomate, chiles, pimientoverde, espinaca
-updateVegetablesCollection(veggies, 'espinaca');
-// La espinaca ya existe en la colección de verduras.
- -

 

- -

Polyfill

- -

indexOf() se agregó al estándar ECMA-262 en la 5a edición; por tanto no está implementado en todos los navegadores. Puedes hacerlo funcionar insertando el siguiente código al comienzo de tus scripts, permitiendo usar  indexOf() en implementaciones que no lo soporten de forma nativa. Este algoritmo es exáctamente el especificado en ECMA-262, 5ª edición, suponiendo que {{jsxref("Global_Objects/TypeError", "TypeError")}} y {{jsxref("Math.abs()")}} tienen sus valores originales.

- - -
if (!Array.prototype.indexOf) {
-  Array.prototype.indexOf = function indexOf(member, startFrom) {
-    /*
-    En el modo no estricto, si la variable `this` es null o indefinida, entonces se establece
-    en el objeto ventana. De lo contrario, `this` se convierte automáticamente en un objeto.
-    En modo estricto, si la variable `this` es nula o indefinida, se lanza `TypeError`.
-    */
-    if (this == null) {
-      throw new TypeError("Array.prototype.indexOf() - no se puede convertir `" + this + "` en objeto");
-    }
-
-    var
-      index = isFinite(startFrom) ? Math.floor(startFrom) : 0,
-      that = this instanceof Object ? this : new Object(this),
-      length = isFinite(that.length) ? Math.floor(that.length) : 0;
-
-    if (index >= length) {
-      return -1;
-    }
-
-    if (index < 0) {
-      index = Math.max(length + index, 0);
-    }
-
-    if (member === undefined) {
-      /*
-        Dado que `member` no está definido, las claves que no existan tendrán el valor de `same`
-        como `member` y, por lo tanto, es necesario verificarlas.
-      */
-      do {
-        if (index in that && that[index] === undefined) {
-          return index;
-        }
-      } while (++index < length);
-    } else {
-      do {
-        if (that[index] === member) {
-          return index;
-        }
-      } while (++index < length);
-    }
-
-    return -1;
-  };
-}
- -

Sin embargo, si está más interesado en todos los pequeños trozos técnicos definidos por el estándar ECMA, y está menos preocupado por el rendimiento o la concisión, entonces usted puede encontrar esta polyfill más descriptivo que sea más útil.

- -
// Pasos de producción de ECMA-262, Edición 5, 15.4.4.14
-// Referencia: http://es5.github.io/#x15.4.4.14
-if (!Array.prototype.indexOf) {
-  Array.prototype.indexOf = function(searchElement, fromIndex) {
-
-    var k;
-
-    // 1. Dejar que `o` sea el resultado de llamar a ToObject
-    //    pasando este valor como argumento.
-    if (this == null) {
-      throw new TypeError('"this" is null or not defined');
-    }
-
-    var o = Object(this);
-
-    // 2. Dejar que `lenValue` sea el resultado de llamar al método interno
-    //    de `o` con el argumento "length".
-    // 3. Dejar que len sea ToUint32(lenValue).
-    var len = o.length >>> 0;
-
-    // 4. Si `len` es 0, devolver -1.
-    if (len === 0) {
-      return -1;
-    }
-
-    // 5. Si se pasó el argumento `fromIndex`, deje que `n` sea
-    //    ToInteger(fromIndex); si no, que `n` sea 0.
-    var n = fromIndex | 0;
-
-    // 6. Si n >= len, devolver -1.
-    if (n >= len) {
-      return -1;
-    }
-
-    // 7. Si n >= 0, entonces deja que `k` sea `n`.
-    // 8. Si no, n<0, deja que `k` sea `len - abs(n)`.
-    //    Si `k` es menor que 0, entonces deja que `k` sea 0.
-    k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
-
-    // 9. Repite, mientras k < len
-    while (k < len) {
-      // a. Dejar que `Pk` sea ToString(k).
-      //   Esto está implícito para los operandos LHS del operador in
-      // b. Dejar que kPresent sea el resultado de llamar al método
-      //    interno `HasProperty` de `o` con el argumento `Pk`.
-      //   Este paso se puede combinar con `c`
-      // c. Si kPresent es verdadero, entonces
-      //    i.  Dejar que `elementK` sea el resultado de llamar al método
-      //        interno de `o` con el argumento ToString(k).
-      //   ii.  Deje que `same` sea el resultado de aplicar el
-      //        Algoritmo de comparación de igualdad estricta a
-      //        searchElement y elementK.
-      //  iii.  Si `same` es true, devuelve `k`.
-      if (k in o && o[k] === searchElement) {
-        return k;
-      }
-      k++;
-    }
-    return -1;
-  };
-}
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.4.4.14', 'Array.prototype.indexOf')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -

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

- -

Notas de compatibilidad

- - - -
 
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/isarray/index.html b/files/es/web/javascript/referencia/objetos_globales/array/isarray/index.html deleted file mode 100644 index b2a115a814..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/isarray/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Array.isArray() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/isArray -tags: - - Array - - ECMAScript5 - - JavaScript - - Referencia - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/isArray ---- -
{{JSRef}}
- -

El método Array.isArray() determina si el valor pasado es un {{jsxref("Array")}}.

- -
Array.isArray([1, 2, 3]);  // true
-Array.isArray({foo: 123}); // false
-Array.isArray('foobar');   // false
-Array.isArray(undefined);  // false
-
- -

Sintaxis

- -
Array.isArray(obj)
- -

Parámetros

- -
-
obj
-
El objeto a evaluar.
-
- -

Valor de retorno

- -

true si el objeto es un {{jsxref("Array")}}; en caso contrario, false.

- -

Descripción

- -

Si el objeto es un {{jsxref("Array")}}, devuelve truefalse, en cualquier otro caso.

- -

Vea el artículo “Determining with absolute accuracy whether or not a JavaScript object is an array” para más detalles.

- -

Ejemplos

- -
// las siguientes llamadas devuelven true
-Array.isArray([]);
-Array.isArray([1]);
-Array.isArray(new Array());
-Array.isArray(new Array('a', 'b', 'c', 'd'));
-Array.isArray(new Array(3));
-// Hecho poco conocido: Array.prototype es también un array:
-Array.isArray(Array.prototype);
-
-// todas las siguientes llamadas devuelven false
-Array.isArray();
-Array.isArray({});
-Array.isArray(null);
-Array.isArray(undefined);
-Array.isArray(17);
-Array.isArray('Array');
-Array.isArray(true);
-Array.isArray(false);
-Array.isArray({ __proto__: Array.prototype });
-
- -

instanceof vs isArray

- -

Al comprobar una instancia ArrayArray.isArray es más recomendado que instanceof porque funciona a través de iframes.

- -
var iframe = document.createElement('iframe');
-document.body.appendChild(iframe);
-xArray = window.frames[window.frames.length - 1].Array;
-var arr = new xArray(1,2,3); // [1,2,3]
-
-// Comprobando correctamente un Array
-Array.isArray(arr);  // true
-// Considerado peligroso, porque no funciona a través de iframes
-arr instanceof Array; // false
-
- -

Polyfill

- -

Ejecutar el siguiente código antes de cualquier otro código creará un Array.isArray() si no está disponible de forma nativa.

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

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.4.3.2', 'Array.isArray')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.8.5.
{{SpecName('ES6', '#sec-array.isarray', 'Array.isArray')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-array.isarray', 'Array.isArray')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

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

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/join/index.html b/files/es/web/javascript/referencia/objetos_globales/array/join/index.html deleted file mode 100644 index ea9ba3e544..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/join/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Array.prototype.join() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/join -tags: - - Array - - JavaScript - - Matriz - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/join ---- -
{{JSRef}}
- -

El método join() une todos los elementos de una matriz (o un objeto similar a una matriz) en una cadena y devuelve esta cadena.

- -

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

- -

Sintaxis

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

Parámetros

- -
-
separador {{optional_inline}}
-
Es una cadena usada para separar cada uno de los elementos del arreglo. El separador es convertido a una cadena si es necesario. Si este se omite, los elementos del arreglo son separados con una coma (","). Si el separador es una cadena vacía todos los elementos son unidos sin ningún carácter entre ellos.
-
- -

Valor de retorno

- -

Una cadena con todos los elementos de la matriz unidos. Si arr.length es 0, se devuelve la cadena vacía.

- -

Descripción

- -

Las conversiones de cadena de todos los elementos de la matriz se unen en una cadena.

- -
-

Si un elemento no está definido o es nulo, se convierte en la cadena vacía.

-
- -

Ejemplos

- -

Uniendo un arreglo cuatro veces en diferentes formas

- -

El siguiente ejemplo crea un arreglo a con tres elementos para luego unir el arreglo cuatro veces: usando el separador predeterminado, luego una coma y un espacio, luego un signo de suma, y finalmente una cadena vacío.

- -
var a = ['Viento', 'Lluvia', 'Fuego'];
-var miVar1 = a.join();      // asigna 'Viento,Lluvia,Fuego' a miVar1
-var miVar2 = a.join(', ');  // asigna 'Viento, Lluvia, Fuego' a miVar2
-var miVar3 = a.join(' + '); // asigna 'Viento + Lluvia + Fuego' a miVar3
-var miVar4 = a.join('');    // asigna 'VientoLluviaFuego' a miVar4
-
- -

Unirse a un objeto tipo matriz

- -

El siguiente ejemplo une un objeto parecido a una matriz (argumentos), llamando a {{jsxref("Function.prototype.call")}} en 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);
-//resultado esperado: "1,a,true"
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
ECMAScript 1st EditionEstándarDefinición inicial. Implementado en 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')}} 
- -

Compatibilidad con navegadores

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

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/keys/index.html b/files/es/web/javascript/referencia/objetos_globales/array/keys/index.html deleted file mode 100644 index ff7cb593f5..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/keys/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Array.prototype.keys() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/keys -tags: - - Array - - ECMAScript 2015 - - Iterator - - JavaScript - - Matriz - - Prototipo - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/keys ---- -
{{JSRef}}
- -

El método keys() devuelve un nuevo objeto  Array Iterator que contiene las claves de índice con las que acceder a cada elemento en el array.

- -

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

- -

Sintaxis

- -
arr.keys()
- -

Valor de retorno

- -

Un nuevo objeto iterador {{jsxref("Array")}}.

- -

Ejemplos

- -

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

El iterador no ignora los huecos

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

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-array.prototype.keys', 'Array.prototype.keys')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.prototype.keys', 'Array.prototype.keys')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

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

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/lastindexof/index.html b/files/es/web/javascript/referencia/objetos_globales/array/lastindexof/index.html deleted file mode 100644 index 19667a54af..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/lastindexof/index.html +++ /dev/null @@ -1,164 +0,0 @@ ---- -title: Array.prototype.lastIndexOf() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/lastIndexOf -tags: - - Array - - Arreglo - - ECMAScript 5 - - JavaScript - - Matriz - - Prototipo - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf ---- -
{{JSRef}}
- -

El método lastIndexOf() devuelve el último índice en el que un cierto elemento puede encontrarse en el arreglo, ó -1 si el elemento no se encontrara. El arreglo es recorrido en sentido contrario, empezando por el índice fromIndex.

- -

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

- -

Sintaxis

- -
arr.lastIndexOf(searchElement) arr.lastIndexOf(searchElement, fromIndex)
- -

Parámetros

- -
-
searchElement
-
Elemento a encontrar en el arreglo.
-
fromIndex {{optional_inline}}
-
El índice en el que empieza la búsqueda en sentido contrario. Por defecto la longitud del arreglo menos uno (arr.length - 1), es decir, todo el arreglo será recorrido. Si el índice es mayor o igual que la longitud del arreglo, todo el arreglo será recorrido. Si es un valor negatigo, se usará como inicio del desplazamiento el final del arreglo. Darse cuenta que aún cuando el índice es negativo, el arreglo todavía será recorrido desde atrás hacia delante. Si el índice calculado es menor de 0, se devolverá -1, es decir, el arreglo no será recorrido.
-
- -

Valor de retorno

- -

El último índice del elemento en el arreglo; -1 si no se encuentra.

- -

Descripción

- -

lastIndexOf compara searchElement con los elementos del arreglo usando igualdad estricta (el mismo método es usado para la ===, operador triple igualdad).

- -

Ejemplos

- -

Usando lastIndexOf

- -

El siguiente ejemplo usa lastIndexOf para encontrar valores en un arreglo.

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

Encontrar todas las apariciones de un elemento

- -

El siguiente ejemplo uses lastIndexOf encuentra todos los índices de un elemento en un arreglo dado, usando {{jsxref("Array.prototype.push", "push")}} añadiéndolos a otro arreglo como elementos 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]
-
- -

Darse cuenta que en este caso tenemos que tratar idx == 0  de forma separada por que el elemento siempre será encontrado independiemente del valor del parámetro fromIndex  si este es el primer elemento del arreglo. Diferente de como se trata en el método {{jsxref("Array.prototype.indexOf", "indexOf")}}.

- -

Polyfill

- -

lastIndexOf fue añadido al estándar ECMA-262 en la 5ª edición; por tanto puede que no este presente en otras implementaciones del estándar. Puedes solucionarlo escribiendo el siguiente código al principio de tus scripts, pudiendo usar lastIndexOf en implementaciones que no tiene soporte de forma nativa. Este algoritmo es exactamente el especificado en ECMA-262, 5ª edición, suponiendo que {{jsxref("Object")}}, {{jsxref("TypeError")}}, {{jsxref("Number")}}, {{jsxref("Math.floor")}}, {{jsxref("Math.abs")}}, y {{jsxref("Math.min")}} tienen sus valores originales.

- -
// Pasos de producción de ECMA-262, Edición 5, 15.4.4.15
-// Referencia: 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;
-  };
-}
-
- -

De nuevo, darse cuenta que esta implementación tiene como objeto la completa compatibilidad con lastIndexOf en Firefox y el motor SpiderMonkey JavaScript, en particular en varios casos que son posiblemente extremos. Si pretendes usar esta funcionalidad en aplicaciones reales, es posible que puedes calcular from con código menos complejo si ignoras estos casos.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.4.4.15', 'Array.prototype.lastIndexOf')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}}{{Spec2('ESDraft')}}
- -

Compatibilidad con navegadores

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

Notas de compatibilidad

- - - -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/length/index.html b/files/es/web/javascript/referencia/objetos_globales/array/length/index.html deleted file mode 100644 index cbbb1a46db..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/length/index.html +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: Array.prototype.length -slug: Web/JavaScript/Referencia/Objetos_globales/Array/length -tags: - - Array - - JavaScript - - Propiedad - - Referencia - - Vector -translation_of: Web/JavaScript/Reference/Global_Objects/Array/length ---- -
{{JSRef}}
- -

La propiedad length de un objeto que es una instancia de tipo Array establece o devuelve la cantidad de elementos en esa matriz. El valor es un entero sin signo de 32 bits que siempre es numéricamente mayor que el índice más alto en la matriz.

- -
-

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

-
- -

Descripción

- -

El valor de la propiedad length es un número entero con un signo positivo y un valor menor que 2 a la 32a potencia (232).

- -
var namelistA = new Array(4294967296); //2 a la 32a potencia = 4294967296
-var namelistC = new Array(-100) //signo negativo
-
-console.log(namelistA.length); //RangeError: longitud de la matriz inválida
-console.log(namelistC.length); //RangeError: longitud de la matriz inválida
-
-
-
-var namelistB = [];
-namelistB.length = Math.pow(2,32)-1; //establecer una longitud de la matriz menor que 2 a la 32ª potencia
-console.log(namelistB.length);
-
-//4294967295
- -

Puedes establecer la propiedad length para truncar una matriz unidimensional en cualquier momento. Cuando extiende una matriz cambiando su propiedad length, el número de elementos reales aumenta; por ejemplo, si se establece length en 3 cuando actualmente es 2, la matriz ahora contiene 3 elementos, lo que hace que el tercer elemento sea undefined.

- -
var arr = [1, 2, 3];
-printEntries(arr);
-
-arr.length = 5; // establecer la longitud de la matriz en 5 mientras que actualmente es 3.
-printEntries(arr);
-
-function printEntries(arr) {
-  var length = arr.length;
-  for (var i = 0; i < length; i++) {
-    console.log(arr[i]);
-  }
-  console.log('=== printed ===');
-}
-
-// 1
-// 2
-// 3
-// === impreso ===
-// 1
-// 2
-// 3
-// undefined
-// undefined
-// === impreso ===
- -

Pero, la propiedad length no necesariamente indica el número de valores definidos en la matriz. Ver también Relación entre length y las propiedades numéricas.

- -

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

- - - -

Ejemplos

- -

Iterando sobre una matriz

- -

En el siguiente ejemplo, la matriz numbers se itera a través de la propiedad length. El valor en cada elemento se duplica.

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

Acortando una matriz

- -

El siguiente ejemplo acorta los numbers de la matriz a una longitud de 3 si la longitud actual es mayor que 3.

- -
var numbers = [1, 2, 3, 4, 5];
-
-if (numbers.length > 3) {
-  numbers.length = 3;
-}
-
-console.log(numbers); // [1, 2, 3]
-console.log(numbers.length); // 3
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
ECMAScript 1ra Edición.EstándarDefinición inicial.
{{SpecName('ES5.1', '#sec-15.4.5.2', 'Array.length')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-properties-of-array-instances-length', 'Array.length')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-properties-of-array-instances-length', 'Array.length')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

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

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/map/index.html b/files/es/web/javascript/referencia/objetos_globales/array/map/index.html deleted file mode 100644 index 8b958a4945..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/map/index.html +++ /dev/null @@ -1,360 +0,0 @@ ---- -title: Array.prototype.map() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/map -tags: - - Array - - Arreglo - - Callback - - ECMAScript5 - - Polifill - - Prototype - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/map ---- -
{{JSRef}}
- -

El método map() crea un nuevo array con los resultados de la llamada a la función indicada aplicados a cada uno de sus elementos.

- -
var numbers = [1, 5, 10, 15];
-var doubles = numbers.map(function(x) {
-   return x * 2;
-});
-// doubles is now [2, 10, 20, 30]
-// numbers is still [1, 5, 10, 15]
-
-var numbers = [1, 4, 9];
-var roots = numbers.map(function(num) {
-    return Math.sqrt(num);
-});
-// roots is now [1, 2, 3]
-// numbers is still [1, 4, 9]
-
- -

Sintaxis

- -
var nuevo_array = arr.map(function callback(currentValue, index, array) {
-    // Elemento devuelto de nuevo_array
-}[, thisArg])
- -

Parámetros

- -
-
callback
-
Función que producirá un elemento del nuevo array, recibe tres argumentos:
-
-
-
currentValue
-
El elemento actual del array que se está procesando.
-
index
-
El índice del elemento actual dentro del array.
-
array
-
El array sobre el que se llama map.
-
-
-
thisArg
-
Opcional. Valor a usar como this al ejecutar callback.
-
- -

Descripción

- -

map llama a la función callback provista una vez por elemento de un array, en orden, y construye un nuevo array con los resultados. callback se invoca sólo para los índices del array que tienen valores asignados; no se invoca en los índices que han sido borrados o a los que no se ha asignado valor.

- -

callback es llamada con tres argumentos: el valor del elemento, el índice del elemento, y el objeto array que se está recorriendo.

- -

Si se indica un parámetro thisArg a un map, se usará como valor de this en la función callback. En otro caso, se pasará {{jsxref("Global_Objects/undefined", "undefined")}} como su valor this. El valor de this observable por el callback se determina de acuerdo a las reglas habituales para determinar el valor this visto por una función.

- -

map no modifica el array original en el que es llamado (aunque callback, si es llamada, puede modificarlo).

- -

El rango de elementos procesado por map es establecido antes de la primera invocación del callback. Los elementos que sean agregados al array después de que la llamada a map comience no serán visitados por el callback. Si los elementos existentes del array son modificados o eliminados, su valor pasado al callback será el valor en el momento que el map lo visita; los elementos que son eliminados no son visitados.

- -

Ejemplos

- -

Procesar un array de números aplicándoles la raíz cuadrada

- -

El siguiente código itera sobre un array de números, aplicándoles la raíz cuadrada a cada uno de sus elementos, produciendo un nuevo array a partir del inicial.

- -
var numeros= [1, 4, 9];
-var raices = numeros.map(Math.sqrt);
-// raices tiene [1, 2, 3]
-// numeros aún mantiene [1, 4, 9]
-
- -

Usando map para dar un nuevo formato a los objetos de un array

- -

El siguiente código toma un array de objetos y crea un nuevo array que contiene los nuevos objetos formateados.

- -
var kvArray = [{clave:1, valor:10},
-               {clave:2, valor:20},
-               {clave:3, valor: 30}];
-
-var reformattedArray = kvArray.map(function(obj){
-   var rObj = {};
-   rObj[obj.clave] = obj.valor;
-   return rObj;
-});
-
-// reformattedArray es ahora [{1:10}, {2:20}, {3:30}],
-
-// kvArray sigue siendo:
-// [{clave:1, valor:10},
-//  {clave:2, valor:20},
-//  {clave:3, valor: 30}]
-
- -

Mapear un array de números usando una función con un argumento

- -

El siguiente código muestra cómo trabaja map cuando se utiliza una función que requiere de un argumento. El argumento será asignado automáticamente a cada elemento del arreglo conforme map itera el arreglo original.

- -
var numeros = [1, 4, 9];
-var dobles  = numeros.map(function(num) {
-  return num * 2;
-});
-
-// dobles es ahora [2, 8, 18]
-// numeros sigue siendo [1, 4, 9]
-
- -

Usando map de forma genérica

- -

Este ejemplo muestra como usar map en {{jsxref("Global_Objects/String", "String")}} para obtener un arreglo de bytes en codifcación ASCII representando el valor de los caracteres:

- -
var map = Array.prototype.map;
-var valores = map.call('Hello World', function(char) { return char.charCodeAt(0); });
-// valores ahora tiene [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
-
- -

Usando map genérico con querySelectorAll

- -

Este ejemplo muestra como iterar sobre una colección de objetos obtenidos por querySelectorAll. En este caso obtenemos todas las opciones seleccionadas en pantalla y se imprimen en la consola:

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

Usando map para invertir una cadena

- -
var str = '12345';
-[].map.call(str, function(x) {
-  return x;
-}).reverse().join('');
-
-// Salida: '54321'
-// Bonus: usa'===' para probar si la cadena original era un palindromo
-
- -

Caso de uso engañoso

- -

(inspirado por este artículo)

- -

Es común utilizar el callback con un argumento (el elemento siendo pasado). Ciertas funciones son también usadas comunmente con un argumento, aún cuando toman argumentos adicionales opcionales.  Estos hábitos pueden llevar a comportamientos confusos.

- -
// Considera:
-['1', '2', '3'].map(parseInt);
-// Mientras uno esperaría [1, 2, 3]
-// en realidad se obtiene [1, NaN, NaN]
-
-// parseInt se usa comúnmente con un argumento, pero toma dos.
-// El primero es una expresión y el segundo el radix.
-// a la función callback, Array.prototype.map pasa 3 argumentos:
-// el elemento, el índice y el array.
-// El tercer argumento es ignorado por parseInt, pero no el segundo,
-// de ahí la posible confusión. Véase el artículo del blog para más detalles
-
-function returnInt(element) {
-  return parseInt(element, 10);
-}
-
-['1', '2', '3'].map(returnInt); // [1, 2, 3]
-// El resultado es un arreglo de números (como se esperaba)
-
-// Un modo más simple de lograr lo de arriba, mientras de evita el "gotcha":
-['1', '2', '3'].map(Number); // [1, 2, 3]
-
- -

Polyfill

- -

map fue agregado al estandar ECMA-262 en la 5th edición; por lo tanto podría no estar presente en todas la implementaciones del estándar. Puedes sobrepasar esto insertando el siguiente código al comienzo de tus scripts, permitiendo el uso de map en implementaciones que no lo soportan de forma nativa. Este algoritmo es exactamente el mismo especificado en ECMA-262, 5th edición, asumiendo {{jsxref("Global_Objects/Object", "Object")}}, {{jsxref("Global_Objects/TypeError", "TypeError")}}, y {{jsxref("Global_Objects/Array", "Array")}} tienen sus valores originales y que el callback.call evalua el 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;
-  };
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.4.4.19', 'Array.prototype.map')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.map', 'Array.prototype.map')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.map', 'Array.prototype.map')}}{{Spec2('ESDraft')}}
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.8")}}{{CompatIE("9")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome para AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.8")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/of/index.html b/files/es/web/javascript/referencia/objetos_globales/array/of/index.html deleted file mode 100644 index f57c7e2bc1..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/of/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Array.of() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/of -tags: - - Array - - ECMAScript 2015 - - JavaScript - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/of ---- -
{{JSRef}}
- -

El método Array.of() crea una nueva instancia Array con un número variable de elementos pasados como argumento, independientemente del número o del tipo.

- -

La diferencia entre Array.of() y el constructor Array reside en como maneja los parámetros de tipo entero: Array.of(7) crea un array con un solo elemento, 7, mientras que Array(7) crea un array vacío con una propiedad length de 7 (Nota: esto implica un array de 7 ranuras vacías, no ranuras con valores undefined).

- -
Array.of(7);       // [7]
-Array.of(1, 2, 3); // [1, 2, 3]
-
-Array(7);          // [ , , , , , , ]
-Array(1, 2, 3);    // [1, 2, 3]
- -

Sintaxis

- -
Array.of(elemento0[, elemento1[, ...[, elementoN]]])
- -

Parámetros

- -
-
elementoN
-
Valores con los que se creará el Array en su respectivo indice.
-
-

Valor de retorno

-
-
Una nueva instancia de {{jsxref("Array")}}.
-
- -

Descripción

- -

Esta función es parte del estándar ECMAScript 2015. Para obtener más información, consulte Array.of y Array.from proposal y Array.of polyfill.

- -

Ejemplos

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

Polyfill

- -

Escribiendo el siguiente código antes que cualquier otro, podemos emular la funcionalidad de Array.of() si es que ésta no está disponible de forma nativa.

- -
if (!Array.of) {
-  Array.of = function() {
-    return Array.prototype.slice.call(arguments);
-  };
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-array.of', 'Array.of')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.of', 'Array.of')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
- - -

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/pop/index.html b/files/es/web/javascript/referencia/objetos_globales/array/pop/index.html deleted file mode 100644 index acc6d06885..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/pop/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Array.prototype.pop() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/pop -tags: - - Array - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/pop ---- -
{{JSRef}}
- -

El método pop() elimina el último elemento de un array y lo devuelve. Este método cambia la longitud del array.

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

Sintaxis

- -
arr.pop()
- -

Valor devuelto

- -

El elemento que ha sido eliminado del array; {{jsxref("undefined")}} si el array está vacío.

- -

Descripción

- -

El método pop elimina el último elemento de un array y devuelve su valor al método que lo llamó.

- -

pop es intencionadamente genérico; este método puede ser {{jsxref("Function.call", "called", "", 1)}} o {{jsxref("Function.apply", "applied", "", 1)}} en objectos similares a un array. En objetos que no contengan una propiedad length, que refleje su forma en una serie de propiedades numéricas consecutivas en base cero, puede no comportarse de manera significativa.

- -

Si se llama a pop() en un array vacío, devuelve {{jsxref("undefined")}}.

- -

Ejemplos

- -

Eliminando el último elemento de un array

- -

El siguiente código crea el array myFish, que contiene cuatro elementos, a continuación, elimina su último elemento.

- -
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
-
-var popped = myFish.pop();
-
-console.log(myFish); // ['angel', 'clown', 'mandarin' ]
-
-console.log(popped); // 'sturgeon'
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES3')}}EstándarDefinición inicial. Implementada en JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.6', 'Array.prototype.pop')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-array.prototype.pop', 'Array.prototype.pop')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-array.prototype.pop', 'Array.prototype.pop')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
-

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

-
- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/prototype/index.html b/files/es/web/javascript/referencia/objetos_globales/array/prototype/index.html deleted file mode 100644 index 2098f514ad..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/prototype/index.html +++ /dev/null @@ -1,188 +0,0 @@ ---- -title: Array.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/Array/prototype -tags: - - Array - - Arreglo - - JavaScript - - Property - - Propiedad -translation_of: Web/JavaScript/Reference/Global_Objects/Array/prototype ---- -
{{JSRef}}
- -

La propiedad Array.prototype representa el prototipo del constructor {{jsxref("Array")}} y le permite agregar nuevas propiedades y métodos a todos los objetos Array.

- -
// Si JavaScript no proporciona un método first() de forma nativa,
-// agrega un nuevo método que devuelve el primer elemento de una matriz.
-
-if (!Array.prototype.first) {
-  Array.prototype.first = function() {
-    return this[0];
-  }
-}
-
- -

Descripción

- -

Las instancias {{jsxref("Array")}} heredan de Array.prototype. Al igual que con todos los constructores, puede cambiar el prototipo del constructor del objeto para realizar cambios en todas las instancias {{jsxref("Array")}} . Por ejemplo, puede agregar nuevos métodos y propiedades para extender todos los objetos Array. Esto se usa para {{Glossary("Polyfill", "polyfilling")}}, por ejemplo.

- -

Un hecho poco conocido: Array.prototype en sí es un {{jsxref("Array")}}:

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

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

- -

Propiedades

- -
-
Array.prototype.constructor
-
Especifica la función que crea el prototipo de un objeto.
-
{{jsxref("Array.prototype.length")}}
-
Refleja el número de elementos en un array.
-
{{jsxref("Array.@@unscopables", "Array.prototype[@@unscopables]")}}
-
Un símbolo que contiene nombres de propiedades para excluir de un ámbito vinculante with.
-
- -

Métodos

- -

Métodos de mutación

- -

Estos métodos modifican el array:

- -
-
{{jsxref("Array.prototype.copyWithin()")}}
-
Copia una secuencia de elementos dentro del array.
-
{{jsxref("Array.prototype.fill()")}}
-
Rellena todos los elementos de un array desde un índice de inicio hasta un índice de fin con un valor determinado.
-
{{jsxref("Array.prototype.pop()")}}
-
Elimina el último elemento de un array y devuelve dicho elemento.
-
{{jsxref("Array.prototype.push()")}}
-
Añade uno o más elementos al final de un array y devuelve la nueva longitud del array.
-
{{jsxref("Array.prototype.reverse()")}}
-
Invierte el orden de los elementos de un array — el primero será el último y el último será el primero.
-
{{jsxref("Array.prototype.shift()")}}
-
Elimina el primer elemento de un array y devuelve dicho elemento.
-
{{jsxref("Array.prototype.sort()")}}
-
Ordena los elementos de un array y devuelve el array.
-
{{jsxref("Array.prototype.splice()")}}
-
Añade o elimina elementos de un array.
-
{{jsxref("Array.prototype.unshift()")}}
-
Añade uno o más elementos al principio del array y devuelve la nueva longitud del array.
-
- -

Métodos de consulta

- -

Estos métodos no modifican el array y devuelven alguna representación del array.

- -
-
{{jsxref("Array.prototype.concat()")}}
-
Devuelve un nuevo array compuesto por este array unido con otro(s) array(s) y/o valor(es).
-
{{jsxref("Array.prototype.includes()")}}
-
Determina si un array contiene cierto elemento, devolviendo true o false apropiadamente.
-
{{jsxref("Array.prototype.indexOf()")}}
-
Devuelve el primer (menor) índice de un elemento dentro del array que sea igual al valor especificado, o -1 si no contiene dicho valor.
-
{{jsxref("Array.prototype.join()")}}
-
Une todos los elementos de un array en una cadena de texto.
-
{{jsxref("Array.prototype.lastIndexOf()")}}
-
Devuelve el último (mayor) índice de un elemento dentro del array que sea igual al valor especificado, o -1 si no contiene dicho valor.
-
{{jsxref("Array.prototype.slice()")}}
-
Extrae una sección de un array y devuelve un nuevo array.
-
{{jsxref("Array.prototype.toSource()")}} {{non-standard_inline}}
-
Devuelve el array literal que representa al propio array especificado; puedes usar este valor para crear un nuevo array. Reemplaza al método {{jsxref("Object.prototype.toSource()")}}.
-
{{jsxref("Array.prototype.toString()")}}
-
Devuelve una cadena de texto que representa el array y sus elementos. Reemplaza el método {{jsxref("Object.prototype.toString()")}}.
-
{{jsxref("Array.prototype.toLocaleString()")}}
-
Devuelve una cadena de texto localizada que representa el array y sus elementos. Reemplaza el método {{jsxref("Object.prototype.toLocaleString()")}}.
-
- -

Métodos de iteración

- -

Muchos métodos toman como argumentos funciones que son llamadas mientras se procesa el array. Cuando estos métodos son llamados, la longitud (length) del array es muestreado, y cualquier elemento añadido por encima de esta longitud dentro de la función (callback) no es visitado. Otros cambios sobre el array (establecer el valor o eliminar un elemento) podría afectar el resultado de la operación si el método visita el elemento después. Mientras que el comportamiento especifico de estos métodos en muchos casos es bien definido, no deberías delegar sobre eso con la finalidad de no confundir a otros que podrían leer tu código. Si debes modificar el array, copialo en un nuevo array en su lugar.

- -
-
{{jsxref("Array.prototype.entries()")}}
-
Devuelve un nuevo objeto Array Iterator que contiene los pares clave/valor para cada índice en el array.
-
{{jsxref("Array.prototype.every()")}}
-
Devuelve true si cada elemento en este array satisface la función de testeo proporcionada.
-
{{jsxref("Array.prototype.filter()")}}
-
Crea un nuevo array con todos los elementos de este array para los cuales la función de filtrado proporcionada devuelve true.
-
{{jsxref("Array.prototype.find()")}}
-
Devuelve el elemento hallado en el array si un elemento en el array satisface la función de testeo proporcionada, o undefined si no se halla ninguno.
-
{{jsxref("Array.prototype.findIndex()")}}
-
Devuelve el índice hallado en el array si un elemento en el array satisface la función de testeo proporcionada, o -1 si no se halla ninguno.
-
- -
-
{{jsxref("Array.prototype.forEach()")}}
-
Llama a una función para cada elemento del array.
-
{{jsxref("Array.prototype.keys()")}}
-
Devuelve un nuevo Array Iterator que contiene las claves para cada índice en el array.
-
{{jsxref("Array.prototype.map()")}}
-
Crea un nuevo array con el resultado de llamar a la función proporcionada sobre cada elemento de este array.
-
{{jsxref("Array.prototype.reduce()")}}
-
Aplica una función que recibe un acumulador y cada valor del array (de izquierda a derecha) para reducirlo a un único valor.
-
{{jsxref("Array.prototype.reduceRight()")}}
-
Aplica una función que recibe un acumulador y cada valor del array (de derecha a izquierda) para reducirlo a un único valor.
-
{{jsxref("Array.prototype.some()")}}
-
Devuelve true si al menos un elemento en este array satisface la función de testeo proporcionada.
-
{{jsxref("Array.prototype.values()")}}
-
Devuelve un nuevo objeto Array Iterator que contiene los valores para cada índice en el array.
-
{{jsxref("Array.prototype.@@iterator()", "Array.prototype[@@iterator]()")}}
-
Devuelve un nuevo objeto Array Iterator que contiene los valores para cada índice en el array.
-
- -

Métodos genéricos (no estándar)

- -

Muchos métodos en el objeto Javascript Array son diseñados para ser generalmente llamados para todos los objetos que "parecen" Arrays. Es decir, pueden ser usados sobre cualquier objeto que tenga una propiedad longitud (length), y puedan ser accedidos usando nombres de propiedades numéricos (como con la indexación array[5]). Algunos métodos, tales como {{jsxref("Array.join", "join")}}, sólo leen la longitud y propiedades numéricas del objeto sobre el cual son llamados. Otros, como {{jsxref("Array.reverse", "reverse")}}, requieren que las propiedades numéricas del objeto y la longitud sean mutables; estos métodos, por tanto, no pueden ser llamados sobre objetos como {{jsxref("String")}}, los cuales no permiten que su longitud o propiedades numéricas sintetizadas sean establecidas.

- -

Especificaciones

- -

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial.
{{SpecName('ES5.1', '#sec-15.4.3.1', 'Array.prototype')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-array.prototype', 'Array.prototype')}}{{Spec2('ES6')}} -

Se agregaron los métodos copyWithin(), fill(), entries(), keys(), values(), find(), findIndex().

-
{{SpecName('ES7', '#sec-array.prototype', 'Array.prototype')}}{{Spec2('ES7')}}Se agregó el método includes().
- -

 

- -

Compatibilidad con navegadores

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

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/push/index.html b/files/es/web/javascript/referencia/objetos_globales/array/push/index.html deleted file mode 100644 index fc00ce7e7a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/push/index.html +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: Array.prototype.push() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/push -tags: - - Array - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/push ---- -
{{JSRef}}
- -

El método push() añade uno o más elementos al final de un array y devuelve la nueva longitud del array.

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

Sintaxis

- -
arr.push(element1[, ...[, elementN]])
- -

Parámetros

- -
-
elementN
-
Los elementos a añadir al final del array.
-
- -

Valor devuelto

- -

La nueva propiedad {{jsxref("Array.length", "length")}} del objeto sobre el cual se efectuó la llamada.

- -

Descripción

- -

El método push es muy práctico para añadir valores a un array.

- -

push es genérico intencionadamente. Este método puede ser {{jsxref("Function.call", "call()")}} o {{jsxref("Function.apply", "apply()")}} a objetos que representen arrays. El método push depende de la propiedad length para decidir donde empezar a insertar los valores dados. Si el valor de la propiedad length no puede ser convertido en numérico, el índice 0 es usado. Esto permite la posibilidad de que la propiedad length sea inexistente, y en este caso length será creado.

- -

Los únicos objetos nativos que se asemejen al array son {{jsxref("Global_Objects/String", "strings", "", 1)}} objetos, aunque estos no se puedan usar en la aplicación de este método ya que son inmutables.

- -

Ejemplos

- -

Ejemplo: Añadiendo elementos a un array

- -

El siguiente código crea el array sports que contiene dos elementos, luego añade 2 elementos más. Tras ejecutar el código, sports contiene 4 elementos: "soccer", "baseball", "football" and "swimming".

- -
var sports = ['soccer', 'baseball'];
-var total = sports.push('football', 'swimming');
-
-console.log(sports); // ['soccer', 'baseball', 'football', 'swimming']
-console.log(total);  // 4
-
- -

Uniendo dos arrays

- -

This example uses {{jsxref("Function.apply", "apply()")}} to push all elements from a second array.

- -

Do not use this method if the second array (moreVegs in the example) is very large, because the maximum number of parameters that one function can take is limited in practice. See {{jsxref("Function.apply", "apply()")}} for more details.

- -
var vegetables = ['parsnip', 'potato'];
-var moreVegs = ['celery', 'beetroot'];
-
-// Merge the second array into the first one
-// Equivalent to vegetables.push('celery', 'beetroot');
-Array.prototype.push.apply(vegetables, moreVegs);
-
-console.log(vegetables); // ['parsnip', 'potato', 'celery', 'beetroot']
-
- -

Using an object in an array-like fashion

- -

Como se menciona anteriormente, push es intencionadamente genérico, y podemos usar eso a nuestro favor. Array.prototype.push puede funcionar bien con un objeto, como muestra este ejemplo. Ten en cuenta que no se crea un array para almacenar una colección de objetos. En su lugar, almacenamos la colección en el propio objeto y se utiliza el método call sobre Array.prototype.push para hacer creer al método que estamos tratando a un array, y simplemente funciona, gracias a la forma en que JavaScript nos permite establecer el contexto de la ejecución.

- -
var obj = {
-    length: 0,
-
-    addElem: function addElem(elem) {
-        // obj.length is automatically incremented
-        // every time an element is added.
-        [].push.call(this, elem);
-    }
-};
-
-// Let's add some empty objects just to illustrate.
-obj.addElem({});
-obj.addElem({});
-console.log(obj.length);
-// → 2
-
- -

Tenga en cuenta que aunque obj no es un array, el método push ha incrementado satisfactoriamente la propiedad length de obj tal y como si se tratara de un array.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial. Implementado en 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')}} 
{{SpecName('ESDraft', '#sec-array.prototype.push', 'Array.prototype.push')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad en navegadores

- -
- - -

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/reduce/index.html b/files/es/web/javascript/referencia/objetos_globales/array/reduce/index.html deleted file mode 100644 index 68d7a9cb2f..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/reduce/index.html +++ /dev/null @@ -1,215 +0,0 @@ ---- -title: Array.prototype.reduce() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/reduce -tags: - - Array - - ECMAScript 5 - - JavaScript - - Prototype - - Reduce - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/Reduce ---- -
{{JSRef}}
- -

El método reduce() ejecuta una función reductora sobre cada elemento de un array, devolviendo como resultado un único valor.

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

La función reductora recibe cuatro argumentos:

- -
    -
  1. Acumulador (acc)
  2. -
  3. Valor Actual (cur)
  4. -
  5. Índice Actual (idx)
  6. -
  7. Array (src)
  8. -
- -

El valor devuelto de la función reductora se asigna al acumulador, cuyo valor se recuerda en cada iteración de la matriz y, en última instancia, se convierte en el valor final, único y resultante.

- -

Sintaxis

- -
arr.reduce(callback(acumulador, valorActual[, índice[, array]])[, valorInicial])
- -

Parámetros

- -
-
callback
-
Función a ejecutar sobre cada elemento del array (excepto para el primero, si no se proporciona valorInicial), que recibe cuatro parámetros: -
-
acumulador
-
El acumulador acumula el valor devuelto por la función callback. Es el valor acumulado devuelto en la última invocación de callback, o el valorInicial, si se proveyó. (Ver a continuación).
-
valorActual
-
El elemento actual que está siendo procesado en el array.
-
índice {{optional_inline}}
-
El índice del elemento actual que está siendo procesado en el array. Empieza desde el índice 0 si se provee valorInicial. En caso contrario, comienza desde el índice 1.
-
array {{optional_inline}}
-
El array sobre el cual se llamó el método reduce().
-
-
-
valorInicial {{optional_inline}}
-
Un valor a usar como primer argumento en la primera llamada de la función callback. Si no se proporciona el valorInicial, el primer elemento del array será utilizado y saltado. Llamando a reduce() sobre un array vacío sin un valorInicial lanzará un {{jsxref("TypeError")}}.
-
- -

Descripción

- -

El método reduce() ejecuta callback una vez por cada elemento presente en el array, excluyendo los huecos del mismo, recibe cuatro argumentos:

- - - -

La primera vez que se llama la función, valorAnterior y valorActual pueden tener uno de dos valores. Si se proveyó un valorInicial al llamar a reduce, entonces valorAnterior será igual al valorInicial y valorActual será igual al primer elemento del array. Si no se proveyó un valorInicial, entonces valorAnterior será igual al primer valor en el array y valorActual será el segundo.

- -

Si el array está vacío y no se proveyó un valorInicial lanzará un {{jsxref("Global_Objects/TypeError", "TypeError")}}. Si el array tiene un sólo elemento (sin importar la posición) y no se proveyó un valorInicial, o si se proveyó un valorInicial pero el arreglo está vacío, se retornará ese único valor sin llamar a la función.

- -

Suponga que ocurre el siguiente uso de reduce:

- -
[0,1,2,3,4].reduce(function(valorAnterior, valorActual, indice, vector){
-  return valorAnterior + valorActual;
-});
-
-// Primera llamada
-valorAnterior = 0, valorActual = 1, indice = 1
-
-// Segunda llamada
-valorAnterior = 1, valorActual = 2, indice = 2
-
-// Tercera llamada
-valorAnterior = 3, valorActual = 3, indice = 3
-
-// Cuarta llamada
-valorAnterior = 6, valorActual = 4, indice = 4
-
-// el array sobre el que se llama a reduce siempre es el objeto [0,1,2,3,4]
-
-// Valor Devuelto: 10
-
- -

Y si proporcionas un valorInicial, el resultado sería como este:

- -
[0,1,2,3,4].reduce(function(valorAnterior, valorActual, indice, vector){
-  return valorAnterior + valorActual;
-}, 10);
-
-// Primera llamada
-valorAnterior = 10, valorActual = 0, indice = 0
-
-// Segunda llamada
-valorAnterior = 10, valorActual = 1, indice = 1
-
-// Tercera llamada
-valorAnterior = 11, valorActual = 2, indice = 2
-
-// Cuarta llamada
-valorAnterior = 13, valorActual = 3, indice = 3
-
-// Quinta llamada
-valorAnterior = 16, valorActual = 4, indice = 4
-
-// el array sobre el que se llama a reduce siempre es el objeto [0,1,2,3,4]
-
-// Valor Devuelto: 20
-
- -

Polyfill

- -
-

Polyfill se refiere a unas líneas de código o un plugin que permite "tener"  (en realidad se simulan de alguna otra manera) las nuevas funcionalidades   de HTML5 en aquellos navegadores que nativamente no lo soportan. Consigue que, en adelante, el código sea transparente para el programador, como si el navegador soportase la funcionalidad nativamente.

-
- -

reduce es una extensión de JavaScript al estándar ECMA-262; como tal puede que no esté presente en otras implementaciones del estándar. Puedes trabajar con ésto insertando el siguiente código al comienzo de tus scripts, permitiendo el uso de reduce en implementaciones de ECMA-262 que no lo implementan de modo nativo. Este algoritmo es exactamente el mismo usando en Firefox y SpiderMonkey.

- -
if (!Array.prototype.reduce)
-{
-  Array.prototype.reduce = function(fun /*, inicial*/)
-  {
-    var longitud = this.length;
-    if (typeof fun != "function")
-      throw new TypeError();
-
-    // no se devuelve ningún valor si no hay valor inicial y el array está vacío
-    if (longitud == 0 && arguments.length == 1)
-      throw new TypeError();
-
-    var indice = 0;
-    if (arguments.length >= 2)
-    {
-      var rv = arguments[1];
-    }
-    else
-    {
-      do
-      {
-        if (indice in this)
-        {
-          rv = this[indice++];
-          break;
-        }
-
-        // si el array no contiene valores, no existe valor inicial a devolver
-        if (++indice >= longitud)
-          throw new TypeError();
-      }
-      while (true);
-    }
-
-    for (; indice < longitud; indice++)
-    {
-      if (indice in this)
-        rv = fun.call(null, rv, this[indice], indice, this);
-    }
-
-    return rv;
-  };
-}
-
- -

Ejemplos

- -

Ejemplo: Sumar todos los valores de un array

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

Ejemplo: Integrar un array a partir de varios arrays

- -
var integrado = [[0,1], [2,3], [4,5]].reduce(function(a,b) {
-  return a.concat(b);
-});
-// integrado es [0, 1, 2, 3, 4, 5]
-
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-array.prototype.reduce', 'Array.prototype.reduce()')}}
- -

Compatibilidad con navegadores

- -
- - -

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/reduceright/index.html b/files/es/web/javascript/referencia/objetos_globales/array/reduceright/index.html deleted file mode 100644 index cff59fddf4..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/reduceright/index.html +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: Array.prototype.reduceRight() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/reduceRight -tags: - - Array - - ECMAScript5 - - JavaScript - - JavaScript 1.8 - - Method - - Prototype -translation_of: Web/JavaScript/Reference/Global_Objects/Array/ReduceRight ---- -
{{JSRef("Objetos_globales", "Array")}}
- -

Resumen

- -

Aplica una función simultáneamente contra un acumulador y cada elemento de un array (de derecha a izquierda) para reducirlo a un único valor.

- -

Sintaxis

- -
array.reduceRight(
-funcion[,
-valorInicial])
-
- -

Parámetros

- -
-
callback
-
Función a ejecutar para cada valor del array.
-
initialValue
-
Objeto a usar como primer argumento en la primera llamada de la funcion.
-
- -

Descripción

- -

reduceRight ejecuta la funcion una vez para cada elemento presente en el array, excluyendo los huecos del mismo, recibiendo cuatro argumentos: el valor inicial (o valor de la llamada previa de funcion), el valor del elemento actual, el índice actual y el array sobre el que ocurre la iteración.

- -

La llamada a la funcion de reduceRight sería similar a esto:

- -
.reduceRight(function(valorPrevio, valorActual, indice, array){
-  // ...
-})
-
- -

La primera vez que se llama a la función, el valorPrevio y el valorActual puede ser uno de los dos valores. Si se incluye un valorInicial en la llamada a reduceRight, entonces el valorPrevio será igual al valorInicial y el valorActual será igual al último valor del array. Si no se incluye ningún valorInicial, entonces el valorPrevio será igual al último valor del array y el valorActual será igual al penúltimo valor.

- -

Algún ejemplo de la ejecución de la función paso a paso sería similar a esto:

- -
[0,1,2,3,4].reduceRight(function(valorPrevio, valorActual, indice, array){
-  return valorPrevio + valorActual;
-});
-
-// First call
-valorPrevio = 4, valorActual = 3, indice = 3
-
-// Second call
-valorPrevio = 7, valorActual = 2, indice = 2
-
-// Third call
-valorPrevio = 9, valorActual = 1, indice = 1
-
-// Fourth call
-valorPrevio = 10, valorActual = 0, indice = 0
-
-// el array sobre el que se llama a reduceRight siempre es el objeto [0,1,2,3,4]
-
-// Valor Devuelto: 10
-
- -

Y si proporcionas un valorInicial, el resultado sería como este:

- -
[0,1,2,3,4].reduceRight(function(valorPrevio, valorActual, indice, array){
-  return valorPrevio + currentValue;
-}, 10);
-
-// Primera llamada
-valorPrevio = 10, valorActual = 4, indice = 4
-
-// Segunda llamada
-valorPrevio = 14, valorActual = 3, indice = 3
-
-// Tercera llamada
-valorPrevio = 17, valorActual = 2, indice = 2
-
-// Cuarta llamada
-valorPrevio = 19, valorActual = 1, indice = 1
-
-// Quinta llamada
-valorPrevio = 20, valorActual = 0, indice = 0
-
-// el array sobre el que se llama a reduce siempre es el objeto [0,1,2,3,4]
-
-// Valor Devuelto: 20
-
- -

Compatibilidad

- -

reduceRight es una extensión de JavaScript al estándar ECMA-262; como tal puede que no esté presente en otras implementaciones del estándar. Puedes trabajar con ésto insertando el siguiente código al comienzo de tus scripts, permitiendo el uso de reduceRight en implementaciones de ECMA-262 que no lo implementan de modo nativo. Este algoritmo es exactamente el mismo usando en Firefox y SpiderMonkey.

- -
if (!Array.prototype.reduceRight)
-{
-  Array.prototype.reduceRight = function(fun /*, inicial*/)
-  {
-    var longitud = this.length;
-    if (typeof fun != "function")
-      throw new TypeError();
-
-    // no se devuelve ningún valor si no hay valor inicial y el array está vacío
-    if (longitud == 0 && arguments.length == 1)
-      throw new TypeError();
-
-    var indice = longitud - 1;
-    if (arguments.length >= 2)
-    {
-      var rv = arguments[1];
-    }
-    else
-    {
-      do
-      {
-        if (indice in this)
-        {
-          rv = this[indice--];
-          break;
-        }
-
-        // si el array no contiene valores, no existe valor incial a devolver
-        if (--indice < 0)
-          throw new TypeError();
-      }
-      while (true);
-    }
-
-    for (; indice >= 0; indice--)
-    {
-      if (indice in this)
-        rv = fun.call(null, rv, this[indice], indice, this);
-    }
-
-    return rv;
-  };
-}
-
- -

Ejemplos

- -

Ejemplos: Resumir todos los valores de un array

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

Ejemplo: Integrar un array a partir de varios arrays

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

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/reverse/index.html b/files/es/web/javascript/referencia/objetos_globales/array/reverse/index.html deleted file mode 100644 index 7399f8dcda..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/reverse/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Array.prototype.reverse() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/reverse -tags: - - Array - - JavaScript - - Prototipo - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/reverse ---- -
{{JSRef}}
- -

El método reverse() invierte el orden de los elementos de un array in place. El primer elemento pasa a ser el último y el último pasa a ser el primero.

- -

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

- -

Sintaxis

- -
a.reverse()
- -

Valor devuelto

- -

El array invertido.

- -

Descripción

- -

El método reverse cruza los elementos del objeto matriz invocados en su lugar, mutando la matriz, y retornando una referencia a la misma.

- -

Ejemplos

- -

Colocar al revés los elementos de un array

- -

El siguiente ejemplo crea un array a que contiene tres elementos y luego lo invierte.
- La llamada a reverse() devuelve una referencia al array a invertido.

- -
const a = [1, 2, 3];
-
-console.log(a); // [1, 2, 3]
-
-a.reverse();
-
-console.log(a); // [3, 2, 1]
-
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.4.4.8', 'Array.prototype.reverse')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-array.prototype.reverse', 'Array.prototype.reverse')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-array.prototype.reverse', 'Array.prototype.reverse')}}{{Spec2('ESDraft')}} 
- - - -

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

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/shift/index.html b/files/es/web/javascript/referencia/objetos_globales/array/shift/index.html deleted file mode 100644 index 7391f6c325..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/shift/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Array.prototype.shift() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/shift -translation_of: Web/JavaScript/Reference/Global_Objects/Array/shift ---- -
{{JSRef}}
- -

El método shift() elimina el primer elemento del array y lo retorna. Este método modifica la longitud del array.

- -

Sintaxis

- -
arr.shift()
- -

Descripción

- -

El método shift elimina el elemento en el índice cero y desplaza los valores consecutivos hacia abajo, devolviendo el valor eliminado. Si la propiedad {{jsxref("Array.length", "length")}} es 0, devuelve {{jsxref("undefined")}}.

- -

shift es genérico; este método puede utilizarse con {{jsxref("Function.call", "call", "", 1)}} o {{jsxref("Function.apply", "apply", "", 1)}} a objetos simliares a arrays. Los objetos que no tengan una propiedad length que refleje el último elemento de una serie consecutiva de propiedades numéricas con índice base cero pueden no comportarse de manera significativa.

- -

Ejemplos

- -

Eliminando un elemento de un array

- -

El siguiente código muestra el contenido del array miPescado antes y después de eliminar el primer elemento. También muestra el elemento eliminado:

- -
var miPescado = ['ángel', 'payaso', 'mandarín', 'cirujano'];
-
-console.log('miPescado antes: ' + miPescado);
-// "miPescado antes: ángel,payaso,mandarín,cirujano"
-
-var eliminado = miPescado.shift();
-
-console.log('miPescado después: ' + miPescado);
-// "miPescado after: payaso,mandarín,cirujano"
-
-console.log('Elemento eliminado: ' + eliminado);
-// "Elemento eliminado: ángel"
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial. Implementado en Javascript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.9', 'Array.prototype.shift')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.shift', 'Array.prototype.shift')}}{{Spec2('ES6')}}
- - - -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("1.0")}}{{CompatGeckoDesktop("1.7")}}{{CompatIE("5.5")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/slice/index.html b/files/es/web/javascript/referencia/objetos_globales/array/slice/index.html deleted file mode 100644 index e3ddd7e8a5..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/slice/index.html +++ /dev/null @@ -1,287 +0,0 @@ ---- -title: Array.prototype.slice() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/slice -tags: - - Arreglo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/slice ---- -
{{JSRef}}
- -

El método slice() devuelve una copia de una parte del array dentro de un nuevo array empezando por inicio hasta fin (fin no incluido). El array original no se modificará.

- -

El código fuente de esta demostración interactiva está alojado en un repositorio Github. Si desea contribuir con ella, por favor clone https://github.com/mdn/interactive-examples y envíenos un "pull request".

- -

Sintaxis 

- -
arr.slice([inicio [, fin]])
- -

Parámetros

- -
-
inicio
-
Índice donde empieza la extracción. El primer elemento corresponde con el índice  0.
-
Si el índice especificado es negativo, indica un desplazamiento desde el final del array. slice(-2)extrae los dos últimos elementos del array
-
Si inicio es omitido el valor por defecto es 0.
-
Si inicio es mayor a la longitud del array, se devuelve un array vacío.
-
fin
-
Índice  que marca el final de la extracción. slice extrae hasta, pero sin incluir el final.
-
slice(1,4) extrae desde el segundo elemento hasta el cuarto  (los elementos con índices 1, 2,  y 3).
-
Con un índice negativo, fin indica un desplazamiento desde el final de la secuencia. slice(2,-1) extrae desde el tercer hasta el penúltimo elemento en la secuencia.
-
Si fin es omitido, slice extrae hasta el final de la secuencia (arr.length).
-
Si fin es mayor a la longitud del array, slice extrae hasta el final de la secuencia (arr.length).
-
- -

Valor de retorno

- -

Un nuevo array con los valores extraídos.

- -

Descripción

- -

slice no modifica el array original. Devuelve una copia plana (shallow copy) de los elementos especificados del array original. Los elementos del array original son copiados en el array devuelto de la siguiente manera:

- - - -

Si un nuevo elemento es agregado a cualquiera de los arrays, el otro array no es afectado.

- -

Ejemplos

- -

Ejemplo: Devolver una porción de un array existente

- -
var nombres = ['Rita', 'Pedro', 'Miguel', 'Ana', 'Vanesa'];
-var masculinos = nombres.slice(1, 3);
-
-// masculinos contiene ['Pedro','Miguel']
-
- -

Ejemplo: Utilizando slice

- -

Presta especial atención a:

- - - -

En el siguiente ejemplo, slice crea un nuevo array, nuevoCoche, de myCoche. Los dos incluyen una referncia al objecto miHonda se cambia a púrpura, ambas matrices reflejan el cambio.

- -
var miHonda = { color: 'red', ruedas: 4, motor: { cilindros: 4, cantidad: 2.2 } };
-var miCoche = [miHonda, 2, 'Buen estado', 'comprado 1997'];
-var nuevoCoche = miCoche.slice(0, 2);
-
-//  Muestra los valores de myCar, newCar y el color de myHonda.
-console.log('miCoche = ' + JSON.stringify(miCoche));
-console.log('nuevoCoche = ' + JSON.stringify(nuevoCoche));
-console.log('miCoche[0].color = ' + miCoche[0].color);
-console.log('nuevoCoche[0].color = ' + nuevoCoche[0].color);
-
-// Cambia el color de miHonda.
-miHonda.color = 'azul';
-console.log('El nuevo color de mi Honda es ' + miHonda.color);
-
-// Muestra el color de myHonda referenciado desde ambos arrays. 
-console.log('miCoche[0].color = ' + miCoche[0].color);
-
-console.log('nuevoCoche[0].color = ' + nuevoCoche[0].color);
- -

Este script escribe:

- -
miCoche = [{color: 'rojo', ruedas: 4, motor: {cilindros: 4, cantidad: 2.2}}, 2,
-         'buen estado', 'comprado 1997']
-nuevoCoche = [{color: 'rojo', ruedas: 4, motor: {cilindros: 4, cantidad: 2.2}}, 2]
-miCoche[0].color = rojo
-nuevoCoche[0].color = rojo
-El nuevo color de miHonda es azul
-miCoche[0].color = azul
-nuevoCoche[0].color = azul
- -

Objetos array-like

- -
-

Se dice que un objeto es array-like ( similar o que se asemeja a un array) cuando entre sus propiedades existen algunas cuyos nombres son números y en particular tiene una propiedad llamada length. Este hecho  hace  suponer que el objeto es algún tipo de colección de elementos indexados por números. Es conveniente, a veces, convertir estos objetos a arrays para otorgarles la funcionalidad que de serie se incorpora en todos los arrays a través de su prototipo. 

-
- -

El método slice puede ser usado para convertir objetos parecidos a arrays o colecciones a un nuevo Array. Simplemente debe enlazar el método al objeto. El  {{jsxref("Functions_and_function_scope/arguments", "arguments")}} dentro de una función es un ejemplo de un objeto parecido a arrays.

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

El enlazado puede realizarse con la función .call de  {{jsxref("Function.prototype")}} y puede ser abreviado también usando  [].slice.call(arguments) en lugar de Array.prototype.slice.call. En cualquier caso, puede ser simplificado usando {{jsxref("Function.prototype.bind", "bind")}}.

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

Coordinación del comportamiento entre navegadores

- -

 

- -

La especificación permite a los objetos del host  ( entre ellos los objetos del DOM )  ser dependientes de la implementación.  Esta NO obligatoriedad, origina diferencias en el comportamiento entre aquellos comprometidos con los estándares, como Mozilla, y los que no. En lo que concierne a  Array.prototype.slice , por lo tanto, existen importantes incompatibilidades en IE < 9 . Versiones de IE a partir de la 9 permiten un comportamiento compatible más fiable.  Se puede recurrir al  “shimming”  para alcanzar la compatibilidad en otros casos.  Mientras otros navegadores modernos continúan mejorando para soportar esta habilidad, en la forma en que actualmente lo hacen Mozilla, Chrome, Safari, Opera  e IE, los desarrolladores de código preocupados por el soporte DOM que confíen en este shim no deben dejarse engañar por la semántica, deben confiar de forma segura en ella para proporcionar el comportamiento estándar que aparentemente ahora es la norma.

- -

El shim también soluciona que IE pueda tratar con el caso de que el segundo argumento de slice() pueda ser un valor {{jsxref("Global_Objects/null", "null")}}/{{jsxref("Global_Objects/undefined", "undefined")}} explícito. Esto era un problema en versiones anteriores de IE, pero todos los navegadores modernos, incluído IE >= 9, lo hacen actualmente.

- -
/**
- * Shim para "solucionar" la falta de soporte de IE (IE < 9) para aplicar slice
- * sobre objetos del host, tal como NamedNodeMap, NodeList, y HTMLCollection
- * (técnicamente, al ser los objetos del host dependientes de la implementación,
- * al menos anteriormente a ES2015, IE no tenía la necesidad de trabajar de este modo).
- * También funciona sobre strings, solucionando que IE < 9 admita un undefined explícito
- * como segundo argumento (igual que en Firefox), y previniendo errores cuando se llama
- * sobre otros objetos del DOM.
- */
-(function () {
-  'use strict';
-  var _slice = Array.prototype.slice;
-
-  try {
-    // Fallará al usarse con elementos DOM en IE < 9
-    _slice.call(document.documentElement);
-  } catch (e) { // Fails in IE < 9
-    // Funcionará con arrays genuinos, objetos array-like,
-    // NamedNodeMap (attributes, entities, notations),
-    // NodeList (e.g., getElementsByTagName), HTMLCollection (e.g., childNodes),
-    // and will not fail on other DOM objects (as do DOM elements in IE < 9)
-    Array.prototype.slice = function(begin, end) {
-      // A IE < 9 no le gustan los undefined como argumento end.
-      end = (typeof end !== 'undefined') ? end : this.length;
-
-      // Con objetos Array nativos, podemos usar la función slice
-      if (Object.prototype.toString.call(this) === '[object Array]'){
-        return _slice.call(this, begin, end);
-      }
-
-      // Con objetos array-like debemos manejarlo por nuestra cuenta.
-      var i, cloned = [],
-        size, len = this.length;
-
-      // Maneja valores negativos para el argumento "inicio"
-      var start = begin || 0;
-      start = (start >= 0) ? start : Math.max(0, len + start);
-
-      // Maneja valores negativos para el argumento "fin"
-      var upTo = (typeof end == 'number') ? Math.min(end, len) : len;
-      if (end < 0) {
-        upTo = len + end;
-      }
-
-      // Tamaño esperado para el 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;
-    };
-  }
-}());
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoObservaciones
ECMAScript 3ª ediciónEstandarDefinición inicial Implementado en JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.10', 'Array.prototype.slice')}}{{Spec2('ES5.1')}} 
{{SpecName('ES2015', '#sec-array.prototype.slice', 'Array.prototype.slice')}}{{Spec2('ES2015')}} 
- -

Compatibilidad con navegadores

- -

La tabla de compatibilidad en esta página esta generada desde datos estructurados. Si desea contribuir con los datos, por favor "checkout" https://github.com/mdn/browser-compat-data  y envíenos un "pull request".

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

Ver también 

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/some/index.html b/files/es/web/javascript/referencia/objetos_globales/array/some/index.html deleted file mode 100644 index d04b57b025..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/some/index.html +++ /dev/null @@ -1,204 +0,0 @@ ---- -title: Array.prototype.some() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/some -tags: - - Array - - ECMAScript5 - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/some ---- -
{{JSRef}}
- -

El método some() comprueba si al menos un elemento del array cumple con la condición implementada por la función proporcionada.

- -
-

Nota: Este método devuelve false para cualquier condición puesta en un array vacío.

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

Sintaxis

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

Parámetros

- -
-
callback
-
Función que verifica cada elemento, toma tres argumentos: -
-
element
-
El elemento actual siendo procesado en el array.
-
index {{Optional_inline}}
-
El índice del elemento del array que se está procesando.
-
array {{Optional_inline}}
-
El array sobre el que ha sido llamada la función some().
-
-
-
thisArg {{Optional_inline}}
-
Valor a usar como this cuando se ejecute callback.
-
- -

Valor devuelto

- -

true si la función callback devuelve un valor {{Glossary("truthy")}} para cualquier elemento del array; en caso contrario, false.

- -

Descripción

- -

some() ejecuta la función callback una vez por cada elemento presente en el array hasta que encuentre uno donde callback retorna un valor verdadero (true). Si se encuentra dicho elemento, some() retorna true inmediatamente. Si no, some() retorna false. callback es invocada sólo para los índices del array que tienen valores asignados; no es invocada para índices que han sido borrados o a los que nunca se les han asignado valores.

- -

callback es invocada con tres argumentos: el valor del elemento, el índice del elemento, y el objeto array sobre el que se itera.

- -

Si se indica un parámetro thisArg a some(), se pasará a callback cuando es invocada, para usar como valor this. Si no, el valor {{jsxref("undefined")}} será pasado para usar como valor this. El valor this value observable por callback se determina de acuerdo a las reglas habituales para determinar el this visible por una función.

- -

some() no modifica el array con el cual fue llamada.

- -

El rango de elementos procesados por some() es configurado antes de la primera invocación de callback. Los elementos anexados al array luego de que comience la llamada a some() no serán visitados por callback. Si un elemento existente y no visitado del array es alterado por callback, su valor pasado al callback será el valor al momento que some() visita el índice del elemento; los elementos borrados no son visitados.

- -

Ejemplos

- -

Verificando el valor de los elementos de un array

- -

El siguiente ejemplo verifica si algún elemento del array es mayor a 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
-
- -

Verificando los elementos de un array usando funciones flecha

- -

Las funciones flecha (Arrow functions) brindan una sintáxis más corta para el mismo test.

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

Comprobando si un elemento existe en un array

- -

Para imitar la función del método includes(), esta función personalizada devuelve true si el elemento existe en el array:

- -
var fruits = ['apple', 'banana', 'mango', 'guava'];
-
-function checkAvailability(arr, val) {
-  return arr.some(function(arrVal) {
-    return val === arrVal;
-  });
-}
-
-checkAvailability(fruits, 'kela');   // false
-checkAvailability(fruits, 'banana'); // true
- -

Comprobando si un elemento existe en un array con funciones flecha

- -
var fruits = ['apple', 'banana', 'mango', 'guava'];
-
-function checkAvailability(arr, val) {
-  return arr.some(arrVal => val === arrVal);
-}
-
-checkAvailability(fruits, 'kela');   // false
-checkAvailability(fruits, 'banana'); // true
- -

Convirtiendo cualquier valor a Boolean

- -
var TRUTHY_VALUES = [true, 'true', 1];
-
-function getBoolean(value) {
-  'use strict';
-
-  if (typeof value === 'string') {
-    value = value.toLowerCase().trim();
-  }
-
-  return TRUTHY_VALUES.some(function(t) {
-    return t === value;
-  });
-}
-
-getBoolean(false);   // false
-getBoolean('false'); // false
-getBoolean(1);       // true
-getBoolean('true');  // true
- -

Polyfill

- -

some() fue agregado al estándar ECMA-262 en la 5ta edición; por ello, puede no estar presente en todas las implementaciones del estándar. Puedes trabajar sobre esto insertando el siguiente código al comienzo de tus scripts, permitiendo el uso de some() en implementaciones que no tienen soporte nativo. Este algoritmo es exactamente el mismo especificado en ECMA-262, 5ta edición, asumiendo que {{jsxref("Global_Objects/Object", "Object")}} y {{jsxref("Global_Objects/TypeError", "TypeError")}} tienen sus valores originales y que fun.call evalúa el valor original de{{jsxref("Function.prototype.call()")}}.

- -
// Pasos de producción de ECMA-262, Edición 5, 15.4.4.17
-// Referencia: 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;
-  };
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.4.4.17', 'Array.prototype.some')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.some', 'Array.prototype.some')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-array.prototype.some', 'Array.prototype.some')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad en navegadores

- -
- - -

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/sort/index.html b/files/es/web/javascript/referencia/objetos_globales/array/sort/index.html deleted file mode 100644 index ac28826327..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/sort/index.html +++ /dev/null @@ -1,301 +0,0 @@ ---- -title: Array.prototype.sort() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/sort -tags: - - Array - - JavaScript - - Método(2) - - Prototipo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/sort ---- -
{{JSRef}}
- -

El método sort() ordena los elementos de un arreglo (array) localmente y devuelve el arreglo ordenado. La ordenación no es necesariamente estable. El modo de ordenación por defecto responde a la posición del valor del string de acuerdo a su valor Unicode.

- -

La fuente de este ejemplo interactivo se almacena en un repositorio de GitHub. Si desea contribuir al proyecto de ejemplos interactivos, clone https://github.com/mdn/interactive-examples y envíenos una solicitud de extracción (pull request).

- -

Sintaxis

- -
arr.sort([compareFunction])
- -

Parámetros

- -
-
compareFunction
-
Opcional. Especifica una función que define el modo de ordenamiento. Si se omite, el array es ordenado atendiendo a la posición del valor Unicode de cada caracter, según la conversión a string de cada elemento.
-
firstEl
-
El primer elemento a comparar.
-
secondEl
-
El segundo elemento a comparar.
-
- -

Valor devuelto

- -

El array ordenado.

- -

Descripción

- -

Si no se provee compareFunction, los elementos son ordenados convirtiéndolos a strings y comparando la posición del valor Unicode de dichos strings. Por ejemplo, "Cherry" viene antes que "banana"  (porque las mayúsculas van antes que las minúsculas en la codificación Unicode) . En un ordenamiento numérico, 9 está antes que 80, pero dado que los números son convertidos a strings y ordenados según el valor Unicode, el resultado será "80" antes que "9".

- -
var frutas = ['guindas', 'manzanas', 'bananas'];
-frutas.sort(); // ['bananas', 'guindas', 'manzanas']
-
-var puntos = [1, 10, 2, 21];
-puntos.sort(); // [1, 10, 2, 21]
-// Tenga en cuenta que 10 viene antes que 2
-// porque '10' viene antes que '2' según la posición del valor Unicode.
-
-var cosas = ['word', 'Word', '1 Word', '2 Words'];
-cosas.sort(); // ['1 Word', '2 Words', 'Word', 'word']
-// En Unicode, los números vienen antes que las letras mayúsculas
-// y estas vienen antes que las letras minúsculas.
-
- -

Si se provee compareFunction, los elementos del array son ordenados de acuerdo al valor que retorna dicha función de comparación. Siendo a y b dos elementos comparados, entonces:

- - - -

Entonces, la función de comparación tiene la siguiente forma:

- -
function compare(a, b) {
-  if (a es menor que b según criterio de ordenamiento) {
-    return -1;
-  }
-  if (a es mayor que b según criterio de ordenamiento) {
-    return 1;
-  }
-  // a debe ser igual b
-  return 0;
-}
-
- -

Para comparar números en lugar de strings, la función de comparación puede simplemente restar b de a. La siguiente función ordena el array de modo ascendente:

- -
function compareNumbers(a, b) {
-  return a - b;
-}
-
- -

El metodo sort puede ser usado convenientemente con {{jsxref("Operators/function", "function expressions", "", 1)}} (y closures):

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

Los objectos pueden ser ordenados por el valor de una de sus propiedades.

- -
var items = [
-  { name: 'Edward', value: 21 },
-  { name: 'Sharpe', value: 37 },
-  { name: 'And', value: 45 },
-  { name: 'The', value: -12 },
-  { name: 'Magnetic', value: 13 },
-  { 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;
-});
-
- -

Ejemplos

- -

Ordenando un array

- -

Un array de elementos string, sin especificar una función de comparación:

- -
var arr = [ 'a', 'b', 'Z', 'Aa', 'AA' ];
-arr.sort();  //[ 'AA', 'Aa', 'Z', 'a', 'b' ]
-
- -

Un array de elementos numéricos,  sin función de comparación:

- -
var arr = [ 40, 1, 5, 200 ];
-arr.sort();  //[ 1, 200, 40, 5 ]
-
- -

Un array de elementos numéricos, usando una función de comparación:

- -
var arr = [ 40, 1, 5, 200 ];
-function comparar ( a, b ){ return a - b; }
-arr.sort( comparar );  // [ 1, 5, 40, 200 ]
- -

Lo mismo pero usando una función anónima normal:

- -
var arr = [ 40, 1, 5, 200 ];
-arr.sort(function(a,b){return a - b;});  // [ 1, 5, 40, 200 ]
- -

Lo mismo escrito más compacto mediante una función flecha:

- -
var arr = [ 40, 1, 5, 200 ];
-arr.sort((a,b)=>a-b);  // [ 1, 5, 40, 200 ]
- -

- -

Creando, mostrando, y ordenando un array

- -

El siguiente ejemplo abunda en la idea de ordenar con y sin función de comparación. Además, ilustra una manera de mostrar un array una vez creado. El método join es usado para convertir el array en una cadena de texto que imprimir. Al no pasarle un argumento que indique el separador, usará la coma por defecto para separar los elementos del array dentro de la cadena.

- -
var arr = ['80', '9', '700', 40, 1, 5, 200];
-function comparar(a, b) {
-  return a - b;
-}
-console.log('original:', arr.join());
-console.log('ordenado sin función:', arr.sort());
-console.log('ordenado con función:', arr.sort(comparar));
-
- -

El ejemplo produce el siguiente resultado. Como muestra la salida, cuando una función de comparación es usada, los números se ordenan correctamente, sean estos valores numéricos o strings numéricos.

- -
original: 80,9,700,40,1,5,200
-ordenado sin función: 1,200,40,5,700,80,9
-ordenado con función: 1,5,9,40,80,200,700
-
- -

Ordenando caracteres no ASCII

- -

Para ordenar strings con characters no ASCII, i.e. strings con caracteres con acento (e, é, è, a, ä, etc.), strings de lenguajes diferentes al inglés: use {{jsxref("String.localeCompare")}}. Esta función puede comparar esos caracteres para que aparezcan en el orden correcto.

- -
var items = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu'];
-items.sort(function (a, b) {
-  return a.localeCompare(b);
-});
-
-// items is ['adieu', 'café', 'cliché', 'communiqué', 'premier', 'réservé']
-
- -

Ordenando con map

- -

La compareFunction puede ser invocada múltiples veces por elemento dentro del array. Dependiendo de la naturaleza de compareFunction, este puede resultar en una alta penalización de rendimiento. Cuanto más trabajo hace una compareFunction y más elementos hay para ordenar, resulta más recomendable usar una función map para ordenar. La idea es recorrer el array una sola vez para extraer los valores usados para ordenar en un array temporal, ordenar el array temporal y luego recorrer el array para lograr el orden correcto.

- -
// el array a ordenar
-var list = ['Delta', 'alpha', 'CHARLIE', 'bravo'];
-
-// array temporal contiene objetos con posición y valor de ordenamiento
-var mapped = list.map(function(el, i) {
-  return { index: i, value: el.toLowerCase() };
-})
-
-// ordenando el array mapeado que contiene los valores reducidos
-mapped.sort(function(a, b) {
-  if (a.value > b.value) {
-    return 1;
-  }
-  if (a.value < b.value) {
-    return -1;
-  }
-  return 0;
-});
-
-// contenedor para el orden resultante
-var result = mapped.map(function(el){
-  return list[el.index];
-});
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
ECMAScript 1st EditionStandardDefinicióñ 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')}}
- -

Compatibilidad en navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome("1.0")}}{{CompatGeckoDesktop("1.7")}}{{CompatIE("5.5")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Compatibilidad en navegadores

- -

La tabla de compatibilidad en esta página es generada por una data estructurada. Si deseas contribuir a la data, por favor entra a https://github.com/mdn/browser-compat-data y envíanos un pull request.

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/splice/index.html b/files/es/web/javascript/referencia/objetos_globales/array/splice/index.html deleted file mode 100644 index 5d7992a2c4..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/splice/index.html +++ /dev/null @@ -1,148 +0,0 @@ ---- -title: Array.prototype.splice() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/splice -tags: - - Array - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/splice ---- -
{{JSRef}}
- -

El método splice() cambia el contenido de un array eliminando elementos existentes y/o agregando nuevos elementos.

- -

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

- -

Sintaxis

- -
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
-
- -

Parámetros

- -
-
start
-
Índice donde se comenzará a cambiar el array (con 0 como origen). Si es mayor que la longitud del array, el punto inicial será la longitud del array. Si es negativo, empezará esa cantidad de elementos contando desde el final.
-
deleteCount {{optional_inline}}
-
Un entero indicando el número de elementos a eliminar del array antiguo.
-
Si deleteCount se omite, o si su valor es mayor que arr.length - start (esto significa, si es mayor que el número de elementos restantes del array, comenzando desde start), entonces todos los elementos desde start hasta el final del array serán eliminados.
-
Si deleteCount es igual a 0 o negativo, no se eliminará ningún elemento. En este caso, se debe especificar al menos un nuevo elemento (ver más abajo).
-
item1, item2, ...  {{optional_inline}}
-
Los elementos que se agregarán al array, empezando en el índice start. Si no se especifica ningún elemento, splice() solamente eliminará elementos del array.
-
- -

Valor devuelto

- -

Un array que contiene los elementos eliminados. Si sólo se ha eliminado un elemento, devuelve un array con un solo elemento. Si no se ha eliminado ningún elemento, devuelve un array vacío.

- -

Descripción

- -

Si especifica un número diferente de elementos a agregar que los que se eliminarán, el array tendrá un tamaño diferente al original una vez finalizada la llamada.

- -

Ejemplos

- -

Eliminar 0 elementos desde el índice 2 e insertar "drum"

- -
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
-var removed = myFish.splice(2, 0, 'drum');
-
-// myFish is ["angel", "clown", "drum", "mandarin", "sturgeon"]
-// removed is [], no elements removed
-
- -

Eliminar 1 elemento desde el índice 3

- -
var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
-var removed = myFish.splice(3, 1);
-
-// removed is ["mandarin"]
-// myFish is ["angel", "clown", "drum", "sturgeon"]
-
- -

Eliminar 1 elemento desde el índice 2 e insertar "trumpet"

- -
var myFish = ['angel', 'clown', 'drum', 'sturgeon'];
-var removed = myFish.splice(2, 1, 'trumpet');
-
-// myFish is ["angel", "clown", "trumpet", "sturgeon"]
-// removed is ["drum"]
- -

Eliminar 2 elementos desde el índice 0 e insertar "parrot", "anemone" y "blue"

- -
var myFish = ['angel', 'clown', 'trumpet', 'sturgeon'];
-var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');
-
-// myFish is ["parrot", "anemone", "blue", "trumpet", "sturgeon"]
-// removed is ["angel", "clown"]
- -

Eliminar 2 elementos desde el índice 2

- -
var myFish = ['parrot', 'anemone', 'blue', 'trumpet', 'sturgeon'];
-var removed = myFish.splice(myFish.length - 3, 2);
-
-// myFish is ["parrot", "anemone", "sturgeon"]
-// removed is ["blue", "trumpet"]
- -

Eliminar 1 elemento desde el índice -2

- -
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
-var removed = myFish.splice(-2, 1);
-
-// myFish is ["angel", "clown", "sturgeon"]
-// removed is ["mandarin"]
- -

Eliminar todos los elementos tras el índice 2 (incl.)

- -
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
-var removed = myFish.splice(2);
-
-// myFish is ["angel", "clown"]
-// removed is ["mandarin", "sturgeon"]
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Initial definition. Implemented in 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')}} 
{{SpecName('ESDraft', '#sec-array.prototype.splice', 'Array.prototype.splice')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
-

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/tolocalestring/index.html b/files/es/web/javascript/referencia/objetos_globales/array/tolocalestring/index.html deleted file mode 100644 index 0fc418ab47..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/tolocalestring/index.html +++ /dev/null @@ -1,177 +0,0 @@ ---- -title: Array.prototype.toLocaleString() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/toLocaleString -translation_of: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString ---- -
{{JSRef}}
- -

El método toLocaleString() devuelve una cadena de texto representando los elementos del array. Los elementos son convertidos a texto usando su método toLocaleString  y dichos Strings son separados por un caracter específico para la localidad (como una coma para la separación de decimales “,”).

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

Sintaxis

- -
arr.toLocaleString([locales[, options]]);
-
- -

Parámetros

- -
-
locales {{optional_inline}}
-
Una cadena de texto con una etiqueta de idioma BCP 47, o un array de dichos strings. Para la forma general e interpretación the los argumentos locales, ver la página {{jsxref("Intl")}}.
-
options {{optional_inline}}
-
Un objeto con las configuraciones, para números ver {{jsxref("Number.prototype.toLocaleString()")}}, y para fechas ver {{jsxref("Date.prototype.toLocaleString()")}}.
-
- -

Valor de retorno

- -

Una cadena de texto representando los elementos del array.

- -

Ejemplos

- -

Usando locales y options

- -

Los elementos del array son convertidos a strings usando sus métodos toLocaleString.

- - - -

Siempre mostrar la moneda para los strings y números en el array precios:

- -
var precios = ['$7', 500, 8123, 12];
-precios.toLocaleString('es-AR', { style: 'currency', currency: 'ARS' });
-
-// "$7, $500, $8.123, $12"
-
- -

Para más ejemplos, ver también {{jsxref("Intl")}}, {{jsxref("NumberFormat")}}, y {{jsxref("DateTimeFormat")}}.

- -

Polyfill

- -
// https://tc39.github.io/ecma402/#sup-array.prototype.tolocalestring
-if (!Array.prototype.toLocaleString) {
-  Object.defineProperty(Array.prototype, 'toLocaleString', {
-    value: function(locales, options) {
-      // 1. Let O be ? ToObject(this value).
-      if (this == null) {
-        throw new TypeError('"this" is null or not defined');
-      }
-
-      var a = Object(this);
-
-      // 2. Let len be ? ToLength(? Get(A, "length")).
-      var len = a.length >>> 0;
-
-      // 3. Let separator be the String value for the
-      //    list-separator String appropriate for the
-      //    host environment's current locale (this is
-      //    derived in an implementation-defined way).
-      // NOTE: In this case, we will use a comma
-      var separator = ',';
-
-      // 4. If len is zero, return the empty String.
-      if (len === 0) {
-        return '';
-      }
-
-      // 5. Let firstElement be ? Get(A, "0").
-      var firstElement = a[0];
-      // 6. If firstElement is undefined or null, then
-      //  a.Let R be the empty String.
-      // 7. Else,
-      //  a. Let R be ?
-      //     ToString(?
-      //       Invoke(
-      //        firstElement,
-      //        "toLocaleString",
-      //        « locales, options »
-      //       )
-      //     )
-      var r = firstElement == null ?
-        '' : firstElement.toLocaleString(locales, options);
-
-      // 8. Let k be 1.
-      var k = 1;
-
-      // 9. Repeat, while k < len
-      while (k < len) {
-        // a. Let S be a String value produced by
-        //   concatenating R and separator.
-        var s = r + separator;
-
-        // b. Let nextElement be ? Get(A, ToString(k)).
-        var nextElement = a[k];
-
-        // c. If nextElement is undefined or null, then
-        //   i. Let R be the empty String.
-        // d. Else,
-        //   i. Let R be ?
-        //     ToString(?
-        //       Invoke(
-        //        nextElement,
-        //        "toLocaleString",
-        //        « locales, options »
-        //       )
-        //     )
-        r = nextElement == null ?
-          '' : nextElement.toLocaleString(locales, options);
-
-        // e. Let R be a String value produced by
-        //   concatenating S and R.
-        r = s + r;
-
-        // f. Increase k by 1.
-        k++;
-      }
-
-      // 10. Return R.
-      return r;
-    }
-  });
-}
-
- -

Si necesitas soportar motores de JavaScript obsoletos que no compatibilizan con Object.defineProperty, es mejor no utilizar los métodos Array.prototype, ya que no se pueden hacer no-enumerables.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ESDraft', '#sec-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}}{{Spec2('ESDraft')}}La definicion original fue en ECMAScript 3.
{{SpecName('ES Int Draft', '#sup-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}}{{Spec2('ES Int Draft')}}Esta definición reemplaza la proporcionada en ECMA-262.
- -

Compatibilidad con navegadores

- -
- - -

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/tosource/index.html b/files/es/web/javascript/referencia/objetos_globales/array/tosource/index.html deleted file mode 100644 index ffd8df0b3b..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/tosource/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Array.prototype.toSource() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/toSource -translation_of: Web/JavaScript/Reference/Global_Objects/Array/toSource ---- -
{{JSRef}} {{non-standard_header}}
- -

El método toSource() devuelve un string representando el código fuente de un arreglo.

- -

Sintaxis

- -
arr.toSource()
- -

Valor devuelto

- -

Un string representando el código fuente del arreglo.

- -

Descripción

- -

El método toSourcer retorna los siguientes valores:

- - - -

Este método suele ser llamado internamente por JavaScript y no explícitamente en código. Puede usar toSource mientras depura para examinar el contenido de un arreglo.

- -

Ejemplos

- -

Examinar el código fuente de un arreglo

- -

Para examinar el código fuente de un arreglo:

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

Especificaciones

- -

No hace parte de ningún estándar. Implementado en JavaScript 1.3.

- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básicot{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/tostring/index.html b/files/es/web/javascript/referencia/objetos_globales/array/tostring/index.html deleted file mode 100644 index 402f011e0f..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/tostring/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Array.prototype.toString() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/toString -tags: - - Array - - JavaScript - - Prototipo - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/toString ---- -
{{JSRef}}
- -

El método toString() devuelve una cadena de caracteres representando el array especificado y sus elementos.

- -

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

- -

Sintaxis 

- -
arr.toString()
- -

Valor devuelto

- -

Una cadena de caracteres representando los elementos del array.

- -

Descripción

- -

El objeto {{jsxref("Array")}} sustituye al método toString de {{jsxref("Object")}}. Para los objetos Array, el método toString une el array y devuelve una cadena de caracteres que contiene cada elemento del array separado por comas.

- -

JavaScript llama al método toString automáticamente cuando un array va a ser representado como un valor de texto o cuando se referencia a un array en una concatenación de caracteres.

- -

Semántica de ECMAScript 5 

- -

Desde JavaScript 1.8.5 (Firefox 4), y consistente con la 5ª edición de semántica de ECMAScript, el método toString() es genérico y puede ser usado con cualquier objeto. {{jsxref("Object.prototype.toString()")}} será llamado y devolverá el valor resultante.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
{{SpecName('ESDraft', '#sec-array.prototype.tostring', 'Array.prototype.toString')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
-

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

-
> - -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/unshift/index.html b/files/es/web/javascript/referencia/objetos_globales/array/unshift/index.html deleted file mode 100644 index 4641a05d98..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/unshift/index.html +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: Array.prototype.unshift() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/unshift -tags: - - Array - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/unshift ---- -
{{JSRef}}
- -

El método unshift() agrega uno o más elementos al inicio del array, y devuelve la nueva longitud del array.

- -

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

- -

Sintaxis

- -
arr.unshift(elemento1[, ...[, elementoN]])
- -

Parámetros

- -
-
elementoN
-
Elementos a agregar al inicio del array.
-
- -

Devuelve

- -

La nueva propiedad {{jsxref("Array.length", "length")}} del objeto sobre el cual el método fue llamado.

- -

Descripción

- -

El método unshift inserta los valores proporcionados al inicio de un objeto del tipo array.

- -

unshift es intencionalmente genérico; este método puede ser {{jsxref("Function.call", "called", "", 1)}} o {{jsxref("Function.apply", "applied", "", 1)}} a objetos similares a arrays. Objetos que no contengan una propiedad length reflejando una serie de propiedades numéricas consecutivas, comenzada a partir del cero, pueden no comportarse de una manera comprensible.

- -

Ejemplos

- -
var arr = [1, 2];
-
-arr.unshift(0); // resultado de la llamada es 3, la nueva longitud del array
-// arr es [0, 1, 2]
-
-arr.unshift(-2, -1); // = 5
-// arr es [-2, -1, 0, 1, 2]
-
-arr.unshift([-3]);
-// arr es [[-3], -2, -1, 0, 1, 2]
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónStatusComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Initial definition. Implemented in 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')}} 
{{SpecName('ESDraft', '#sec-array.prototype.unshift', 'Array.prototype.unshift')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad en navegadores

- -
- - -

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/array/values/index.html b/files/es/web/javascript/referencia/objetos_globales/array/values/index.html deleted file mode 100644 index dbc76e8634..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/values/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Array.prototype.values() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/values -tags: - - Array - - ECMAScript 2015 - - Iterador - - JavaScript - - Prototipo - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/values ---- -
{{JSRef}}
- -

El método values() devuelve un nuevo objeto Array Iterator que contiene los valores para cada índice del array.

- -
var a = ['w', 'y', 'k', 'o', 'p'];
-var iterator = a.values();
-
-console.log(iterator.next().value); // w 
-console.log(iterator.next().value); // y 
-console.log(iterator.next().value); // k 
-console.log(iterator.next().value); // o 
-console.log(iterator.next().value); // p
-
- -

Sintaxis

- -
arr.values()
-
- -

Valor devuelto

- -

Un nuevo objeto {{jsxref("Array")}} iterator.

- -

Ejemplos

- -

Iteración usando un bucle for...of

- -
var arr = ['w', 'y', 'k', 'o', 'p'];
-var iterador = arr.values();
-
-for (let letra of iterador) {
-  console.log(letra);
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-array.prototype.values', 'Array.prototype.values')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-array.prototype.values', 'Array.prototype.values')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

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

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/arraybuffer/@@species/index.html b/files/es/web/javascript/referencia/objetos_globales/arraybuffer/@@species/index.html deleted file mode 100644 index ab87242260..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/arraybuffer/@@species/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: 'get ArrayBuffer[@@species]' -slug: Web/JavaScript/Referencia/Objetos_globales/ArrayBuffer/@@species -tags: - - ArrayBuffer - - JavaScript - - Propiedad - - TypedArrays -translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/@@species ---- -
{{JSRef}}
- -

La propiedad de acceso ArrayBuffer[@@species] devuelve el constructor ArrayBuffer.

- -

Sintaxis

- -
ArrayBuffer[Symbol.species]
-
- -

Descripción

- -

La propiedad de acceso species devuelve el constructor predeterminado para los objetos ArrayBuffer. Los constructores de subclase pueden anularlo para cambiar la asignación del constructor.

- -

Ejemplos

- -

La propiedad species devuelve la función constructora predeterminada, que es el constructor ArrayBuffer para los objetos ArrayBuffer:

- -
ArrayBuffer[Symbol.species]; // función ArrayBuffer()
- -

En un objeto de colección derivado (por ejemplo, su búfer de array personalizado MyArrayBuffer), MyArrayBuffer species es el constructor MyArrayBuffer. Sin embargo, es posible que desee sobrescribir esto para devolver objetos ArrayBuffer principales en sus métodos de clase derivados:

- -
class MyArrayBuffer extends ArrayBuffer {
-  // Overwrite MyArrayBuffer species to the parent ArrayBuffer constructor
-  static get [Symbol.species]() { return ArrayBuffer; }
-}
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-get-arraybuffer-@@species', 'get ArrayBuffer [ @@species ]')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-get-arraybuffer-@@species', 'get ArrayBuffer [ @@species ]')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
- - -

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/arraybuffer/bytelength/index.html b/files/es/web/javascript/referencia/objetos_globales/arraybuffer/bytelength/index.html deleted file mode 100644 index e553024b1e..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/arraybuffer/bytelength/index.html +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: ArrayBuffer.prototype.byteLength -slug: Web/JavaScript/Referencia/Objetos_globales/ArrayBuffer/byteLength -tags: - - ArrayBuffer - - JavaScript - - Propiedad - - Prototipo -translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/byteLength ---- -
{{JSRef}}
- -

La propiedad de acceso byteLength representa la longitud de {{jsxref("ArrayBuffer")}} en bytes.

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

Sintaxis

- -
arraybuffer.byteLength
- -

Descripción

- -

La propiedad byteLength es una propiedad de acceso cuya función de acceso de conjunto es undefined, lo que significa que solo puede leer esta propiedad. El valor se establece cuando la matriz se construye y no se puede cambiar. Esta propiedad devuelve 0 si este ArrayBuffer ha sido separado.

- -

Ejemplos

- -
var buffer = new ArrayBuffer(8);
-buffer.byteLength; // 8
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Reemplazado por ECMAScript 2015.
{{SpecName('ES2015', '#sec-get-arraybuffer.prototype.bytelength', 'ArrayBuffer.prototype.byteLength')}}{{Spec2('ES2015')}}Definición inicial en un estándar ECMA.
{{SpecName('ESDraft', '#sec-get-arraybuffer.prototype.bytelength', 'ArrayBuffer.prototype.byteLength')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- - - -

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

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/arraybuffer/index.html b/files/es/web/javascript/referencia/objetos_globales/arraybuffer/index.html deleted file mode 100644 index 4a83b5a24d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/arraybuffer/index.html +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: ArrayBuffer -slug: Web/JavaScript/Referencia/Objetos_globales/ArrayBuffer -tags: - - ArrayBuffer - - Constructor - - JavaScript - - TypedArrays -translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer ---- -
{{JSRef}}
- -

El objeto ArrayBuffer se usa para representar un buffer genérico, de datos binarios crudos (raw) con una longitud específica. No se puede manipular directamente el contenido de un ArrayBuffer; sin embargo, puedes crear uno de los arrays tipados o un objeto {{jsxref("DataView")}} que representa el buffer en un formato especifico, y usarlo para leer y escribir el contenido del buffer.

- -

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

- -

Sintaxis

- -
new ArrayBuffer(length)
-
- -

Parámetros

- -
-
length
-
El tamaño en bytes, del array buffer que quieres crear.
-
- -

Valor de retorno

- -

Un nuevo objeto ArrayBuffer de tamaño específico. Su contenido se inicializa a cero.

- -

Excepciones

- -

Se lanza un {{jsxref("RangeError")}} si la longitud (length) es mayor que {{jsxref("Number.MAX_SAFE_INTEGER")}} (> = 2 ** 53) o negativa.

- -

Descripción

- -

El constructor de ArrayBuffer crea un nuevo ArrayBuffer del tamaño especificado en bytes.

- -

Obtener un array buffer sobre datos existentes

- - - -

Propiedades

- -
-
ArrayBuffer.length
-
El tamaño de constructor de ArrayBuffer cuyo valor es 1.
-
{{jsxref("ArrayBuffer.@@species", "get ArrayBuffer[@@species]")}}
-
La función de constructor que se usa para crear objetos derivados.
-
{{jsxref("ArrayBuffer.prototype")}}
-
Permite añadir propiedades a todos los objetos ArrayBuffer.
-
- -

Métodos

- -
-
{{jsxref("ArrayBuffer.isView", "ArrayBuffer.isView(arg)")}}
-
Devuelve true si arg es una de las vistas de ArrayBuffer, como pueden ser los arrays tipados o un {{jsxref("DataView")}}. Sino devuelve false.
-
{{jsxref("ArrayBuffer.transfer", "ArrayBuffer.transfer(oldBuffer [, newByteLength])")}} {{experimental_inline}}
-
-
Devuelve un nuevo ArrayBuffer cuyo contenido se toma de los datos de oldBuffer y luego es truncado o extendido por cero por newByteLength.
-
-
- -

Instancias

- -

Todas las instancias de ArrayBuffer heredan de {{jsxref("ArrayBuffer.prototype")}}.

- -

Propiedades

- -

{{page('es/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype','Propiedades')}}

- -

Métodos

- -

{{page('es/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype','Métodos')}}

- -
-
{{jsxref("ArrayBuffer.slice()")}} {{non-standard_inline}}
-
Tiene la misma funcionalidad que {{jsxref("ArrayBuffer.prototype.slice()")}}.
-
- -

Ejemplo

- -

En este ejemplo creamos un buffer de 8-bytes con una vista del tipo {{jsxref("Global_Objects/Int32Array", "Int32Array")}} referenciando dicho buffer:

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

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Sustituida por ECMAScript 6.
{{SpecName('ES6', '#sec-arraybuffer-constructor', 'ArrayBuffer')}}{{Spec2('ES6')}}Definición inicial en un estándar ECMA. Especifica que new es obligatorio.
{{SpecName('ESDraft', '#sec-arraybuffer-constructor', 'ArrayBuffer')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -

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

- -

Notas de compatibilidad

- -

Desde el ECMAScript 2015, los constructores de ArrayBuffer requieren ser instanciados usando el operador {{jsxref("Operators/new", "new")}}. Ejecutar el constructor de un ArrayBuffer como una funciónsin el new, lanzará un {{jsxref("TypeError")}} de ahora en adelante.

- -
var dv = ArrayBuffer(10);
-// TypeError: llamar al constructor ArrayBuffer sin new está prohibido
- -
var dv = new ArrayBuffer(10);
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/arraybuffer/prototype/index.html b/files/es/web/javascript/referencia/objetos_globales/arraybuffer/prototype/index.html deleted file mode 100644 index fef80071de..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/arraybuffer/prototype/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: ArrayBuffer.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/ArrayBuffer/prototype -tags: - - ArrayBuffer - - JavaScript - - Propiedad -translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer -translation_of_original: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype ---- -
{{JSRef}}
- -

La propiedad ArrayBuffer.prototype representa el prototipo para el objeto {{jsxref("ArrayBuffer")}}.

- -
{{js_property_attributes(0,0,0)}}
- -

Descripción

- -

Las instancias de ArrayBuffer heredan de ArrayBuffer.prototype. Como con todos los constructores, puedes modificar el prototipo del constructor para aplicar cambios sobre todas las instancias de ArrayBuffer.

- -

Propiedades

- -
-
ArrayBuffer.prototype.constructor
-
Especifica la función que se encarga de crear el prototipo del objeto. El valor inicial es el constructor incluido en el estándar ArrayBuffer.
-
{{jsxref("ArrayBuffer.prototype.byteLength")}} {{readonlyInline}}
-
El tamaño, en bytes, del array. Este valor se establece al construir el objeto y no se puede modificar. Sólo lectura.
-
- -

Métodos

- -
-
{{jsxref("ArrayBuffer.prototype.slice()")}}
-
Retorna un nuevo ArrayBuffer cuyo contenido es una copia los bytes de este ArrayBuffer desde begin, incluido, hasta  end, no incluido. Si beginend son negativos, éstos hacen referencia a un índice que comienza a partir del final del array.
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-arraybuffer.prototype', 'ArrayBuffer.prototype')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-arraybuffer.prototype', 'ArrayBuffer.prototype')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -

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

- -
 
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/boolean/boolean/index.html b/files/es/web/javascript/referencia/objetos_globales/boolean/boolean/index.html deleted file mode 100644 index 924ab7ccef..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/boolean/boolean/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Boolean() constructor -slug: Web/JavaScript/Referencia/Objetos_globales/Boolean/Boolean -tags: - - Booleano - - Constructor - - JavaScript - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/Boolean ---- -
{{JSRef}}
- -

El constructor Boolean() se usa para crear objetos {{jsxref("Boolean")}}.

- -
{{EmbedInteractiveExample("pages/js/boolean-constructor.html", "shorter")}}
- - - -

Sintaxis

- -
new Boolean([value])
- -

Parámetros

- -
-
value {{optional_inline}}
-
El valor inicial del objeto Boolean.
-
- -

Ejemplos

- -

Creación de objetos Boolean con un valor inicial de false

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

Creación de objetos Boolean con un valor inicial de 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({});
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-boolean-constructor', 'Boolean constructor')}}
- -

Compatibilidad del navegador

- -
- - -

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

-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/boolean/index.html b/files/es/web/javascript/referencia/objetos_globales/boolean/index.html deleted file mode 100644 index 17a0f7d9e9..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/boolean/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: Booleano -slug: Web/JavaScript/Referencia/Objetos_globales/Boolean -tags: - - Boolean - - Clase - - Class - - Constructor - - JavaScript - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/Boolean ---- -
{{JSRef}}
- -

El objeto Boolean es un objeto contenedor para un valor booleano.

- -

Descripción

- -

El valor pasado como primer parámetro se convierte en un valor booleano, si es necesario. Si el valor se omite o es 0, -0, {{jsxref("null")}}, false, {{jsxref("NaN")}}, {{jsxref("undefined")}}, o la cadena vacía (""), el objeto tiene un valor inicial de false. Todos los demás valores, incluido cualquier objeto, un arreglo vacío ([]) o la cadena "false", crean un objeto con un valor inicial de true.

- -

No confundas los valores del Boolean {{Glossary("Primitive", "primitivo")}}, true y false con los valores true y false del objeto Boolean.

- -

Cualquier objeto cuyo valor no sea {{jsxref("undefined")}} o {{jsxref("null")}}, incluido un objeto Boolean cuyo valor es false, se evalúa como true cuando se pasa a una declaración condicional. Por ejemplo, la condición en la siguiente declaración {{jsxref("Statements/if...else", "if")}} se evalúa como true:

- -
var x = new Boolean(false);
-if (x) {
-  // este código se ejecuta
-}
-
- -

Este comportamiento no se aplica a los Boolean primitivos. Por ejemplo, la condición en la siguiente instrucción {{jsxref("Statements/if...else", "if")}} se evalúa como false:

- -
var x = false;
-if (x) {
-  // este código no se ejecuta
-}
-
- -

No utilices un objeto Boolean para convertir un valor no booleano en un valor booleano. Para realizar esta tarea, en su lugar, usa Boolean como función, o un operador NOT doble:

- -
var x = Boolean(expression);     // usa esta...
-var x = !!(expression);          // ... o esta
-var x = new Boolean(expression); // ¡no uses esta!
-
- -

Si especificas cualquier objeto, incluido un objeto Boolean cuyo valor es false, como valor inicial de un objeto Boolean, el nuevo objeto Boolean tiene un valor de true.

- -
var myFalse = new Boolean(false);   // valor inicial de false
-var g = Boolean(myFalse);           // valor inicial de true
-var myString = new String('Hola');  // objeto string
-var s = Boolean(myString);          // valor inicial de true
-
- -

No utilices un objeto Boolean en lugar de un Boolean primitivo.

- -
-

Nota Cuando la propiedad no estándar document.all se usa como argumento para este constructor, el resultado es un objeto Boolean con el valor false. Esta propiedad es heredada y no estándar y no se debe usar.

-
- -

Constructor

- -
-
{{jsxref("Global_Objects/Boolean/Boolean", "Boolean()")}}
-
Crea un nuevo objeto Boolean.
-
- -

Métodos de instancia

- -
-
{{jsxref("Boolean.prototype.toString()")}}
-
Devuelve una cadena de true o false dependiendo del valor del objeto. Redefine el método {{jsxref("Object.prototype.toString()")}}.
-
{{jsxref("Boolean.prototype.valueOf()")}}
-
Devuelve el valor primitivo del objeto {{jsxref("Boolean")}}. Redefine el método {{jsxref("Object.prototype.valueOf()")}}.
-
- -

Ejemplos

- -

Creación de objetos Boolean con un valor inicial de false

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

Creación de objetos Boolean con un valor inicial de 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({});
-
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-boolean-objects', 'Boolean')}}
- -

Compatibilidad del navegador

- -
- - -

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

-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/boolean/tosource/index.html b/files/es/web/javascript/referencia/objetos_globales/boolean/tosource/index.html deleted file mode 100644 index e42f79f26b..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/boolean/tosource/index.html +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Boolean.prototype.toSource() -slug: Web/JavaScript/Referencia/Objetos_globales/Boolean/toSource -tags: - - Boolean - - JavaScript - - Method - - Non-standard - - Prototype -translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/toSource ---- -
- {{JSRef("Objetos_globales", "Boolean")}} {{ Non-standard_header() }}
-

Resumen

-

Devuelve una cadena que representa el código fuente del objeto.

-

Sintaxis

-

toSource()

-

Parámetros

-

Ninguno.

-

Descripción

-

El método toSource devuelve los siguientes valores:

- -
function Boolean() {
-   [código nativo]
-}
-
- -

Este método se utiliza habitualmente en llamadas internas por JavaScript y no en código explícito.

-

Vea También

- diff --git a/files/es/web/javascript/referencia/objetos_globales/date/getdate/index.html b/files/es/web/javascript/referencia/objetos_globales/date/getdate/index.html deleted file mode 100644 index 451f889003..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/getdate/index.html +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: Date.prototype.getDate() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/getDate -translation_of: Web/JavaScript/Reference/Global_Objects/Date/getDate ---- -
{{JSRef}}
- -

El método getDate() devuelve el día del mes para la fecha especificada de acuerdo con la hora local.

- -

Sintaxis

- -
dateObj.getDate()
- -

Parámetros

- -

Ninguno.

- -

Valor de retorno

- -

El valor devuelto por getDate() es un número entero, entre 1 y 31, que representa el día del mes para la fecha dada según la hora local.

- -

Ejemplos

- -

Uso de getDate()

- -

La segunda instrucción asigna el valor 25 a la variable day, en función del valor del objeto {{jsxref("Date")}} Xmas95.

- -
var Xmas95 = new Date('December 25, 1995 23:15:30');
-var day = Xmas95.getDate();
-
-console.log(day); // 25
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-date.prototype.getdate', 'Date.prototype.getDate')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-15.9.5.14', 'Date.prototype.getDate')}}{{Spec2('ES5.1')}} 
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implantado en JavaScript 1.1.
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/getday/index.html b/files/es/web/javascript/referencia/objetos_globales/date/getday/index.html deleted file mode 100644 index f384f21b71..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/getday/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Date.prototype.getDay() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/getDay -tags: - - Date - - JavaScript - - Prototype - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Date/getDay ---- -
{{JSRef}}
- -

El método getDay() devuelve el día de la semana de la fecha especificada en función de la fecha local; siendo 0 (Domingo) el primer día.

- -

Sintaxis

- -
dateObj.getDay()
- -

Parámetros

- -

Ninguno.

- -

Valor devuelto

- -

El valor devuelto por getDay() es un entero correspondiente al día de la semana; siendo 0 (Domingo) el primer día, 1 (Lunes) el segundo, etcétera. 

- -

Ejemplos

- -

Usos de getDay()

- -

La segunda sentencia asigna el valor 1 a weekday, basado en el valor del objeto Xmas95  {{jsxref("Date")}}. December 25, 1995,  que corresponde a Lunes.

- -
var Xmas95 = new Date('December 25, 1995 23:15:30');
-var weekday = Xmas95.getDay();
-
-console.log(weekday); // 1
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-date.prototype.getday', 'Date.prototype.getDay')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-15.9.5.16', 'Date.prototype.getDay')}}{{Spec2('ES5.1')}} 
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en JS 1.0.
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte báisco{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/getfullyear/index.html b/files/es/web/javascript/referencia/objetos_globales/date/getfullyear/index.html deleted file mode 100644 index 0d047fbbc3..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/getfullyear/index.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Date.prototype.getFullYear() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/getFullYear -tags: - - Fecha - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Date/getFullYear ---- -
{{JSRef}}
- -

El método getFullYear() devuelve el año de la fecha indicada acorde a la hora local.

- -

Usa este método en lugar del método {{jsxref("Date.prototype.getYear()", "getYear()")}}.

- -
{{EmbedInteractiveExample("pages/js/date-getfullyear.html","shorter")}}
- -

Sintaxis

- -
dateObj.getFullYear()
- -

Valor devuelto

- -

Un número correspondiente al año de la fecha indicada, según la hora local.

- -

Descripción

- -

El valor devuelto por getFullYear() es un número absoluto. Para fechas entre los años 1000 y 9999, getFullYear() devuelve un número de cuatro cifras, por ejemplo, 1995. Utiliza esta función para obtener un año que cumpla con los años posteriores al 2000.

- -

Ejemplos

- -

Utilizando getFullYear()

- -

El siguiente ejemplo asigna el valor de cuatro dígitos del año actual a la variable year.

- -
var today = new Date();
-var year = today.getFullYear();
-
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-date.prototype.getfullyear', 'Date.prototype.getFullYear')}}
- -

Compatibilidad con navegadores

- -

{{Compat("javascript.builtins.Date.getFullYear")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/gethours/index.html b/files/es/web/javascript/referencia/objetos_globales/date/gethours/index.html deleted file mode 100644 index b669c976c7..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/gethours/index.html +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: Date.prototype.getHours() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/getHours -translation_of: Web/JavaScript/Reference/Global_Objects/Date/getHours ---- -
{{JSRef}}
- -

El método getHours() retorna la hora de la fecha especificada, de acuerdo a la hora local.

- -

Sintaxis

- -
dateObj.getHours()
- -

Valor de retorno

- -

Un número entero, entre 0 y 23, representando la hora de la fecha dada de acuerdo a la hora local.

- -

Ejemplos

- -

Usando getHours()

- -

La segunda sentencia abajo asigna el valor 23 a la variable hours, basado en el valor del 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
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definicion inicial. Implementado en JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.5.18', 'Date.prototype.getHours')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.gethours', 'Date.prototype.getHours')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-date.prototype.gethours', 'Date.prototype.getHours')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de navegador

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver tambien

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/getmilliseconds/index.html b/files/es/web/javascript/referencia/objetos_globales/date/getmilliseconds/index.html deleted file mode 100644 index cf673a530a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/getmilliseconds/index.html +++ /dev/null @@ -1,121 +0,0 @@ ---- -title: Date.prototype.getMilliseconds() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/getMilliseconds -tags: - - Fecha - - Milisegundos - - Prototipo -translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds ---- -
{{JSRef}}
- -

El método getMilliseconds() devuelve la cantidad de milisegundos en el objeto fecha especificado de acuerdo a la hora local.

- -

Sintaxis

- -
dateObj.getMilliseconds()
- -

Valor de Retorno

- -

Un número, entre 0 y 999, que representa la cantidad de milisegundos en la fecha dada, de acuerdo a la hora local.

- -

Ejemplos

- -

Usando getMilliseconds()

- -

El siguiente ejemplo asigna la cantidad de milisegundos de la hora actual a la variable milisegundos:

- -
var ahora = new Date();
-var milisegundos = ahora.getMilliseconds();
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
- -

Compatibilidad en 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}}
-
- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/getminutes/index.html b/files/es/web/javascript/referencia/objetos_globales/date/getminutes/index.html deleted file mode 100644 index 9b144239b9..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/getminutes/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Date.prototype.getMinutes() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/getMinutes -translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMinutes ---- -
{{JSRef}}
- -

El método getMinutes() devuelve los minutos de la fecha especificada en función de la hora local. 

- -

Sintaxis

- -
dateObj.getMinutes()
- -

Parámetros

- -

Ninguno.

- -

Devuelve

- -

El valor devuelto por getMinutes() es un número entero entre 0 y 59.

- -

Ejemplos

- -

Uso de getMinutes()

- -

La segunda declaración del código mostrado a continuación le asigna el valor 15 a la variable minutos, basado en el valor del {{jsxref("Global_Objects/Date", "Date")}} objeto Xmas95.

- -
var Xmas95 = new Date('December 25, 1995 23:15:30');
-var minutos = Xmas95.getMinutes();
-
-console.log(minutos); // 15
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/getmonth/index.html b/files/es/web/javascript/referencia/objetos_globales/date/getmonth/index.html deleted file mode 100644 index 08a7e1d143..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/getmonth/index.html +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: Date.prototype.getMonth() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/getMonth -tags: - - Date - - JavaScript - - Method - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMonth ---- -
{{JSRef}}
- -

Resumen

- -

El método getMonth() devuelve el mes del objeto Date según la hora local, donde el número cero indica el primer mes del año.

- -

Sintaxis

- -
dateObj.getMonth()
- -

Parámetros

- -

Ninguno.

- -

Resultado

- -

El valor devuelto por getMonth() es un entero entre 0 y 11, donde 0 corresponde a Enero, 1 a Febrero y así sucesivamente.

- -

Ejemplos

- -

Usando getMonth()

- -

En el siguiente ejemplo, la segunda línea asigna el valor 11 a la variable mes, basado en el valor del objeto {{jsxref("Date")}} Navidad.

- -
var Navidad = new Date('December 25, 2014 23:15:30');
-var mes = Navidad.getMonth();
-
-console.log(mes); // 11
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Primera definición. Implementado en 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')}} 
- -

Compatibilidad

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

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/getseconds/index.html b/files/es/web/javascript/referencia/objetos_globales/date/getseconds/index.html deleted file mode 100644 index 875fe3f48b..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/getseconds/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Date.prototype.getSeconds() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/getSeconds -tags: - - Fecha - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Date/getSeconds ---- -
{{JSRef}}
- -

El método getSeconds() devuelve los segundos en la fecha especificada de acuerdo a la hora local.

- -
{{EmbedInteractiveExample("pages/js/date-getseconds.html")}}
- - - -

Sintaxis

- -
dateObj.getSeconds()
- -

Valor devuelto

- -

Un número entero, entro 0 y 59, representando los segundos en la fecha dada de acuerdo a la hora local.

- -

Ejemplos

- -

Utilizando getSeconds()

- -

La segunda sentencia asigna el valor 30 a la variable seconds, en base al valor del 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
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.builtins.Date.getSeconds")}}

- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/gettime/index.html b/files/es/web/javascript/referencia/objetos_globales/date/gettime/index.html deleted file mode 100644 index f08882be5e..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/gettime/index.html +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: Date.prototype.getTime() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/getTime -tags: - - Date - - Metodo getTime() - - Referencia - - getTime -translation_of: Web/JavaScript/Reference/Global_Objects/Date/getTime ---- -
{{JSRef("Global_Objects", "Date")}}
- -

Resumen

- -

El método getTime() devuelve el valor numérico correspondiente a la hora para la fecha especificada según la hora universal.

- - - -

Puede utilizar este método para ayudar a asignar una fecha y hora a otro objeto {{jsxref("Global_Objects/Date", "Date")}}. Este método es funcionalmente equivalente al metodo {{jsxref("Date.valueof", "valueOf()")}}.

- -

Sintaxis

- -
dateObj.getTime()
-
- -

Valor devuelto

- -

El valor devuelto por el método getTime() es un número de milisegundos desde el 1 de enero de 1970 00:00:00 UTC.

- -

Ejemplos

- -

Ejemplo: Uso de getTime() para copiar fechas.

- -

Construir un objeto de fecha con el mismo valor de tiempo.

- -
var birthday = new Date(1994, 12, 10);
-var copy = new Date();
-copy.setTime(birthday.getTime());
-
- -

Ejemplo: Medir el tiempo de ejecución

- -

Restando dos llamadas getTime() subsiguientes en objetos {{jsxref("Global_Objects/Date", "Date")}} recién generados, dé el intervalo de tiempo entre estas dos llamadas. Esto se puede utilizar para calcular el tiempo de ejecución de algunas operaciones.

- -
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');
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
ECMAScript 1st Edition.StandardInitial definition. Implemented in 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')}}
- -

Compatibilidad del 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}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/getutcfullyear/index.html b/files/es/web/javascript/referencia/objetos_globales/date/getutcfullyear/index.html deleted file mode 100644 index f2133bfc02..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/getutcfullyear/index.html +++ /dev/null @@ -1,121 +0,0 @@ ---- -title: Date.prototype.getUTCFullYear() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/getUTCFullYear -translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear ---- -
{{JSRef}}
- -

El método getUTCFullYear() devuelve el año en la fecha especificada en tiempo universal.

- -

Sintaxis

- -
objectoFecha.getUTCFullYear()
- -

Valor devuelto

- -

Un número que representa el año en la fecha representada por el objectoFecha en tiempo universal.

- -

Descripción

- -

El valor devuelto por getUTCFullYear() es un número que no está afectado por  el efecto año 2000, por ejemplo, 1995.

- -

Ejemplos

- -

Empleo de getUTCFullYear()

- -

El siguiente ejemplo asigna el valor de cuatro digitos del año actual a la variable year.

- -
var today = new Date();
-var year = today.getUTCFullYear();
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementada en 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')}} 
- -

Compatibilidad en navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/getutchours/index.html b/files/es/web/javascript/referencia/objetos_globales/date/getutchours/index.html deleted file mode 100644 index 1e7a7a1ce2..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/getutchours/index.html +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: Date.prototype.getUTCHours() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/getUTCHours -translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCHours ---- -
{{JSRef}}
- -

El método getUTCHours() retorna las horas especificadas en la fecha deacuerdo al horario universal.

- -

Syntax

- -
dateObj.getUTCHours()
- -

Return value

- -

An integer number, between 0 and 23, representing the hours in the given date according to universal time.

- -

Examples

- -

Using getUTCHours()

- -

The following example assigns the hours portion of the current time to the variable hours.

- -
var today = new Date();
-var hours = today.getUTCHours();
-
- -

Specifications

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.19', 'Date.prototype.getUTCHours')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.getutchours', 'Date.prototype.getUTCHours')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-date.prototype.getutchours', 'Date.prototype.getUTCHours')}}{{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}}
-
- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/index.html b/files/es/web/javascript/referencia/objetos_globales/date/index.html deleted file mode 100644 index 20e05539e5..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/index.html +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: Date -slug: Web/JavaScript/Referencia/Objetos_globales/Date -tags: - - Date - - JavaScript -translation_of: Web/JavaScript/Reference/Global_Objects/Date ---- -
{{JSRef("Objetos_globales", "Date")}}
- -

Resumen

- -

Permite trabajar con fechas y horas.

- -

El constructor

- -

El constructor Date:

- -
new Date()
-new Date(milisegundos)
-new Date(cadenaFecha)
-new Date(año_num,mes_num,dia_num
-        [,hor_num,min_num,seg_num,mils_num])
-
- -

Parámetros

- -
-
milisegundos
-
Valor entero que representa el número de milisegundos desde las 00:00:00 UTC del 1 de enero de 1970.
-
- -
-
cadenaFecha
-
Valor de tipo cadena que representa una fecha. La cadena debería estar en un formato reconocido por el método {{jsxref("Date.parse()")}}.
-
- -
-
año_num, mes_num, dia_num
-
Valores enteros con las representaciones de las partes de una fecha. Como valor entero, el mes se representa de 0 a 11, con 0=enero and 11=diciembre.
-
- -
-
hor_num, min_num, seg_num, mils_num
-
Valores enteros que representan las partes de una hora completa.
-
- -

Descripción

- -

Si no proporciona argumentos, el constructor crea un objeto Date con la hora y fecha de hoy según la hora local.

- -

Si proporciona algunos argumentos, debe proporcionar al menos 2 argumentos. Los argumentos vacíos se establecen a 0 (ó 1 si falta el día). 

- -

La fecha se mide en milisegundos desde la media noche exacta del 01 de enero de 1970 en formato UTC. Un día contiene 86.400.000 milisegundos. El rango del objeto Date va desde -100,000,000 días hasta 100,000,000 días respecto del 01 de enero de 1970 UTC.

- -

El objeto Date proporciona un comportamiento uniforme entre plataformas.

- -

El objeto Date soporta métodos UTC (universales), además de métodos horarios locales. UTC, también conocido como Greenwich Mean Time (GMT), se refiere a la hora según el Estádar Horario Mundial (World Time Standard). La hora local es la hora establecida por el ordenador donde se ejecuta JavaScript.

- -

Por compatibilidad con los cálculos del nuevo milenio (en otras palabras, para tener en cuenta el efecto 2000), debería especificar siempre el año completo; por ejemplo, utilice 1998, y no 98. Para ayudarle a especificar el año completo, JavaScript incluye los métodos {{jsxref("Date.prototype.getFullYear()")}}, {{jsxref("Date.prototype.setFullYear()")}}, {{jsxref("Date.prototype.getUTCFullYear()")}}, y {{jsxref("Date.prototype.setUTCFullYear()")}}.

- -

El siguiente ejemplo devuelve el tiempo transcurrido entre horaA y horaB en milisegundos.

- -
horaA = new Date();
-// Sentencias que realizan alguna acción.
-horaB = new Date();
-diferenciaHoras = horaB - horaA;
-
- -

Propiedades

- -
-
{{jsxref("Date.prototype")}}
-
Permite añadir propiedades a un objeto Date.
-
- -

{{ jsOverrides("Function", "properties", "prototype") }}

- -

Métodos

- -
-
{{jsxref("Date.now()")}}
-
Devuelve el valor numérico correspondiente a la hora actual.
-
- -
-
{{jsxref("Date.parse()")}}
-
Transforma una cadena que representa una fecha, y devuelve el número de milisegundos desde el 1 de enero de 1970, hora local 00:00:00.
-
- -
-
{{jsxref("Date.UTC()")}}
-
Acepta los mismos parámetros que la forma más larga del constructor, y devuelve el número de milisegundos en un objeto Date desde el 1 de enero de 1970, hora universal 00:00:00.
-
- -

Instancias de  Date

- -

Métodos

- -

{{ page("/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/prototype", "M.C3.A9todos") }}

- -

Ejemplos

- -

Ejemplo: Diversas maneras de asignar fechas

- -

Los ejemplos siguientes muestran diversos modos de asignar fechas:

- -
hoy = new Date();
-cumpleanos = new Date("December 17, 1995 03:24:00");
-cumpleanos = new Date(1995,11,17);
-cumpleanos = new Date(1995,11,17,3,24,0);
-
- -

Ejemplo: Calcular el tiempo transcurrido

- -

Los siguientes ejemplos muestran como determinar el tiempo transcurrido entre dos fechas:

- -
// usando métodos estáticos
-var inicio = Date.now();
-// el evento cuyo tiempo ha transcurrido aquí:
-hacerAlgoPorAlgunTiempo();
-var fin = Date.now();
-var transcurso = fin - inicio; // tiempo en milisegundos
-
- -
// si tiene objetos Date
-var inicio = new Date();
-// el evento cuyo tiempo ha transcurrido aquí:
-hacerAlgoPorAlgunTiempo();
-var fin = new Date();
-var transcurso = fin.getTime() - inicio.getTime(); // tiempo en milisegundos
-
diff --git a/files/es/web/javascript/referencia/objetos_globales/date/now/index.html b/files/es/web/javascript/referencia/objetos_globales/date/now/index.html deleted file mode 100644 index 6c611710bb..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/now/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Date.now() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/now -tags: - - Date - - JavaScript - - Method - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Date/now ---- -
- {{JSRef("Objetos_globales", "Date")}}
-

Resumen

-

Devuelve el número de milisegundos transcurridos desde las 00:00:00 UTC del 1 de enero de 1970.

-

Sintaxis

-
var fechaEnMiliseg = Date.now();
-
-

Descripción

-

El método now devuelve los milisegundos transcurridos desde las 00:00:00 UTC del 1 de enero de 1970 justo hasta ahora como un {{jsxref("Number")}}.

-

Cuando se usa now para crear registros temporales or identificadores únicos, tenga en cuenta que la precisión de Windows puede ser de 15 milisegundos (vea {{Bug(363258)}}), lo que puede provocar valores iguales si now se llama múltiples veces en un breve intervalo de tiempo.

-

Ejemplos

-

Ejemplo: Usando now

-

El siguiente ejemplo usa now para crear un registro temporal.

-
var registro = Date.now();
-
-

Vea También

- diff --git a/files/es/web/javascript/referencia/objetos_globales/date/parse/index.html b/files/es/web/javascript/referencia/objetos_globales/date/parse/index.html deleted file mode 100644 index 15536775d7..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/parse/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Date.parse() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/parse -tags: - - Date - - JavaScript - - Method -translation_of: Web/JavaScript/Reference/Global_Objects/Date/parse ---- -
- {{JSRef("Objetos_globales", "Date")}}
-

Resumen

-

Transforma una cadena con la representación de una fecha y hora, y devuelve el número de milisegundos desde las 00:00:00 del 1 de enero de 1970, hora local.

-

Sintaxis

-
Date.parse(cadenaFecha)
-

Parámetros

-
-
- cadenaFecha
-
- Una cadena con la representación de una fecha y hora.
-
-

Descripción

-

El método parse toma una cadena con una fecha en inglés (como por ejemplo "Dec 25, 1995") y devuelve el número de milisegundos desde las 00:00:00 del 1 de enero de 1970 (hora local). Esta función es útil para establecer valores de fecha basados en cadenas con fechas, por ejemplo junto con el método {{jsxref("Date.prototype.setTime()")}} y el objeto {{jsxref("Date")}}.

-

Dada una cadena con una hora, parse devuelve el valor de la hora. Acepta la sintaxis del estándar IETF (en inglés): "Mon, 25 Dec 1995 13:30:00 GMT". Comprende las abreviaciones de la zona horaria continental de Estados Unidos, pero para su uso general, use la diferencia de zona horaria, como por ejemplo, "Mon, 25 Dec 1995 13:30:00 GMT+0430" (4 horas, 30 minutos al oeste del meridiano de Greenwich). Si no se especifica una zona horaria, se asumirá la zona de la hora local. GMT y UTC se consideran equivalentes.

-

Debido a que parse es un método estático de Date, úselo siempre como Date.parse(), en vez de como un método del objeto Date que usted cree.

-

Ejemplos

-

Ejemplo: Usando parse

-

Si IPOfecha es un objeto existente Date, entonces usted puede asignarlo a 9 de agosto de 1995 de la manera siguiente:

-
IPOfecha.setTime(Date.parse("Aug 9, 1995")) ;
-
-

Vea también

- diff --git a/files/es/web/javascript/referencia/objetos_globales/date/prototype/index.html b/files/es/web/javascript/referencia/objetos_globales/date/prototype/index.html deleted file mode 100644 index de92c8ee02..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/prototype/index.html +++ /dev/null @@ -1,201 +0,0 @@ ---- -title: Date.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/Date/prototype -tags: - - Date - - JavaScript - - Property -translation_of: Web/JavaScript/Reference/Global_Objects/Date -translation_of_original: Web/JavaScript/Reference/Global_Objects/Date/prototype ---- -
- {{JSRef("Objetos_globales", "Date")}}
-

Resumen

-

Representa el prototipo para esta clase. Puede utilizar el prototipo para añadir propiedades o métodos a todas las instancias de una clase.

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

Propriedades

-
-
- Date.prototype.constructor
-
-  
-
-
- {{ jsOverrides("Object", "properties", "constructor") }}
-

Métodos

-
-
- {{jsxref("Date.prototype.getDate()")}}
-
- Devuelve el día del mes de la fecha especificada según la hora local.
-
- {{jsxref("Date.prototype.getDay()")}}
-
- Devuelve el día de la semana de la fecha especificada según la hora local.
-
- {{jsxref("Date.prototype.getFullYear()")}}
-
- Devuelve el año de la fecha especificada según la hora local.
-
- {{jsxref("Date.prototype.getHours()")}}
-
- Devuelve la hora de la fecha especificada según la hora local.
-
- {{jsxref("Date.prototype.getMilliseconds()")}}
-
- Devuelve los milisegundos de la fecha especificada según la hora local.
-
- {{jsxref("Date.prototype.getMinutes()")}}
-
- Devuelve los minutos de la fecha especificada según la hora local.
-
- {{jsxref("Date.prototype.getMonth()")}}
-
- Devuelve el mes de la fecha especificada según la hora local.
-
- {{jsxref("Date.prototype.getSeconds()")}}
-
- Devuelve los segundos de la fecha especificada según la hora local.
-
- {{jsxref("Date.prototype.getTime()")}}
-
- Devuelve el valor numérico correspondiente a la hora especificada según la hora universal.
-
- {{jsxref("Date.prototype.getTimezoneOffset()")}}
-
- Devuelve la diferencia horaria en minutos para la zona geográfica actual.
-
- {{jsxref("Date.prototype.getUTCDate()")}}
-
- Devuelve el día del mes de la fecha especificada según la hora universal.
-
- {{jsxref("Date.prototype.getUTCDay()")}}
-
- Devuelve el día de la semana de la fecha especificada según la hora universal.
-
- {{jsxref("Date.prototype.getUTCFullYear()")}}
-
- Devuelve el día el año de la fecha especificada según la hora universal.
-
- {{jsxref("Date.prototype.getUTCHours()")}}
-
- Devuelve las horas de la fecha especificada según la hora universal.
-
- {{jsxref("Date.prototype.getUTCMilliseconds()")}}
-
- Devuelve los milisegundos de la fecha especificada según la hora universal.
-
- {{jsxref("Date.prototype.getUTCMinutes()")}}
-
- Devuelve los minutos de la fecha especificada según la hora universal.
-
- {{jsxref("Date.prototype.getUTCMonth()")}}
-
- Devuelve el mes de la fecha especificada según la hora universal.
-
- {{jsxref("Date.prototype.getUTCSeconds()")}}
-
- Devuelve los segundos de la fecha especificada según la hora universal.
-
- {{jsxref("Date.prototype.getYear()")}} {{ deprecated_inline() }}
-
- Devuelve el año de la fecha especificada según la hora local. Use {{jsxref("Date.prototype.getFullYear()")}} a cambio.
-
- {{jsxref("Date.prototype.setDate()")}}
-
- Establece el día del mes de la fecha especificada según la hora local.
-
- {{jsxref("Date.prototype.setFullYear()")}}
-
- Establece el año completo de la fecha especificada según la hora local.
-
- {{jsxref("Date.prototype.setHours()")}}
-
- Establece las horas de la fecha especificada según la hora local.
-
- {{jsxref("Date.prototype.setMilliseconds()")}}
-
- Establece los milisegundos de la fecha especificada según la hora local.
-
- {{jsxref("Date.prototype.setMinutes()")}}
-
- Establece los minutos de la fecha especificada según la hora local.
-
- {{jsxref("Date.prototype.setMonth()")}}
-
- Establece el mes de la fecha especificada según la hora local.
-
- {{jsxref("Date.prototype.setSeconds()")}}
-
- Establece los segundos de la fecha especificada según la hora local.
-
- {{jsxref("Date.prototype.setTime()")}}
-
- Establece el valor del objeto Date según la hora local.
-
- {{jsxref("Date.prototype.setUTCDate()")}}
-
- Establece el día del mes de la fecha especificada según la hora universal.
-
- {{jsxref("Date.prototype.setUTCFullYear()")}}
-
- Establece el año completo de la fecha especificada según la hora universal.
-
- {{jsxref("Date.prototype.setUTCHours()")}}
-
- Establece la hora de la fecha especificada según la hora universal.
-
- {{jsxref("Date.prototype.setUTCMilliseconds()")}}
-
- Establece los milisegundos de la fecha especificada según la hora universal..
-
- {{jsxref("Date.prototype.setUTCMinutes()")}}
-
- Establece los minutos de la fecha especificada según la hora universal..
-
- {{jsxref("Date.prototype.setUTCMonth()")}}
-
- Establece el mes de la fecha especificada según la hora universal.
-
- {{jsxref("Date.prototype.setUTCSeconds()")}}
-
- Establece los segundos de la fecha especificada según la hora universal..
-
- {{jsxref("Date.prototype.setYear ()")}}{{deprecated_inline}}
-
- Establece el año de la fecha especificada según la hora local. Use {{jsxref("Date.prototype.setFullYear()")}} a cambio.
-
- {{jsxref("Date.prototype.toGMTString()")}} {{ deprecated_inline}}
-
- Convierte una fecha en una cadena, usando las convenciones de Internet GMT. Utilice {{jsxref("Date.prototype.toUTCString()")}} a cambio.
-
- {{jsxref("Date.prototype.toLocaleString()")}}
-
- Convierte una fecha en una cadena, usando las reglas de la localización actual. Sobreescribe el método {{jsxref("Object.toLocaleString()")}}.
-
- {{jsxref("Date.prototype.toLocaleDateString()")}}
-
- Devuelve la porción fecha (sin la hora) de una fecha como una cadena, usando las reglas de la localización actual.
-
- {{jsxref("Date.prototype.toLocaleTimeString()")}}
-
- Devuelve la porción hora (sin la fecha) de una fecha como una cadena, siguiendo las reglas de la localización actual.
-
- {{jsxref("Date.prototype.toSource()")}}
-
- Devuelve un literal que representa al objeto Date especificado; puede usar este valor para crear un nuevo objeto. Sobreescribe el método {{jsxref("Object.toSource()")}}.
-
- {{jsxref("Date.prototype.toString()")}}
-
- Devuelve una cadena representando el objeto Date especificado. Sobreescribe el método {{jsxref("Object.toString()")}}.
-
- {{jsxref("Date.prototype.toUTCString()")}}
-
- Convierte una fecha en una cadena, usando las reglas horarias universales.
-
- {{jsxref("Date.prototype.valueOf()")}}
-
- Devuelve el valor primitivo de un objeto Date. Sobreescribe el método {{jsxref("Object.valueOf()")}}.
-
-

{{ jsOverrides("Object", "methods", "getDate", "getDay", "getFullYear", "getHours", "getMilliseconds", "getMinutes", "getMonth", "getSeconds", "getTime", "getTimezoneOffset", "getUTCDate", "getUTCDay", "getUTCFullYear", "getUTCHours", "getUTCMilliseconds", "getUTCMinutes", "getUTCMonth", "getUTCSeconds", "getYear", "setdate", "setFullYear", "setHours", "setMilliseconds", "setMinutes", "setMontth", "setSeconds", "setTime", "setUTCDate", "setUTCFullYear", "setUTCHours", "setUTCMilliseconds", "setUTCMinutes", "setUTCMonth", "setUTCSeconds", "setYear", "toDateString", "toGMTString", "toLocaleDateString", "toLocaleFormat", "toLocaleString", "toLocaleTimeString", "toSource", "toString", "toTimeString", "toUTCString", "valueOf") }}

diff --git a/files/es/web/javascript/referencia/objetos_globales/date/setfullyear/index.html b/files/es/web/javascript/referencia/objetos_globales/date/setfullyear/index.html deleted file mode 100644 index e272f78fc3..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/setfullyear/index.html +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: Date.prototype.setFullYear() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/setFullYear -translation_of: Web/JavaScript/Reference/Global_Objects/Date/setFullYear ---- -
{{JSRef}}
- -

El método setFullYear() fija el año completo para una fecha específica de acuerdo a la zona horaria local. Devuelve un nuevo valor de tipo timestamp.

- -

Sintaxis

- -
dateObj.setFullYear(valorAño[, valorMes[, valorDia]])
- -

Parámetros

- -
-
valorAño
-
Valor de tipo entero que contiene el valor numérico del año, por ejemplo, 1995.
-
valorMes
-
Opcional. Valor entero entre 0 y 11 que representa el mes de Enero a Diciembre.
-
valorDia
-
Opcional. Valor entero entre 1 y 31 que representa el día del mes. Si se especifica este parámetro debe incluirse también el parámetro valorMes.
-
- -

Valor devuelto

- -

El número de milisegundos entre 1 Enero 1970 00:00:00 UTC y a la fecha actualizada con el valor del año.

- -

Descripción

- -

Si en la invocación al método no se especifican los parámetros valorMesvalorDia, se emplean en su lugar los valores devueltos por  {{jsxref("Date.prototype.getMonth()", "getMonth()")}} y {{jsxref("Date.prototype.getDate()", "getDate()")}}.

- -

Si se especifica un parámetro con un valor fuera del rango esperado,  setFullYear() intenta actualizar el resto de parámetros y la informacion de fecha en el objeto {{jsxref("Date")}} de manera consistente. Por ejemplo, si se especifica el valor 15 para el parametro valorMes, el parámetro año se incrementa en 1  (valorAño+ 1), y se emplea  3 como valor para el parámetro mes.

- -

Ejemplos

- -

Uso de setFullYear()

- -
var theBigDay = new Date();
-theBigDay.setFullYear(1997);
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.40', 'Date.prototype.setFullYear')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.setfullyear', 'Date.prototype.setFullYear')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-date.prototype.setfullyear', 'Date.prototype.setFullYear')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/setmonth/index.html b/files/es/web/javascript/referencia/objetos_globales/date/setmonth/index.html deleted file mode 100644 index 04aa9ec82a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/setmonth/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Date.prototype.setMonth() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/setMonth -translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMonth ---- -
{{JSRef}}
- -
El método setMonth() establece el mes para una fecha específica de acuerdo con el año establecido actualmente.
- -
{{EmbedInteractiveExample("pages/js/date-setmonth.html")}}
- -

Sintaxis

- -
dateObj.setMonth(monthValue[,dayValue])
- -

Versiones anteriores a JavaScript 1.3

- -
dateObj.setMonth(monthValue)
- -

Parámetros

- -
-
monthValue
-
Un entero entre 0 y 11, representando los meses de Enero a Diciembre.
-
dayValue
-
Opcional. Un entero de 1 a 31, representando el dia del mes.
-
- -

Resultado

- -

El valor retornado es el número de milisegundos entre el 1 de Enero de 1970 00:00:00 UTC y la fecha actualizada.

- -

Descripción

- -

Si no especificas el parámetro dayValue, el valor retornado del metodo {{jsxref("Date.prototype.getDate()", "getDate()")}} es usado.

- -

Si un parámetro especificado esta fuera del rango esperado, setMonth() intenta actualizar la información de la fecha en el objeto {{jsxref("Date")}} en consecuencia. Por ejemplo, si usted usa 15 para monthValue, usa 12 para incrementar el año en 1, y los 3 restantes para calcular el mes.

- -

El día actual del mes tendrá un impacto en el comportamiento de este método. Conceptualmente agregará el número de días dados por el día actual del mes al primer día del nuevo mes especificado como parámetro, para devolver la nueva fecha. Por ejemplo, si el valor actual es el 31 de agosto de 2016, llamar a setMonth con un valor de 1 devolverá el 2 de marzo de 2016. Esto se debe a que en febrero de 2016 tuvo 29 días.

- -

Ejemplos

- -

Usando setMonth()

- -
var theBigDay = new Date();
-theBigDay.setMonth(6);
-
-//Cuidado con las transiciones de fin de mes
-var endOfMonth = new Date(2016, 7, 31);
-endOfMonth.setMonth(1);
-console.log(endOfMonth); //Wed Mar 02 2016 00:00:00
-
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-date.prototype.setmonth', 'Date.prototype.setMonth')}}
- -

Compatibilidad del navegador

- - - -

{{Compat("javascript.builtins.Date.setMonth")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/todatestring/index.html b/files/es/web/javascript/referencia/objetos_globales/date/todatestring/index.html deleted file mode 100644 index b0a3b5f431..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/todatestring/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Date.prototype.toDateString() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/toDateString -tags: - - Fecha - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Date/toDateString ---- -
{{JSRef}}
- -

El método toDateString() devuelve la porción de la fecha de un objeto {{jsxref("Date")}} en formato humano legible en Inglés Americano.

- -

Sintaxis

- -
dateObj.toDateString()
- -

Valor devuelto

- -

Una cadena que representa la porción de fecha de un determinado objeto {{jsxref("Date")}} en formato humano legible en Inglés Americano.

- -

Descripción

- -

Las instancias de {{jsxref("Date")}} representan momentos especificos en el tiempo. Un llamado a {{jsxref("Date.prototype.toString()", "toString()")}} devolverá la fecha formateada en un formato humano legible en Inglés Americano. En SpiderMonkey, esto consiste en la porción de la fecha (día, mes, y año) seguido por la porción de la hora (horas, minutos, segundos, y zona horaria). Algunas veces sólo se necesita obtener una cadena de la porción de la hora; esto puede lograrse con el método toTimeString().

- -

El método toDateString() es especialmente útil, pues los distintos motores compatibles que implementan ECMA-262 pueden diferir en la cadena obtenida al ejecutar {{jsxref("Date.prototype.toString()", "toString()")}} para los objetos de tipo {{jsxref("Date")}}, pues dicho formato depende de la implementación, por lo que es posible que el enfoque de la segmentación simple de cadenas no produzca resultados consistentes entre distintos motores.

- -

Ejemplos

- -

Uso básico de toDateString()

- -
var d = new Date(1993, 5, 28, 14, 39, 7);
-
-console.log(d.toString());     // logs Wed Jun 28 1993 14:39:07 GMT-0600 (PDT)
-console.log(d.toDateString()); // logs Wed Jun 28 1993
-
- -
-

Nota: Los meses son 0-indexados cuando son utilizados como parámetros de {{jsxref("Date")}} (Siendo así, el cero (0) corresponde a Enero y el once (11) a Diciembre).

-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EpecificaciónEstatusComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición 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')}} 
- -

Compatibilidad entre navegadores

- - - -

{{Compat("javascript.builtins.Date.toDateString")}}

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/toisostring/index.html b/files/es/web/javascript/referencia/objetos_globales/date/toisostring/index.html deleted file mode 100644 index b3461f355d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/toisostring/index.html +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: Date.prototype.toISOString() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/toISOString -tags: - - Date - - JavaScript - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Date/toISOString ---- -
{{JSRef}}
- -

El método toISOString() devuelve una cadena en el formato simplificado extendido ISO (ISO 8601), que siempre mide 24 o 27 caracteres de largo: (YYYY-MM-DDTHH:mm:ss.sssZ or ±YYYYYY-MM-DDTHH:mm:ss.sssZ, respectivamente). El uso horario no tiene retraso respecto a UTC, como lo denota el sufijo "Z".

- -

Sintaxis

- -
dateObj.toISOString()
-
- -

Valor devuelto

- -

Una cadena que representa la fecha dada en el formato ISO 8601 según la hora universal.

- -

Ejemplos

- -

Usando toISOString()

- -
var today = new Date('05 October 2011 14:48 UTC');
-
-console.log(today.toISOString()); // Devuelve 2011-10-05T14:48:00.000Z
-
- -

El ejemplo de arriba usa una cadena no estándar que podría no ser interpretada correctamente en navegadores distintos de Firefox.

- -

Polyfill

- -

Este método fue estandarizado en ECMA-262 5° edición. Los motores javascript que no han sido actualizados para soportar este método pueden solucionar su ausencia de la siguiente manera:

- -
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';
-    };
-
-  }());
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
{{SpecName('ES5.1', '#sec-15.9.5.43', 'Date.prototype.toISOString')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en javascript 1.8
{{SpecName('ES6', '#sec-date.prototype.toisostring', 'Date.prototype.toISOString')}}{{Spec2('ES6')}}
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatIE("9")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/tojson/index.html b/files/es/web/javascript/referencia/objetos_globales/date/tojson/index.html deleted file mode 100644 index 7d44a716c2..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/tojson/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Date.prototype.toJSON() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/toJSON -translation_of: Web/JavaScript/Reference/Global_Objects/Date/toJSON ---- -
{{JSRef}}
- -

El metodo toJSON() retorna una representacion de cadena del objeto {{jsxref("Date")}}

- -
{{EmbedInteractiveExample("pages/js/date-tojson.html")}}
- - - -

Syntaxis

- -
dateObj.toJSON()
- -

Valor retornado

- -

Una representación de cadena de la fecha dada.

- -

Descripción

- -

{{jsxref("Date")}} las instancias se refieren a un momento específico en el tiempo. Llamando a toJSON() retorna un string (usando {{jsxref("Date.prototype.toISOString()", "toISOString()")}}) representando el {{jsxref("Date")}} valor del objeto. Este método generalmente está destinado, de forma predeterminada, a serializar de manera útil {{jsxref("Date")}} objetos durante la serialización JSON .

- -

Ejemplos

- -

Usando toJSON()

- -
var jsonDate = (new Date()).toJSON();
-var backToDate = new Date(jsonDate);
-
-console.log(jsonDate); //2015-10-26T07:46:36.611Z
-
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-date.prototype.tojson', 'Date.prototype.toJSON')}}
- -

Compatibilidad en buscadores

- - - -

{{Compat("javascript.builtins.Date.toJSON")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/tolocaledatestring/index.html b/files/es/web/javascript/referencia/objetos_globales/date/tolocaledatestring/index.html deleted file mode 100644 index 26b773ba9a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/tolocaledatestring/index.html +++ /dev/null @@ -1,159 +0,0 @@ ---- -title: Date.prototype.toLocaleDateString() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/toLocaleDateString -tags: - - Fecha - - IANA formato horario - - Internacionalizacion - - JavaScript - - Prototipo - - Prototype - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString ---- -
{{JSRef}}
- -

El método toLocaleDateString() devuelve una cadena con una representación de la fecha sensible al lenguaje. Los nuevos argumentos locales y options permiten a las aplicaciones especificar el lenguaje cuyas convenciones de formato deben usarse y permitir personalizar el comportamiento de la función. En implementaciones anteriores, las cuales ignoran los argumentos locales y options, el configuración regional usada y el formato de cadena devuelto dependen completamente de la implementación.

- -
{{EmbedInteractiveExample("pages/js/date-tolocaledatestring.html")}}
- - - -

Sintaxis

- -
dateObj.toLocaleDateString([locales [, options]])
- -

Parámetros

- -

Compruebe la sección de Compatibilidad con su navegador para ver qué navegadores suportan los argumentos locales y options, y el Ejemplo: Comprobando el soporte para los argumentos locales y options para detectar dicha característica.

- -
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat', 'Parameters')}}
- -

El valor por defecto para cada propiedad del componente date-time es {{jsxref("undefined")}}, pero si las propiedades weekday, year, month, day son todas {{jsxref("undefined")}}, entonces year, month, y day se asumen tener el valor "numeric".

- -

Valor devuelto

- -

Una cadena representando una porción de fecha de la instancia {{jsxref("Global_Objects/Date", "Date")}} indicada de acuerdo con las convenciones específicas del lenguaje.

- -

Ejemplos

- -

Usando toLocaleDateString()

- -

En un caso básico sin especificar una configuración regional, se devolverá una cadena formateada en la configuración regional y las opciones por defecto.

- -
var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
-
-// toLocaleDateString() sin argumentos dependientes de la implementación,
-// de la configuración regional por defecto y la zona horaria por defecto
-console.log(date.toLocaleDateString());
-// → "12/11/2012" si se ejecuta en una configuración regional en-US con zona horaria America/Los_Angeles
-
- -

Comprobando el soporte para los argumentos locales y options

- -

Los argumentos locales y options no son soportados aún por todos los navegadores. Para comprobar si una implementación los soporta, puede usar el requerimiento 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 toLocaleDateStringSupportsLocales() {
-  try {
-    new Date().toLocaleDateString('i');
-  } catch (e) {
-    return e.name === 'RangeError';
-  }
-  return false;
-}
-
-Using locales
- -

Usando locales

- -

Este ejemplo muestra algunas de las variaciones en los formatos de configuración regional de las fechas. Para poder obtener el formato del idioma usado en la interfaz de usuario de su aplicación, asegúrese de especificar el idioma (y posiblemente algunos idiomas alternativos) usando el argumento locales:

- -
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
-
-// Los formatos de abajo asumen la zona horaria local de la configuración regional;
-// America/Los_Angeles para US
-
-// El inglés de USA hace uso de orden mes-día-año
-console.log(date.toLocaleDateString('en-US'));
-// → "12/19/2012"
-
-// El inglés británico hace uso del orden día-mes-año
-console.log(date.toLocaleDateString('en-GB'));
-// → "20/12/2012"
-
-// El coreano hace uso del orden año-mes-día
-console.log(date.toLocaleDateString('ko-KR'));
-// → "2012. 12. 20."
-
-// Evento para persa. Es difícil convertir manualmente la fecha a Solar Hijri
-console.log(date.toLocaleDateString('fa-IR'));
-// → "۱۳۹۱/۹/۳۰"
-
-// El árave en la mayoría de paises arabehablantes hace uso de los dígitos árabes
-console.log(date.toLocaleDateString('ar-EG'));
-// → "٢٠‏/١٢‏/٢٠١٢"
-
-// Para el japonés, las aplicaciones quieren poder usar el calendario japonés,
-// donde 2012 era el año 24 de la era Heisei
-console.log(date.toLocaleDateString('ja-JP-u-ca-japanese'));
-// → "24/12/20"
-
-// Cuando solicite un idioma que no esté soportado, por ejemplo el balinés,
-// incluya un idioma alternativo, en este caso el indonesio
-console.log(date.toLocaleDateString(['ban', 'id']));
-// → "20/12/2012"
-
- -

Usando options

- -

Los resultados aportados por toLocaleDateString() pueden ser personalizados usando el argumento options:

- -
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
-
-// Solicita el día de la semana junto a una fecha larga
-var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
-console.log(date.toLocaleDateString('de-DE', options));
-// → "Donnerstag, 20. Dezember 2012"
-
-// Una aplicación puede querer usar UTC y hacer que sea visible
-options.timeZone = 'UTC';
-options.timeZoneName = 'short';
-console.log(date.toLocaleDateString('en-US', options));
-// → "Thursday, December 20, 2012, GMT"
-
- -

Performance

- -

Cuando se formatea números largos de fechas, es mejor crear un objeto {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} y usar la función aportada por esta propiedad {{jsxref("DateTimeFormat.prototype.format", "format")}}.

- -

Especificaciones

- - - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-date.prototype.tolocaledatestring', 'Date.prototype.toLocaleDateString')}}
{{SpecName('ES Int Draft', '#sup-date.prototype.tolocaledatestring', 'Date.prototype.toLocaleDateString')}}
- -

Compatibilidad con el navegador

- - - -

{{Compat("javascript.builtins.Date.toLocaleDateString")}}

- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/tolocalestring/index.html b/files/es/web/javascript/referencia/objetos_globales/date/tolocalestring/index.html deleted file mode 100644 index 77f48344d3..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/tolocalestring/index.html +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: Date.prototype.toLocaleString() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/toLocaleString -translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleString ---- -
{{JSRef}}
- -

El método toLocaleString() devuelve un cadena con la representación al idioma de la fecha especificada. Los nuevos argumentos locales y options permiten a las aplicaciones especificar el idioma cuyas convenciones de formato deben usarse y personalizar el comportamiento de la función. En implementaciones anteriores, ignoran los argumentos de las configuraciones localesoptions , la configuración regional utilizada y la forma de la cadena devuelta dependen completamente de la implementación .

- -
{{EmbedInteractiveExample("pages/js/date-tolocalestring.html")}}
- - - -

Syntax

- -
dateObj.toLocaleString([locales[, options]])
- -

Parametros

- -

Los argumentos locales y de options  personalizan el comportamiento de la función y permiten que las aplicaciones especifiquen el lenguaje cuyas convenciones de formato deben ser utilizadas. En las implementaciones, que ignoran los argumentos, localesoptions, el locale utilizado y la forma de la cadena devuelta dependen totalmente de la implementación.

- -

Vea el  constructor de Intl.DateTimeFormat() para detalles en esos parametros y como se usan.

- -

El valor por defecto para cada componente date-time es  {{jsxref("undefined")}}, pero si las propiedades weekday, year, month, day son todas {{jsxref("undefined")}}, entonces year, month, y day son asumidas como "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-01T01:00:00Z").toLocaleString("en-US");
-// 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

- - - - - - - - - - - - - -
Specification
{{SpecName('ESDraft', '#sec-date.prototype.tolocalestring', 'Date.prototype.toLocaleString')}}
{{SpecName('ES Int Draft', '#sup-date.prototype.tolocalestring', 'Date.prototype.toLocaleString')}}
- -

Browser compatibility

- - - -

{{Compat("javascript.builtins.Date.toLocaleString")}}

- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/tolocaletimestring/index.html b/files/es/web/javascript/referencia/objetos_globales/date/tolocaletimestring/index.html deleted file mode 100644 index c3954096f6..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/tolocaletimestring/index.html +++ /dev/null @@ -1,152 +0,0 @@ ---- -title: Date.prototype.toLocaleTimeString() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/toLocaleTimeString -tags: - - Date - - Fecha - - Internacionalizacion - - JavaScript - - Method - - Prototype - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString ---- -
{{JSRef}}
- -

El método toLocaleTimeString() devuelve una cadena con una representación de la parte del tiempo de esta fecha sensible al idioma. Los nuevos argumentos locales y options le permiten a la aplicación especificar el idioma cuyas convenciones de formato deben usarse y personalizan el comportamiento de esta función. En implementaciones antiguas que ignoran los argumentos locales y options la localidad usada y la forma de la cadena devuelta son completamente dependientes de la implementación.

- -
{{EmbedInteractiveExample("pages/js/date-tolocaletimestring.html")}}
- - - -

Sintaxis

- -
dateObj.toLocaleTimeString([locales[, options]])
- -

Parámetros

- -

Los argumentos locales y options personalizan el comportamiento de la función y le permiten a la aplicación especificar el idioma cuyas convenciones de formato deben usarse. En las implementaciones que ignoran los argumentos locales y options, la localidad y la forma de la cadena devuelta son dependientes por completo de la implementación.

- -

Vea el constructor Intl.DateTimeFormat() para los detalles de estos parámetros y sobre cómo usarlos.

- -

El valor predeterminado de cada componente de fecha-hora es {{jsxref("undefined")}}, pero si las propiedades weekday, year, month y day son todas {{jsxref("undefined")}}, entonces year, month y day se asumen como "numeric".

- -

Valor devuelto

- -

Una cadena representando la porción de tiempo de la instancia {{jsxref("Global_Objects/Date", "Date")}} dada, conforme a las convenciones específicas del idioma.

- -

Ejemplos

- -

Usando toLocaleTimeString()

- -

En el uso básico sin especificar una localidad, una cadena con formato en la localidad y opciones predeterminadas es devuelta.

- -
var fecha = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
-
-// toLocaleTimeString() sin argumentos depende de la implementación,
-// la localidad y la zona horaria predeterminadas
-console.log(date.toLocaleTimeString());
-// → "21:00:00" si se ejecuta en la localidad es-MX con la zona horaria America/Mexico_City
-
- -

Verificando el soporte de argumentos locales y options

- -

Los argumentos locales y options aún no están soportados en todos los navegadores. Para verificar si alguna implementación ya los soporta, puede usar el requerimiento de que etiquetas inválidas son rechazadas con una excepción {{jsxref("RangeError")}}:

- -
function toLocaleTimeStringSoportaLocales() {
-  try {
-    new Date().toLocaleTimeString('i');
-  } catch (e) {
-    return e​.name === 'RangeError';
-  }
-  return false;
-}
-
- -

Usando locales

- -

Este ejemplo muestra una de las variaciones en formatos de tiempo localizados. Para obtener el formato del idioma usado en la interfaz de su aplicación, asegúrese de especificar ese idioma (y posiblemente algunos de fallback) usando el argumento locales:

- -
var fecha = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
-
-// los siguientes formatos asumen la zona horaria de la localidad;
-// America/Los_Angeles para los EEUU
-
-// El inglés americano usa formato de 12 horas con AM/PM
-console.log(fecha.toLocaleTimeString('en-US'));
-// → "7:00:00 PM"
-
-// El inglés británico usa formato de 24 horas sin AM/PM
-console.log(date.toLocaleTimeString('en-GB'));
-// → "03:00:00"
-
-// El koreano usa formato de 12 horas con AM/PM
-console.log(date.toLocaleTimeString('ko-KR'));
-// → "오후 12:00:00"
-
-// En muchos países donde hablan árabe se usan dígitos árabes
-console.log(date.toLocaleTimeString('ar-EG'));
-// → "٧:٠٠:٠٠ م"
-
-// cuando se pide un idioma que puede no estar disponible, como
-// balinés, incluya un idioma de respaldo, como en este caso, indonesio
-console.log(date.toLocaleTimeString(['ban', 'id']));
-// → "11.00.00"
-
- -

Usando options

- -

Los resultados provistos por toLocaleTimeString() pueden ser personalizados usando el argumento options:

- -
var fecha = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
-
-// una aplicación puede querer usar UTC y visibilizarlo:
-var options = { timeZone: 'UTC', timeZoneName: 'short' };
-console.log(date.toLocaleTimeString('en-US', options));
-// → "3:00:00 AM GMT"
-
-// algunas veces incluso en EEUU necesitan el tiempo en 24 horas
-console.log(date.toLocaleTimeString('en-US', { hour12: false }));
-// → "19:00:00"
-
-// mostrar únicamente horas y minutos, use options con la localidad predeterminada - usar un arreglo vacío
-console.log(date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }));
-// → "20:01"
-
-
- -

Rendimiento

- -

Cuando se da formato a un gran número de fechas, es mejor crear un objeto {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} y usar su método {{jsxref("DateTimeFormat.prototype.format", "format")}}.

- -

Especificaciones

- - - - - - - - - - - - - -
Specification
{{SpecName('ESDraft', '#sec-date.prototype.tolocaletimestring', 'Date.prototype.toLocaleTimeString')}}
{{SpecName('ES Int Draft', '#sup-date.prototype.tolocaletimestring', 'Date.prototype.toLocaleTimeString')}}
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.builtins.Date.toLocaleTimeString")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/toutcstring/index.html b/files/es/web/javascript/referencia/objetos_globales/date/toutcstring/index.html deleted file mode 100644 index 4742a6eacf..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/toutcstring/index.html +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Date.prototype.toUTCString() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/toUTCString -tags: - - Date - - JavaScript - - Method - - Prototype - - Reference - - UTC -translation_of: Web/JavaScript/Reference/Global_Objects/Date/toUTCString ---- -
{{JSRef}}
- -

El métodotoUTCString() convierte una fecha en una cadena, utilizando la zona horaria UTC.

- -
{{EmbedInteractiveExample("pages/js/date-toutcstring.html")}}
- - - -

Sintaxis

- -
dateObj.toUTCString()
- -

Valor de retorno

- -

Una cadena que representa la fecha dada usando la zona horaria UTC

- -

Descripción

- -

El valor devuelto por toUTCString() es una cadena con la forma

- -

Www, dd Mmm yyyy hh:mm:ss GMT

- -

donde:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
WwwDía de la semana, como tres letras (ej. Sun, Mon, ...)
ddDía del mes, como dos dígitos, con cero a la izquierda si es necesario.
MmmMes, como tres letras (ej. Jan, Feb, ...)
yyyyAño, como cuatro o más dígitos con cero a la izquierda si es necesario.
hhHora, como dos dígitos con cero a la izquierda si es necesario.
mmMinutos, como dos dígitos con cero a la izquierda si es necesario.
ssSegundos, como dos dígitos con cero a la izquierda si es necesario.
- -

Antes de ECMAScript 2018, el formato del valor devuelto variaba según la plataforma. El valor devuelto más comun era un sello de fecha con formato RFC-1123, que es una versión ligeramente actualizada de los sellos de fecha RFC-822.

- -

Ejemplos

- -

Usando toUTCString()

- -
var today = new Date('Wed, 14 Jun 2017 00:00:00 PDT');
-var UTCstring = today.toUTCString(); // Wed, 14 Jun 2017 07:00:00 GMT
-
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-date.prototype.toutcstring', 'Date.prototype.toUTCString')}}
- -

Compatibilidad del navegador

- - - -

{{Compat("javascript.builtins.Date.toUTCString")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/date/utc/index.html b/files/es/web/javascript/referencia/objetos_globales/date/utc/index.html deleted file mode 100644 index 605ae2819d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/date/utc/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Date.UTC() -slug: Web/JavaScript/Referencia/Objetos_globales/Date/UTC -tags: - - Date - - JavaScript - - Method - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Date/UTC ---- -
- {{JSRef("Objetos_globales", "Date")}}
-

Resumen

-

Accepts the same parameters as the longest form of the constructor, and returns the number of milliseconds in a Date object since January 1, 1970, 00:00:00, universal time.

-

Sintaxis

-
Date.UTC(año,mes[, dia[, hora[, minutos[, segundos, milisegundos]]]])
-

Parámetros

-
-
- año
-
- Un año mayor de 1900.
-
-
-
- mes
-
- Un entero entre 0 y 11 que representa al mes.
-
-
-
- dia
-
- Un entero entre 1 y 31 que representa al día del mes.
-
-
-
- hora
-
- Un entero entre 0 y 23 que representa la hora.
-
-
-
- minutos
-
- Un entero entre 0 y 59 que representa los minutos.
-
-
-
- segundos
-
- Un entero entre 0 y 59 que representa los segundos.
-
-
-
- milisegundos
-
- Un entero entre 0 y 999 que representa los milisegundos.
-
-

Descripción

-

UTC toma los parámetros de la fecha delimitados por punto y comay devuelve el número de milisegundos entre las 00:00:00 del 1 de enero de 1970 (hora universal) y la hora que especifique.

-

Debería especificar los dígitos del año completo; por ejemplo, 1998. Si se especifica un año entre 0 y 99, el método convierte dicho año en uno del siglo XX (1900 + año); por ejemplo, si especifica 95, se usará el año 1995.

-

El método UTC difiere del constructor de Date de dos modos.

- -

Si especifica un parámetro fuera del rango esperado, el método UTC modifica los otros parámetros para tener en cuenta su número. Por ejemplo, si usa 15 para el mes, el año será incrementado en 1 (año + 1), y 3 se usará para el mes.

-

Debido a que UTC es un método estático de Date, utilícelo siempre como Date.UTC(), en vez de como un método del objeto Date que usted cree.

-

Ejemplos

-

Ejemplo: Usando Date.UTC

-

La sentencia siguiente crea un objeto Date usando GMT en vez de la hora local:

-
fechaGmt = new Date(Date.UTC(96, 11, 1, 0, 0, 0));
-
-

Vea También

- diff --git a/files/es/web/javascript/referencia/objetos_globales/decodeuri/index.html b/files/es/web/javascript/referencia/objetos_globales/decodeuri/index.html deleted file mode 100644 index dc8264eebe..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/decodeuri/index.html +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: decodeURI() -slug: Web/JavaScript/Referencia/Objetos_globales/decodeURI -tags: - - JavaScript - - URI -translation_of: Web/JavaScript/Reference/Global_Objects/decodeURI ---- -
{{jsSidebar("Objects")}}
- -

Sumario

- -

Decodifica un Identificador de Recurso Uniforme (Uniform Resource Identifier, URI) previamente creado por {{jsxref("encodeURI")}} o por una rutina similar.

- -

Sintaxis

- -

decodeURI(encodedURI)

- -

Parámetros

- -
-
encodedURI
-
Un completo, Identificador de Recurso Uniforme.
-
- -

Descripción

- -

Sustituye a cada secuencia de escape codificado en URI con el carácter que representa.

- -

No decodifica secuencias de escape que no se puedan haber introducido por {{jsxref("encodeURI")}}.

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/decodeuricomponent/index.html b/files/es/web/javascript/referencia/objetos_globales/decodeuricomponent/index.html deleted file mode 100644 index 05d9bd4b52..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/decodeuricomponent/index.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: decodeURIComponent -slug: Web/JavaScript/Referencia/Objetos_globales/decodeURIComponent -tags: - - JavaScript - - JavaScript Reference - - URI -translation_of: Web/JavaScript/Reference/Global_Objects/decodeURIComponent ---- -
{{jsSidebar("Objects")}}
- -

Sumario

- -

Decodifica un Identificador de Recurso Uniforme (Uniform Resource Identifier, URI) previamente creado por {{jsxref("encodeURIComponent")}} o por una rutina similar.

- -

Sintaxis

- -

decodeURIComponent(encodedURI)

- -

Parámetros

- -
-
encodedURI
-
Un Identificador de Recurso Uniforme codificado.
-
 
-
- -

Valor retornado

- -

Retorna una nueva cadena representando la version decodificada del componente URI dado

- -

Descripción

- -

Sustituye a cada secuencia de escape codificado en URI con el carácter que representa.

- -

Ver También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/encodeuri/index.html b/files/es/web/javascript/referencia/objetos_globales/encodeuri/index.html deleted file mode 100644 index 51277231e0..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/encodeuri/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: encodeURI -slug: Web/JavaScript/Referencia/Objetos_globales/encodeURI -tags: - - JavaScript - - URI -translation_of: Web/JavaScript/Reference/Global_Objects/encodeURI ---- -
{{jsSidebar("Objects")}}
- -

Sumario

- -

Codifica un Identificador de Recurso Uniforme (Uniform Resource Identifier, URI) reemplazando cada instancia de ciertos carácteres por uno, dos o tres secuencias de escape representando el carácter codificado en UTF-8.

- -

Sintaxis

- -

encodeURI(URI)

- -

Parámetros

- -
-
URI
-
Un Identificador de Recurso Uniforme codificado.
-
- -

Descripción

- -

Se asume que el URI es un URI completo, a fin de no codificar caracteres reservados que tienen un significado especial en la URI.

- -

encodeURI reemplaza todos los caracteres excepto los siguientes con las secuencias de escape UTF-8:

- - - - - - - - - - - - - - - - - - - - -
TipoIncluye
Caracteres reservados; , / ? : @ & = + $
Caracteres No escapeAlfabéticos, dígitos decimales, - _ . ! ~ * ' ( )
Almohadilla#
- -

Tenga en cuenta que encodeURI por sí sola no puede formar solicitudes correctas HTTP GET y POST, como por XMLHTTPRequests, porque "&", "+", y "=" no están codificados, los cuales son tratados como caracteres especiales en las solicitudes GET y POST. encodeURIComponent, sin embargo, codifica estos caracteres. Lo más probable es que estos comportamientos no sean compatibles en los navegadores Web.

- -

Ver También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/encodeuricomponent/index.html b/files/es/web/javascript/referencia/objetos_globales/encodeuricomponent/index.html deleted file mode 100644 index 53af149970..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/encodeuricomponent/index.html +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: encodeURIComponent -slug: Web/JavaScript/Referencia/Objetos_globales/encodeURIComponent -tags: - - JavaScript - - URI -translation_of: Web/JavaScript/Reference/Global_Objects/encodeURIComponent ---- -
{{jsSidebar("Objects")}}
- -

Resumen

- -

El método encodeURIComponent() codifica un componente URI (Identificador Uniforme de Recursos) al reemplazar cada instancia de ciertos caracteres por una, dos, tres o cuatro secuencias de escape que representan la codificación UTF-8 del carácter (solo serán cuatro secuencias de escape para caracteres compuestos por dos carácteres "sustitutos").

- -

Sintaxis

- -
encodeURIComponent(str);
- -

Parámetros

- -
-
str
-
Cadena. Un componente de un URI.
-
- -

Descripción

- -

encodeURIComponent escapes all characters except the following: alphabetic, decimal digits, - _ . ! ~ * ' ( )

- -

Note that an {{jsxref("Objetos_globales/URIError", "URIError")}} will be thrown if one attempts to encode a surrogate which is not part of a high-low pair, e.g.,

- -
// high-low pair ok
-alert(encodeURIComponent('\uD800\uDFFF'));
-
-// lone high surrogate throws "URIError: malformed URI sequence"
-alert(encodeURIComponent('\uD800'));
-
-// lone low surrogate throws "URIError: malformed URI sequence"
-alert(encodeURIComponent('\uDFFF'));
-
- -

To avoid unexpected requests to the server, you should call encodeURIComponent on any user-entered parameters that will be passed as part of a URI. For example, a user could type "Thyme &time=again" for a variable comment. Not using encodeURIComponent on this variable will give comment=Thyme%20&time=again. Note that the ampersand and the equal sign mark a new key and value pair. So instead of having a POST comment key equal to "Thyme &time=again", you have two POST keys, one equal to "Thyme " and another (time) equal to again.

- -

For application/x-www-form-urlencoded (POST), spaces are to be replaced by '+', so one may wish to follow a encodeURIComponent replacement with an additional replacement of "%20" with "+".

- -

To be more stringent in adhering to RFC 3986 (which reserves !, ', (, ), and *), even though these characters have no formalized URI delimiting uses, the following can be safely used:

- -
function fixedEncodeURIComponent (str) {
-  return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
-}
-
- -

Examples

- -

The following example provides the special encoding required within UTF-8 Content-Disposition and Link server response header parameters (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);
-}
-
- -

Specifications

- - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
ECMAScript 3rd Edition.StandardInitial definition.
{{SpecName('ES5.1', '#sec-15.1.3.4', 'encodeURIComponent')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-encodeuricomponent-uricomponent', 'encodeURIComponent')}}{{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() }}
-
- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/error/constructor_error/index.html b/files/es/web/javascript/referencia/objetos_globales/error/constructor_error/index.html deleted file mode 100644 index 114831c512..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/error/constructor_error/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Constructor Error() -slug: Web/JavaScript/Referencia/Objetos_globales/Error/constructor_Error -tags: - - Constructor - - JavaScript - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/Error/Error ---- -
{{JSRef}}
- -

El constructor Error crea un objeto Error.

- -

Sintaxis

- -
new Error([message[, fileName[, lineNumber]]])
- -

Parámetros

- -
-
message{{Optional_Inline}}
-
Una descripción del error legible para los humanos.
-
fileName {{Optional_Inline}}{{Non-standard_inline}}
-
El valor de la propiedad fileName en el objeto Error creado. De manera predeterminada, el nombre del archivo que contiene el código que llamó al constructor Error().
-
lineNumber {{Optional_Inline}}{{Non-standard_inline}}
-
El valor de la propiedad lineNumber en el objeto Error creado. De manera predeterminada, el número de línea que contiene la invocación del constructor Error().
-
- -

Ejemplos

- -

Llamada a función o construcción new

- -

Cuando se usa Error como una función, sin {{JSxRef("Operators/new", "new")}}, devolverá un objeto Error. Por lo tanto, una simple llamada a Error producirá el mismo resultado que la construcción de un objeto Error mediante la palabra clave new.

- -
// esto...
-const x = Error('¡Fui creado usando una llamada a función!')
-
-    // ...tiene la misma funcionalidad que esta.
-const y = new Error('¡Fui construido con la palabra clave "new"!') 
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-error-constructor', 'Error constructor')}}
- -

Compatibilidad del navegador

- -
- - -

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

-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/error/filename/index.html b/files/es/web/javascript/referencia/objetos_globales/error/filename/index.html deleted file mode 100644 index 8e633934e0..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/error/filename/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Error.prototype.fileName -slug: Web/JavaScript/Referencia/Objetos_globales/Error/fileName -tags: - - JavaScript - - No estandar - - Propiedad - - Prototipo -translation_of: Web/JavaScript/Reference/Global_Objects/Error/fileName ---- -
{{jsRef}} {{non-standard_header}}
- -

La propiedad fileName contiene la ruta al archivo que generó este error.

- -

Descripción

- -

Esta propiedad no estándar contiene la ruta al archivo que generó este error. Si se llama desde un contexto de depuración, devuelve las herramientas de desarrollo de Firefox, por ejemplo, "código de evaluación del depurador".

- -

Ejemplos

- -

Usar fileName

- -
var e = new Error('No se pudo procesar la entrada');
-throw e;
-// e.fileName podría verse como "file:///C:/ejemplo.html"
-
- -

Especificaciones

- -

No forma parte de ningún estándar.

- -

Compatibilidad del navegador

- -
-
- - -

{{Compat("javascript.builtins.Error.fileName")}}

-
-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/error/index.html b/files/es/web/javascript/referencia/objetos_globales/error/index.html deleted file mode 100644 index 03cbd038da..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/error/index.html +++ /dev/null @@ -1,219 +0,0 @@ ---- -title: Error -slug: Web/JavaScript/Referencia/Objetos_globales/Error -tags: - - Error - - JavaScript -translation_of: Web/JavaScript/Reference/Global_Objects/Error ---- -
{{JSRef}}
- -

Los objetos Error se lanzan cuando ocurren errores en tiempo de ejecución. También puedes utilizar el objeto Error como objeto base para excepciones definidas por el usuario. Ve más adelante los tipos de errores estándar integrados.

- -

Descripción

- -

Los errores en tiempo de ejecución dan como resultado la creación y lanzamiento de nuevos objetos Error.

- -

Tipos Error

- -

Además del constructor genérico Error, hay otros siete constructores de errores en el núcleo de JavaScript. Para conocer las excepciones de lado del cliente, consulta {{JSxRef("../Guide/Control_de_flujo_y_manejo_de_errores", "Declaraciones para el manejo de excepciones", "#Sentencias_de_manejo_de_excepciones", 1)}}.

- -
-
{{JSxRef("EvalError")}}
-
Crea una instancia que representa un error que ocurre con respecto a la función global {{JSxRef("eval", "eval()")}}.
-
{{JSxRef("InternalError")}}
-
Crea una instancia que representa un error que ocurre cuando se produce un error interno en el motor de JavaScript. Por ejemplo: "demasiada recursividad".
-
{{JSxRef("RangeError")}}
-
Crea una instancia que representa un error que ocurre cuando una variable numérica o parámetro está fuera de su rango válido.
-
{{JSxRef("ReferenceError")}}
-
Crea una instancia que representa un error que ocurre cuando se quita la referencia a una referencia no válida.
-
{{JSxRef("SyntaxError")}}
-
Crea una instancia que representa un error de sintaxis.
-
{{JSxRef("TypeError")}}
-
Crea una instancia que representa un error que ocurre cuando una variable o parámetro no es de un tipo válido.
-
{{JSxRef("URIError")}}
-
Crea una instancia que representa un error que ocurre cuando {{JSxRef("encodeURI", "encodeURI()")}} o {{JSxRef("decodeURI", "decodeURI()")}} pasan parámetros no válidos.
-
- -

Constructor

- -
-
{{JSxRef("Objetos_globales/Error/Error", "Error()")}}
-
Crea un nuevo objeto Error.
-
- -

Métodos estáticos

- -
-
{{JSxRef("Error.captureStackTrace()")}}
-
Una función V8 no estándar que crea la propiedad {{JSxRef("Error.prototype.stack", "stack")}} en una instancia de Error.
-
- -

Propiedades de la instancia

- -
-
{{jsxref("Error.prototype.message")}}
-
Mensaje de error.
-
{{jsxref("Error.prototype.name")}}
-
Nombre del error.
-
{{jsxref("Error.prototype.description")}}
-
Una propiedad no estándar de Microsoft para la descripción del error. Similar a {{jsxref("Error.prototype.message", "message")}}.
-
{{jsxref("Error.prototype.number")}}
-
Una propiedad no estándar de Microsoft para un número de error.
-
{{jsxref("Error.prototype.fileName")}}
-
Una propiedad no estándar de Mozilla para la ruta al archivo que generó este error.
-
{{JSxRef("Error.prototype.lineNumber")}}
-
Una propiedad no estándar de Mozilla para el número de línea en el archivo que generó este error.
-
{{JSxRef("Error.prototype.columnNumber")}}
-
Una propiedad no estándar de Mozilla para el número de columna en la línea que generó este error.
-
{{JSxRef("Error.prototype.stack")}}
-
Una propiedad no estándar de Mozilla para un seguimiento de la pila.
-
- -

Métodos de instancia

- -
-
{{jsxref("Error.prototype.toString()")}}
-
Devuelve una cadena que representa el objeto especificado. Redefine el método {{JSxRef("Object.prototype.toString()")}}.
-
- -

Ejemplos

- -

Lanzar un error genérico

- -

Normalmente, creas un objeto Error con la intención de generarlo utilizando la palabra clave {{JSxRef("Sentencias/throw", "throw")}}. Puedes manejar el error usando la construcción {{JSxRef("Sentencias/try...catch", "try...catch")}}:

- -
try {
-  throw new Error('¡Ups!')
-} catch (e) {
-  console.error(e.name + ': ' + e.message)
-}
-
- -

Manejar de un error específico

- -

Puede elegir manejar solo tipos de error específicos probando el tipo de error con la propiedad {{JSxRef("Object.prototype.constructor", "constructor")}} del error o, si estás escribiendo para motores JavaScript modernos, la palabra clave {{JSxRef("Operators/instanceof", "instanceof")}}:

- -
try {
-  foo.bar()
-} catch (e) {
-  if (e instanceof EvalError) {
-    console.error(e.name + ': ' + e.message)
-  } else if (e instanceof RangeError) {
-    console.error(e.name + ': ' + e.message)
-  }
-  // ... etc
-}
-
- -

Tipos Error personalizados

- -

Posiblemente desees definir tus propios tipos de error derivados de Error para poder lanzarlo con throw new MyError() y usar instanceof MyError para verificar el tipo de error en el controlador de excepciones. Esto da como resultado un código de manejo de errores más limpio y consistente.

- -

Consulta "¿Cuál es una buena manera de extender Error en JavaScript?" en StackOverflow para una discusión en profundidad.

- -

Clase Error personalizado en ES6

- -
-

Las versiones de Babel anteriores a la 7 pueden manejar métodos de clase CustomError, pero solo cuando se declaran con {{JSxRef("Objetos_globales/Object/defineProperty", "Object.defineProperty()")}}. De lo contrario, las versiones antiguas de Babel y otros transpiladores no manejarán correctamente el siguiente código sin configuración adicional.

-
- -
-

Algunos navegadores incluyen el constructor CustomError en el seguimiento de la pila cuando se utilizan clases de ES2015.

-
- -
class CustomError extends Error {
-  constructor(foo = 'bar', ...params) {
-    // Pasa los argumentos restantes (incluidos los específicos del proveedor) al constructor padre
-    super(...params)
-
-    // Mantiene un seguimiento adecuado de la pila para el lugar donde se lanzó nuestro error (solo disponible en V8)
-    if (Error.captureStackTrace) {
-      Error.captureStackTrace(this, CustomError)
-    }
-
-    this.name = 'CustomError'
-    // Información de depuración personalizada
-    this.foo = foo
-    this.date = new Date()
-  }
-}
-
-try {
-  throw new CustomError('baz', 'bazMessage')
-} catch(e) {
-  console.error(e.name)    // CustomError
-  console.error(e.foo)     // baz
-  console.error(e.message) // bazMessage
-  console.error(e.stack)   // stacktrace
-}
- -

Objeto Error personalizado ES5

- -
-

Todos los navegadores incluyen el constructor CustomError en el seguimiento de la pila cuando se usa una declaración de prototipo.

-
- -
function CustomError(foo, message, fileName, lineNumber) {
-  var instance = new Error(message, fileName, lineNumber);
-  instance.name = 'CustomError';
-  instance.foo = foo;
-  Object.setPrototypeOf(instance, Object.getPrototypeOf(this));
-  if (Error.captureStackTrace) {
-    Error.captureStackTrace(instance, CustomError);
-  }
-  return instance;
-}
-
-CustomError.prototype = Object.create(Error.prototype, {
-  constructor: {
-    value: Error,
-    enumerable: false,
-    writable: true,
-    configurable: true
-  }
-});
-
-if (Object.setPrototypeOf){
-  Object.setPrototypeOf(CustomError, Error);
-} else {
-  CustomError.__proto__ = Error;
-}
-
-try {
-  throw new CustomError('baz', 'bazMessage');
-} catch(e){
-  console.error(e.name); // CustomError
-  console.error(e.foo); // baz
-  console.error(e.message); // bazMessage
-}
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-error-objects', 'Error')}}
- -

Compatibilidad del navegador

- -
- - -

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

-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/error/linenumber/index.html b/files/es/web/javascript/referencia/objetos_globales/error/linenumber/index.html deleted file mode 100644 index 0efec0696f..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/error/linenumber/index.html +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Error.prototype.lineNumber -slug: Web/JavaScript/Referencia/Objetos_globales/Error/lineNumber -translation_of: Web/JavaScript/Reference/Global_Objects/Error/lineNumber ---- -
No es una norma
-Esta característica no es una norma y no está en la lista de normas. No la utilice en sitios de producción que enfrenta la Web: no va a funcionar para todos los usuarios. También puede haber grandes incompatibilidades entre implementaciones y el comportamiento puede cambiar en el futuro.
- -
 
- -
La propiedad lineNumber contiene el número de linea en el archivo que arrojó el error.
- -
 
- -

Ejemplos

- -

Utilizando lineNumber

- -
var e = new Error('No fue posible analizar el dato introducido');
-throw e;
-console.log(e.lineNumber) // 2
-
- -

Ejemplo alternativo utilizando el evento 'error'

- -
window.addEventListener('error', function(e) {
-  console.log(e.lineno); // 5
-});
-var e = new Error('No fue posible analizar el dato introducido');
-throw e;
-
- -

Esta es una norma soportada por Chrome, Firefox entre otros.

- -

Especificaciones

- -

No forma parte de ninguna especificación. No es una norma.

- - - -
-

 

- -

Tabla de compatibilidad

- - - - - - - - - - - - - - - - - - - - -
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básicoCompatible [1]CompatibleNo compatibleNo compatibleNo compatible
- -

 [1] Objeto error en errores manejados.

- - - - - - - - - - - - - - - - - - - - - - -
CaracteristicaAndroidChorme para AndroidFirefox Móvil (Gecko)IE MóvilOpera MóvilSafari Móvil
Soporte básicoNo compatibleNo compatibleCompatibleNo compatibleNo compatibleNo compatible
-
- -

 

- -

Vea también:

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/error/message/index.html b/files/es/web/javascript/referencia/objetos_globales/error/message/index.html deleted file mode 100644 index 3f14983d6e..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/error/message/index.html +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: Error.prototype.message -slug: Web/JavaScript/Referencia/Objetos_globales/Error/message -translation_of: Web/JavaScript/Reference/Global_Objects/Error/message ---- -
{{JSRef}}
- -

La propiedad message es una descripción legible del error.

- -

Descripción

- -

Esta propiedad contiene una breve descripción del error, si está disponible o ha sido fijado. SpiderMonkey hace un amplio uso de esta propiedad para las excepciones. Esta porpiedad combinada con la propiedad {{jsxref("Error.prototype.name", "name")}} es usada por el método {{jsxref("Error.prototype.toString()")}} para crear una cadena de texto del objeto Error.

- -

Por defecto, la propiedad message es una cadena vacía, pero se puede especificar un mensaje a través del primer parámetro del {{jsxref("Error", "constructor Error")}}.

- -

Ejemplo

- -

Lanzar un error personalizado

- -
var e = new Error('No se pudo analizar la entrada');
-// e.message es 'No se pudo analizar la entrada'
-throw e;
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial.
{{SpecName('ES5.1', '#sec-15.11.4.3', 'Error.prototype.message')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-error.prototype.message', 'Error.prototype.message')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-error.prototype.message', 'Error.prototype.message')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/error/name/index.html b/files/es/web/javascript/referencia/objetos_globales/error/name/index.html deleted file mode 100644 index 841cc7cbc4..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/error/name/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Error.prototype.name -slug: Web/JavaScript/Referencia/Objetos_globales/Error/name -tags: - - Error - - JavaScript - - Propiedad - - Prototipo -translation_of: Web/JavaScript/Reference/Global_Objects/Error/name ---- -
{{JSRef}}
- -

La propiedad name representa un nombre para el tipo de error. El valor inicial es "Error".

- -

Descripción

- -

De forma predeterminada, las instancias {{JSxRef("Error")}} reciben el nombre "Error". La propiedad name, además de la propiedad {{JSxRef("Error.prototype.message", "message")}}, la utiliza el método {{JSxRef("Error.prototype.toString()")}} para crear una representación de cadena del error.

- -

Ejemplos

- -

Lanzar un error personalizado

- -
var e = new Error('Entrada mal formada'); // e.name es 'Error'
-
-e.name = 'ParseError';
-throw e;
-// e.toString() devolverá 'ParseError: Entrada mal formada'
-
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-error.prototype.name', 'Error.prototype.name')}}
- -

Compatibilidad del navegador

- -
-
- - -

{{Compat("javascript.builtins.Error.name")}}

-
-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/error/prototype/index.html b/files/es/web/javascript/referencia/objetos_globales/error/prototype/index.html deleted file mode 100644 index aac1516fc2..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/error/prototype/index.html +++ /dev/null @@ -1,154 +0,0 @@ ---- -title: Error.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/Error/prototype -translation_of: Web/JavaScript/Reference/Global_Objects/Error -translation_of_original: Web/JavaScript/Reference/Global_Objects/Error/prototype ---- -
{{JSRef}}
- -

La propiedad Error.prototype representa el prototipo del constructor {{jsxref("Error")}}.

- -
{{js_property_attributes(0, 0, 0)}}
- -

Descripción

- -

Todas las instancias de {{jsxref("Error")}} e instancias de {{jsxref("Global_Objects/Error", "errores no genéricos", "#Error_types", 1)}}, heredan de Error.prototype. Como todas las funciones constructoras, se puede usar el protoipo del constructor para añadir propiedades o métodos a todas las instancias creadas con este constructor.

- -

Properties

- -

Propiedades estándar

- -
-
Error.prototype.constructor
-
Especifica la función que crea una instancia del prototipo.
-
{{jsxref("Error.prototype.message")}}
-
Mensaje de error.
-
{{jsxref("Error.prototype.name")}}
-
Nombre del error.
-
- -

Extensiones específicas del proveedor

- -
{{non-standard_header}}
- -

Microsoft

- -
-
{{jsxref("Error.prototype.description")}}
-
Descripción del error. Similar a {{jsxref("Error.prototype.message", "message")}}.
-
{{jsxref("Error.prototype.number")}}
-
Número de error.
-
- -

Mozilla

- -
-
{{jsxref("Error.prototype.fileName")}}
-
Ruta del archivo que lanzó el error.
-
{{jsxref("Error.prototype.lineNumber")}}
-
Número de fila en el archivo que lanzó el error.
-
{{jsxref("Error.prototype.columnNumber")}}
-
Número de columna en el archivo que lanzó el error.
-
{{jsxref("Error.prototype.stack")}}
-
Seguimiento de la pila.
-
- -

Métodos

- -
-
{{jsxref("Error.prototype.toSource()")}} {{non-standard_inline}}
-
Devuelve una cadena que contiene el codígo del objeto {{jsxref("Error")}}; se puede usar este valor para crear un nuevo objeto. Sobreescribe el método {{jsxref("Object.prototype.toSource()")}}.
-
{{jsxref("Error.prototype.toString()")}}
-
Devuelve una cadena que representa el objeto. Sobreescribe el método {{jsxref("Object.prototype.toString()")}}.
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.11.3.1', 'Error')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-error.prototype', 'Error')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-error.prototype', 'Error')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/error/tosource/index.html b/files/es/web/javascript/referencia/objetos_globales/error/tosource/index.html deleted file mode 100644 index fb1b429884..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/error/tosource/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Error.prototype.toSource() -slug: Web/JavaScript/Referencia/Objetos_globales/Error/toSource -tags: - - JavaScript - - No estandar - - Prototipo - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Error/toSource ---- -
{{JSRef}} {{non-standard_header}}
- -

El método toSource() devuelve código que podría evaluar el mismo error.

- -

Sintaxis

- -
e.toSource()
- -

Valor de retorno

- -

Una cadena que contiene el código fuente del error.

- -

Ejemplos

- -

Usar toSource

- -

Llamar al método toSource de una instancia {{JSxRef("Error")}} (incluido {{JSxRef("Global_Objects/Error", "NativeErrors", "#Error_types")}}) devolverá una cadena que contiene el código fuente del error. Esta cadena se puede evaluar para crear un objeto (aproximadamente) igual. Naturalmente, la cadena que contiene la fuente sigue la estructura del constructor {{JSxRef("Error")}}. Por ejemplo:

- -
(newname(message ,fileName,lineNumber))
-
- -

donde estos atributos corresponden a las propiedades respectivas de la instancia de error.

- -
-

Nota: Ten en cuenta que las propiedades utilizadas por el método toSource en la creación de esta cadena son mutables y es posible que no reflejen con precisión la función utilizada para crear una instancia de error o el nombre de archivo o número de línea donde ocurrió un error real.

-
- -

Especificaciones

- -

No forma parte de ningún estándar.

- -

Compatibilidad del navegador

- -
-
- - -

{{Compat("javascript.builtins.Error.toSource")}}

-
-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/error/tostring/index.html b/files/es/web/javascript/referencia/objetos_globales/error/tostring/index.html deleted file mode 100644 index f4ea4a44b9..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/error/tostring/index.html +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: Error.prototype.toString() -slug: Web/JavaScript/Referencia/Objetos_globales/Error/toString -tags: - - JavaScript - - Prototipo - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Error/toString ---- -
{{JSRef}}
- -

El método toString() devuelve una cadena que representa el objeto {{JSxRef("Error")}} especificado.

- -

Sintaxis

- -
e.toString()
- -

Valor de retorno

- -

Una cadena que representa el objeto {{JSxRef("Error")}} especificado.

- -

Descripción

- -

El objeto {{JSxRef("Error")}} redefine el método {{JSxRef("Object.prototype.toString()")}} heredado por todos los objetos. Su semántica es la siguiente (asumiendo que {{JSxRef("Object")}} y {{JSxRef("String")}} tienen sus valores originales):

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

Ejemplos

- -

Usar toString()

- -
var e = new Error('fatal error');
-console.log(e.toString()); // 'Error: error fatal'
-
-e.name = undefined;
-console.log(e.toString()); // 'Error: error fatal'
-
-e.name = '';
-console.log(e.toString()); // 'error fatal'
-
-e.message = undefined;
-console.log(e.toString()); // ''
-
-e.name = 'hola';
-console.log(e.toString()); // 'hola'
-
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-error.prototype.tostring', 'Error.prototype.toString')}}
- -

Compatibilidad del navegador

- -
- - -

{{Compat("javascript.builtins.Error.toString")}}

-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/escape/index.html b/files/es/web/javascript/referencia/objetos_globales/escape/index.html deleted file mode 100644 index 4925618b0e..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/escape/index.html +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: escape() -slug: Web/JavaScript/Referencia/Objetos_globales/escape -tags: - - JavaScript - - Obsoleto - - escape -translation_of: Web/JavaScript/Reference/Global_Objects/escape ---- -
{{Deprecated_header}} Advertencia escape() no esta estrictamente en desuso("eliminada por los estándares Web"), esta definida en  Anexo B El estándar ECMA-262 , cuya introducción establece: -
… Todos las características especificas y comportamientos del lenguaje en este anexo tienen mas de una caracterísitca indeseable y en ausencia del legado sera eliminada de esta especificación. …
-… Los programadores no deben usar o suponer la existencia de estas características y/o comportamientos al escribir nuevo código ECMAScript …
-
- -
- -

La función obsoleta escape() crea una nueva cadena de caracteres en los que ciertos caracteres han sido sustituidos por una secuencia hexadecimal de escape.

- -

Sintaxis

- -
escape(str)
- -

Parametros

- -
-
str
-
Cadena a codificar.
-
- -

Devuelve

- -

Una nueva cadena en la que ciertos caracteres han sido sustituidos.

- -

Descripción

- -

La función escape es una propiedad del objeto global. SLos caracteres especiales son codificados a excepción de: @*_+-./

- -

La forma hexadecimal de los caracteres cuyo valor es 0xFF o menor, es una secuencia de escape de dos digitos: %xx. Para caracteres un valor superior, se usa el fomato de cuatro digitos: %uxxxx.

- -

Ejemplos

- -
escape('abc123');     // "abc123"
-escape('äöü');        // "%E4%F6%FC"
-escape('ć');          // "%u0107"
-
-// caracteres especiales
-escape('@*_+-./');    // "@*_+-./"
- -

Specifications

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition.
{{SpecName('ES5.1', '#sec-B.2.1', 'escape')}}{{Spec2('ES5.1')}}Defined in the (informative) Compatibility Annex B
{{SpecName('ES6', '#sec-escape-string', 'escape')}}{{Spec2('ES6')}}Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers
{{SpecName('ESDraft', '#sec-escape-string', 'escape')}}{{Spec2('ESDraft')}}Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers
- -

Compatibilidad con navegadores

- -

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

- -

Ver más

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/eval/index.html b/files/es/web/javascript/referencia/objetos_globales/eval/index.html deleted file mode 100644 index 52375445c4..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/eval/index.html +++ /dev/null @@ -1,309 +0,0 @@ ---- -title: eval -slug: Web/JavaScript/Referencia/Objetos_globales/eval -tags: - - JavaScript - - eval -translation_of: Web/JavaScript/Reference/Global_Objects/eval ---- -
{{jsSidebar("Objects")}}
- -

Resumen

- -

La función eval() evalúa un código JavaScript representado como una cadena de caracteres (string), sin referenciar a un objeto en particular.

- -

Sintaxis

- -
eval(cadena de caracteres o string)
-
- -

Parámetros

- -
-
cadena de caracteres (string)
-
Una cadena de caracteres (string) que representa una expresión, sentencia o secuencia de sentencias en JavaScript. La expresión puede incluir variables y propiedades de objetos existentes.
-
-

Valores retornados o devueltos

-
-
- -

El valor que resulta de la evaluación del código proporcionado. Si este valor está vacío. {{jsxref("undefined")}} (artículo en inglés) es devuelto.

- -

Descripción

- -

eval() es una propiedad de la función del objeto global.

- -

El argumento de la función eval es una cadena de caracteres. Si la cadena de caracteres representa una expresión, eval() evalúa la expresión. Si el argumento representa una o más sentencias JavaScript, eval() evalúa las sentencias. No se debe llamar a eval() para evaluar una expresión aritmética; ya que JavaScript evalúa las expresiones aritméticas automáticamente.

- -

Si construye una expresión aritmética como una cadena de caracteres, puede usar eval() para evaluarla más tarde. Por ejemplo, suponga que tiene la variable x. Puede posponer la evaluación de una expresión que involucre a x mediante la asignación del valor de la cadena de caracteres de la expresión, asignando "3 * x + 2" a la variable, y entonces llamar a eval() posteriormente en el script.

- -

Si el argumento de eval() no es una cadena de caracteres, eval() devuelve el argumento sin cambio. En el siguiente ejemplo, el constructor String es especificado, y eval() devuelve un objeto String en lugar de evaluar la cadena de caracteres.

- -
eval(new String("2 + 2")); // devuelve un objeto String que contiene "2 + 2"
-eval("2 + 2");             // devuelve 4
-
- -

Puede trabajar sobre esta limitación de una manera genérica utilizando toString().

- -
var expresion = new String("2 + 2");
-eval(expresion.toString());
-
- -

Si utiliza la función eval() indirectamente, invocándola a través de una referencia distinta de eval, a partir de ECMAScript 5, ésta funciona en el ámbito global en lugar de hacerlo en el ámbito local; esto quiere decir, por ejemplo, que las declaraciones de función crean funciones globales, y que el código siendo evaluado no tiene acceso a las variables locales dentro del ámbito en donde está siendo llamada.

- -
function test() {
-  var x = 2, y = 4;
-  console.log(eval("x + y"));  // Llamada directa, utiliza el ámbito local, el resultado es 6
-  var geval = eval;
-  console.log(geval("x + y")); // Llamada indirecta, utiliza el ámbito global, através de ReferenceError por que `x` es indefinida
-}
- -

No utilice eval innecesariamente

- -

eval() es una función peligrosa, quel ejecuta el código el cual es pasado con los privilegios de quien llama.  Si ejecuta eval() con una cadena de carcteres que podría ser afectada por un elemento malicioso, podría terminar ejecutando código malicioso dentro de la computadora del usuario con los permisos de su página o extensión web . Más importante aún, una parte del código de terceros podría accesar al ámbito en el cual eval() fue invocada, lo que puede permitir la entrada a posibles ataques de formas a las que el constructor {{jsxref("Global_Objects/Function", "Function")}} (art. en inglés) el cual es similar, no es susceptible.

- -

eval() es generalmente también más lenta que otras alternativas desde que se invoca en el intérprte de JS, mientras que otros muchos constructores son optimizados por los motores JS modernos.

- -

Existen alternativas más seguras (y rápidas) que eval() para casos de uso común.

- -

Accediendo a propiedades de los miembros

- -

No debería utilizar eval() con el fin de convertir nombres de propiedades en propiedades. Observe el siguiente ejemplo en el cual la función getNombreCampo(n) devuelve el nombre del elemento del formulario especificado como una cadena. La primera sentencia asigna el valor de cadena del tercer elemento del formulario a la variable campo. La segunda sentencia utiliza eval para mostrar el valor del elemento del formulario.

- -
var campo = getNombreCampo(3);
-document.write("El campo llamado ", campo, " tiene un valor de ", eval(campo + ".value"));
-
- -

Sin embargo, eval() no es necesario en este código. De hecho, su uso aquí no se recomienda. En su lugar, utilice los operadores de miembro (art. en inglés), que son mucho más rápidos y seguros:

- -
var campo = getFieldName(3);
-document.write("El campo llamado ", campo, " tiene un valor de ", campo[valor]);
-
- -

Considere ahora este nuevo ejemplo, en donde la propiedad del objeto a ser accesado no es conocida hasta que el código es ejecutado. Esto puede hacerse con eval:

- -
var obj = { a: 20, b: 30 };
-var nombreProp = obtenerNombreProp();  // devuelve "a" o "b"
-
-eval( "var resultado = obj." + nombreProp );
- -

Y con el uso de los accesores de propiedades (artículo en inglés), el cual es mucho más rápido y seguro, sería así:

- -
var obj = { a: 20, b: 30 };
-var nombreProp = obtenerNombreProp(); // devuelve "a" o "b"
-var resultado = obj[ nombreProp ];  //  obj[ "a" ] es el mismo que obj.a
- -

Puede incluso utilizar este método para acceder a las propiedades de los descendientes. Utilizando eval() esto sería de la siguiente forma:

- -
var obj = {a: {b: {c: 0}}};
-var propPath = getPropPath();  // returns e.g. "a.b.c"
-
-eval( "var result = obj." + propPath );
- -

Evitando eval(), esto podría hacerse dividiendo la ruta de propiedad y haciendo un bucle a través de las diferentes propiedades:

- -
function getDescendantProp(obj, desc) {
-  var arr = desc.split(".");
-  while(arr.length) {
-    obj = obj[arr.shift()];
-  }
-  return obj;
-}
-
-var obj = {a: {b: {c: 0}}};
-var propPath = getPropPath();  // returns e.g. "a.b.c"
-var result = getDescendantProp(obj, propPath);
- -

Estableciendo una propiedad que funcione de modo similar:

- -
function setDescendantProp(obj, desc, value) {
-  var arr = desc.split(".");
-  while(arr.length > 1) {
-    obj = obj[arr.shift()];
-  }
-  obj[arr[0]] = value;
-}
-
-var obj = {a: {b: {c: 0}}};
-var propPath = getPropPath();  // returns e.g. "a.b.c"
-var result = setDescendantProp(obj, propPath, 1);  // test.a.b.c will now be 1
- -

Utilice funciones en lugar de evaluar fragmentos de código

- -

JavaScript tiene funciones de primera clase (artículo en inglés), lo que quiere decir que usted puede pasar funciones como argumentos a otras APIs, almacenarlas en variables y propiedades de objetos, etc. Muchas APIs de DOM están diseñadas con esto en mente, o sea que usted puede (y debería) escribir:

- -
// instead of setTimeout(" ... ", 1000) use:
-setTimeout(function() { ... }, 1000);
-
-// instead of elt.setAttribute("onclick", "...") use:
-elt.addEventListener("click", function() { ... } , false);
- -

Las clausuras o cierres (art. en inglés) son muy útiles como forma de crear funciones parametrizadas sin la concatenación de cadenas de caracteres o strings.

- -

Analizando JSON (convirtiendo cadenas de caracteres (strings) hacia objetos de JavaScript)

- -

Si la cadena de caracteres que usted esta llamando eval() contiene datos (por ejemplo, un array: "[1, 2, 3]"), en contraposición al código, debería considerar un cambio a JSON (art. en inglés), el cual permite a la cadena de caracteres utilizar un subconjunto de sintaxis de JavaScript para representar los datos. Vea también Descargando JSON y JavaScript en extensiones (art. en inglés).

- -

Observe, que ya que la sintaxis de JSON es limitada en comparación con la sintaxis de JavaScript, muchas literales válidas de JavaScript no serán analizadas como JSON. Por ejemplo, seguir comas no está permitido en JSON, y los nombres de propiedades (keys) en literales de objeto deben ser entrecomilladas. Asegúrese de utilizar un serializados de JSON para generar cadenas de caracteres que posteriormente sean analizadas como JSON.

- -

Pasar datos en lugar de código

- -

Por ejemplo, una extensión diseñada para arrastar contenido de páginas web podría tener reglas de arrastre definidas en XPath (art. en inglés) en lugar de código JavaScript.

- -

Ejecutar código sin privilegos limitados

- -

Si usted debe ejecutar código, considere ejecutarlo con privilegios reducidos. Este consejo aplica principalmente para las extensiones y las aplicaciones XUL, para lo cual puede utilizar Components.utils.evalInSandbox (art. en inglés).

- -

Ejemplos

- -

Los siguientes ejemplos muestran el resultado usando document.write. En JavaScript del lado servidor, puede mostrar el mismo resultado llamando a la función write en vez de document.write.

- -

Utlizando eval

- -

En el siguiente código, las dos sentencias que contienen eval devuelven 42. La primera evalúa la cadena "x + y + 1"; la segunda evalúa la cadena "42".

- -
var x = 2;
-var y = 39;
-var z = "42";
-eval("x + y + 1"); // returns 42
-eval(z);           // returns 42
-
- -

Utilizando eval para evaluar una cadena de caracteres (string) como sentencias de JavaScript

- -

El siguiente ejemplo utiliza eval para evaluar una cadena de caracteres str. Esta cadena consiste de sentencias de JavaScript que abren un diálogo Alert y asignan a z un valor de 42 si x es cinco, y asigna 0 a z en caso contrario. Cuando se ejecuta la segunda sentencia, eval ocasionará que estas sentencias sean ejecutadas, y también evaluará el conjunto de sentencias y devolverá que el valor es asignado a z.

- -
var x = 5;
-var str = "if (x == 5) {alert('z is 42'); z = 42;} else z = 0; ";
-
-document.write("<P>z es ", eval(str));
-
- -

La última espresión es evaluada

- -

eval() devuelve el valor de la última expresión evaluada

- -
var str = "if ( a ) { 1+1; } else { 1+2; }";
-var a = true;
-var b = eval(str);  // devuelve 2
-
-console.log("b is : " + b);
-
-a = false;
-b = eval(str);  // devuelve 3
-
-console.log("b is : " + b);
- -

eval como una cadena de caracteres (string) definiendo funciones requiere "(" y ")" como prefijo y sufijo

- -
var fctStr1 = "function a() {}"
-var fctStr2 = "(function a() {})"
-var fct1 = eval(fctStr1)  // devuelve undefined
-var fct2 = eval(fctStr2)  // deuelve una función
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificacionesStatusComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial.
{{SpecName('ES5.1', '#sec-15.1.2.1', 'eval')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-eval-x', 'eval')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-eval-x', 'eval')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
Carác.ChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Observaciones específicas para Gecko

- - - -

Compatibilidad Hacia Atrás

- -

JavaScript 1.3 y anteriores

- -

Puede usar eval indirectamente, aunque ésto está desaconsejado.

- -

JavaScript 1.1

- -

eval también es un método de todos los objetos.

- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/evalerror/index.html b/files/es/web/javascript/referencia/objetos_globales/evalerror/index.html deleted file mode 100644 index 13fbe371e4..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/evalerror/index.html +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: EvalError -slug: Web/JavaScript/Referencia/Objetos_globales/EvalError -tags: - - Error -translation_of: Web/JavaScript/Reference/Global_Objects/EvalError ---- -
{{JSRef}}
- -

El objeto EvalError indica un error con respecto a la función global {{jsxref("Global_Objects/eval", "eval()")}}. Esta excepción ya no es lanzada por JavaScript, sin embargo, el objeto EvalError se mantiene por motivos de compatibilidad.

- -

Sintaxis

- -
new EvalError([mensaje[, nombreArchivo[, lineaNumero]]])
- -

Parámetros

- -
-
mensaje
-
Opcional. Descripción del error en formato legible.
-
nombreArchivo{{non-standard_inline}}
-
-

Opcional. El nombre del archivo que contiene el código que causó la excepción.

-
-
lineaNumero{{non-standard_inline}}
-
-

Opcional. El número de línea del código que causó la excepción.

-
-
- -

Propiedades

- -
-
{{jsxref("EvalError.prototype")}}
-
-

Permite la adición de propiedades a un objeto EvalError.

-
-
- -

Métodos

- -

El objeto global EvalError no contiene ningún método propio, sin embargo, hereda algunos métodos a través de la cadena de prototipos.

- -

Instancias de EvalError

- -

Propiedades

- -
{{page('/es/docs/Web/JavaScript/Referencia/Objetos_globales/Error/prototype', 'Properties')}}
- -

Métodos

- -
{{page('/es/docs/Web/JavaScript/Referencia/Objetos_globales/Error/prototype', 'Métodos')}}
- -

Ejemplos

- -

EvalError no se usa en la especificación actual de ECMAScript y, por ende, no será lanzado en tiempo de ejecución. Sin embargo, el mismo permanece para compatibilidad con versiones anteriores de la especificación.

- -

Creando un 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"
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial.
{{SpecName('ES5.1', '#sec-15.11.6.1', 'EvalError')}}{{Spec2('ES5.1')}}No usado en esta especificación. Presente por compatibilidad con versiones anteriores.
{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-evalerror', 'EvalError')}}{{Spec2('ES6')}}No usado en esta especificación. Presente por compatibilidad con versiones anteriores.
{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-evalerror', 'EvalError')}}{{Spec2('ESDraft')}}
- -

Compatibilidad en 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}}
-
- -

Vea también

- - diff --git "a/files/es/web/javascript/referencia/objetos_globales/funcionesas\303\255ncronas/index.html" "b/files/es/web/javascript/referencia/objetos_globales/funcionesas\303\255ncronas/index.html" deleted file mode 100644 index bdb37b012c..0000000000 --- "a/files/es/web/javascript/referencia/objetos_globales/funcionesas\303\255ncronas/index.html" +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: Funciones asíncronas -slug: Web/JavaScript/Referencia/Objetos_globales/Funcionesasíncronas -translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction ---- -
{{JSRef}}
- -
El constructor de las funciones asíncronas crea un nuevo objecto {{jsxref("Statements/async_function", "async function")}}. En JavaScript cada función asíncrona es un objeto AsyncFunction.
- -
- -
Nota: AsyncFunction no es un objeto global. Este puede ser obtenido como resultado del siguiente código.
- -
- -
Object.getPrototypeOf(async function(){}).constructor
-
- -

Syntax

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

Parametros

- -
-
arg1, arg2, ... argN
-
Nombres a ser usados por la función como los nombres de los argumentos. Cada uno debe ser una cadena que corresponda a un identificador válido en JavaScript o una lista de cadenas separadas por coma, ejemplo: "x", "theValue", or "a,b".
-
functionBody
-
Una cadena que contiene las declaraciones de JavaScript que comprenden la definición de la función.
-
- -

Descripción

- -

{{jsxref("Statements/async_function", "async function")}} los objetos creados con el constructor AsyncFunction son analizados gramaticalmente en el momento que la función es creada. Esto es menos eficiente que declarar una función asincrona con un {{jsxref("Statements/async_function", "async function expression")}} y llamarla con eso en tu código , ya que las funciones están analizadas gramaticalmento junto al resto del código.

- -

Todos los argumentos que son pasados por la función son tratados por los nombres de los identificadores con los que fueron creados, en el orden en que son pasados por la función.

- -
-

Note: {{jsxref("Statements/async_function", "async functions")}} created with the AsyncFunction constructor do not create closures to their creation contexts; they are always created in the global scope. When running them, they will only be able to access their own local variables and global ones, not the ones from the scope in which the AsyncFunction constructor was called. This is different from using {{jsxref("Global_Objects/eval", "eval")}} with code for an async function expression.

-
- -

Invoking the AsyncFunction constructor as a function (without using the new operator) has the same effect as invoking it as a constructor.

- -

Propiedades

- -
-
AsyncFunction.length
-
The AsyncFunction constructor's length property whose value is 1.
-
{{jsxref("AsyncFunction.prototype")}}
-
Allows the addition of properties to all async function objects.
-
- -

El objeto prototipo  AsyncFunction 

- -

Propiedades

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

AsyncFunction y sus instancias

- -

Una instancia de AsyncFunction  hereda métodos y propiedades de {{jsxref("AsyncFunction.prototype")}}. Como son todos los constructores, puedes cambiar el constructor del objeto prototipo para aplicar cambios a todas las instancias de AsyncFunction .

- -

Ejemplos

- -

Creating an async function from an AsyncFunction constructor

- -
function resolveAfter2Seconds(x) {
-  return new Promise(resolve => {
-    setTimeout(() => {
-      resolve(x);
-    }, 2000);
-  });
-}
-
-var AsyncFunction = Object.getPrototypeOf(async function(){}).constructor
-
-var a = new AsyncFunction('a',
-                          'b',
-                          'return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);');
-
-a(10, 20).then(v => {
-  console.log(v); // prints 30 after 4 seconds
-});
-
- -

Especificaciones

- - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-async-function-objects', 'AsyncFunction object')}}{{Spec2('ESDraft')}}Initial definition in ES2017.
- -

Compatibilidad del navegador

- -
- - -

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

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/function/apply/index.html b/files/es/web/javascript/referencia/objetos_globales/function/apply/index.html deleted file mode 100644 index 07f47b42f2..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/function/apply/index.html +++ /dev/null @@ -1,233 +0,0 @@ ---- -title: Function.prototype.apply() -slug: Web/JavaScript/Referencia/Objetos_globales/Function/apply -tags: - - Function - - JavaScript - - Method - - función - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Function/apply ---- -
{{JSRef("Objetos_globales", "Function")}}
- -

Resumen

- -

El método apply() invoca una determinada función asignando explícitamente el objeto this y un array o similar (array like object) como parámetros (argumentos) para dicha función.

- -
NOTA: Aunque la sintaxis de esta función es casi idéntica a {{jsxref("Function.call", "call()")}}, la diferencia fundamental es que call() acepta una lista de argumentos, mientras que apply() acepta un simple array con los argumentos.
- -

Sintaxis

- -
fun.apply(thisArg[, argsArray])
- -

Parámetros

- -
-
thisArg
-
El valor del objeto this a utilizar dentro de la llamada a fun. Cabe mencionar que éste puede no ser el valor visto por el método: si el método es una función del tipo {{jsxref("Functions_and_function_scope/Strict_mode", "non-strict mode", "", 1)}}, {{jsxref("Global_Objects/null", "null")}} o {{jsxref("Global_Objects/undefined", "undefined")}} será reemplazado por el objeto global, y los valores primitivos serán encapsulados.
-
argsArray
-
Un objeto similar a un array (array like object), que contiene los parámetros con los que será llamada fun, o null o {{jsxref("undefined")}} si ningún argumento es estipulado. Desde la versión 5 de ECMAScript estos parámetros pueden estar en un objeto similar a un array en lugar de un array. Véase {{anch("Browser_compatibility", "browser compatibility")}} para mayor información.
-
-

Valor de retorno

- -

El resultado de llamar a la función con el valor dado this y argumentos.

-
-
- -

Descripción

- -

Puede estipularse un objeto this diferente al llamar una función. this se refiere al objeto actual, el objeto haciendo la llamada. Con apply, puede escribirse un método una vez y heredarlo a otro objeto, sin necesidad de reescribir el método para adecuarlo al nuevo objeto.

- -

apply es muy similar a {{jsxref("Function.call", "call()")}}, excepto por el tipo de argumentos que soporta. Puede utilizarse un arreglo de parámetros en lugar de un conjunto de pares nombre-valor. Con apply, puede utilizarse un arreglo literal, por ejemplo, fun.apply(this, ['eat', 'bananas']), o un objeto Array, por ejemplo, fun.apply(this, new Array('eat', 'bananas')).

- -

Puede también utilizarse {{jsxref("Funciones/arguments", "arguments")}} como parámetro argsArray. arguments es una variable local a la función. Puede utilizarse para acceder a todos los argumentos no específicados en la llamada al objeto. Por lo tanto, no se requiere conocer todos los argumentos del objeto invocado cuando se utiliza el método apply. Puede utilizarse arguments para pasar los argumentos al objeto invocado. El objeto invocado es entonces responsable por el manejo de los argumentos.

- -

Desde la 5ta edición de ECMAScript se puede utilizar también cualquier tipo de objeto similar a un arreglo, que en términos prácticos significa que tendrá una propiedad length y propiedades integer en el rango (0...length). Por ejemplo, ahora puede utilizarse un {{domxref("NodeList")}} o un objeto personalizado como: {'length': 2, '0': 'eat', '1': 'bananas'}.

- -
{{ note("La mayoría de los navegadores, incluidos Chrome 14 e Internet Explorer 9, aún no soportan el uso de objetos similares a un array y arrojarán una excepción.") }}
- -
 
- -

Ejemplos

- -

Utilizando apply para encadenar constructores

- -

Puedes utilizar apply para encadenar {{jsxref("Operadores/new", "constructors")}} para un objeto, similar a Java. En el ejemplo siguiente se crea un método global a {{jsxref("Function")}} llamado construct, en cual posibilita el uso de un objeto similar a un arreglo en un constructor en lugar de una lista de argumentos.

- -
Function.prototype.construct = function (aArgs) {
-    var fConstructor = this, fNewConstr = function () { fConstructor.apply(this, aArgs); };
-    fNewConstr.prototype = fConstructor.prototype;
-    return new fNewConstr();
-};
- -

Ejemplo 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);
-
-alert(myInstance.property1); // alerts "Hello world!"
-alert(myInstance instanceof MyConstructor); // alerts "true"
-alert(myInstance.constructor); // alerts "MyConstructor"
- -
Nota: El método Function.construct no nativo no funcionará con algunos constructores nativos (como {{jsxref("Date")}}, por ejemplo). En estos casos se deberá utilizar el método {{jsxref("Function.bind")}} (por ejemplo, supóngase un arreglo como el siguiente para utilizar con el constructor Date: [2012, 11, 4]; en este caso se tendría que escribir algo como: new (Function.prototype.bind.apply(Date, [null].concat([2012, 11, 4])))() – de cualquier manera, ésta no es la mejor manera de hacerlo y probablemente no debería utilizarse en ningún entorno en producción).
- -

apply y funciones built-in

- -

El uso inteligente de apply permite utilizar funciones built-in para algunas tareas que, de otra manera, habrían sido escritas recorriendo los valores del arreglo dentro de un bucle. Como ejemplo, vamos a utilizar Math.max/Math.min para encontrar el máximo/mínimo valor en un arreglo.

- -
/* min/max number in an array */
-var numbers = [5, 6, 2, 3, 7];
-
-/* using Math.min/Math.max apply */
-var max = Math.max.apply(null, numbers); /* This about equal to Math.max(numbers[0], ...) or Math.max(5, 6, ..) */
-var min = Math.min.apply(null, numbers);
-
-/* vs. simple loop based algorithm */
-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];
-}
- -

Pero cuidado: utilizando apply de esta manera estás corriendo el riesgo de exceder el límite de argumentos permitido por el motor de JavaScript. Las consecuencias de aplicar una función con demasiados argumentos (imagínate más de decenas de miles de argumentos) varían entre los distintos motores (JavaScriptCore tiene un límite de argumentos fijo de 65536), porque el límite (de hecho, incluso el comportamiento de cualquier pila excesivamente larga) no está especificado. Algunos motores lanzarán una excepción. Más perniciosamente, otros limitarán de manera arbitraria el número de argumentos que se están pasando en realidad a la función. (Para ilustrar este último caso: si un motor tuviera un límite de cuatro argumentos [por supuesto, los límites reales son significamente mayores], sería como si los argumentos 5, 6, 2 y 3 hubieran sido pasados a apply en los ejemplos anteriores, en lugar del arreglo completo). Si el valor de tu arreglo pudiera crecer en decenas de miles, utiliza una estrategia híbrida: aplica a tu función trozos del array a la 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]);
- -

Utilizando apply en "monkey-patching" 

- -

(Reemplazando de manera dinámica los argumentos en tiempo de ejecución)

- -

apply puede ser la mejor manera de reemplazar dinámicamente una función 'built-in' de Firefox, o de una librería de JavaScript. Dada una función someobject.foo, puedes modificar la función de una forma 'hacker', como ésta:

- -
var originalfoo = someobject.foo;
-someobject.foo = function() {
-  // Haz algo antes de llamar a la función
-  console.log(arguments);
-  // Llama a la función como la hubieras llamado normalmente
-  originalfoo.apply(this, arguments);
-  // Aquí, ejecuta algo después
-}
- -

Este método es especialmente útil cuando quieres depurar eventos, o interfaces con algún elemento que no tiene API, al igual que los diversos .on (eventos [event]..., como los que se usan en el Devtools Inspector)

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición Inicial. Implementada in 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')}} 
{{SpecName('ESDraft', '#sec-function.prototype.apply', 'Function.prototype.apply')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad entre navegadores

- -

{{CompatibilityTable}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
ES 5.1 generic array-like object as {{jsxref("Functions/arguments", "arguments")}}{{CompatUnknown}}{{CompatGeckoDesktop("2.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
- - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
ES 5.1 generic array-like object as {{jsxref("Functions/arguments", "arguments")}}{{CompatUnknown}}
- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/function/arguments/index.html b/files/es/web/javascript/referencia/objetos_globales/function/arguments/index.html deleted file mode 100644 index f0f8f6ca90..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/function/arguments/index.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Function.arguments -slug: Web/JavaScript/Referencia/Objetos_globales/Function/arguments -translation_of: Web/JavaScript/Reference/Global_Objects/Function/arguments ---- -
{{JSRef("Objetos_globales", "Function")}} {{deprecated_header}}
- -

Resumen

- -

Un objeto de tipo arreglo correspondiente a los argumentos pasados a la función.

- -

Descripción

- -

Use el objeto arguments disponible dentro de las funciones en vez de Function.arguments.

- -

Notas

- -

En caso de recursividad, es decir, si la función f aparece varias veces en la pila de llamada, el valor de f.arguments representa los argumentos correspondientes a la invocación más reciente de la función.

- -

Ejemplo

- -
function f(n) { g(n-1) }
-function g(n) {
-  print("antes: " + g.arguments[0]);
-  if(n>0)
-    f(n);
-  print("después: " + g.arguments[0]);
-}
-f(2)
-
- -

resultados:

- -
antes: 1
-antes: 0
-después: 0
-después: 1
-
- -

 

- -
 
- -

{{ languages( { "en": "en/Core_JavaScript_1.5_Reference/Global_Objects/Function/arguments", "pl": "pl/Dokumentacja_j\u0119zyka_JavaScript_1.5/Obiekty/Function/arguments" } ) }}

diff --git a/files/es/web/javascript/referencia/objetos_globales/function/bind/index.html b/files/es/web/javascript/referencia/objetos_globales/function/bind/index.html deleted file mode 100644 index bdc7b5b73c..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/function/bind/index.html +++ /dev/null @@ -1,293 +0,0 @@ ---- -title: Function.prototype.bind() -slug: Web/JavaScript/Referencia/Objetos_globales/Function/bind -translation_of: Web/JavaScript/Reference/Global_Objects/Function/bind ---- -
{{JSRef("Global_Objects", "Function")}}
- -

Resumen

- -

El método bind() crea una nueva función, que cuando es llamada, asigna a su operador  this el valor entregado, con una secuencia de argumentos dados precediendo a cualquiera entregados cuando la función es llamada. 

- -

El valor de this es ignorado cuando la función es llamada con el operador new.

- -

Sintaxis

- -
fun.bind(thisArg[, arg1[, arg2[, ...]]])
- -

Parametros

- -
-
thisArg
-
Es un valor que será enviado a la función destino cuando se llame a la función de enlace. Este valor será ignorado si la función de enlace es construida usando el operador {{jsxref("Operators/new", "new")}}.
-
arg1, arg2, ...
-
Son los argumentos que se enviarán además de los provistos a la función de enlace cuando se invoque la función destino.
-
- -

Valor de retorno

- -

Una copia de la función entregada con el valor especificado this y los argumentos iniciales.

- -

Descripción

- -

La función bind() crea una nueva función (función ligada) con el mismo cuerpo (propiedad interna {{jsxref("Function.prototype.call", "call")}} en términos de ECMAScript 5) como la función que será llamada (la función objetivo de la función ligada) con la referencia this asociada al primer argumento de bind(), el cual no podrá ser sobreescrito. bind() también acepta parámetros predeterminados que antecederán al resto de los parámetros específicos cuando la función objetivo sea llamada. Una función ligada también puede ser construída utilizando el operador {{jsxref("Operators/new", "new")}}: al hacerlo, actuará como si en su lugar hubiera sido construída la función objetivo.

- -

En este último caso, el parámetro correspondiente para this será ignorado, aunque los parámetros predeterminados que antecederán al resto sí serán provistos para la función emulada.

- -

Ejemplos

- -

Ejemplo: Crear una función ligada

- -

El uso más simple de bind() es hacer que una función que, sin importar cómo es llamada, siempre apunte al mismo objeto con la referencia this. Un error común para nuevos programadores de JavaScript es que obtienen una referencia a un método de un objeto, posteriormente ejecutan ese método desde la referencia externa y esperan que la referencia de this siga apuntando al objeto original de donde se obtuvo el método (v.g. cuando se usa ese método en un callback). Sin el debido cuidado, el objeto original es comúnmente perdido. Creando una función ligada desde la función  empleando el objeto original, resuelve limpiamente este problema:

- -
this.x = 9;
-var module = {
-  x: 81,
-  getX: function() { return this.x; }
-};
-
-module.getX(); // 81
-
-var getX = module.getX;
-getX(); // 9, porque en este caso, "this" apunta al objeto global
-
-// Crear una nueva función con 'this' asociado al objeto original 'module'
-var boundGetX = getX.bind(module);
-boundGetX(); // 81
- -

Ejemplo: Funciones Parciales

- -

El siguiente uso simple de bind() es definir una función con argumentos predeterminados que precederán a los argumentos finales de la función ligada. Estos argumentos iniciales (en caso de haberlos) se definen a continuación de lo que será la referencia de this y son entonces enviados como argumentos de la función objetivo, seguidos por los argumentos enviados a la función ligada cada vez que dicha función sea llamada.

- -
function list() {
-  return Array.prototype.slice.call(arguments);
-}
-
-var list1 = list(1, 2, 3); // [1, 2, 3]
-
-// Crear funcion (sin referencia this) con argumento inicial predeterminado
-var leadingThirtysevenList = list.bind(undefined, 37);
-
-var list2 = leadingThirtysevenList(); // [37]
-var list3 = leadingThirtysevenList(1, 2, 3); // [37, 1, 2, 3]
-
- -

Ejemplo: Con setTimeout

- -

De manera predeterminada, dentro de {{ domxref("window.setTimeout()") }}, la palabra reservada this será setteada al objeto {{ domxref("window") }} (o a global). Cuando se esté trabajando con métodos de clase que requieran que this se refiera a instancias de clase, usted puede explícitamente ligar this a la función callback para mantener la referencia de la instancia.

- -
function LateBloomer() {
-  this.petalCount = Math.ceil(Math.random() * 12) + 1;
-}
-
-// Declare bloom after a delay of 1 second
-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!');
-};
-
- -

Ejemplo: Funciones ligadas usadas como constructores

- -
-

Advetencia: Esta sección demuestra las capacidades de JavaScript y documenta algunos usos extremos del método bind(). Los métodos mostrados a continuación no son la mejor forma de hacer las cosas y probablemente no deberían ser utilizados en ningún ambiente productivo.

-
- -

Las funciones ligadas son automáticamente adecuadas para usarse con el operador {{jsxref("Operators/new", "new")}} para construir nuevas instancias creadas por la función objetivo. Cuando una función ligada es utilizada para construir un valor, el parámetro enviado para reemplazar la referencia this es ignorado. De cualquier forma, los argumentos iniciales sí son tomados en consideración y antecederán a los parámetros que se envíen al constructor:

- -
function Point(x, y) {
-  this.x = x;
-  this.y = y;
-}
-
-Point.prototype.toString = function() {
-  return this.x + ',' + this.y;
-};
-
-var p = new Point(1, 2);
-p.toString(); // '1,2'
-
-
-var emptyObj = {};
-var YAxisPoint = Point.bind(emptyObj, 0/*x*/);
-// not supported in the polyfill below,
-// works fine with native bind:
-var YAxisPoint = Point.bind(null, 0/*x*/);
-
-var axisPoint = new YAxisPoint(5);
-axisPoint.toString(); // '0,5'
-
-axisPoint instanceof Point; // true
-axisPoint instanceof YAxisPoint; // true
-new Point(17, 42) instanceof YAxisPoint; // true
-
- -

Note que no necesita hacer nada especial para crear una función ligada para usarse con {{jsxref("Operators/new", "new")}}. El razonamiento es que usted no necesita hacer nada especial para crear una función ligada para ser llamada planamente, aún si usted prefiriera requerir que la función ligada sea llamada únicamente utilizando {{jsxref("Operators/new", "new")}}.

- -
// Ejemplo que puede ser ejecutado directamente en tu consola JavaScript
-// ...continúa de arriba
-
-// Aún puede ser invocada como una función normal
-// (aunque es usualmente indeseable)
-YAxisPoint(13);
-
-emptyObj.x + ',' + emptyObj.y;
-// >  '0,13'
-
- -

Si desea utilizar una función ligada únicamente usando {{jsxref("Operators/new", "new")}}, o únicamente mediante una llamada directa, la función objetivo debe forzar esa restricción.

- -

Ejemplo: Crear atajos

- -

bind() también es útil en casos en los que desea crear un atajo para una función que requiere una referencia específica para this.

- -

Tomando {{jsxref("Array.prototype.slice")}}, por ejemplo, el cual se desearía utilizar para convertir un objeto tipo array a un arreglo real. Podría crear un atajo como el siguiente:

- -
var slice = Array.prototype.slice;
-
-// ...
-
-slice.call(arguments);
-
- -

Con bind(), esto puede ser simplificado. En el siguiente fragmento de código, slice es una función ligada a la función {{jsxref("Function.prototype.call()", "call()")}} de {{jsxref("Function.prototype")}}, con la referencia this setteada a la función {{jsxref("Array.prototype.slice()", "slice()")}} de {{jsxref("Array.prototype")}}. Esto significa que llamadas adicionales a call() pueden omitirse:

- -
// same as "slice" in the previous example
-var unboundSlice = Array.prototype.slice;
-var slice = Function.prototype.call.bind(unboundSlice);
-
-// ...
-
-slice(arguments);
-
- -

Polyfill

- -

La función bind() fue añadida a la especificación ECMA-262, 5a edición; por lo tanto podría no estar presente en todos los navegadores. Usted puede parcialmente simularla al insertar el siguiente código al inicio de sus scripts, permitiendo emplear muchas de las funcionalidades de bind() en implementaciones que no la soportan nativamente.

- -
if (!Function.prototype.bind) {
-  Function.prototype.bind = function(oThis) {
-    if (typeof this !== 'function') {
-      // closest thing possible to the ECMAScript 5
-      // internal IsCallable function
-      throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
-    }
-
-    var aArgs   = Array.prototype.slice.call(arguments, 1),
-        fToBind = this,
-        fNOP    = function() {},
-        fBound  = function() {
-          return fToBind.apply(this instanceof fNOP && oThis
-                 ? this
-                 : oThis,
-                 aArgs.concat(Array.prototype.slice.call(arguments)));
-        };
-
-    fNOP.prototype = this.prototype;
-    fBound.prototype = new fNOP();
-
-    return fBound;
-  };
-}
-
- -

Algunas de las muchas diferencias (bien podría haber otras, en tanto la siguiente lista no intenta ser exhaustiva) entre este algoritmo y el algoritmo de la especificación son:

- - - -

Si elige usar esta implementación parcial, no debe de utilizarla en los casos en los que el comportamiento es distinto al de la especificación ECMA-262, 5th edition! Con un poco de cuidado, de cualquier manera (y tal vez con algunas modificaciones adicionales para adecuarse a sus necesidades específicas), esta implementación parcial podría ser un puente razonable al momento en que bind() sea ampliamente implementada acorde a a la especificación.

- -

Por favor checa https://github.com/Raynos/function-bind para ver una solución más profunda.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
{{SpecName('ES5.1', '#sec-15.3.4.5', 'Function.prototype.bind')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.8.5.
{{SpecName('ES6', '#sec-function.prototype.bind', 'Function.prototype.bind')}}{{Spec2('ES6')}} 
- -

Compatibilidad de navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome("7")}}{{CompatGeckoDesktop("2")}}{{CompatIE("9")}}{{CompatOpera("11.60")}}{{CompatSafari("5.1.4")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatAndroid("4.0")}}{{CompatChrome("0.16")}}{{CompatGeckoMobile("2")}}{{CompatUnknown}}{{CompatOperaMobile("11.50")}}{{CompatSafari("6.0")}}
-
- -

Basado en Kangax's compat tables.

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/function/call/index.html b/files/es/web/javascript/referencia/objetos_globales/function/call/index.html deleted file mode 100644 index 4200c5d2a5..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/function/call/index.html +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Function.prototype.call() -slug: Web/JavaScript/Referencia/Objetos_globales/Function/call -tags: - - Function - - JavaScript - - Method -translation_of: Web/JavaScript/Reference/Global_Objects/Function/call ---- -
{{JSRef("Objetos_globales", "Function")}}
- -

Resumen

- -

El método call() llama a una función con un valor dado this y con argumentos provistos individualmente.

- -

Sintaxis

- -
function.call(thisArg[, arg1[, arg2[, ...]]])
- -

Parametros

- -
-
thisArg {{optional_inline}}
-
El valor a usar como this cuando se llama a function.
-
-
-

Cuidado: En ciertos casos, thisArg puede no ser el valor actual visto por el método.

- -

Si el método es una función en {{jsxref("Strict_mode", "non-strict mode", "", 1)}}, {{jsxref("Global_Objects/null", "null")}} y {{jsxref("Global_Objects/undefined", "undefined")}} serán reemplazados con el objeto global, y valores primitivos serán convertidos a objetos.

-
-
-
arg1, arg2, ...
-
Argumentos para el objeto.
-
-

Valor de retorno

-
-
El resultado de llamar a la función con el this especificado y los argumentos.
-
- -

Descripción

- -

call() permite que una función/método que pertenece a un objeto, ser asignada y llamada para un objeto diferente.

- -

call() provee un nuevo valor de this a la función/método. Con call(), puedes escribir un método ona vez y heredarlo a otro objeto, sin tener que reescribir el método en el nuevo objeto.

- -
Nota: Mientras la sintaxis de esta función es casi identica a la función {{jsxref("Function.apply", "apply()")}}, la diferencia fundamental es que call() acepta una lista de argumentos, mientras apply() accepta un arreglo sencillo de argumentos.
- -

Ejemplos

- -

Usando call para encadenar constructores para un objeto

- -

Puede usar call para encadenar constructores para un objeto (similar a Java).

- -

En el siguiente ejemplo, el constructor para el objeto Producto es definido con dos parametros, nombre y precio.

- -

Otras dos funciones Comida y Juguete invocan a Producto, pasándo thisnombre y precio. Producto inicializa las propiedades nombre y precio, ambas funciones especializadas definen la categoria.

- -
function Producto(nombre, precio) {
-  this.nombre = nombre;
-  this.precio = precio;
-
-  if (precio < 0)
-    throw RangeError('No se puede crear el producto "' + nombre + '" con un precio negativo');
-  return this;
-}
-
-function Comida(nombre, precio) {
-  Producto.call(this, nombre, precio);
-  this.categoria = 'comida';
-}
-Comida.prototype = new Producto();
-
-function Juguete(nombre, precio) {
-  Producto.call(this, nombre, precio);
-  this.categoria = 'juguete';
-}
-Juguete.prototype = new Producto();
-
-var queso = new Comida('feta', 5);
-var diversion = new Juguete('robot', 40);
-
- -

Usando call para invocar una función anónima

- -

En este ejemplo, creamos una función anónima y usamos call para invocarla en cada objeto en un arreglo.

- -

El propósito principal de la función anónima aquí es agregar una función print  a cada objeto, el cual puede imprimir el índice correcto en el arreglo.

- -
-

Pasar el objeto como valor this no es estrictamente necesario, pero se hace con propósito explicativo.

-
- -
var animales = [
-  {especie: 'Leon', nombre: 'Rey'},
-  {especie: 'Whale', nombre: 'Fail'}
-];
-
-for (var i = 0; i < animales.length; i++) {
-  (function (i) {
-    this.imprimir = function () {
-      console.log('#' + i  + ' ' + this.especie + ': ' + this.nombre);
-    }
-    this.imprimir();
-  }).call(animales[i], i);
-}
-
- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/function/caller/index.html b/files/es/web/javascript/referencia/objetos_globales/function/caller/index.html deleted file mode 100644 index 942df69a68..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/function/caller/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Function.caller -slug: Web/JavaScript/Referencia/Objetos_globales/Function/caller -tags: - - Función Javascript No-standard Propiedad -translation_of: Web/JavaScript/Reference/Global_Objects/Function/caller ---- -
{{JSRef("Global_Objects", "Function")}} {{non-standard_header}}
- -

Resumen

- -

La propiedad function.caller retorna la función que llamó a la función especificada.

- -

Descripción

- -

Si la función f fue llamada por desde nivel raiz (top level code), el valor de f.caller es {{jsxref("Global_Objects/null", "null")}}, de lo contrario se retorna la función que llamó a f.

- -

Esta propiedad reemplaza a la propiedad obsoleta {{jsxref("Functions_and_function_scope/arguments/caller", "arguments.caller")}} del objeto {{jsxref("Funciones/arguments", "arguments")}}.

- -

la propiedad especial __caller__, la cual retornaba el objeto de activación del llamador y permitía reconstruir la pila de llamadas, ha sido removida por motivos de seguridad.

- -

Notas

- -

En caso de recursión se puede reconstruir la pila de llamada utilizando esta propiedad, tal como se muestra a continuación:

- -
function f(n) { g(n - 1); }
-function g(n) { if (n > 0) { f(n); } else { stop(); } }
-f(2);
-
- -

Al momento de ejecutar stop() este se llama con la siguiente pila de llamadas:

- -
f(2) -> g(1) -> f(1) -> g(0) -> stop()
-
- -

Siendo verdadero la siguiente consideración:

- -
stop.caller === g && f.caller === g && g.caller === f
-
- -

Por lo tanto si se intenta obtener el rastro de llamadas (stack trace) de la función stop() como se muestra a continuación:

- -
var f = stop;
-var stack = 'Stack trace:';
-while (f) {
-  stack += '\n' + f.name;
-  f = f.caller;
-}
-
- -

se provocará una bucle que nunca termina.

- -

Ejemplos

- -

Ejemplo: Verificar el valor de la propiedad caller de una función

- -

El siguiente código verifica el valor de la propiedad caller de una función.

- -
function myFunc() {
-  if (myFunc.caller == null) {
-    return 'The function was called from the top!';
-  } else {
-    return 'This function\'s caller was ' + myFunc.caller;
-  }
-}
-
- -

Especificación

- -

No es parte de ninguna especificación. Se implementa en JavaScript 1.5.

- -

Compatiblilidad de Navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/function/displayname/index.html b/files/es/web/javascript/referencia/objetos_globales/function/displayname/index.html deleted file mode 100644 index d464266838..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/function/displayname/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Function.displayName -slug: Web/JavaScript/Referencia/Objetos_globales/Function/displayName -translation_of: Web/JavaScript/Reference/Global_Objects/Function/displayName ---- -
{{JSRef}} {{non-standard_header}}
- -

The function.displayName property returns the display name of the function.

- -

Description

- -

Cuando se define la propiedad displayName , retorna un mensaje con el nombre para mostrar en una función:

- -
function doSomething() {}
-
-console.log(doSomething.displayName); // "undefined"
-
-var popup = function(content) { console.log(content); };
-
-popup.displayName = 'Show Popup';
-
-console.log(popup.displayName); // "Show Popup"
-
- -

Tu puedes definir una funcion con un nombre a mostrar en un {{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
-
- -

Puedes cambiar dinámicamente el displayName de una función:

- -
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)"
-
- -

Ejemplos

- -

Normalmente, se prefiere por consolas y profilers sobre {{jsxref("Function.name", "func.name")}} a mostrar el nombre de una función.

- -

Al ingresar lo siguiente en una consola, debería mostrarse como algo así como "function My Function()":

- -
var a = function() {};
-a.displayName = 'My Function';
-
-a; // "function My Function()"
- -

Specifications

- -

Not part of any specification.

- -

Browser compatibility

- -
- - -

{{Compat("javascript.builtins.Function.displayName")}}

-
- -
 
diff --git "a/files/es/web/javascript/referencia/objetos_globales/function/funci\303\263n/index.html" "b/files/es/web/javascript/referencia/objetos_globales/function/funci\303\263n/index.html" deleted file mode 100644 index af4dff0361..0000000000 --- "a/files/es/web/javascript/referencia/objetos_globales/function/funci\303\263n/index.html" +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Function() constructor -slug: Web/JavaScript/Referencia/Objetos_globales/Function/Función -tags: - - Constructor - - Function - - JavaScript - - Referencia - - función -translation_of: Web/JavaScript/Reference/Global_Objects/Function/Function ---- -
{{JSRef("Objetos_globales", "Function")}}
- -

El constructor Function crea un nuevo objeto Function. Llamar al constructor directamente puede crear funciones dinámicamente, pero tiene problemas de seguridad y de rendimiento similares (pero mucho menos importantes) para {{jsxref("eval")}}. Sin embargo, a diferencia de eval, el constructor Function crea funciones que solo se ejecutan en el ámbito global.

- -
{{EmbedInteractiveExample("pages/js/function-constructor.html","shorter")}}
- - - -

Sintaxis

- -
new Function([arg1 [, arg2 [, ...argN]] ,] functionBody)
- -

Parámetros

- -
-
arg1, arg2, ... argN
-
Nombres que utilizará la función como nombres de argumentos formales. Cada uno debe ser una cadena que corresponda a un identificador JavaScript válido, o una lista de dichas cadenas separadas por una coma. Por ejemplo: "x", "theValue" —o "x,theValue".
-
functionBody
-
Una cadena que contiene las declaraciones de JavaScript que comprenden la definición de función.
-
- -

Descripción

- -

Los objetos Function creados con el constructor Function se procesan cuando se crea la función. Esto es menos eficiente que declarar una función con una {{jsxref("Operators/function", "expresión de función")}} o {{jsxref("Statements/function", "declaración de función")}} y llamarla dentro de tu código porque tales funciones se procesan con el resto del código.

- -

Todos los argumentos pasados a la función se tratan como los nombres de los identificadores de los parámetros en la función que se va a crear, en el orden en que se pasan. Omitir un argumento dará como resultado que el valor de ese parámetro sea undefined.

- -

Invocar el constructor Function como función (sin usar el operador new) tiene el mismo efecto que invocarlo como constructor.

- -

Ejemplos

- -

Especificar argumentos con el constructor Function

- -

El siguiente código crea un objeto Function que toma dos argumentos.

- -
// El ejemplo se puede ejecutar directamente en tu consola JavaScript
-
-// Crea una función que toma dos argumentos y devuelve la suma de esos argumentos
-const adder = new Function('a', 'b', 'return a + b');
-
-// Llama a la función
-adder(2, 6);
-// 8
-
- -

Los argumentos "a" y "b" son nombres de argumentos formales que se utilizan en el cuerpo de la función, "return a + b".

- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-function-constructor', 'Constructor Function')}}
- -

Compatibilidad del navegador

- -
- - -

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

-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/function/index.html b/files/es/web/javascript/referencia/objetos_globales/function/index.html deleted file mode 100644 index 5b586f3611..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/function/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Function -slug: Web/JavaScript/Referencia/Objetos_globales/Function -tags: - - Clase - - Class - - Declaración - - Expresión - - Function - - JavaScript - - función -translation_of: Web/JavaScript/Reference/Global_Objects/Function ---- -
{{JSRef("Objetos_globales", "Function")}}
- -

Cada función de JavaScript en realidad es un objeto Function. Esto se puede ver con el código (function() {}).constructor === Function, que devuelve true.

- -

Constructor

- -
-
{{jsxref("Function/Function", "Function()", "", 1)}}
-
Crea un nuevo objeto Function. Llamar al constructor directamente puede crear funciones dinámicamente, pero tiene problemas de seguridad y de rendimiento similares (pero mucho menos importantes) para {{jsxref("eval")}}. Sin embargo, a diferencia de eval, el constructor Function crea funciones que solo se ejecutan en el ámbito global.
-
- -

Propiedades de la instancia

- -
-
{{jsxref("Function.arguments")}}
-
Un arreglo que corresponde a los argumentos pasados a una función.
- Esto está obsoleto como propiedad de {{jsxref("Function")}}. En su lugar, utiliza el objeto {{jsxref("Functions/arguments", "arguments", "", 1)}} (disponible dentro de la función).
-
{{jsxref("Function.caller")}}
-
Especifica la función que invocó a la función que se está ejecutando actualmente.
- Esta propiedad está obsoleta, y solo es funcional para algunas funciones no estrictas.
-
{{jsxref("Function.displayName")}}
-
El nombre a mostrar de la función.
-
{{jsxref("Function.length")}}
-
Especifica el número de argumentos que espera la función.
-
{{jsxref("Function.name")}}
-
El nombre de la función.
-
- -

Métodos de instancia

- -
-
{{jsxref("Function.prototype.apply()", "Function.prototype.apply(thisArg [, argsArray])")}}
-
Llama a una función y establece su this en el thisArg proporcionado. Los argumentos se pueden pasar como un objeto {{jsxref("Array")}}.
-
{{jsxref("Function.prototype.bind()", "Function.prototype.bind(thisArg[, arg1[, arg2[, ...argN]]])")}}
-
Crea una nueva función que, cuando se llama, tiene su this configurado en el thisArg. Opcionalmente, una determinada secuencia de argumentos se antepondrá a los argumentos siempre que se llame a la función recién invocada.
-
{{jsxref("Function.prototype.call()", "Function.prototype.call(thisArg[, arg1, arg2, ...argN])")}}
-
Llama a una función y establece su this en el valor proporcionado. Los argumentos se pueden pasar tal cual.
-
{{jsxref("Function.prototype.toString()", "Function.prototype.toString()")}}
-
Devuelve una cadena que representa el código fuente de la función.
- Redefine el método {{jsxref("Object.prototype.toString()")}}.
-
- -

Ejemplos

- -

Diferencia entre el constructor Function y la declaración function

- -

Las funciones creadas con el constructor Function no crean cierres para sus contextos de creación; siempre se crean en el ámbito global. Al ejecutarlos, solo podrán acceder a sus propias variables locales y globales, no a las del ámbito en el que se creó el constructor Function. Esto es diferente de usar {{jsxref("eval")}} con código para una expresión de función.

- -
var x = 10;
-
-function createFunction1() {
-    var x = 20;
-    return new Function('return x;'); // esta |x| se refiere a la |x| global
-}
-
-function createFunction2() {
-    var x = 20;
-    function f() {
-        return x; // esta |x| se refiere a la |x| local
-    }
-    return f;
-}
-
-var f1 = createFunction1();
-console.log(f1());          // 10
-var f2 = createFunction2();
-console.log(f2());          // 20
-
- -

Si bien este código funciona en los navegadores web, f1() producirá un ReferenceError en Node.js, ya que no encontrará a x. Esto se debe a que el ámbito de nivel superior en Node no es el ámbito global, y x será local para el módulo.

- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-function-objects', 'Function')}}
- -

Compatibilidad del navegador

- -
- - -

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

-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/function/length/index.html b/files/es/web/javascript/referencia/objetos_globales/function/length/index.html deleted file mode 100644 index 7638859bba..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/function/length/index.html +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: Function.length -slug: Web/JavaScript/Referencia/Objetos_globales/Function/length -tags: - - JavaScript - - Propiedad - - función -translation_of: Web/JavaScript/Reference/Global_Objects/Function/length ---- -
{{JSRef("Global_Objects", "Function")}}
- -

Sumario

- -

La propiedad length especifica el número de argumentos esperados por la función.

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

Descripción

- -

length es la propiedad de una función objeto, e indica el número de argumentos que una función requiere, por ejemplo, el número de parámetros formales. Este número no incluye {{jsxref("rest_parameters", "rest parameter", "", 1)}}. En cambio, {{jsxref("Functions_and_function_scope/arguments/length", "arguments.length")}} es local a una función y aporta el número de argumentos actuales pasados a una función.

- -

Propiedades de la Función constructora

- -

El {{jsxref("Global_Objects/Function", "Function")}} constructor en sí mismo es {{jsxref("Global_Objects/Function", "Function")}} un objeto. Sú propiedad length tiene el valor 1. Los atributos son: Grabable: false, Enumerable: false, Configurable: true.

- -

Propiedad de la  Función prototype object

- -

La propiedad length del {{jsxref("Global_Objects/Function", "Function")}} objeto prototype tiene el valor 0.

- -

Ejemplos

- -
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, resto de parámetros no se contemplan */
-console.log((function(a, b = 1, c) {}).length); /* 1, solo parámetros antes del primero con un valor por defecto son contados */
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
ECMAScript 1st Edition.StandardDefinición inicial. Implementado en JavaScript 1.1.
length property of the {{jsxref("Global_Objects/Function", "Function")}} constructor:
- {{SpecName('ES5.1', '#sec-15.3.3.2', 'Function.length')}}
- length property of the {{jsxref("Global_Objects/Function", "Function")}} prototype object:
- {{SpecName('ES5.1', '#sec-properties-of-the-function-prototype-object', 'Function.length')}}
- length property of {{jsxref("Global_Objects/Function", "Function")}} instances:
- {{SpecName('ES5.1', '#sec-15.3.5.1', 'Function.length')}}
{{Spec2('ES5.1')}}
length property of the {{jsxref("Global_Objects/Function", "Function")}} constructor:
- {{SpecName('ES6', '#sec-function.length', 'Function.length')}}
- length property of the {{jsxref("Global_Objects/Function", "Function")}} prototype object:
- {{SpecName('ES6', '#sec-15.3.4', 'Function.length')}}
- length property of {{jsxref("Global_Objects/Function", "Function")}} instances:
- {{SpecName('ES6', '#sec-function-instances-length', 'Function.length')}}
{{Spec2('ES6')}}El atributo configurable de esta propiedad ahora es true.
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Configurable: true{{CompatUnknown}}{{CompatGeckoDesktop(37)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Configurable: true{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile(37)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/function/name/index.html b/files/es/web/javascript/referencia/objetos_globales/function/name/index.html deleted file mode 100644 index 2440bd60f1..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/function/name/index.html +++ /dev/null @@ -1,223 +0,0 @@ ---- -title: Function.name -slug: Web/JavaScript/Referencia/Objetos_globales/Function/name -translation_of: Web/JavaScript/Reference/Global_Objects/Function/name ---- -
{{JSRef}}
- -

La propiedad function.name retorna el nombre de la función o retorna "anonymous" por funciones creadas anónimamente.

- -
{{js_property_attributes(0,0,1)}}
- -
Nótese que en implementaciones no estándar previas a ES2015 el atributo configurable también era false.
- -

Ejemplos

- -

Nombre de una declaración de función

- -

La propiedad name retorna el nombre de una declaración de función.

- -
function doSomething() {}
-
-console.log(doSomething.name); // imprime en pantalla "doSomething"
-
- -

Nombre de constructor de función

- -

Las funciones creadas con la sintaxis new Function(...) o simplemente Function(...) tienen como propiedad name una cadena vacía. En los ejemplos a continuación se crean funciones anónimas, tales que su name retorna una cadena vacía:

- -
var f = function() {};
-var object = {
-  someMethod: function() {}
-};
-
-console.log(f.name == ''); // true
-console.log(object.someMethod.name == ''); // también true
-
- -

Nombres de función inferidos

- -

Los navegadores que implementan funciones ES2015 pueden inferir el nombre de una función anónima de su posición sintáctica. Por ejemplo:

- -
var f = function() {};
-console.log(f.name); // "f"
- -

Se puede definir una función con un nombre en un {{jsxref("Operators/Function", "function expression", "", 1)}}:

- -
var object = {
-  someMethod: function object_someMethod() {}
-};
-console.log(object.someMethod.name); // imprime "object_someMethod"
-
-try { object_someMethod } catch(e) { console.log(e); }
-// ReferenceError: object_someMethod is not defined
-
- -

No se puede cambiar el nombre de una función, esta propiedad es de solo lectura:

- -
var object = {
-  // anonymous
-  someMethod: function() {}
-};
-
-object.someMethod.name = 'someMethod';
-console.log(object.someMethod.name); // cadena vacía, someMethod es anónimo
-
- -

Sin embargo, se puede usar {{jsxref("Object.defineProperty()")}} para cambiarlo.

- -

Nombres de métodos

- -
var o = {
-  foo(){}
-};
-o.foo.name; // "foo";
- -

Nombres de funciones atadas (creadas con .bind())

- -

{{jsxref("Function.bind()")}} produce una función cuyo nombre es igual a "bound " seguido del nombre de la función original.

- -
function foo() {};
-foo.bind({}).name; // "bound foo"
- -

Nombres de funciones getters y setters

- -

Cuando se usan getset, "get" y "set" aparecerán en el nombre de la función.

- -
var o = {
-  get foo(){},
-  set foo(x){}
-};
-
-var descriptor = Object.getOwnPropertyDescriptor(o, "foo");
-descriptor.get.name; // "get foo"
-descriptor.set.name; // "set foo";
- -

Ejemplos

- -

Se puede usar obj.constructor.name para saber cuál es la "clase" de un objeto:

- -
function a() {}
-
-var b = new a();
-
-console.log(b.constructor.name); // imprime "a"
-
- -

Polyfill

- -

Para versiones de IE < 9, se puede usar fn._name() en su lugar. Para IE9 o posteriores se puede usar el siguiente polyfill.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
{{SpecName('ES2015', '#sec-name', 'name')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-name', 'name')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome(33.0)}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Configurable: true{{CompatChrome(43.0)}}{{CompatGeckoDesktop(38)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Nombres inferidos en funciones anónimas{{CompatChrome(51.0)}}{{CompatNo}} [1]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Configurable: true{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile(38)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Nombres inferidos en funciones anónimas{{CompatNo}}{{CompatChrome(51.0)}}{{CompatNo}} [1]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(51.0)}}
-
- -

[1] See {{bug(883377)}}.

diff --git a/files/es/web/javascript/referencia/objetos_globales/function/prototype/index.html b/files/es/web/javascript/referencia/objetos_globales/function/prototype/index.html deleted file mode 100644 index 9d8671c534..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/function/prototype/index.html +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Function.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/Function/prototype -tags: - - Function - - JavaScript - - Property -translation_of: Web/JavaScript/Reference/Global_Objects/Function -translation_of_original: Web/JavaScript/Reference/Global_Objects/Function/prototype ---- -
{{JSRef("Objetos_globales", "Function")}}
- -

Resumen

- -

Un valor desde cuyas instancias de una clase particular son creados. Cada objeto que puede ser creado por la invocación a la función constructora posee una propiedad prototype asociada.

- -

Descripción

- -

Puede añadir propiedades o métodos a una clase existente mediante la adición de ellos al prototipo asociado con la función constructora para esa clase.

- -

Propiedades

- -
-
{{jsxref("Function.arguments")}} {{Deprecated_inline}}
-
Una matriz correspondiente a los argumentos pasados a una función. Como propiedad de una Function, este uso está obsoleto. Se recomenda el uso del objeto {{jsxref("Functiones/arguments", "arguments")}}.
-
{{jsxref("Function.arity")}} {{obsolete_inline}}
-
Especifica el número de argumentos que espera la función. Se recomienda, no obstante, utilizar la función {{jsxref("Function.length", "length")}}.
-
{{jsxref("Function.caller")}}
-
Especifica la función que invoca la ejecución de la función actual (no estándar).
-
{{jsxref("Function.constructor")}}
-
Especifica la función que crea un prototipo de objeto.
-
{{jsxref("Function.length")}}
-
Specifica el número de argumentos esperados por la función.
-
{{jsxref("Function.name")}}
-
El nombre de la función (no forma parte del estándar).
-
{{jsxref("Function.prototype")}}
-
Permite añadir propiedades a los objetos función (ambos, los construidos usando Function y los declarados usando una declaración de función o una expresión de función).
-
- -
{{ jsOverrides("Object", "properties", "arguments", "arity", "caller", "constructor", "length", "name", "displayName") }}
- -

Métodos

- -
-
{{jsxref("Function.prototype.apply()")}}
-
Le permite aplicar el método de otro objeto en el contexto de un objeto diferente (el objeto llamado).
-
{{jsxref("Function.prototype.call()")}}
-
Le Permite llamar (ejecutar) a un método de otro objeto en el contexto de un objeto diferente (el objeto que llama).
-
{{jsxref("Function.prototype.toSource()")}}
-
Devuelve una cadena que representa el código fuente de la función. Anula al método {{jsxref("Object.toSource")}}.
-
{{jsxref("Function.prototype.toString()")}}
-
Devuelve una cadena que representa el código fuente de la función. Anula al método {{jsxref("Object.toSource")}}.
-
- -
{{ jsOverrides("Object", "methods", "apply", "call", "toSource", "toString") }}
- -
-
 
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/function/tosource/index.html b/files/es/web/javascript/referencia/objetos_globales/function/tosource/index.html deleted file mode 100644 index 3cee3c1d4c..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/function/tosource/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Function.prototype.toSource() -slug: Web/JavaScript/Referencia/Objetos_globales/Function/toSource -translation_of: Web/JavaScript/Reference/Global_Objects/Function/toSource ---- -
{{JSRef}} {{non-standard_header}}
- -

El método toSource() devuelve un string representando el código fuente del objeto.

- -

Sintaxis

- -
function.toSource();
-Function.toSource();
-
- -

Parámetros

- -

Ninguno.

- -

Descripción

- -

El método toSource devuelve los siguientes valores:

- - - -

Éste método es usado de forma interna por JavaScript y no explicitamente desde el código. Puedes usar toSource mientras depuras para examinar el contenido de un objeto.

- -

Especificaciones

- -

No está reflejado en ningún estándar. Implementaso en JavaScript 1.3.

- -

Browser compatibility

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatNo}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/function/tostring/index.html b/files/es/web/javascript/referencia/objetos_globales/function/tostring/index.html deleted file mode 100644 index b5ee70147e..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/function/tostring/index.html +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: Function.prototype.toString() -slug: Web/JavaScript/Referencia/Objetos_globales/Function/toString -translation_of: Web/JavaScript/Reference/Global_Objects/Function/toString ---- -
{{JSRef}}
- -

El método toString() retorna una cadena representando el código fuente de la función.

- -

Sintaxis

- -
function.toString(indentation)
- -

Parámetros

- -
-
indentation {{non-standard_inline}} {{obsolete_inline(17)}}
-
La cantidad de espacios a indentar en la representación de cadena del código fuente. Si indentation es menor o igual a -1, la mayoría de los espacios innecesarios son eliminados.
-
- -

Descripción

- -

El objeto {{jsxref("Function")}} reconduce el método {{jsxref("Object.prototype.toString", "toString")}} heredado de  {{jsxref("Object")}}; no hereda {{jsxref("Object.prototype.toString")}}. Para objetos {{jsxref("Function")}}, el método toString retorna una representación de cadena del objeto en forma de declaración de función. Esto es, toString descompila la función y la cadena retornada incluye la palabra clave function, la lista de argumentos, llaves y el código fuente del cuerpo de la función.

- -

JavaScript llama al método toString automáticamente cuando una {{jsxref("Function")}} va a ser representada como un valor de texto, p.e. cuando una función es concatenada con un valor de cadena (string).

- -

El método toString() producirá una excepción {{jsxref("TypeError")}} ("Function.prototype.toString called on incompatible object"), si el valor de su objeto this no es un objeto Function. Esto también ocurrirá para objetos {{jsxref("Proxy")}}, por ejemplo:

- -
Function.prototype.toString.call("foo"); // TypeError
-
-var proxy = new Proxy(function() {}, {});
-Function.prototype.toString.call(proxy); // TypeError
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoObservaciones
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.3.4.2', 'Function.prototype.toString')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-function.prototype.tostring', 'Function.prototype.toString')}}{{Spec2('ES6')}}Añadidos requerimientos más específicos para la representación de cadena.
{{SpecName('ESDraft', '#sec-function.prototype.tostring', 'Function.prototype.toString')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
PrestaciónChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
PrestaciónAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Notas específicas para Gecko

- - - -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/generador/index.html b/files/es/web/javascript/referencia/objetos_globales/generador/index.html deleted file mode 100644 index ec92ca413f..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/generador/index.html +++ /dev/null @@ -1,228 +0,0 @@ ---- -title: Generador -slug: Web/JavaScript/Referencia/Objetos_globales/Generador -tags: - - ECMAScript2015 - - ECMAScript6 - - Generador - - Generador Legado - - Iterador Legado - - JavaScript - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/Generator ---- -
{{JSRef}}
- -
- -

El objeto Generator es retornado por una {{jsxref("Statements/function*", "función generator", "", 1)}} y es conformado tanto el protocolo iterable como el protocolo iterador.

- -

Constructor

- -

Este objeto no puede ser instanciado directamente. En su lugar, una instancia del objeto Generator puede ser devuelta por una función generator:

- -
	function* gen() {
-	  yield 1;
-	  yield 2;
-	  yield 3;
-	}
-
-	var g = gen(); // "Generator { }"
- -
-
- -

Métodos de instanciación

- -

Tambien hereda propiedades de {{JSxRef("Iterator")}}

- -
-
{{jsxref("Generator.prototype.next()")}}
-
Retorna el valor ofecido por la expresión {{jsxref("Operators/yield", "yield")}}
-
{{jsxref("Generator.prototype.return()")}}
-
Retorna el valor dado y finaliza el generador.
-
{{jsxref("Generator.prototype.throw()")}}
-
Lanza un error al generador (también finaliza el generador, a menos que sea atrapado desde ese generador)
-
- -

Propiedades

- -

Tambien hereda propiedades de {{JSxRef("Iterator")}}

- -
-
Generator.prototype.constructor
-
Especifica la funciòn que construye el prototipo del objeto.
-
- -
-
Generator.prototype[@@toStringTag]
-
La cuerda "Generator".
-
- -

Ejemplo

- -

Un iterador infinito

- -
	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
-	// ...
- -

Objetos generadores legados

- -

Firefox(SpderMonkey) tambén implementa una versón mas temprana de generadores en JavaScript 1.7, donde el asterisco (*) en la declaración de la funcion no era necesario(sólo use la palabra reservada yield en el cuerpo de la función). Sin embargo, los generadores legados se encuentran depreciados. No los use. Serán removidos ({{bug(1083482)}}).

- -

Métodos de generadores legados

- -
-
Generator.prototype.next() {{non-standard_inline}}
-
-
Retorna el valor ofrecido por la expresión {{jsxref("Operators/yield", "yield")}}.  Esto se corresponde con el método next() en el objeto generador de ES2015.
-
-
Generator.prototype.close() {{non-standard_inline}}
-

- Cierra el generador. Sí el método next() es llamado por la expresión {{jsxref("StopIteration")}}, un error será lanzado. Esto se corresponde con el método return() del objeto generador de ES2015.
-
Generator.prototype.send() {{non-standard_inline}}
-
Utilizado para enviar un valor al generador. El valor es retornado por la expresion {{jsxref("Operators/yield", "yield")}}, y retorna el valor ofrecido por la siguiente expresion {{jsxref("Operators/yield", "yield")}}. send(x) Se corresponde a next(x) en el objeto generador de ECMAScript 2015.
-
Generator.prototype. throw() {{non-standard_inline}}
-
Lanza un error al generador. Esto se corresponde con el metodo throw() en el objeto genererador de ES2015.
-
- -

Ejemplo de generador legado

- -
	function fibonacci() {
-	  var a = yield 1;
-	  yield a * 2;
-	}
-
-	var it = fibonacci();
-	console.log(it);          // "Generator {  }"
-	console.log(it.next());   // 1
-	console.log(it.send(10)); // 20
-	console.log(it.close());  // undefined
-	console.log(it.next());   // throws StopIteration (as the generator is now closed)
-	
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-generator-objects', 'Generator objects')}}{{Spec2('ES2015')}}Definición inicial
{{SpecName('ESDraft', '#sec-generator-objects', 'Generator objects')}}{{Spec2('ESDraft')}}
- -

Compatibilidad con navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - -
FuncionalidadChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte basico{{CompatChrome(39.0)}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
FuncionalidadAndroidAndroid WebviewEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Soporte básico{{CompatNo}}{{CompatChrome(39.0)}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatChrome(39.0)}}
-
- -

- -

Vea también

- -

Generadores Legados

- - - -

Generadores ES2015

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/generador/next/index.html b/files/es/web/javascript/referencia/objetos_globales/generador/next/index.html deleted file mode 100644 index 6b6bf61cbe..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/generador/next/index.html +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Generator.prototype.next() -slug: Web/JavaScript/Referencia/Objetos_globales/Generador/next -translation_of: Web/JavaScript/Reference/Global_Objects/Generator/next ---- -
{{JSRef}}
- -

El método next() regresa un objeto con las propiedades done y value. También puedes pasar un parámetro al método next para enviar un valor al generador.

- -

Sintaxis

- -
gen.next(valor)
- -

Parámetros

- -
-
valor
-
El valor a enviar al generador.
-
- -

Valor de retorno

- -

Un {{jsxref("Object")}} con dos propiedades:

- - - -

Examples

- -

Using next()

- -

The following example shows a simple generator and the object that the next method returns:

- -
function* gen() {
-  yield 1;
-  yield 2;
-  yield 3;
-}
-
-var g = gen(); // "Generator { }"
-g.next();      // "Object { value: 1, done: false }"
-g.next();      // "Object { value: 2, done: false }"
-g.next();      // "Object { value: 3, done: false }"
-g.next();      // "Object { value: undefined, done: true }"
-
- -

Sending values to the generator

- -

In this example, next is called with a value. Note that the first call did not log anything, because the generator was not yielding anything initially.

- -
function* gen() {
-  while(true) {
-    var value = yield null;
-    console.log(value);
-  }
-}
-
-var g = gen();
-g.next(1);
-// "{ value: null, done: false }"
-g.next(2);
-// 2
-// "{ value: null, done: false }"
-
- -

Specifications

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES2015', '#sec-generator.prototype.next', 'Generator.prototype.next')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-generator.prototype.next', 'Generator.prototype.next')}}{{Spec2('ESDraft')}} 
- -

Browser compatibility

- -
- - -

{{Compat("javascript.builtins.Generator.next")}}

-
- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/generador/return/index.html b/files/es/web/javascript/referencia/objetos_globales/generador/return/index.html deleted file mode 100644 index 649d5b8dec..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/generador/return/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: Generator.prototype.return() -slug: Web/JavaScript/Referencia/Objetos_globales/Generador/return -tags: - - ECMAScript 2015 - - Generador - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Generator/return ---- -
{{JSRef}}
- -

El método return() regresa el valor dado y finaliza al generador.

- -

Sintaxis

- -
gen.return(valor)
- -

Parámetros

- -
-
valor
-
El valor a regresar.
-
- -

Valor de retorno

- -

El valor dado como argumento.

- -

Ejemplos

- -

Utilizando return()

- -

El siguiente ejemplo muestra un generador simple y su método return.

- -
function* gen() {
-  yield 1;
-  yield 2;
-  yield 3;
-}
-
-var g = gen();
-
-g.next();        // { value: 1, done: false }
-g.return('foo'); // { value: "foo", done: true }
-g.next();        // { value: undefined, done: true }
-
- -

Si return(valor) es invocado en un generador que ya está en su estado "completado", el generador permanecerá en estado "completado". Si no se da ningún argumento, el objeto regresado es el mismo a que si se invocara .next(). Si se da un argumento, éste se asignará como valor en la propiedad value del objeto regresado.

- -
function* gen() {
-  yield 1;
-  yield 2;
-  yield 3;
-}
-
-var g = gen();
-g.next(); // { value: 1, done: false }
-g.next(); // { value: 2, done: false }
-g.next(); // { value: 3, done: false }
-g.next(); // { value: undefined, done: true }
-g.return(); // { value: undefined, done: true }
-g.return(1); // { value: 1, done: true }
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-generator.prototype.return', 'Generator.prototype.return')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-generator.prototype.return', 'Generator.prototype.return')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
- - -

{{Compat("javascript.builtins.Generator.return")}}

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/generador/throw/index.html b/files/es/web/javascript/referencia/objetos_globales/generador/throw/index.html deleted file mode 100644 index 9f4cd76fbe..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/generador/throw/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Generator.prototype.throw() -slug: Web/JavaScript/Referencia/Objetos_globales/Generador/throw -translation_of: Web/JavaScript/Reference/Global_Objects/Generator/throw ---- -
{{JSRef}}
- -

El método throw() reanuda la ejecución de un generador al lanzar un error en éste y regresar un objeto con las dos propiedades done y value.

- -

Sintaxis

- -
gen.throw(excepción)
- -

Parámetros

- -
-
excepción
-
La excepción a lanzar. Al hacer depuración, es útil que la excepción cumpla con instanceof {{jsxref("Error")}}.
-
- -

Valor de retorno

- -

Un {{jsxref("Object")}} con dos propiedades:

- - - -

Examples

- -

Using throw()

- -

The following example shows a simple generator and an error that is thrown using the throw method. An error can be caught by a try...catch block as usual.

- -
function* gen() {
-  while(true) {
-    try {
-       yield 42;
-    } catch(e) {
-      console.log('Error caught!');
-    }
-  }
-}
-
-var g = gen();
-g.next();
-// { value: 42, done: false }
-g.throw(new Error('Something went wrong'));
-// "Error caught!"
-// { value: 42, done: false }
-
- -

Specifications

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES2015', '#sec-generator.prototype.throw', 'Generator.prototype.throw')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-generator.prototype.throw', 'Generator.prototype.throw')}}{{Spec2('ESDraft')}} 
- -

Browser compatibility

- -
- - -

{{Compat("javascript.builtins.Generator.throw")}}

-
- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/index.html b/files/es/web/javascript/referencia/objetos_globales/index.html deleted file mode 100644 index 9946b3f648..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/index.html +++ /dev/null @@ -1,203 +0,0 @@ ---- -title: Objetos globales -slug: Web/JavaScript/Referencia/Objetos_globales -tags: - - JavaScript - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects ---- -
{{jsSidebar("Objects")}}
- -

Este capítulo documenta todo acerca de estándares de Javascript, los objetos integrados en  JavaScript, así como los métodos y propiedades de cada uno.

- -

El término "objetos globales" (u objetos incorporados estándar) aquí no debe confundirse con el objeto global. Aquí, los objetos globales se refieren a objetos en el ámbito global. Se puede acceder al objeto global en sí usando el operador {{jsxref("Operadores/this", "this")}} en el ámbito global (pero solo si no se usa el modo estricto ECMAScript 5, en ese caso devuelve {{jsxref("undefined")}}). De hecho, el alcance global consiste en las propiedades del objeto global, incluidas las propiedades heredadas, si las hay.

- -

Otros objetos en el alcance global son creados por el script de usuario o son proporcionados por la aplicación host. Los objetos host disponibles en los contextos del navegador están documentados en la referencia de la API. Para obtener más información acerca de la distinción entre el DOM y el núcleo de JavaScript, vea Introducción a las tecnologías JavaScript.

- -

Objetos estándar por categoría

- -

Propiedades de valor

- -

Estas propiedades globales devuelven un valor simple; ellos no tienen propiedades o métodos.

- - - -

Propiedades de funciones

- -

Estas funciones globales -funciones llamadas globalmente en lugar de un objeto- devuelven directamente sus resultados a la persona que llama.

- - - -

Objetos fundamentales

- -

Estos son los objetos fundamentales y básicos sobre los que se basan todos los demás objetos. Esto incluye objetos que representan objetos generales, funciones y errores.

- - - -

Números y fechas

- -

Estos son los objetos base que representan números, fechas y cálculos matemáticos.

- - - -

Procesamiento de texto

- -

Estos objetos representan cadenas y soporte para manipularlos.

- - - -

Colecciones indexadas

- -

Estos objetos representan colecciones de datos que están ordenadas por un valor de índice. Esto incluye matrices (tipadas) y construcciones tipo array.

- - - -

Colecciones con clave

- -

Estos objetos representan colecciones que usan claves; estos contienen elementos que son iterables en el orden de inserción.

- - - -

Colecciones de vectores

- -

Los tipos de datos vectoriales {{Glossary("SIMD")}} son objetos donde los datos se organizan en carriles.

- - - -

Datos estructurados

- -

Estos objetos representan e interactúan con los búferes de datos estructurados y los datos codificados utilizando la notación de objetos JavaScript (JSON del inglés JavaScript Object Notation).

- - - -

Objetos de abstracción de control

- - - -

Reflexión

- - - -

Internacionalización

- -

Adiciones al núcleo de ECMAScript para funcionalidades sensibles al lenguaje.

- - - -

WebAssembly

- - - -

Otro

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/infinity/index.html b/files/es/web/javascript/referencia/objetos_globales/infinity/index.html deleted file mode 100644 index 2a0a716eeb..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/infinity/index.html +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Infinity -slug: Web/JavaScript/Referencia/Objetos_globales/Infinity -tags: - - JavaScript -translation_of: Web/JavaScript/Reference/Global_Objects/Infinity ---- -
- {{jsSidebar("Objects")}}
-

Resumen

-

La propiedad global Infinity es un valor numérico que representa el infinito.

-

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

-

Sintaxis

-
Infinity
-

Description

-

Infinity es una del objeto global, es decir, esta es una variable de alcance global.

-

El valor inicial de Infinity es {{jsxref("Number.POSITIVE_INFINITY")}}. El valor de Infinity (infinito positivo) es mayor que cualquier otro numero incluido el mismo. Este valor se comporta matematicamente como el infinito matemático; por ejemplo, cualquier numero multiplicado por Infinity da como resultado Infinity, y cualquier numero divido por Infinity da como resultado cero.

-

Para la especificación ECMAScript 5, Infinity es de solo lectura (implementado en JavaScript 1.8.5  / Firefox 4).

-

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
ECMAScript 1ra edición.EstándarDefinición inicial. Implementada en 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')}} 
-

Compatibilidad con navegadores

-

{{ CompatibilityTable() }}

-
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico(Si)(Si)(Si)(Si)(Si)
-
-
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico(Si)(Si)(Si)(Si)(Si)(Si)
-
-

Ver también

- diff --git a/files/es/web/javascript/referencia/objetos_globales/internalerror/constructor_internalerror/index.html b/files/es/web/javascript/referencia/objetos_globales/internalerror/constructor_internalerror/index.html deleted file mode 100644 index ba895aaff9..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/internalerror/constructor_internalerror/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Constructor InternalError() -slug: >- - Web/JavaScript/Referencia/Objetos_globales/InternalError/Constructor_InternalError -tags: - - Constructor - - JavaScript - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/InternalError/InternalError ---- -
{{JSRef}} {{non-standard_header}}
- -

El constructor InternalError() crea un error que indica un error que ocurrió internamente en el motor de JavaScript. Por ejemplo: "InternalError: demasiada recursividad".

- -

Sintaxis

- -
new InternalError([message[, fileName[, lineNumber]]])
- -

Parámetros

- -
-
message
-
Opcional. Una descripción del error legible para los humanos.
-
fileName
-
Opcional. El nombre del archivo que contiene el código que provocó la excepción.
-
lineNumber
-
Opcional. El número de línea del código que provocó la excepción.
-
- -

Ejemplos

- -

Crear un nuevo InternalError

- -
new InternalError("Fallo del motor");
-
- -

Especificaciones

- -

No forma parte de ningún estándar.

- -

Compatibilidad del navegador

- -
-
- - -

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

-
-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/internalerror/index.html b/files/es/web/javascript/referencia/objetos_globales/internalerror/index.html deleted file mode 100644 index e7754d1575..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/internalerror/index.html +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: InternalError -slug: Web/JavaScript/Referencia/Objetos_globales/InternalError -tags: - - Clase - - Class - - InternalError - - JavaScript - - Objeto -translation_of: Web/JavaScript/Reference/Global_Objects/InternalError ---- -
{{JSRef}} {{non-standard_header}}
- -

El objeto InternalError indica un error que se produjo internamente en el motor JavaScript.

- -

Los principalmente casos de ejemplo son cuando algo es demasiado grande, por ejemplo:

- - - -

Constructor

- -
-
{{JSxRef("Global_Objects/InternalError/InternalError", "InternalError()")}}
-
Crea un nuevo objeto InternalError.
-
- -

Propiedades de la instancia

- -
-
{{jsxref("Error.prototype.message", "InternalError.prototype.message")}}
-
Mensaje de error. Heredado de {{JSxRef("Error")}}.
-
{{jsxref("Error.prototype.name", "InternalError.prototype.name")}}
-
Nombre del error. Heredado de {{JSxRef("Error")}}.
-
{{jsxref("Error.prototype.fileName", "InternalError.prototype.fileName")}}
-
Ruta al archivo que generó este error. Heredado de {{JSxRef("Error")}}.
-
{{jsxref("Error.prototype.lineNumber", "InternalError.prototype.lineNumber")}}
-
Número de línea en el archivo que generó este error. Heredado de {{JSxRef("Error")}}.
-
{{jsxref("Error.prototype.columnNumber", "InternalError.prototype.columnNumber")}}
-
Número de columna en la línea que generó este error. Heredado de {{JSxRef("Error")}}.
-
{{jsxref("Error.prototype.stack", "InternalError.prototype.stack")}}
-
Seguimiento de la pila. Heredado de {{JSxRef("Error")}}.
-
- -

Ejemplos

- -

Demasiada recursividad

- -

Esta función recursiva se ejecuta 10 veces, según la condición de salida.

- -
function loop(x) {
-  if (x >= 10) // "x >= 10" es la condición de salida
-    return;
-  // hacer cosas
-  loop(x + 1); // la llamada recursiva
-}
-loop(0);
- -

Establecer esta condición en un valor extremadamente alto, no funcionará:

- -
function loop(x) {
-  if (x >= 1000000000000)
-    return;
-  // hacer cosas
-  loop(x + 1);
-}
-loop(0);
-
-// InternalError: demasiada recursividad
- -

Para obtener más información, consulta {{JSxRef("Errors/Too_much_recursion", "InternalError: demasiada recursividad.")}}

- -

Especificaciones

- -

No forma parte de ningún estándar.

- -

Compatibilidad del navegador

- -
-
- - -

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

-
-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/intl/index.html b/files/es/web/javascript/referencia/objetos_globales/intl/index.html deleted file mode 100644 index c1a2a47243..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/intl/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: Intl -slug: Web/JavaScript/Referencia/Objetos_globales/Intl -translation_of: Web/JavaScript/Reference/Global_Objects/Intl ---- -
{{JSRef}}
- -

El objeto de ámbito global Intl es el espacio de nombres para el API de Internacionalización de ECMAScript, éste provee comparación de cadenas y formato de números, fechas y tiempos con sensibilidad al lenguaje. Los constructores para los objetos {{jsxref("Collator")}}, {{jsxref("NumberFormat")}}, y {{jsxref("DateTimeFormat")}} son propiedades del objeto Intl. En ésta página se documentan tales propiedades, así como la funcionalidad común a los constructores de internacionalización y otras funciones sensibles al lenguaje.

- -

Propiedades

- -
-
{{jsxref("Global_Objects/Collator", "Intl.Collator")}}
-
Constructor para collators, objetos que permiten la comparación de cadenas con sensibilidad al lenguaje.
-
{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}
-
Constructor para objetos que permiten el formato de fecha y tiempos con sensibilidad al lenguaje.
-
{{jsxref("Global_Objects/NumberFormat", "Intl.NumberFormat")}}
-
Constructor para objetos que permiten el formato de números con sensibilidad al lenguaje.
-
{{jsxref("Global_Objects/PluralRules", "Intl.PluralRules")}}
-
Por definir
-
- -

Métodos

- -
-
{{jsxref("Intl.getCanonicalLocales()")}}
-
Método que retorna los nombres canónicos de las diferentes variantes de lenguaje.
-
- -

Identificación de variantes de lenguaje y negociación

- -

Los constructores de internacionalización, así como otros metodos de constructores sensibles al lenguaje (listados bajo {{anch("See_also", "Ver más")}}) siguen un mismo patrón para identificar variantes de lenguaje y determinar aquella a utilizar: todos aceptan los argumentos locales y options, y negocian las variantes requeridas contra aquellas que soportan utilizando un algoritmo especificado en la propiedad options.localeMatcher.

- -

locales

- -

El argumento locales debe ser tanto una cadena que contenga una  Etiqueta de Idioma BCP 47, o una matriz de etiquetas de dicho idioma. Si el argumento locales no es provisto o es indefinido, será usado la localicacion predeterminada.

- -

Una etiqueta de idioma BCP 47 define un idioma y minimamente contiene un código primario de idioma. En estos la forma mas comun puede contener, : un código de idioma, un código del sistema de escritura, y un código de país o región, todo separado por guiones. Mientras la etiqueta no es case sensitive, es recomendable usar un titulo para el código del sistema de escritura, mayúsculas para el país y región y minúsculas para todo lo demás.

- -

Ejemplos:

- - - -

Las subetiquetas que identifican idiomas, scripts, países (regiones), y (raramente utilizadas) variantes en las etiquetas de idiomas BCP 47 pueden ser encontradas en el Registro de subetiquetas de idioma de la IANA.

- -

BCP 47 permite también extensiones. Las funciones de internacionalización de JavaScript utilizan la extensión "u" (Unicode), misma que puede emplearse para requerir personalizacioón de los objetos {{jsxref("Collator")}}, {{jsxref("NumberFormat")}}, o {{jsxref("DateTimeFormat")}}. A continuación algunos ejemplos:

- - - -

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

- -
- - -

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

-
- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/intl/numberformat/format/index.html b/files/es/web/javascript/referencia/objetos_globales/intl/numberformat/format/index.html deleted file mode 100644 index 713302ea3c..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/intl/numberformat/format/index.html +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Intl.NumberFormat.prototype.format() -slug: Web/JavaScript/Referencia/Objetos_globales/Intl/NumberFormat/format -translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format ---- -
{{JSRef}}
- -

El método Intl.NumberFormat.prototype.format() formatea un número de acuerdo con la configuración regional y las opciones de formato de este objeto {{jsxref("NumberFormat")}}.

- -
{{EmbedInteractiveExample("pages/js/intl-numberformat-prototype-format.html")}}
- - - -

Syntax

- -
numberFormat.format(number)
- -

Parametros

- -
-
number
-
A {{jsxref("Number")}} or {{jsxref("BigInt")}} to format.
-
- -

Descripción

- -

The format getter function formats a number into a string according to the locale and formatting options of this {{jsxref("NumberFormat")}} object.

- -

Ejemplos

- -

Usando format

- -

Use the format getter function for formatting a single currency value, here for Russia:

- -
var options = { style: 'currency', currency: 'RUB' };
-var numberFormat = new Intl.NumberFormat('ru-RU', options);
-console.log(numberFormat.format(654321.987));
-// → "654 321,99 руб."
-
- -

Usando format con map

- -

Use the format getter function for formatting all numbers in an array. Note that the function is bound to the {{jsxref("NumberFormat")}} from which it was obtained, so it can be passed directly to {{jsxref("Array.prototype.map")}}.

- -
var a = [123456.789, 987654.321, 456789.123];
-var numberFormat = new Intl.NumberFormat('es-ES');
-var formatted = a.map(numberFormat.format);
-console.log(formatted.join('; '));
-// → "123.456,789; 987.654,321; 456.789,123"
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES Int 1.0', '#sec-11.3.2', 'Intl.NumberFormat.prototype.format')}}{{Spec2('ES Int 1.0')}}Initial definition.
{{SpecName('ES Int 2.0', '#sec-11.3.2', 'Intl.NumberFormat.prototype.format')}}{{Spec2('ES Int 2.0')}}
{{SpecName('ES Int Draft', '#sec-intl.numberformat.prototype.format', 'Intl.NumberFormat.prototype.format')}}{{Spec2('ES Int Draft')}}
- -

Browser compatibility

- -
- - -

{{Compat("javascript.builtins.Intl.NumberFormat.format")}}

-
- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/intl/numberformat/index.html b/files/es/web/javascript/referencia/objetos_globales/intl/numberformat/index.html deleted file mode 100644 index 7ee880d0e8..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/intl/numberformat/index.html +++ /dev/null @@ -1,188 +0,0 @@ ---- -title: Intl.NumberFormat -slug: Web/JavaScript/Referencia/Objetos_globales/Intl/NumberFormat -translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat ---- -
{{JSRef("Global_Objects", "NumberFormat", "Intl,Collator,DateTimeFormat")}}
- -

Resumen

- -

El objeto Intl.NumberFormat es un constructor para objetos que permiten un formato numérico sensible al idioma.

- -

Sintaxis

- -
new Intl.NumberFormat([locales [, options]])
-
-Intl.NumberFormat.call(this [, locales [, options]])
- -

Parámetros

- -
-
locales
-
-

Cadena o arreglo de cadenas identificadoras para el código de idioma, conforme a BCP 47. Para mayor información con respecto a la forma e interpretación del argumento locales, visite el siguiente enlace: página de Intl. Se admite la siguiente clave de extension Unicode:

- -
-
nu
-
El sistema numérico a ser utilizado. Los siguientes son valores admisibles: "arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt".
-
-
-
options
-
-

Objeto con alguna o todas las propiedas listadas a continuación:

- -
-
localeMatcher
-
Algoritmo a emplear para establecer el idioma. Los valores admitidos son "lookup" (coincidencia exacta) y "best fit" (mejor coincidencia); el valor por defecto es "best fit". Para mayor información respecto a esta opción visite el siguiente enlace: página de Intl.
-
style
-
El estilo de formato a utilizar. Los valores admisibles son "decimal" para un formato numérico simple, "currency" para un formato de divisa, y "percent" para un formato porcentual; el valor por defecto es "decimal".
-
currency
-
La divisa a utilizar para el formato de divisa. Los valores admisibles son los establecidos en ISO 4217, por ejemplo "USD" para el dólar americano, "EUR" para el euro, o "CNY" para el RMB chino - para mayor información se recomienda visitar el siguiente enlace: lista actual de códigos de divisa y fondos. No existe un valor por defecto, por lo que si es valor del parámetro style es "currency", deberá proveerse también un valor para la propiedad currency.
-
currencyDisplay
-
Descriptor a utilizar para denotar el valor expresado como divisa. Los valores admisibles son "symbol" para utilizar el símbolo local a su contexto, por ejemplo €, "code" para utilizar el código de divisa ISO, "name" para utilizar el nombre local de la divisa, por ejemplo "dollar"; el valor por defecto es "symbol".
-
useGrouping
-
Si deberán emplearse o no separadores para agrupamiento, como es el caso de los separadores para millares o separadores millares/lakh/crore. Los valores admisibles son true y false; el valor por defecto es true.
-
- -

Las propiedades descritas a continuación se dividen en dos grupos: por un lado minimumIntegerDigits, minimumFractionDigits y maximumFractionDigits, por el otro minimumSignificantDigits y maximumSignificantDigits. Si al menos una propiedad del segundo grupo es definida, todas aquellas del primero serán ignoradas.

- -
-
minimumIntegerDigits
-
El número mínimo de digitos enteros a utilizar. El rango de valores admisibles va desde 1 hasta 21; el valor por defecto es 1.
-
minimumFractionDigits
-
El número mínimo de digitos fraccionarios a utilizar. El rango de valores admisibles va desde 0 hasta 20; el valor por defecto para formato simple y porcentual es 0; el valor por defecto para formato de divisa es el indicado en la lista de códigos de moneda ISO 4217 para subdivisiones de tal divisa (o 2 si la lista no establece un valor).
-
maximumFractionDigits
-
El número máximo de dígitos de fraccionarios a utilizar. El rango de valores admisibles va desde 0 hasta 20; el valor por defecto para formato simple es el valor más alto admisible en minimumFractionDigits y 3; el valor por defecto para el formato de moneda es el valor más alto admisible en minimumFractionDigits y el indicado en la lista de cógidos de moneda ISO 4217 para subdivisiones de tal divisa (o 2 si la lista no establece un valor); el valor por defecto en el formato porcentual es el valor más alto admisible en minimumFractionDigits y 0.
-
minimumSignificantDigits
-
El número mínimo de dígitos significativos a utilizar. El rango de valores admisibles va desde 1 hasta 21; el valor por defecto es 1.
-
maximumSignificantDigits
-
El número máximo de dígitos significativos a utilizar. El rango de valores admisibles va desde 1 hasta 21; el valor por defecto es minimumSignificantDigits.
-
-
-
- -

Descripción

- -

Propiedades

- -
-
{{jsxref("NumberFormat.prototype", "Intl.NumberFormat.prototype")}}
-
Permite agregar nuevas propiedades a todos los objetos.
-
- -

Métodos

- -
-
{{jsxref("NumberFormat.supportedLocalesOf", "Intl.NumberFormat.supportedLocalesOf()")}}
-
Regresa un arreglo con aquellos códigos de idioma proveídos y que son soportados sin necesidad de recurrir a la configuración por defecto en el entorno de ejecucion.
-
- -

Instancias NumberFormat

- -

Propiedades

- -

Toda instancia de NumberFormat hereda las siguientes propiedades de su prototipo:

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

Métodos

- -
-

Toda instancia de NumberFormat hereda los siguientes métodos de su prototipo:

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

Ejemplos

- -

Al no especificar un código de idioma, se regresa una cadena con el formato correspondiente al código de idioma y opciones disponibles por defecto en el entorno de ejecución.

- -
var number = 3500;
-
-alert(new Intl.NumberFormat().format(number));
-// → "3,500" si el código de idioma es US English
-
- -

Ejemplo: Utilizando locales

- -

Este ejemplo muestra algunas de las variantes en formato numérico con diferentes contextos locales. A fin de emplear el idioma correspondiente a aquél en la interfaz del usuario para su aplicación, asegúrese de especificar dicho idioma ( y de ser posible alternativas) utilizando el argumento locales:

- -
var number = 123456.789;
-
-// En el alemán la coma se utiliza como separador decimal y el punto para los millares
-alert(new Intl.NumberFormat("de-DE").format(number));
-// → 123.456,789
-
-// En la mayoría de los países de lengua arábiga se utilizan también símbolos arábigos
-alert(new Intl.NumberFormat("ar-EG").format(number));
-// → ١٢٣٤٥٦٫٧٨٩
-
-// En la India se utilizan separadores millares/lakh/crore
-alert(new Intl.NumberFormat("en-IN").format(number));
-// → 1,23,456.789
-
-// use de nu para establecer un sistema numérico, el sistema decimal chino por ejemplo
-alert(new Intl.NumberFormat("zh-Hans-CN-u-nu-hanidec").format(number));
-// → 一二三,四五六.七八九
-
-// cuando se requiera un lenguaje que pudiera no ser soportado, como es el caso del Balinés
-// se recomienda incluir un lenguaje alternativo, en éste caso Indonesio
-alert(new Intl.NumberFormat(["ban", "id"]).format(number));
-// → 123.456,789
-
- -

Ejemplo: Utilizando options

- -

El valor que regresa la función toLocaleString puede ser modificado utilizando el argumento options:

- -
var number = 123456.789;
-
-// se establece un formato de divisa
-alert(new Intl.NumberFormat("de-DE", {style: "currency", currency: "EUR"}).format(number));
-// → 123.456,79 €
-
-// el yen japonés no tiene ninguna subdivisión
-alert(new Intl.NumberFormat("ja-JP", {style: "currency", currency: "JPY"}).format(number))
-// → ¥123,457
-
-// limitamos a tres los dígitos significativos
-alert(new Intl.NumberFormat("en-IN", {maximumSignificantDigits: 3}).format(number));
-// → 1,23,000
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstado actualComentario
{{SpecName('ES Int 1.0', '#sec-11.1', 'Intl.NumberFormat')}}{{Spec2('ES Int 1.0')}}Definición 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')}}
- -

Compatibilidad de los navegadores

- -
- - -

{{Compat("javascript.builtins.Intl.NumberFormat")}}

-
- -

Vea también

- -

{{page('en-US/docs/JavaScript/Reference/Global_Objects/Intl','See_also')}}

diff --git a/files/es/web/javascript/referencia/objetos_globales/intl/relativetimeformat/index.html b/files/es/web/javascript/referencia/objetos_globales/intl/relativetimeformat/index.html deleted file mode 100644 index fc15049fa6..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/intl/relativetimeformat/index.html +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Intl.RelativeTimeFormat -slug: Web/JavaScript/Referencia/Objetos_globales/Intl/RelativeTimeFormat -tags: - - RelatimeTimeFormat -translation_of: Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat ---- -
{{JSRef}}
- -

El objeto Intl.RelativeTimeFormat te proporciona una manera de formatear tiempos relativos con traducciones.

- -
{{EmbedInteractiveExample("pages/js/intl-relativetimeformat.html")}}
- - - -

Constructor

- -
-
{{jsxref("RelativeTimeFormat.RelativeTimeFormat()", "Intl.RelativeTimeFormat.RelativeTimeFormat()")}}
-
Crea una nueva instancia de Intl.RelativeTimeFormat.
-
- -

Métodos estáticos

- -
-
{{jsxref("RelativeTimeFormat.supportedLocalesOf", "Intl.RelativeTimeFormat.supportedLocalesOf()")}}
-
Devuelve un {{jsxref("Array")}} con todos los idiomas disponibles sin necesidad de usar el que hay por defecto.
-
- -

Métodos de instancia

- -
-
{{jsxref("RelativeTimeFormat.format", "Intl.RelativeTimeFormat.prototype.format()")}}
-
Formatea value y unit conforme al idioma y las opciones de formateo al crear la instancia con Intl.RelativeTimeFormat.
-
{{jsxref("RelativeTimeFormat.formatToParts", "Intl.RelativeTimeFormat.prototype.formatToParts()")}}
-
Devuelve un {{jsxref("Array")}} de objetos representando el tiempo relativo en partes que pueden ser usadas en traducciones.
-
{{jsxref("RelativeTimeFormat.resolvedOptions", "Intl.RelativeTimeFormat.prototype.resolvedOptions()")}}
-
Devuelve un nuevo objeto con las propiedades que reflejan las opciones de localización y formato usadas durante la inicialización del objeto.
-
- -

Ejemplos

- -

Ejemplo básico

- -

El siguiente ejemplo muestra cómo conseguir el tiempo relativo para el mejor idioma según el usuario.

- -
// Crea un formateador de tiempo relativo en tu lenguaje
-// con los valores por defectos pasados expresamente.
-const rtf = new Intl.RelativeTimeFormat("en", {
-    localeMatcher: "best fit", // otros valores: "lookup"
-    numeric: "always", // otros valores: "auto"
-    style: "long", // otros valores: "short" or "narrow"
-});
-
-// Formatea el tiempo relativo con valores negativos (-1).
-rtf.format(-1, "day");
-// > "Hace 1 día"
-
-// Formatea el tiempo relativo con valores positivos (1).
-rtf.format(1, "day");
-// > "Dentro de 1 día"
- -

Usando formatToParts

- -

El siguiente ejemplo muestra cómo crear un formateador de tiempo relativo que devuelve las partes separadas:

- -
const rtf = new Intl.RelativeTimeFormat("es", { numeric: "auto" });
-
-// Formatea el tiempo relativo usando día como unidad.
-rtf.formatToParts(-1, "day");
-// > [{ type: "literal", value: "ayer"}]
-
-rtf.formatToParts(100, "day");
-// > [{ type: "literal", value: "Dentro de " },
-// >  { type: "integer", value: "100", unit: "day" },
-// >  { type: "literal", value: " días" }]
-
- -

Especificaciones

- - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES Int Draft', '#relativetimeformat-objects', 'RelativeTimeFormat')}}
- -

Compatibilidad en navegadores

- - - -

{{Compat("javascript.builtins.Intl.RelativeTimeFormat")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/isfinite/index.html b/files/es/web/javascript/referencia/objetos_globales/isfinite/index.html deleted file mode 100644 index 1227071c44..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/isfinite/index.html +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: isFinite() -slug: Web/JavaScript/Referencia/Objetos_globales/isFinite -tags: - - Function - - JavaScript - - isFinite() -translation_of: Web/JavaScript/Reference/Global_Objects/isFinite ---- -
- {{jsSidebar("Objects")}}
-

Resumen

-

La función global isFinite() determina si el valor que se le pasa como argumento es un numero finito. Si es necesario, realiza una conversión a un numero al parametro pasado.

-

Sintaxis

-
isFinite(testValue)
-

Parámetros

-
-
- testvalue
-
- Valor a ser evaluado.
-
-

Descripción

-

isFinite es una función de alto nivel y no está asociada a ningún objeto.

-

Puede usar esta función para determinar si un número es un número finito. La función isFinite examina el número de su argumento. Si el argumento es NaN, infinito positivo o infinito negativo, este método devuelve false, de otro modo devuelve true.

-

Ejemplos

-
isFinite(Infinity);    // falso
-isFinite(NaN);         // falso
-isFinite(-Inifinity);  // falso
-
-isFinite(0);           // verdadero
-isFinite(2e64);        // verdadero
-
-isFinite("0");         // verdadero, hubiera sido falso en el caso de usar Number.isFinite("0") que es mas robusta
-

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - -
EspecificacionesEstadoComentarios
ECMAScript 2nd Edition.EstándarDefinición inicial
{{SpecName('ES5.1', '#sec-15.1.2.5', 'isFinite')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-isfinite-number', 'isFinite')}}{{Spec2('ES6')}} 
-

Compatibilidad con navegadores

-

{{ CompatibilityTable() }}

-
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soprte básico(Si)(Si)(Si)(Si)(Si)
-
-
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico(Si)(Si)(Si)(Si)(Si)(Si)
-
-

Vea También

- diff --git a/files/es/web/javascript/referencia/objetos_globales/isnan/index.html b/files/es/web/javascript/referencia/objetos_globales/isnan/index.html deleted file mode 100644 index d2607d0134..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/isnan/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: isNaN -slug: Web/JavaScript/Referencia/Objetos_globales/isNaN -translation_of: Web/JavaScript/Reference/Global_Objects/isNaN ---- -
{{jsSidebar("Objects")}} -

La función isNaN() determina cuando el valor es {{jsxref("NaN")}} o no. Tenga presente que la coerción dentro de la función isNaN tiene reglas interesantes; tal vez quieras usar de forma alternativa Number.isNaN(), como fue definido en ECMAScript 2015.

- -
{{EmbedInteractiveExample("pages/js/globalprops-isnan.html")}}
-
- -

Sintaxis

- -
isNaN(valor)
- -

Parámetros

- -
-
valor
-
El valor a probar o evaluar.
-
- -

Valor de retorno

- -

true si es valor dado es {{jsxref("NaN")}}, de otro modo, false.

- -

Descripción

- -

isNaN es una función de alto nivel y no está asociada a ningún objeto.

- -

isNaN intenta convertir el parámetro pasado a un número. Si el parámetro no se puede convertir, devuelve true; en caso contrario, devuelve false.

- -

Esta función es útil ya que el valor {{jsxref("Objetos_globales/NaN", "NaN")}} no puede se probado correctamente con operadores de igualdad. x == NaN y x === NaN son siempre false, sin importar lo que sea x, incluso si x es NaN. Por ejemplo, tanto 1 == NaN como NaN == NaN devuelven false.

- -

Ejemplos

- -
isNaN(NaN) //devuelve true
-isNaN("string") //devuelve true
-isNaN("12") //devuelve false
-isNaN(12) //devuelve false
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial
{{SpecName('ES5.1', '#sec-15.1.2.4', 'isNaN')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-isnan-number', 'isNaN')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-isnan-number', 'isNaN')}}{{Spec2('ESDraft')}}
- -

Compatibilidad de navegadores

- - - -

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

- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/json/index.html b/files/es/web/javascript/referencia/objetos_globales/json/index.html deleted file mode 100644 index 2744fb71e5..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/json/index.html +++ /dev/null @@ -1,231 +0,0 @@ ---- -title: JSON -slug: Web/JavaScript/Referencia/Objetos_globales/JSON -tags: - - JSON - - JavaScript - - NeedsTranslation - - Object - - TopicStub -translation_of: Web/JavaScript/Reference/Global_Objects/JSON ---- -
{{JSRef("Objetos_globales", "JSON")}}
- -

Resumen

- -

El objeto JSON contiene métodos para analizar JavaScript Object Notation (JSON) y convertir valores a JSON. No puede ser llamado o construído, y aparte de estas dos propiedades, no tiene funcionalidad interesante por sí mismo.

- -

Descripción

- -

JavaScript Object Notation

- -

JSON es una sintaxis para serializar objetos, arreglos, números, cadenas, booleanos y nulos. Está basado sobre sintaxis JavaScript pero es diferente a ella: algo JavaScript no es JSON, y algo JSON no es JavaScript. Mira también: JSON: The JavaScript subset that isn't.

- - - - - - - - - - - - - - - - - - - - - - - -
Diferencias entre JavaScript y JSON
Tipo JavaScriptDiferencia JSON
Objetos y arreglos -

Los nombres de las propiedades deben tener doble comilla; las comas finales están prohibidas.

-
NúmerosLos ceros a la izquierda están prohibidos; un punto decimal debe ser seguido al menos por un dígito.
Cadenas -

Solo un limitado conjunto de caracteres pueden ser de escape; ciertos caracteres de control estan prohibidos; los caracteres de separador de linea Unicode (U+2028) y el separador de parrafo (U+2029) son permitidos; las cadenas deben estar entre comillas dobles. Mira el siguiente ejemplo donde {{jsxref("JSON.parse")}} funciona bien y un{{jsxref("SyntaxError")}} es generado cuando se evalua el codigo como JavaScript:

- -
-var code = '"\u2028\u2029"';
-JSON.parse(code); // works fine
-eval(code); // fails
-
- -

La sintaxis JSON completa es la siguiente:

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

Espacios en blanco insignificantes pueden estar presentes en cualquier lugar excepto en un JSONNumber (los números no deben contener ningún espacio) o en una JSONString (donde es interpretado como el caracter correspondiente en la cadena, o podría causar un error). Los caracteres de Tabulación (U+0009), de retorno de carro (U+000D), de nueva línea (U+000A), y de espacio (U+0020) son los únicos caracteres de espacios en blanco válidos.

- -

Métodos

- -
-
{{jsxref("JSON.parse()")}}
-
Analiza una cadena de texto JSON, opcionalmente transformando el valor producido y sus propiedades, retornando el valor.
-
{{jsxref("JSON.stringify()")}}
-
Devuelve un string JSON correspondiente al valor especificado, incluyendo opcionalmente ciertas propiedades o reemplazando valores de propiedades de la manera definida por el usuario.
-
- -

Polyfill

- -

El objeto JSON no es soportado por navegadores antiguos. Se puede solucionar esto insertando el siguiente código al inicio del script, permitiendo usar el objeto JSON en navegadores que no soportan su implementación de forma nativa (por ejemplo en Internet Explorer 6).

- -

El siguiente algoritmo es una imitación del objeto JSON nativo:

- -
if (!window.JSON) {
-  window.JSON = {
-    parse: function (sJSON) { return eval("(" + sJSON + ")"); },
-    stringify: function (vContent) {
-      if (vContent instanceof Object) {
-        var sOutput = "";
-        if (vContent.constructor === Array) {
-          for (var nId = 0; nId < vContent.length; sOutput += this.stringify(vContent[nId]) + ",", nId++);
-            return "[" + sOutput.substr(0, sOutput.length - 1) + "]";
-        }
-        if (vContent.toString !== Object.prototype.toString) {
-          return "\"" + vContent.toString().replace(/"/g, "\\$&") + "\"";
-        }
-        for (var sProp in vContent) {
-          sOutput += "\"" + sProp.replace(/"/g, "\\$&") + "\":" + this.stringify(vContent[sProp]) + ",";
-        }
-        return "{" + sOutput.substr(0, sOutput.length - 1) + "}";
-     }
-     return typeof vContent === "string" ? "\"" + vContent.replace(/"/g, "\\$&") + "\"" : String(vContent);
-    }
-  };
-}
-
- -

Los objectos JSON2 y JSON3 son mas complejos que el objeto JSON ya que manejan polyfills.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.12', 'JSON')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-json-object', 'JSON')}}{{Spec2('ES6')}}
- -

Compatibilidad con navegadores

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{ CompatVersionUnknown() }}{{ CompatGeckoDesktop("1.9.1") }}8.010.54.0
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatGeckoMobile("1.0") }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
-
- -

Basado en Kangax's compat table.

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/json/parse/index.html b/files/es/web/javascript/referencia/objetos_globales/json/parse/index.html deleted file mode 100644 index d8816fe8ff..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/json/parse/index.html +++ /dev/null @@ -1,178 +0,0 @@ ---- -title: JSON.parse() -slug: Web/JavaScript/Referencia/Objetos_globales/JSON/parse -tags: - - ECMAScript5 - - JSON - - JavaScript - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/JSON/parse ---- -
{{JSRef("Global_Objects", "JSON")}}
- -

Resumen

- -

El método JSON.parse() analiza una cadena de texto como JSON, transformando opcionalmente  el valor producido por el análisis.

- -

Sintaxis

- -
JSON.parse(text[, reviver])
- -

Parámetros

- -
-
text
-
El texto que se convertirá a JSON. Vea el objeto {{jsxref("JSON")}} para una descripción de la sintaxis JSON.
-
reviver {{optional_inline()}}
-
Si una función, prescribe cómo se transforma el valor producido originalmente por el parsing, antes de retornar.
-
- -

Returns

- -

Retorna el objeto que se corresponde con el texto JSON entregado.

- -

Exceptions

- -

Lanza una excepción {{jsxref("SyntaxError")}} si la cadena a transformar no es un JSON válido.

- -

Ejemplos

- -

Ejemplo: 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
-
- -

Ejemplo: Usando el parámetro reviver

- -

Si se especifica un reviver, el valor computado por el parsing es transformado antes de retornar. Específicamente, el valor computado, y todas sus propiedades (comenzando con las propiedades más anidadas y siguiendo al propio valor original), son individualmente ejecutados a través del reviver, el cual es llamado con el objeto que contiene la propiedad que está siendo procesada como this y con el nombre de la propiedad como cadena y el valor de la propiedad como argumentos. Si la función reviver retorna undefined (o no retorna algún valor, por ejemplo: si la ejecución cae el final de la función), la propiedad es eliminada del objeto. De otra manera, la propiedad es redefinidad para ser el valor de retorno.

- -

El reviver es llamada último con la cadena vacía y el valor más alto para permitir la transformación del valor más alto. Asegúrese de manejar este caso adecuadamente, por lo general mediante la devolución del valor proporcionado, o JSON.parse will retorna undefined.

- -
JSON.parse('{"p": 5}', function (k, v) {
-    if(k === "") return v;     // if topmost value, return it,
-    return v * 2;              // else return v * 2.
-});                            // { p: 10 }
-
-JSON.parse('{"1": 1, "2": 2,"3": {"4": 4, "5": {"6": 6}}}', function (k, v) {
-    console.log(k);            // log the current property name, the last is "".
-    return v;                  // return the unchanged property value.
-});
-
-// 1
-// 2
-// 4
-// 6
-// 5
-// 3
-// ""
-
- -

JSON.parse() no admite comas finales

- -
// ambos lanzarán un SyntaxError
-JSON.parse('[1, 2, 3, 4, ]');
-JSON.parse('{"foo" : 1, }');
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.12.2', 'JSON.parse')}}{{Spec2('ES5.1')}}Definición inicial.
- Implementado en JavaScript 1.7.
{{SpecName('ES6', '#sec-json.parse', 'JSON.parse')}}{{Spec2('ES6')}} -

 

-
{{SpecName('ESDraft', '#sec-json.parse', 'JSON.parse')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de navegadores

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{ CompatVersionUnknown() }}{{ CompatGeckoDesktop("1.9.1") }}8.010.54.0
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatGeckoMobile("1.0") }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
-
- -

Based on Kangax's compat table.

- -

Especificaciones Gecko

- -

Comenzando con Gecko 29 {{geckoRelease("29")}}, unas cadenas JSON malformadas producen un mensaje de error más detallado que contiene el número de línea y columna que provocó el error de parsing. Esto es útil cuando se está haciendo debug de un JSON grande.

- -
JSON.parse('[1, 2, 3,]')
-// SyntaxError: JSON.parse: unexpected character at
-// line 1 column 10 of the JSON data
-
- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/json/stringify/index.html b/files/es/web/javascript/referencia/objetos_globales/json/stringify/index.html deleted file mode 100644 index 13f508d7f7..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/json/stringify/index.html +++ /dev/null @@ -1,265 +0,0 @@ ---- -title: JSON.stringify() -slug: Web/JavaScript/Referencia/Objetos_globales/JSON/stringify -tags: - - JSON - - JavaScript - - Method - - stringify -translation_of: Web/JavaScript/Reference/Global_Objects/JSON/stringify ---- -

{{JSRef}}

- -

El método JSON.stringify() convierte un objeto o valor de JavaScript en una cadena de texto JSON, opcionalmente reemplaza valores si se indica una función de reemplazo, o si se especifican las propiedades mediante un array de reemplazo.

- -
{{EmbedInteractiveExample("pages/js/json-stringify.html")}}
- -

Sintaxis

- -
JSON.stringify(value[, replacer[, space]])
- -

Parámetros

- -
-
value
-
El valor que será convertido a una cadena JSON.
-
replacer{{Optional_Inline}}
-
Una función que altera el comportamiento del proceso de conversión a cadena de texto, o un array de objetos {{JSxRef("String")}} o {{JSxRef("Number")}} que representan una lista de elementos válidos que se incluyen en la cadena JSON. Si este valor es {{JSxRef("null")}} o no se define, todas las propiedades del objeto son incluidas en la cadena de texto JSON resultante.
-
space{{Optional_Inline}}
-
Un objeto de tipo {{JSxRef("String")}} o {{JSxRef("Number")}} que se utiliza para insertar un espacio en blanco dentro de la cadena de salida JSON para mejorar su legibilidad. -

Si es de tipo Number, indica el número de espacios a usar como espacios en blanco; este número está limitado se limita a 10 (si es mayor, el valor es sólo 10). Los valores inferiores a 1 indican que no se deben utilizar espacios.

- -

Si es de tipo String, la cadena de texto (o sus 10 primeros caracteres, si es mayor) se utiliza como espacios en blanco. Si este parámetro no se define o es {{JSxRef("null")}}, no se utilizará ningún espacio en blanco.

-
-
- -

Valor devuelto

- -

Una cadena de texto JSON que representa el valor dado.

- -

Excepciones

- -

Lanza una excepción {{JSxRef("TypeError")}} ("cyclic object value") cuando encuentra una referencia circular.

- -

Descripción

- -

JSON.stringify convierte un valor a notación JSON representándolo:

- - - -
JSON.stringify({});                    // '{}'
-JSON.stringify(true);                  // 'true'
-JSON.stringify('foo');                 // '"foo"'
-JSON.stringify([1, 'false', false]);   // '[1,"false",false]'
-JSON.stringify([NaN, null, Infinity]); // '[null,null,null]'
-JSON.stringify({ x: 5 });              // '{"x":5}'
-
-JSON.stringify(new Date(2006, 0, 2, 15, 4, 5))
-// '"2006-01-02T15:04:05.000Z"'
-
-JSON.stringify({ x: 5, y: 6 });
-// '{"x":5,"y":6}'
-JSON.stringify([new Number(3), new String('false'), new Boolean(false)]);
-// '[3,"false",false]'
-
-// Elementos de array identificados por string no son enumerables y no tienen sentido en JSON
-let a = ['foo', 'bar'];
-a['baz'] = 'quux';      // a: [ 0: 'foo', 1: 'bar', baz: 'quux' ]
-JSON.stringify(a);
-// '["foo","bar"]'
-
-JSON.stringify({ x: [10, undefined, function(){}, Symbol('')] });
-// '{"x":[10,null,null,null]}'
-
-// Estructuras de datos standard
-JSON.stringify([new Set([1]), new Map([[1, 2]]), new WeakSet([{a: 1}]), new WeakMap([[{a: 1}, 2]])]);
-// '[{},{},{},{}]'
-
-// TypedArray
-JSON.stringify([new Int8Array([1]), new Int16Array([1]), new Int32Array([1])]);
-// '[{"0":1},{"0":1},{"0":1}]'
-JSON.stringify([new Uint8Array([1]), new Uint8ClampedArray([1]), new Uint16Array([1]), new Uint32Array([1])]);
-// '[{"0":1},{"0":1},{"0":1},{"0":1}]'
-JSON.stringify([new Float32Array([1]), new Float64Array([1])]);
-// '[{"0":1},{"0":1}]'
-
-// toJSON()
-JSON.stringify({ x: 5, y: 6, toJSON(){ return this.x + this.y; } });
-// '11'
-
-// Símbolos:
-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';
-  }
-});
-// undefined
-
-// Propiedades no enumerables:
-JSON.stringify( Object.create(null, { x: { value: 'x', enumerable: false }, y: { value: 'y', enumerable: true } }) );
-// '{"y":"y"}'
-
- -

El parámetro replacer

- -

El parámetro replacer (de reemplazo) puede ser tanto una función como o un array.

- -

Como una función toma dos parámetros: el valor y la clave que van a ser procesados. El objeto al cual pertenece la clave representa el parametro this del reemplazo.

- -

Inicialmente es llamado con una clave vacía y representa el objeto que se va a procesar, y solo después es llamado por cada propiedad en el objeto o array que se va a procesar.

- -

Devuelve el valor que se va a agregar a la cadena JSON, de la siguiente manera:

- - - -
Nota: No se puede usar la función de reemplazo para borrar los valores de un array. Si se devuelve undefined o una función, entonces se usara null en su lugar.
- -

Ejemplo con una función

- -
function replacer(key, value) {
-  // Filtrando propiedades 
-  if (typeof value === "string") {
-    return undefined;
-  }
-  return value;
-}
-
-var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};
-var jsonString = JSON.stringify(foo, replacer);
-// '{"week":45, "month":7}'
-
- -

El resultado en una cadena JSON sería:  {"week":45,"month":7}.

- -

Ejemplo con un array

- -

Si el reemplazo es un array, los valores indican los nombres de las propiedades del objeto que se va a incluir en la cadena JSON resultado.

- -
JSON.stringify(foo, ['week', 'month']);  
-// '{"week":45,"month":7}', sólo mantiene las propiedades de "week" y de "month"
-
- -

Argumento space

- -

Este argumento puede ser empleado para controlar el espaciado en la cadena final. Si es un número, los niveles sucesivos del proceso serán identados cada uno por tantos espacios como se indique (hasta 10). Si es una cadena, serán identados con dicha cadena (o los primeros diez caracteres de la misma).

- -
JSON.stringify({ a: 2 }, null, ' ');
-// regresa la cadena de texto:
-// '{
-//  "a": 2
-// }'
- -

Usar el carácter tabulador simula la apariencia de impresión:

- -
JSON.stringify({ uno: 1, dos : 2 }, null, '\t')
-// devuelve el string:
-// '{            \
-//     "uno": 1, \
-//     "dos": 2  \
-// }' 
- -

Comportamiento toJSON()

- -

Si un objeto que sera estringificado tiene una propiedad llamada toJSON donde su valor es una función, entonces el método toJSON modifica el comportamiento de la estringificación JSON: en lugar del objeto que esta siendo serializado, el valor retornado por el método toJSON será serializado cuando el mismo sea llamado. Por ejemplo:

- -
var obj = {
-  foo: 'foo',
-  toJSON: function () {
-    return 'bar';
-  }
-};
-var json = JSON.stringify({x: obj}); // '{"x":"bar"}'.
-
- -

Ejemplo de como usar JSON.stringify() con localStorage

- -

En dado caso en el cual se requiera que un objeto creado por el usuario y al cual se le permita ser restaurado incluso cuando el navegador ha sido cerrado, el siguiente ejemplo es un modelo de la aplicabilidad del metodo JSON. stringify().

- -
-

Las funciones no son un tipo de dato valido por lo cual estas no funcionaran. Algunos objetos como tipo DATE, se convertiran a cadenas de texto despues de ejecutar JSON.parse().

-
- -
// Creando un ejemplo de JSON
-var session = {
-  'screens': [],
-  'state': true
-};
-session.screens.push({ 'name': 'screenA', 'width': 450, 'height': 250 });
-session.screens.push({ 'name': 'screenB', 'width': 650, 'height': 350 });
-session.screens.push({ 'name': 'screenC', 'width': 750, 'height': 120 });
-session.screens.push({ 'name': 'screenD', 'width': 250, 'height': 60 });
-session.screens.push({ 'name': 'screenE', 'width': 390, 'height': 120 });
-session.screens.push({ 'name': 'screenF', 'width': 1240, 'height': 650 });
-
-// Convirte el JSON string con JSON.stringify()
-// entonces guarda con localStorage con el nombre de la sesión
-localStorage.setItem('session', JSON.stringify(session));
-
-// Ejemplo de como transformar el String generado usando
-// JSON.stringify() y guardándolo en localStorage como objeto JSON otra vez
-var restoredSession = JSON.parse(localStorage.getItem('session'));
-
-// Ahora la variable restoredSession contiene el objeto que fue guardado
-// en localStorage
-console.log(restoredSession);
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.12.3', 'JSON.stringify')}}{{Spec2('ES5.1')}}Definición incial.
- Implementada en JavaScript 1.7.
{{SpecName('ES6', '#sec-json.stringify', 'JSON.stringify')}}{{Spec2('ES6')}} -

 

-
{{SpecName('ESDraft', '#sec-json.stringify', 'JSON.stringify')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -

{{Compat("javascript.builtins.JSON.stringify")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/map/clear/index.html b/files/es/web/javascript/referencia/objetos_globales/map/clear/index.html deleted file mode 100644 index 67e8288ad2..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/map/clear/index.html +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Map.prototype.clear() -slug: Web/JavaScript/Referencia/Objetos_globales/Map/clear -translation_of: Web/JavaScript/Reference/Global_Objects/Map/clear ---- -
{{JSRef}}
- -

El método clear() elimina todos los elementos de un objeto Map.

- -

Sintaxis

- -
myMap.clear();
- -

Ejemplos

- -

Usando el método clear

- -
var myMap = new Map();
-myMap.set("bar", "baz");
-myMap.set(1, "foo");
-
-myMap.size;       // 2
-myMap.has("bar"); // true
-
-myMap.clear();
-
-myMap.size;       // 0
-myMap.has("bar")  // false
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoObservaciones
{{SpecName('ES6', '#sec-map.prototype.clear', 'Map.prototype.clear')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-map.prototype.clear', 'Map.prototype.clear')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico.38{{CompatGeckoDesktop("19.0")}}11257.1
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico.{{CompatNo}}38{{CompatGeckoMobile("19.0")}}{{CompatNo}}{{CompatNo}}8
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/map/delete/index.html b/files/es/web/javascript/referencia/objetos_globales/map/delete/index.html deleted file mode 100644 index cbd6e02a50..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/map/delete/index.html +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: Map.prototype.delete() -slug: Web/JavaScript/Referencia/Objetos_globales/Map/delete -translation_of: Web/JavaScript/Reference/Global_Objects/Map/delete ---- -
{{JSRef}}
- -

El método delete() elimina el elemento especificado de un objeto Map.

- -

Sintaxis

- -
myMap.delete(clave);
- -

Parámetros

- -
-
clave
-
Requerido. La clave del elemento a eliminar del objeto Map.
-
- -

Valor de retorno

- -

Retorna true si el elemento existe en el objeto Map objecty fue eliminado, o false si el elemento no existe.

- -

Ejemplo

- -

Usando el método delete

- -
var myMap = new Map();
-myMap.set("bar", "foo");
-
-myMap.delete("bar"); // Retorna true. Eliminado con éxito.
-myMap.has("bar");    // Retorna false. El elemento "bar" ya no está presente.
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoObservaciones
{{SpecName('ES6', '#sec-map.prototype.delete', 'Map.prototype.delete')}}{{Spec2('ES6')}}Definición inicial
{{SpecName('ESDraft', '#sec-map.prototype.delete', 'Map.prototype.delete')}}{{Spec2('ESDraft')}}
- -

Compatibilidad con navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
PrestaciónChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico38{{CompatGeckoDesktop("13.0")}}11257.1
-
- -
- - - - - - - - - - - - - - - - - - - - - -
PrestaciónAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatNo}}38{{CompatGeckoMobile("13.0")}}{{CompatNo}}{{CompatNo}}8
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/map/entries/index.html b/files/es/web/javascript/referencia/objetos_globales/map/entries/index.html deleted file mode 100644 index 76a4ca10b7..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/map/entries/index.html +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Map.prototype.entries() -slug: Web/JavaScript/Referencia/Objetos_globales/Map/entries -translation_of: Web/JavaScript/Reference/Global_Objects/Map/entries ---- -
{{JSRef}}
- -

El método entries() retorna un nuevo objeto Iterator que contiene los pares [clave, valor] para cada elemento en el objeto Map en orden de inserción.

- -

Sintaxis

- -
myMap.entries()
- -

Ejemplos

- -

Usando entries()

- -
var myMap = new Map();
-myMap.set("0", "foo");
-myMap.set(1, "bar");
-myMap.set({}, "baz");
-
-var mapIter = myMap.entries();
-
-console.log(mapIter.next().value); // ["0", "foo"]
-console.log(mapIter.next().value); // [1, "bar"]
-console.log(mapIter.next().value); // [Object, "baz"]
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoObservaciones
{{SpecName('ES6', '#sec-map.prototype.entries', 'Map.prototype.entries')}}{{Spec2('ES6')}}Definición
{{SpecName('ESDraft', '#sec-map.prototype.entries', 'Map.prototype.entries')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
PrestaciónChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support38{{ CompatGeckoDesktop("20") }}{{CompatNo}}257.1
-
- -
- - - - - - - - - - - - - - - - - - - - - -
PrestaciónAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico.{{CompatNo}}38{{CompatGeckoMobile("20")}}{{CompatNo}}{{CompatNo}}8
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/map/foreach/index.html b/files/es/web/javascript/referencia/objetos_globales/map/foreach/index.html deleted file mode 100644 index 00d8e85ff8..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/map/foreach/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Map.prototype.forEach() -slug: Web/JavaScript/Referencia/Objetos_globales/Map/forEach -translation_of: Web/JavaScript/Reference/Global_Objects/Map/forEach ---- -
{{JSRef}}
- -

El método forEach() ejecuta una función por cada par clave / valor en el objeto Map, en orden de inserción.

- -

Sintaxis

- -
myMap.forEach(callback[, thisArg])
- -

Parámetros

- -
-
callback
-
Función ejecutada en cada elemento.
-
thisArg
-
Valor a usar por la funcion callback.
-
- -

Valor de Retorno

- -

{{jsxref("undefined")}}.

- -

Descripción

- -

El método forEach ejecuta la devolución de llamada (callback) proporcionada una vez para cada clave del mapa que realmente exista. No se invoca para las claves que se han eliminado. Sin embargo, se ejecuta para los valores que están presentes pero tienen el valor indefinido (undefined).

- -

La función (callback) es invocada con 3 argumentos:

- - - -

Si se provee un parámetro thisArg al método forEach, pasará al callback cuando sea invocado, para ser utilizado como su valor this. De otra manera, el valor undefined pasará para ser usado como su valor this. El valor this finalmente observable por el callback se determina de acuerdo a las reglas usuales para determinar la visibilidad de this por una función.

- -

Cada valor es usado una vez, excepto en este caso cuando es eliminado y agregado de nuevo antes de que el forEach haya terminado. callback no es invocado para valores eliminados antes de que sean usados. 

- -

El método forEach ejecuta la función callback una vez para cada elemento en el objeto Map; No se retornan valores.

- -

Ejemplos

- -

Imprimiendo el contenido de un objeto Map

- -

El siguiente código imprime una línea por cada elemento en el objeto Map:

- -
function logMapElements(value, key, map) {
-    console.log(`m[${key}] = ${value}`);
-}
-new Map([['foo', 3], ['bar', {}], ['baz', undefined]]).forEach(logMapElements);
-// logs:
-// "m[foo] = 3"
-// "m[bar] = [object Object]"
-// "m[baz] = undefined"
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-map.prototype.foreach', 'Map.prototype.forEach')}}{{Spec2('ES2015')}}Definición Inicial.
{{SpecName('ESDraft', '#sec-map.prototype.foreach', 'Map.prototype.forEach')}}{{Spec2('ESDraft')}}
- -

Compatibilidad con navegadores

- - - -

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

- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/map/get/index.html b/files/es/web/javascript/referencia/objetos_globales/map/get/index.html deleted file mode 100644 index 7f53d850e3..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/map/get/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Map.prototype.get() -slug: Web/JavaScript/Referencia/Objetos_globales/Map/get -tags: - - JavaScript - - Map -translation_of: Web/JavaScript/Reference/Global_Objects/Map/get ---- -
{{JSRef}}
- -

El método get() devuelve un elemento específico de un objeto Map.

- -
{{EmbedInteractiveExample("pages/js/map-prototype-get.html")}}
- - - -

Sintaxis

- -
miMapa.get(clave);
- -

Parametros

- -
-
clave
-
Requerido. La clave del elemento del objeto Map que queremos obtener.
-
- -

Valor devuelto

- -

Devuelve el elemento asociado a la clave indicada o undefined si la clave no ha sido encontrada en el objeto Map.

- -

Ejemplos

- -

Usando el método get

- -
var miMapa = new Map();
-miMapa.set('bar', 'foo');
-
-miMapa.get('bar');  // Devuelve "foo".
-miMapa.get('baz');  // Devuelve undefined.
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
{{SpecName('ES2015', '#sec-map.prototype.get', 'Map.prototype.get')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-map.prototype.get', 'Map.prototype.get')}}{{Spec2('ESDraft')}} 
- -

Compatiblidad con navegadores

- - - -

{{Compat("javascript.builtins.Map.get")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/map/has/index.html b/files/es/web/javascript/referencia/objetos_globales/map/has/index.html deleted file mode 100644 index c556a00dae..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/map/has/index.html +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Map.prototype.has() -slug: Web/JavaScript/Referencia/Objetos_globales/Map/has -translation_of: Web/JavaScript/Reference/Global_Objects/Map/has ---- -
{{JSRef}}
- -

El método has() devuelve un booleano indicando si el elemento con la llave especificada existe o no.

- -
{{EmbedInteractiveExample("pages/js/map-prototype-has.html")}}
- - - -

Sintaxis

- -
myMap.has(key)
- -

Parameteros

- -
-
key
-
La llave del elemento a probar si esta presente en el objeto Map.
-
- -

Valor devuelto

- -

true si el elemento con la llave especificada existe en el objeto Map; de lo contrario false.

- -

Ejemplos

- -

Usando has()

- -
let myMap = new Map()
-myMap.set('bar', "foo")
-
-myMap.has('bar')   // returns true
-myMap.has('baz')   // returns false
-
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-map.prototype.has', 'Map.prototype.has')}}
- -

Browser compatibility

- - - -

{{Compat("javascript.builtins.Map.has")}}

- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/map/index.html b/files/es/web/javascript/referencia/objetos_globales/map/index.html deleted file mode 100644 index e3ad7812b7..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/map/index.html +++ /dev/null @@ -1,213 +0,0 @@ ---- -title: Map -slug: Web/JavaScript/Referencia/Objetos_globales/Map -tags: - - ECMAScript2015 - - JavaScript - - Map -translation_of: Web/JavaScript/Reference/Global_Objects/Map ---- -
{{JSRef("Global_Objects", "Map")}}
- -

Resumen

- -

El objeto Map almacena pares clave/valor. Cualquier valor (tanto objetos como {{Glossary("Primitive", "valores primitivos")}}) pueden ser usados como clave o valor.

- -

Sintaxis

- -
new Map([iterable])
-
- -

Parámetros

- -
-
iterable
-
Iterable es un array o cualquier otro objeto iterable cuyos elementos son pares clave-valor (arrays de 2 elementos). Cada par clave-valor será agregado al nuevo Map.
-
- -

Descripción

- -

Un objeto Map puede iterar sobre sus elementos en orden de inserción. Un bucle for..of devolverá un array de [clave, valor] en cada iteración.

- -

Cabe destacar que un Map el cual es un mapa de un objeto, especialmente un diccionario de diccionarios, solo se va a mapear en el orden de inserción del objeto — el cual es aleatorio y no ordenado.

- -

Igualdad de claves

- -

La igualdad de claves esta basada en el algoritmo "SameValueZero": NaN es considerado lo mismo que NaN (sin importar que NaN !== NaN) y todos los otros operadores son considerados iguales de acuerdo a la semantica del operador ===. En las primeras versiones de ECMAScript 6 -0 y +0 eran considarados distintos (even though -0 === +0), esto fue cambiado en posteriores versiones y ha sido implementado en Gecko 29 {{geckoRelease("29")}} ({{bug("952870")}}) and a recent nightly Chrome.

- -

Objetos y mapas comparados

- -

Los {{jsxref("Object", "Objetos")}} son similares a los Maps en cuanto a que ambos permiten establecer claves a valores, recuperar dichos valores, eliminar claves, y detectar si existe algo almacenado en una clave determinada. Por esto, los Objects han sido usados históricamente como Maps; no obstante, hay diferencias importantes entre  Objects y Maps que hacen mejor usar un  Map  en la mayoría de casos.

- - - -

Propiedades

- -
-
Map.length
-
El valor de la propiedad de longitud es 0
-
{{jsxref("Map.@@species", "get Map[@@species]")}}
-
La función constructor que se usa para crear objetos derivados.
-
{{jsxref("Map.prototype")}}
-
Representa el prototipo para el constructor de Map. Permite añadir propiedades a todos los objetos Map.
-
- -

Instancias de Map

- -

Todas las instancias de Map heredan de {{jsxref("Map.prototype")}}.

- -

Propiedades

- -

{{page('es/docs/Web/JavaScript/Referencia/Objetos_globales/Map/prototype','Propiedades')}}

- -

Métodos

- -

{{page('es/docs/Web/JavaScript/Referencia/Objetos_globales/Map/prototype','Métodos')}}

- -

Ejemplos

- -

Ejemplo: Usando el objeto Map

- -
var miMapa = new Map();
-
-var claveObj = {},
-    claveFunc = function () {},
-    claveCadena = "una cadena";
-
-// asignando valores
-miMapa.set(claveCadena, "valor asociado con 'una cadena'");
-miMapa.set(claveObj, "valor asociado con claveObj");
-miMapa.set(claveFunc, "valor asociado with claveFunc");
-
-miMapa.size; // 3
-
-// obteniendo los valores
-miMapa.get(claveCadena);    // "valor asociado con 'una cadena'"
-miMapa.get(claveObj);       // "valor asociado con claveObj"
-miMapa.get(claveFunc);      // "valor asociado con claveFunc"
-
-miMapa.get("una cadena");   // ""valor asociado con 'una cadena'"
-                         // porque claveCadena === 'una cadena'
-miMapa.get({});           // undefined, porque claveObj !== {}
-miMapa.get(function() {}) // undefined, porque claveFunc !== function () {}
-
- -

Ejemplo: Usando NaN como claves de Map

- -

NaN también puede ser usado como una clave. Aún cuando cada clave NaN no es igual a sí misma (NaN !== NaN es verdadera), el siguiente ejemplo funciona, porque las claves NaNs NaNs no son distinguibles unas de otras:

- -
var miMapa = new Map();
-miMapa.set(NaN, "no es un número");
-
-miMapa.get(NaN); // "no es un número"
-
-var otroNaN = Number("foo");
-miMapa.get(otroNaN); // "no es un número"
-
- -

Ejemplo: Iterando Map con for..of

- -

Los Map pueden ser iterados usando un bucle for..of:

- -
var miMapa = new Map();
-miMapa.set(0, "cero");
-miMapa.set(1, "uno");
-for (var [clave, valor] of miMapa) {
-  alert(clave + " = " + valor);
-}
-// Mostrará 2 alertas; primero con "0 = cero" y segundo con "1 = uno"
-
-for (var clave of miMapa.keys()) {
-  alert(clave);
-}
-// Mostrará 2 alertas; primero con "0" y segundo con "1"
-
-for (var valor of miMapa.values()) {
-  alert(valor);
-}
-// Mostrará 2 alertas; primero con "cero" y segundo con "uno"
-
-for (var [clave, valor] of miMapa.entries()) {
-  alert(clave + " = " + valor);
-}
-// Mostrará 2 alertas; primero con "0 = cero" y segundo con "1 = uno"
-
-miMapa.forEach(function(valor, clave, miMapa) {
-  alert(clave + " = " + valor);
-})
-// Mostrará 2 alertas; primero con "0 = cero" y segundo con "1 = uno"
-
- -

Iterando Maps usando forEach()

- -

Los Map pueden ser iterados usando el método forEach():

- -
miMapa.forEach(function(valor, clave) {
-  console.log(clave + ' = ' + valor);
-});
-// Mostrará 2 logs; el primero con "0 = cero" y el segundo con "1 = uno"
- -

Ejemplo: Relación con los objetos Array

- -
var kvArray = [["clave1", "valor1"], ["clave2", "valor2"]];
-
-// El constructor por defecto de Map para transforar un Array 2D (clave-valor) en un mapa
-var miMapa = new Map(kvArray);
-
-miMapa.get("clave1"); // devuelve "valor1"
-
-// Usando la función Array.from para transformar el mapa a un Array 2D clave-valor.
-console.log(Array.from(miMapa)); // Muestra exactamente el mismo Array que kvArray
-
-// O usando los iteradores de claves o valores y convirtiendo a array.
-console.log(Array.from(miMapa.keys())); // Muestra ["clave1", "clave2"]
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-map-objects', 'Map')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-map-objects', 'Map')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con Navegadores

- -

 

- - - -

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

- -

 

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/map/keys/index.html b/files/es/web/javascript/referencia/objetos_globales/map/keys/index.html deleted file mode 100644 index 6f67e49dee..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/map/keys/index.html +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Map.prototype.keys() -slug: Web/JavaScript/Referencia/Objetos_globales/Map/keys -translation_of: Web/JavaScript/Reference/Global_Objects/Map/keys ---- -
{{JSRef}}
- -

El metodo keys() returna un nuevo objeto Iterator que contiene las llaves/keys por cada elemento en el objeto en orden de insercion.

- -

Syntax

- -
myMap.keys()
- -

Ejemplos

- -

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

Especificaciones

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES6', '#sec-map.prototype.keys', 'Map.prototype.keys')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-map.prototype.keys', 'Map.prototype.keys')}}{{Spec2('ESDraft')}} 
- -

Browser compatibility

- -

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

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/map/prototype/index.html b/files/es/web/javascript/referencia/objetos_globales/map/prototype/index.html deleted file mode 100644 index b255e65b69..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/map/prototype/index.html +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: Map.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/Map/prototype -translation_of: Web/JavaScript/Reference/Global_Objects/Map -translation_of_original: Web/JavaScript/Reference/Global_Objects/Map/prototype ---- -
{{JSRef}}
- -

La propiedad Map.prototype  representa el prototipo del constructor {{jsxref("Map")}}.

- -
{{js_property_attributes(0,0,0)}}
- -

Descripción

- -

La instancia de {{jsxref("Map")}} hereda de {{jsxref("Map.prototype")}}. Puedes utilizar el constructor del prototipo del objeto para agregar propiedades o métodos a todas las instancias de Map.

- -

Propiedades

- -
-
Map.prototype.constructor
-
Devuelve la función que creó el prototipo de una instancia. Esta es la función de {{jsxref("Map")}} por defecto.
-
{{jsxref("Map.prototype.size")}}
-
Devuelve el número de conjuntos de llave/valor en el objeto Map.
-
- -

Métodos

- -
-
{{jsxref("Map.prototype.clear()")}}
-
Elimina todos los conjuntos de llave/valor del objeto Map.
-
{{jsxref("Map.delete", "Map.prototype.delete(key)")}}
-
Elimina cualquier valor asociado a la llave y devuelve el valor que  Map.prototype.has(key) tenía previamente. Después  Map.prototype.has(key) devolverá false.
-
{{jsxref("Map.prototype.entries()")}}
-
Devuelve un nuevo objeto  Iterador que contiene un array de [llave, valor] para cada elemento en el objeto  Map en orden de inserción.
-
{{jsxref("Map.forEach", "Map.prototype.forEach(callbackFn[, thisArg])")}}
-
Llama a la callbackFn una vez por cada conjunto llave/valor presentes en cada objeto  Map, en orden de inserción. Si se le proporciona un parámetro thisArg a forEach, se usará como valor "this" para cada callback.
-
{{jsxref("Map.get", "Map.prototype.get(key)")}}
-
Devuelve el valor asociado a la  llave, o undefined si no tiene ninguno.
-
{{jsxref("Map.has", "Map.prototype.has(key)")}}
-
Devuelve un booleano que indica si un valor se ha asociado a la llave en el objeto Map o no se ha asociado.
-
{{jsxref("Map.prototype.keys()")}}
-
Devuelve un nuevo objeto  Iterador que contiene las llaves para cada elemento en el objeto Map en orden de inserción.
-
{{jsxref("Map.set", "Map.prototype.set(key, value)")}}
-
Establece un valor para la llave en el objeto Map. Devuelve el objeto  Map.
-
{{jsxref("Map.prototype.values()")}}
-
Devuelve un nuevo objeto  Iterador que contiene los valores para cada elemento en el objeto  Map en orden de inserción.
-
{{jsxref("Map.@@iterator", "Map.prototype[@@iterator]()")}}
-
Devuelve un nuevo objeto  Iterador que contiene un array de [llave, valor] para cada elemento en el objeto Map en orden de inserción.
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-map.prototype', 'Map.prototype')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-map.prototype', 'Map.prototype')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad entre navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico38{{CompatVersionUnknown}}{{ CompatGeckoDesktop("13") }}11257.1
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatNo}}38{{CompatVersionUnknown}}{{CompatGeckoMobile("13")}}{{CompatNo}}{{CompatNo}} -

8

-
-
- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/map/set/index.html b/files/es/web/javascript/referencia/objetos_globales/map/set/index.html deleted file mode 100644 index 27faa5a1a6..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/map/set/index.html +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: Map.prototype.set() -slug: Web/JavaScript/Referencia/Objetos_globales/Map/set -tags: - - ECMAScript6 - - JavaScript - - Mapa - - Prototype - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Map/set ---- -
{{JSRef}}
- -

El método set() agrega un nuevo elemento al objeto Map con la llave y el valor especificado.

- -

Syntax

- -
myMap.set(llave, valor);
- -

Parámetros

- -
-
llave
-
Requerido. La llave del elemento a agregar al objeto Map.
-
valor
-
Requerido. El valor del elemento a agregar al objeto Map.
-
- -

Valor de retorno

- -

El objeto Map.

- -

Ejemplos

- -

Usando el método set

- -
var miMapa = new Map();
-
-// Agregar nuevos elementos al mapa
-miMapa.set("bar", "foo");
-miMapa.set(1, "foobar");
-
-// Actualizar un elemento en el mapa
-miMapa.set("bar", "baz");
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES6', '#sec-map.prototype.set', 'Map.prototype.set')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-map.prototype.set', 'Map.prototype.set')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con Navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
CaracteríticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico38{{CompatGeckoDesktop("13.0")}}11257.1
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracteríticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatNo}}38{{CompatGeckoMobile("13.0")}}{{CompatNo}}{{CompatNo}}8
-
- -

Notas de compatibilidad

- - - -

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/map/size/index.html b/files/es/web/javascript/referencia/objetos_globales/map/size/index.html deleted file mode 100644 index 3ca4d446db..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/map/size/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Map.prototype.size -slug: Web/JavaScript/Referencia/Objetos_globales/Map/size -translation_of: Web/JavaScript/Reference/Global_Objects/Map/size ---- -
{{JSRef}}
- -

La propiedad evaluada size retorna el número de elementos en un objeto  {{jsxref("Map")}}.

- -

Descripción

- -

El valor de size es un entero representando cuántas entradas tiene el objeto Map. No hay definida una función de evalador set  para size; uted no puede cambiar esta propiedad.

- -

Ejemplos

- -

Usando size

- -
var myMap = new Map();
-myMap.set("a", "alpha");
-myMap.set("b", "beta");
-myMap.set("g", "gamma");
-
-myMap.size // 3
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoObservaciones
{{SpecName('ES6', '#sec-get-map.prototype.size', 'Map.prototype.size')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-get-map.prototype.size', 'Map.prototype.size')}}{{Spec2('ESDraft')}} 
- -

Compatibildad entre navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico38{{ CompatGeckoDesktop("19") }}{{ CompatIE("11") }}257.1
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatNo}}38{{CompatGeckoMobile("19")}}{{CompatNo}}{{CompatNo}}8
-
- -

Notas específicas para Gecko

- - - -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/map/values/index.html b/files/es/web/javascript/referencia/objetos_globales/map/values/index.html deleted file mode 100644 index c81b54dbe7..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/map/values/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Map.prototype.values() -slug: Web/JavaScript/Referencia/Objetos_globales/Map/values -tags: - - ECMAScript 2015 - - Iterador - - JavaScript - - Map - - Prototipo - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Map/values ---- -
{{JSRef}}
- -

El método values() devuelve un nuevo objeto Iterador que contiene los valores para cada elemento en el objeto Map en el mismo orden de inserción.

- -
{{EmbedInteractiveExample("pages/js/map-prototype-values.html")}}
- - - -

Sintaxis

- -
myMap.values()
- -

Valor devuelto

- -

Un nuevo objeto iterador {{jsxref("Map")}}.

- -

Ejemplos

- -

Utilizando values()

- -
var myMap = new Map();
-myMap.set('0', 'foo');
-myMap.set(1, 'bar');
-myMap.set({}, 'baz');
-
-var mapIter = myMap.values();
-
-console.log(mapIter.next().value); // "foo"
-console.log(mapIter.next().value); // "bar"
-console.log(mapIter.next().value); // "baz"
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-map.prototype.values', 'Map.prototype.values')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-map.prototype.values', 'Map.prototype.values')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad en navegadores

- - - -

{{Compat("javascript.builtins.Map.values")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/abs/index.html b/files/es/web/javascript/referencia/objetos_globales/math/abs/index.html deleted file mode 100644 index eb286dcc59..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/abs/index.html +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: Math.abs() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/abs -tags: - - JavaScript - - Math - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Math/abs ---- -
{{JSRef}}
- -

La función Math.abs() retorna el valor absoluto de un número, que es 

- -

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}

- -

Sintaxis

- -
Math.abs(x)
- -

Parámetros

- -
-
x
-
Un número.
-
-

Valor de retorno

- -

El valor absoluto del número dado.

- -

-
-
- -

Descripción

- -

Como abs() es un método estático de Math, deberías siempre usar Math.abs(), en lugar de un método de un objeto Math que crees (Math no es un constructor).

- -

Ejemplos

- -

Comportamiento de Math.abs()

- -

Pasando un string no-numérico o una variable {{jsxref("undefined")}}/empty retorna {{jsxref("NaN")}}. Pasando {{jsxref("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
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}}
- -

Compatibilidad en navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/acos/index.html b/files/es/web/javascript/referencia/objetos_globales/math/acos/index.html deleted file mode 100644 index 3280a9b17f..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/acos/index.html +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Math.acos() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/acos -tags: - - JavaScript - - Math - - Métodos - - Referências -translation_of: Web/JavaScript/Reference/Global_Objects/Math/acos ---- -
{{JSRef}}
- -

La función Math.acos() devuelve el arco coseno (en radianes) de un número que es

- -

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{ the unique } \; y \in [0; \pi] \, \text{such that} \; \cos(y) = x

- -

Sintaxis

- -
Math.acos(x)
- -

Parámetros

- -
-
x
-
Un número.
-
- -

Valor devuelto

- -

El arco coseno (en radianes) de un número dado si se encuentra entre -1 y 1; de otro modo, {{jsxref("NaN")}}.

- -

Descripción

- -

El método Math.acos() devuelve un valor numérico entre 0 y π radianes para x entre -1 y 1. Si el valor de x está fuera de este rango, devuelve {{jsxref("NaN")}}.

- -

Debido a que acos() es un método estático de Math, siempre debe usarse como Math.acos(), en vez de como un método de un objeto Math creado (Math no es un constructor).

- -

Ejemplos

- -

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 o mayores que 1, Math.acos() devuelve {{jsxref("NaN")}}.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
- -

Compatibilidad con navegador

- - - -

{{Compat("javascript.builtins.Math.acos")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/acosh/index.html b/files/es/web/javascript/referencia/objetos_globales/math/acosh/index.html deleted file mode 100644 index 8819e3c69a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/acosh/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Math.acosh() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/acosh -tags: - - JavaScript - - Math - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Math/acosh ---- -
{{JSRef}}
- -

La función Math.acosh() retorna el arco coseno hiperbólico de un número que es: 

- -

Para todo x mayor ó igual a 1,se cumple que : la funcion Math.acosh(x) = arcosh(x) = al único y mayor ó igual a 0 ; tal que; cosh(y) = x

- -

Sintaxis

- -
Math.acosh(x)
- -

Parámetros

- -
-
x
-
Un número.
-
- -

Valor retornado

- -

El arco coseno hiperbólico del número dado. Si el número es menor que 1, {{jsxref("NaN")}}.

- -

Descripción

- -

Como acosh() es un método estático de Math, siempre debe ser usado como Math.acosh(), en vez de como un método de un objeto Math creado (Math no es constructor).

- -

Ejemplos

- -

Utilizando Math.acosh()

- -
Math.acosh(-1);  // NaN
-Math.acosh(0);   // NaN
-Math.acosh(0.5); // NaN
-Math.acosh(1);   // 0
-Math.acosh(2);   // 1.3169578969248166
-
- -

Para valores menores que 1 Math.acosh() retorna {{jsxref("NaN")}}.

- -

Polyfill

- -

Para todo x1x mayor ó igual a 1, se tiene que el arcosh(x) = ln(x + la raiz cuadrada de(x cuadrado - 1))  y esto puede ser emulado con la siguiente funcion:

- -
Math.acosh = Math.acosh || function(x) {
-  return Math.log(x + Math.sqrt(x * x - 1));
-};
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónStatusComentario
{{SpecName('ES6', '#sec-math.acosh', 'Math.acosh')}}{{Spec2('ES6')}}Definición inicial.
{{ SpecName('ESDraft', '#sec-math.acosh', 'Math.acosh')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de navegador

- - - -

{{Compat("javascript.builtins.Math.acosh")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/asin/index.html b/files/es/web/javascript/referencia/objetos_globales/math/asin/index.html deleted file mode 100644 index 1a6c78d6a5..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/asin/index.html +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: Math.asin() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/asin -translation_of: Web/JavaScript/Reference/Global_Objects/Math/asin ---- -
{{JSRef}}
- -

La Funcion Math.asin() retorna El arco seno (en radianes) de un número, eso es.

- -

x[-1;1],Math.asin(x)=arcsin(x)= the unique y[-π2;π2]such thatsin(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

- -

Syntax

- -
Math.asin(x)
- -

Parametros

- -
-
x
-
Un Numero.
-
- -

Return value

- -

The arcsine (in radians) of the given number if it's between -1 and 1; otherwise, {{jsxref("NaN")}}.

- -

Descripcion

- -

The Math.asin() method returns a numeric value between -π2-\frac{\pi}{2} and π2\frac{\pi}{2} radians for x between -1 and 1. If the value of x is outside this range, it returns {{jsxref("NaN")}}.

- -

Because asin() is a static method of Math, you always use it as Math.asin(), rather than as a method of a Math object you created (Math is not a constructor).

- -

Ejemplos

- -

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

For values less than -1 or greater than 1, Math.asin() returns {{jsxref("NaN")}}.

- -

Espesificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspesificacionEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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')}} 
- -

Compatibilidad con Navegadores

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

Ver Mas

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/asinh/index.html b/files/es/web/javascript/referencia/objetos_globales/math/asinh/index.html deleted file mode 100644 index 9a3204a6a8..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/asinh/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Math.asinh() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/asinh -translation_of: Web/JavaScript/Reference/Global_Objects/Math/asinh ---- -
{{JSRef}}
- -

La función Math.asinh() retorna el arcoseno hyperbólico de un número, es decir

- -

Math.asinh(x)=arsinh(x)= the unique ysuch thatsinh(y)=x\mathtt{\operatorname{Math.asinh}(x)} = \operatorname{arsinh}(x) = \text{ the unique } \; y \; \text{such that} \; \sinh(y) = x

- -

Sintáxis

- -
Math.asinh(x)
- -

Parámetros

- -
-
x
-
Un número.
-
- -

Valor de retorno

- -

El arcoseno hyperbólico del número dado.

- -

Descripción

- -

Debido a que asinh() es un método estático de  Math, siempre hay que usarlo como Math.asinh(), en lugar de como un método del objeto Math que se hayamos creado (Math no es un constructor).

- -

Ejemplos

- -

Usos de Math.asinh()

- -
Math.asinh(1);  // 0.881373587019543
-Math.asinh(0);  // 0
-
- -

Polyfill

- -

As a quick and dirty hack the expression arsinh(x)=ln(x+x2+1)\operatorname {arsinh} (x) = \ln \left(x + \sqrt{x^{2} + 1} \right) may be used directly for a coarse emulation by the following function:

- -
Math.asinh = Math.asinh || function(x) {
-  if (x === -Infinity) {
-    return x;
-  } else {
-    return Math.log(x + Math.sqrt(x * x + 1));
-  }
-};
-
- -

Been formally correct it suffers from a number of issues related to floating point computations. Accurate result requires special handling of positive/negative, small/large arguments as it done e.g. in glibc or GNU Scientific Library.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES6', '#sec-math.asinh', 'Math.asinh')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-math.asinh', 'Math.asinh')}}{{Spec2('ESDraft')}} 
- -

Compatibilidades de buscadores

- - - -

{{Compat("javascript.builtins.Math.asinh")}}

- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/atan/index.html b/files/es/web/javascript/referencia/objetos_globales/math/atan/index.html deleted file mode 100644 index abb0453e6c..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/atan/index.html +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Math.atan() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/atan -tags: - - JavaScript - - Matemática - - Math - - Method - - Trigonometría -translation_of: Web/JavaScript/Reference/Global_Objects/Math/atan ---- -
{{JSRef}}
- -

La función Math.atan() retorna el arcotangente (en radianes) de un number, esto es

- -

Math.atan(x)=arctan(x)= el único y[-π2;π2] tal quetan(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

- -
{{EmbedInteractiveExample("pages/js/math-atan.html")}}
- - - -

Sintaxis

- -
Math.atan(x)
- -

Parámetros

- -
-
x
-
Un número.
-
- -

Valor de retorno

- -

El arcotangente (en radianes) de el número dado.

- -

Descripción

- -

El método Math.atan() retorna un valor numérico entre -π2-\frac{\pi}{2} y π2\frac{\pi}{2} radianes.

- -

Dado que atan() es un método estático de Math, siempre debes usarlo como Math.atan(), y no como un método de un objeto Math que hayas creado (Math no es un constructor).

- -

Ejemplos

- -

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
-
-// El ángulo que la línea [(0,0);(x,y)] forma con el eje-x en un sistema de coordenadas Cartesianas.
-Math.atan(y / x);
-
- -

Nota que podrías querer evitar usar ±Infinity por razones de estilo. En este caso, {{jsxref("Math.atan2()")}} con 0 como segundo argumento puede ser una mejor solución.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementada en 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')}} 
- -

Compatibilidad con el navegador

- - - -

{{Compat("javascript.builtins.Math.atan")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/atan2/index.html b/files/es/web/javascript/referencia/objetos_globales/math/atan2/index.html deleted file mode 100644 index 7b0dc147da..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/atan2/index.html +++ /dev/null @@ -1,141 +0,0 @@ ---- -title: Math.atan2() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/atan2 -translation_of: Web/JavaScript/Reference/Global_Objects/Math/atan2 ---- -
{{JSRef("Global_Objects", "Math")}}
- -

Resumen

- -

La función Math.atan2() retorna la arcotangente del cociente de los argumentos.

- -

Sintaxis

- -
Math.atan2(y, x)
- -

Parámetros

- -
-
y
-
Primer número.
-
x
-
Segundo número.
-
- -

Descripción

- -

El método Math.atan2() retorna un valor númerico entre -π y π representando el ángulo theta de un punto (x, y). Este es un ángulo en sentido antihorario, medido en radianes, entre el eje positivo X, y el punto (x, y). Tenga en cuenta que esta función recibe la coordenada Y como primer argumento y X como segundo.

- -

A la función Math.atan2() se  le pasan los argumentos x y y por separado, y a Math.atan() se le pasa la relación de los dos argumentos.

- -

Debido a que  atan2() es un método estatico de Math, siempre se debe usar Math.atan2(), en vez de usarlo como un método creado por el objeto Math (Math no es un contructor).

- -

Ejemplos

- -

Ejemplo: Usando 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.
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
ECMAScript 1st Edition.StandardInitial 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')}} 
- -

Compatibilidad con 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}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/atanh/index.html b/files/es/web/javascript/referencia/objetos_globales/math/atanh/index.html deleted file mode 100644 index 85022b4138..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/atanh/index.html +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Math.atanh() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/atanh -translation_of: Web/JavaScript/Reference/Global_Objects/Math/atanh ---- -
{{JSRef}}
- -

La función Math.atanh() nos retorna un arco hiperbólico de un numero, eso es:

- -

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{ el unico } \; y \; \text{de tal manera que} \; \tanh(y) = x

- -
{{EmbedInteractiveExample("pages/js/math-atanh.html")}}
- - - -

Sintaxis

- -
Math.atanh(x)
- -

Parametros

- -
-
x
-
Un numero.
-
- -

Retorna un valor

- -

El arco hiperbolico tangible nos otorga un numero.

- -

Descripción

- -

Por que atanh() es un metodo estatico de Math, tu siempre puedes usar eso como Math.atanh(), se puede usar como un metod de Math objeto que tu creaste (Math no es un constructor).

- -

Polimorfismo

- -

Para |x|<1\left|x\right| < 1, tenemos artanh(x)=12ln(1+x1-x)\operatorname {artanh} (x) = \frac{1}{2}\ln \left( \frac{1 + x}{1 - x} \right) por lo que esto puede estar emulado con la siguiente función:

- -
Math.atanh = Math.atanh || function(x) {
-  return Math.log((1+x)/(1-x)) / 2;
-};
-
- -

Ejemplos

- -

Using Math.atanh()

- -
Math.atanh(-2);  // NaN
-Math.atanh(-1);  // -Infinito
-Math.atanh(0);   // 0
-Math.atanh(0.5); // 0.5493061443340548
-Math.atanh(1);   // Infinito
-Math.atanh(2);   // NaN
-
- -

Para valores mayores a 1 o menores a -1, {{jsxref("NaN")}} retorna.

- -

Especificaciones

- - - - - - - - - - - - -
Specification
{{SpecName('ESDraft', '#sec-math.atanh', 'Math.atanh')}}
- -

Compatibilidad entre navegadores

- - - -

{{Compat("javascript.builtins.Math.atanh")}}

- -

Puedes leer

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/cbrt/index.html b/files/es/web/javascript/referencia/objetos_globales/math/cbrt/index.html deleted file mode 100644 index 350bc03054..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/cbrt/index.html +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Math.cbrt() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/cbrt -translation_of: Web/JavaScript/Reference/Global_Objects/Math/cbrt ---- -
{{JSRef}}
- -

La función Math.cbrt() nos retorna la raíz del cubo del numero, eso es

- -

Math.cbrt(x)=x3=the uniqueysuch thaty3=x\mathtt{Math.cbrt(x)} = \sqrt[3]{x} = \text{un unico} \; y \; \text{de tal manera que} \; y^3 = x

- -
{{EmbedInteractiveExample("pages/js/math-cbrt.html")}}
- - - -

Sintaxis

- -
Math.cbrt(x)
- -

Parametros

- -
-
x
-
Un numero
-
- -

Valor retornado

- -

La raíz cubica del numero proporcionado

- -

Descripción

- -

Al cbrt() ser un metodo estatico de Math, tu siempre la puedes usar como Math.cbrt(),un metodo de Math que es un objeto que se crea (Math no es un constructor).

- -

Poliformismo

- -

Para x0x \geq 0, tenemos x3=x1/3\sqrt[3]{x} = x^{1/3} esto puede ser emulado con la siguiente función:

- -
if (!Math.cbrt) {
-  Math.cbrt = (function(pow) {
-    return function cbrt(x){
-      // Esto asegura que numeros negativos sigan siendo negativos
-      return x < 0 ? -pow(-x, 1/3) : pow(x, 1/3);
-    };
-  })(Math.pow); // Localiza Math.pow para una mayor eficiencía
-}
-
- -

Ejemplos

- -

Usando Math.cbrt()

- -
Math.cbrt(NaN); // NaN
-Math.cbrt(-1); // -1
-Math.cbrt(-0); // -0
-Math.cbrt(-Infinity); // -Infinito
-Math.cbrt(0); // 0
-Math.cbrt(1); // 1
-Math.cbrt(Infinity); // Infinito
-Math.cbrt(null); // 0
-Math.cbrt(2);  // 1.2599210498948732
-
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-math.cbrt', 'Math.cbrt')}}
- -

Compatibilidad

- - - - - -

and send us a pull request.

- -

{{Compat("javascript.builtins.Math.cbrt")}}

- -

Puedes leer

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/ceil/index.html b/files/es/web/javascript/referencia/objetos_globales/math/ceil/index.html deleted file mode 100644 index 52b43cd3a2..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/ceil/index.html +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: Math.ceil() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/ceil -tags: - - JavaScript - - Math - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Math/ceil ---- -
{{JSRef}}
- -

La función Math.ceil() devuelve el entero mayor o igual más próximo a un número dado.

- -
{{EmbedInteractiveExample("pages/js/math-ceil.html")}}
- -

Sintaxis

- -
Math.ceil(x)
- -

Parámetros

- -
-
x
-
Un número.
-
- -

Valor devuelto

- -

El número entero mayor o igual más próximo que el número dado.

- -

Descripción

- -

Como ceil() es un método estático de Math, siempre debe usarlo como Math.ceil(), en lugar de como un método de un objeto que ha creado Math (Math no es un constructor).

- -

Ejemplos

- -

Utilizando Math.ceil()

- -

El siguiente ejemplo muestra el 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() {
-  /**
-   * Ajuste decimal de un número.
-   *
-   * @param {String}  type  El tipo de ajuste.
-   * @param {Number}  value El número.
-   * @param {Integer} exp   El exponente (El logaritmo de ajuste en base 10).
-   * @returns {Number} El valor ajustado.
-   */
-  function decimalAdjust(type, value, exp) {
-    // Si exp es undefined o cero...
-    if (typeof exp === 'undefined' || +exp === 0) {
-      return Math[type](value);
-    }
-    value = +value;
-    exp = +exp;
-    // Si el valor no es un número o exp no es un entero...
-    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
-
- -

Espicificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.6', 'Math.ceil')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-math.ceil', 'Math.ceil')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-math.ceil', 'Math.ceil')}}{{Spec2('ESDraft')}}
- -

Compatibilidad en navegadores

- -

{{Compat("javascript.builtins.Math.ceil")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/cos/index.html b/files/es/web/javascript/referencia/objetos_globales/math/cos/index.html deleted file mode 100644 index 82a0793769..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/cos/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Math.cos() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/cos -translation_of: Web/JavaScript/Reference/Global_Objects/Math/cos ---- -
{{JSRef}}
- -

La función estática Math.cos() devuelve el coseno del ángulo especificado, que debe ser especificado en radianes. Este valor es longitud adyacente longitud hipotenusa .

- -
{{EmbedInteractiveExample("pages/js/math-cos.html")}}
- - - -

Sintaxis

- -
Math.cos(x)
- -

Parametros

- -
-
x
-
El ángulo en radianes por el cual devolverá el coseno.
-
- -

Valor de retorno

- -

El coseno del número dado.

- -

Descripción

- -

El método Math.cos() retorna un valor numérico entre -1 y 1, que representa el coseno del ángulo.

- -

Debido a que cos() es un método estático de Math, siempre debes utilizarlo como Math.cos(), en lugar de como un método de un objeto Math que hayas creado (Math no es un constructor).

- -

Ejemplos

- -

Usando Math.cos()

- -
Math.cos(0);           // 1
-Math.cos(1);           // 0.5403023058681398
-
-Math.cos(Math.PI);     // -1
-Math.cos(2 * Math.PI); // 1
-
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-math.cos', 'Math.cos')}}
- -

Compatibilidad de navegadores

- - - -

{{Compat("javascript.builtins.Math.cos")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/e/index.html b/files/es/web/javascript/referencia/objetos_globales/math/e/index.html deleted file mode 100644 index 2fdc92d125..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/e/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Math.E -slug: Web/JavaScript/Referencia/Objetos_globales/Math/E -tags: - - JavaScript - - Math - - Property - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/Math/E ---- -
{{JSRef}}
- -

La propiedad Math.E representa la base de los logaritmos naturales, e, 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)}}
- -

Descripción

- -

Porque E es una propiedad estática de Math, siempre usted lo usa como Math.E, en lugar de como una propiedad de un objeto Math creado (Math no es un constructor).

- -

Ejemplos

- -

Utilizando Math.E

- -

La función siguiente devuelve e:

- -
function getNapier() {
-   return Math.E
-}
-
-getNapier(); // 2.718281828459045
- -

 

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
- -

Compatibilidad con navegadores

- -

{{Compat("javascript.builtins.Math.E")}}

- -

 

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/exp/index.html b/files/es/web/javascript/referencia/objetos_globales/math/exp/index.html deleted file mode 100644 index ca60758600..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/exp/index.html +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: Math.exp() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/exp -translation_of: Web/JavaScript/Reference/Global_Objects/Math/exp ---- -
{{JSRef}}
- -
La función Math.exp() devuelve ex, donde x es el argumento, y e es {{jsxref("Math.E", "El número de Euler (también conocido como la constante de Napier)", "", 1)}}, la base de los algoritmos naturales.
- -
 
- -

Sintaxis

- -
Math.exp(x)
- -

Parámetros

- -
-
x
-
Un número.
-
- -

Valor devuelto

- -

Un número represetando ex, donde e es {{jsxref("Math.E", "número de Euler", "", 1)}} y x es el argumento.

- -

Descripción

- -

Porque exp() es un método estático de Math, siempre úsalo como Math.exp(), en vez de un método de un objeto Math que hayas creado (Math no es un constructor).

- -

Ejemplos

- -

Usando Math.exp()

- -
Math.exp(-1); // 0.36787944117144233
-Math.exp(0);  // 1
-Math.exp(1);  // 2.718281828459045
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}} -

Definición inicial. Implementado en JavaScript 1.0.

-
{{SpecName('ES5.1', '#sec-15.8.2.8', 'Math.exp')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.exp', 'Math.exp')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-math.exp', 'Math.exp')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

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

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/expm1/index.html b/files/es/web/javascript/referencia/objetos_globales/math/expm1/index.html deleted file mode 100644 index d8679d9230..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/expm1/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Math.expm1() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/expm1 -tags: - - JavaScript - - Matemáticas - - Math - - Method - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Math/expm1 ---- -
{{JSRef}}
- -

La función Math.expm1() regresa ex - 1, donde x es el argumento, y {{jsxref("Math.E", "e", "", 1)}} la base del logaritmo natural.

- -
{{EmbedInteractiveExample("pages/js/math-expm1.html")}}
- - - -

Sintaxis

- -
Math.expm1(x)
- -

Parámetos

- -
-
x
-
Un número.
-
- -

Valor de retorno

- -

Un número representando ex - 1, donde e es {{jsxref("Math.E", "Número de Euler", "", 1)}} y  x es el argumento.

- -

Descripción

- -

Debido a que expm1() es un método estático de Math, uselo siempre como Math.expm1(), en lugar de como un método del objeto Math que creó (Math no es un constructor).

- -

Ejemplos

- -

Usando Math.expm1()

- -
Math.expm1(-1); // -0.6321205588285577
-Math.expm1(0);  // 0
-Math.expm1(1);  // 1.718281828459045
-
- -

Polyfill

- -

Esto puede ser emulado con la ayuda de la función {{jsxref("Math.exp()")}}:

- -
Math.expm1 = Math.expm1 || function(x) {
-  return Math.exp(x) - 1;
-};
-
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-math.expm1', 'Math.expm1')}}
- -

Compatibilidad de navegadores

- - - -

{{Compat("javascript.builtins.Math.expm1")}}

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/floor/index.html b/files/es/web/javascript/referencia/objetos_globales/math/floor/index.html deleted file mode 100644 index 867f3e8dac..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/floor/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Math.floor() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/floor -tags: - - JavaScript - - Math - - Method -translation_of: Web/JavaScript/Reference/Global_Objects/Math/floor ---- -
{{JSRef("Objetos_globales", "Math")}}
- -

Sumario

- -

Devuelve el máximo entero menor o igual a un número.

- -

Sintaxis

- -
Math.floor(x) 
- -

Parámetros

- -
-
x
-
Es número.
-
- -

Descripción

- -

Como floor es un método estático de Math, siempre debe usarse como Math.floor(), en lugar de usarlo como un método de un objeto Math creado.

- -

Ejemplos

- -

Ejemplo: Usando Math.floor

- -

La siguiente función devuelve el valor entero redondeado más bajo de la variable x:

- -
function getFloor(x) {
-   return Math.floor(x);
-}
- -

Si se pasa 45.95 a getFloor, éste devuelve 45; si se le pasa -45.95,  devuelve -46.

- -

Ejemplo: Ajuste decimal

- -
// Cierre
-(function(){
-
-	/**
-	 * Ajuste decimal de un número.
-	 *
-	 * @param	{String}	type	El tipo de ajuste.
-	 * @param	{Number}	value	El número.
-	 * @param	{Integer}	exp		El exponente(el logaritmo en base 10 del ajuste).
-	 * @returns	{Number}			El valor ajustado.
-	 */
-	function decimalAdjust(type, value, exp) {
-		// Si el exp es indefinido o cero...
-		if (typeof exp === 'undefined' || +exp === 0) {
-			return Math[type](value);
-		}
-		value = +value;
-		exp = +exp;
-		// Si el valor no es un número o el exp no es un entero...
-		if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
-			return NaN;
-		}
-		// Cambio
-		value = value.toString().split('e');
-		value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
-		// Volver a cambiar
-		value = value.toString().split('e');
-		return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
-	}
-
-	// Redondeo decimal
-	if (!Math.round10) {
-		Math.round10 = function(value, exp) {
-			return decimalAdjust('round', value, exp);
-		};
-	}
-	// Redondeo hacia abajo
-	if (!Math.floor10) {
-		Math.floor10 = function(value, exp) {
-			return decimalAdjust('floor', value, exp);
-		};
-	}
-	// Redondeo hacia arriba
-	if (!Math.ceil10) {
-		Math.ceil10 = function(value, exp) {
-			return decimalAdjust('ceil', value, exp);
-		};
-	}
-
-})();
-
-// Redondeo
-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
-// Piso
-Math.floor10(55.59, -1); // 55.5
-Math.floor10(59, 1); // 50
-Math.floor10(-55.51, -1); // -55.6
-Math.floor10(-51, 1); // -60
-// Techo
-Math.ceil10(55.51, -1); // 55.6
-Math.ceil10(51, 1); // 60
-Math.ceil10(-55.59, -1); // -55.5
-Math.ceil10(-59, 1); // -50
-
- -

Ven También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/fround/index.html b/files/es/web/javascript/referencia/objetos_globales/math/fround/index.html deleted file mode 100644 index 73d773e5b0..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/fround/index.html +++ /dev/null @@ -1,199 +0,0 @@ ---- -title: Math.fround() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/fround -tags: - - JavaScript - - Math - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Math/fround ---- -
{{JSRef}}
- -

The Math.fround() function returns the nearest 32-bit single precision float representation of a {{jsxref("Number")}}.

- -
{{EmbedInteractiveExample("pages/js/math-fround.html")}}
- - - -

Syntax

- -
var singleFloat = Math.fround(doubleFloat);
- -

Parameters

- -
-
doubleFloat
-
A {{jsxref("Number")}}. If the parameter is of a different type, it will get converted to a number or to {{jsxref("NaN")}} if it cannot be converted.
-
- -

Return value

- -

The nearest 32-bit single precision float representation of the given number.

- -

Description

- -

JavaScript uses 64-bit double floating-point numbers internally, which offer a very high precision. However, sometimes you may be working with 32-bit floating-point numbers, for example if you are reading values from a {{jsxref("Float32Array")}}. This can create confusion: Checking a 64-bit float and a 32-bit float for equality may fail even though the numbers are seemingly identical.

- -

To solve this, Math.fround() can be used to cast the 64-bit float to a 32-bit float. Internally, JavaScript continues to treat the number as a 64-bit float, it just performs a "round to even" on the 23rd bit of the mantissa, and sets all following mantissa bits to 0. If the number is outside the range of a 32-bit float, {{jsxref("Infinity")}} or -Infinity is returned.

- -

Because fround() is a static method of Math, you always use it as Math.fround(), rather than as a method of a Math object you created (Math is not a constructor).

- -

Examples

- -

Using Math.fround()

- -

The number 1.5 can be precisely represented in the binary numeral system, and is identical in 32-bit and 64-bit:

- -
Math.fround(1.5); // 1.5
-Math.fround(1.5) === 1.5; // true
-
- -

However, the number 1.337 cannot be precisely represented in the binary numeral system, so it differs in 32-bit and 64-bit:

- -
Math.fround(1.337); // 1.3370000123977661
-Math.fround(1.337) === 1.337; // false
-
- -

21502^150 is too big for a 32-bit float, so Infinity is returned:

- -
2 ** 150; // 1.42724769270596e+45
-Math.fround(2 ** 150); // Infinity
-
- -

If the parameter cannot be converted to a number, or it is not-a-number (NaN), Math.fround() will return NaN:

- -
Math.fround('abc'); // NaN
-Math.fround(NaN); // NaN
-
- -

Polyfill

- -

This can be emulated with the following function, if {{jsxref("Float32Array")}} are supported:

- -
Math.fround = Math.fround || (function (array) {
-  return function(x) {
-    return array[0] = x, array[0];
-  };
-})(new Float32Array(1));
-
- -

Supporting older browsers is slower, but also possible:

- -
if (!Math.fround) Math.fround = function(arg) {
-  arg = Number(arg);
-  // Return early for ±0 and NaN.
-  if (!arg) return arg;
-  var sign = arg < 0 ? -1 : 1;
-  if (sign < 0) arg = -arg;
-  // Compute the exponent (8 bits, signed).
-  var exp = Math.floor(Math.log(arg) / Math.LN2);
-  var powexp = Math.pow(2, Math.max(-126, Math.min(exp, 127)));
-  // Handle subnormals: leading digit is zero if exponent bits are all zero.
-  var leading = exp < -127 ? 0 : 1;
-  // Compute 23 bits of mantissa, inverted to round toward zero.
-  var mantissa = Math.round((leading - arg / powexp) * 0x800000);
-  if (mantissa <= -0x800000) return sign * Infinity;
-  return sign * powexp * (leading - mantissa / 0x800000);
-};
- -

Faster Alternative Polyfill (Work In Progress)

- -

The below polyfill is much faster and uses double-precision rounding errors to emulate the rounding errors caused by floating point narrowing. Although the polyfill higher on the page is good for comprehension, all of the complex Math function that it uses make it terrible slow. Although this polyfill is much faster, it is off by a bit in about 1 out of 2048 of the tests due to the tendency to round upwards like Math.ceil instead of like Math.round in the division of the subnormal-handling section of the code. Because single precision floating points have 23 bits of precision, the mean error deviation from the correct value is roughly 2**-28 or 0.0000000058%. This deviation from the correct value should be insignifigant in most circumstances, however please edit this polyfill if you have some tweaks to increase correctness without bloating the code size too much. NaN is not optimized for because it is most likely (almost certain) that you will not be calling Math.fround with NaN exclusively in a tight loop. Moreover, an additional check just for NaN instead of letting NaN naturally arise would induce a performance penalty for this function in older browsers when not called with NaN. Thus, the code below handles NaN correctly, but inefficiently for good reason.

- -
const Math_round = Math.round;
-if (!Math.fround) Math.fround = function(x) {
-    if (x > 3.402823669209385e+38) return Infinity; // maximum float is 2**128
-    if (x < -3.402823669209385e+38) return -Infinity; // minimum is -2**128
-    if (-1.1754943508222875e-38 < x && x < 1.1754943508222875e-38) {
-        if (-1.401298464324817e-45 < x && x < 1.401298464324817e-45) return 0;
-        // else, it is a subnormal
-        var mul = Math_round(x/1.4012984643e-45)*1e-323;
-        return mul * 1.418129833677085e+278;
-    }
-
-    var hi = x * 9007199254740992; // 9007199254740992 is 2**53 which is the maximum of double precision
-    var exp = (x + hi) - hi; // adding this number chops off all lower bits, rounding the number.
-    exp /= 16777216; // 8388608 = 2**23 * 2, so preserve 23 bits in x because there are 23 bits in a float
-                     //            The "* 2" compensates for the addition shifting up the bits unwantedly
-    return Math_round(x / exp) * exp;
-}
-
- -

Below is code used to test for deviations from the correct value. The code below is meant for testing the merit of the function, not for polyfilling older browsers (as evidenced by the fact that the native Math.fround function is used).

- -
requestIdleCallback(function(){"use strict";
-    const Math_fround = Math.fround;
-    const Math_round = Math.round;
-    function my_fround(x) {
-        if (x > 3.402823669209385e+38) return Infinity; // maximum float is 2**128
-        if (x < -3.402823669209385e+38) return -Infinity; // minimum is -2**128
-        if (-1.1754943508222875e-38 < x && x < 1.1754943508222875e-38) {
-            if (-1.401298464324817e-45 < x && x < 1.401298464324817e-45) return 0;
-            // else, it is a subnormal
-            var mul = Math_round(x/1.4012984643e-45)*1e-323;
-            return mul * 1.418129833677085e+278;
-        }
-
-        var hi = x * 9007199254740992; // 9007199254740992 is 2**53 which is the maximum of double precision
-        var exp = (x + hi) - hi; // adding this number chops off all lower bits, rounding the number.
-        exp /= 16777216; // 8388608 = 2**23 * 2, so preserve 23 bits in x because there are 23 bits in a float
-                         //            The "* 2" compensates for the addition shifting up the bits unwantedly
-        return Math_round(x / exp) * exp;
-    }
-
-    const doublesArray = new Float64Array(8192);
-    const int32s = new Uint32Array(doublesArray.buffer);
-
-    const crypto = window.crypto;
-
-    var hasWarned = false, warnings=0;
-    for (var i=0; i<4; i=i+1|0) {
-        crypto.getRandomValues(int32s);
-        for (var k=0; k<8192; k=k+1|0) {
-            const myValue = my_fround(doublesArray[k]);
-            const froundVal = Math_fround(doublesArray[k]);
-            // quicker version of Object.is because of no function call overhead:
-            if (myValue === myValue ? myValue !== froundVal : froundVal === froundVal) {
-                if (!hasWarned) console.error(doublesArray[k]); // only show the first incorrect number
-                hasWarned = true;
-                warnings = warnings + 1|0;
-            }
-        }
-    }
-    console[warnings > 0 ? "warn" : "log"]( "Total number of mishandled floats: " + warnings );
-});
- -

Specifications

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES6', '#sec-math.fround', 'Math.fround')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-math.fround', 'Math.fround')}}{{Spec2('ESDraft')}}
- -

Browser compatibility

- - - -

{{Compat("javascript.builtins.Math.fround")}}

- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/hypot/index.html b/files/es/web/javascript/referencia/objetos_globales/math/hypot/index.html deleted file mode 100644 index 21d6850e44..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/hypot/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Math.hypot() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/hypot -tags: - - JavaScript - - Math -translation_of: Web/JavaScript/Reference/Global_Objects/Math/hypot ---- -
{{JSRef}}
- -

La función Math.hypot() retorna la raíz cuadrada de la suma de los cuadrados de sus argumentos, es decir:

- -

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}

- -
{{EmbedInteractiveExample("pages/js/math-hypot.html")}}
- - - -

Sintaxis

- -
Math.hypot(valor1, valor2, ..., valorN)
- -

Parámetros

- -
-
Valor1, Valor2, ...
-
Números.
-
- -

Valor de Retorno

- -

La raíz cuadrada de la suma de los cuadrados de los argumentos proporcionados. Si tan sólo uno de los argumentos no pudiese ser convertido a un número, se retornaría {{jsxref("NaN")}}.

- -

Descripción

- -

Para calcular la hipotenusa de un triángulo rectángulo, o la magnitud de un número complejo, se usa el Teorema de Pitágoras, representado en la siguiente fórmula Math.sqrt(v1*v1 + v2*v2) donde v1 y v2 son, o los catetos del triángulo, o los valores reales y complejos usados para hallar la mencionada magnitud. Para calcular distancias de dos o más dimensiones, simplemente añade más valores al cuadrado (multiplicado por sí mismo) dentro de el método sqrt() del objeto Math, algo como: Math.sqrt(v1*v1 + v2*v2 + v3*v3 + v4*v4).  

- -

Esta función lo hace un poco más fácil y rápido, sólo coloca: Math.hypot(v1, v2) , o Math.hypot(v1, v2, v3, v4, ...) .  

- -

Esto también evita un problema si la magnitud de tus números es muy elevada. El número más largo que puedes representar en JavaScript es Number.MAX_VALUE = 1.797...e+308 .  Si tus números son mayores que 1e154, tomando el cuadrado de esos valores resultaría en infinito destruyendo así tus resultados. Por ejemplo, Math.sqrt(1e200*1e200 + 1e200*1e200) = Infinito. Si usas hypot() en su lugar, tú obtendrías un buen resultado Math.hypot(1e200, 1e200) = 1.4142...e+200 .  Eso también es verdad con números demasiados pequeños.  Math.sqrt(1e-200*1e-200 + 1e-200*1e-200) = 0, pero si en su lugar, usamos Math.hypot(1e-200, 1e-200) =1.4142...e-200, obtendríamos un buen resultado una vez más.

- -

Debido a que hypot() es un método estático de Math, siempre úsalo como Math.hypot(), en lugar de un método del objeto Math que hayas creado (Math no es un constructor).

- -

Si ningún argumento es provisto, el resultado es 0.

- -

Con sólo un argumento, Math.hypot() retornaría lo mismo que Math.abs().

- -

Ejemplos

- -

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, lo mismo que Math.abs(-3)
-
- -

Polyfill

- -

Esto puede ser emulado usando la siguiente función:

- -
Math.hypot = Math.hypot || function() {
-  var y = 0, i = arguments.length;
-  while (i--) y += arguments[i] * arguments[i];
-  return Math.sqrt(y);
-};
-
- -

Un polyfill que evita subdesbordamientos (underflows) y desbordamientos (overflows):

- -
Math.hypot = function (x, y) {
-  // https://bugzilla.mozilla.org/show_bug.cgi?id=896264#c28
-  var max = 0;
-  var s = 0;
-  for (var i = 0; i < arguments.length; i += 1) {
-    var arg = Math.abs(Number(arguments[i]));
-    if (arg > max) {
-      s *= (max / arg) * (max / arg);
-      max = arg;
-    }
-    s += arg === 0 && max === 0 ? 0 : (arg / max) * (arg / max);
-  }
-  return max === 1 / 0 ? 1 / 0 : max * Math.sqrt(s);
-};
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-math.hypot', 'Math.hypot')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-math.hypot', 'Math.hypot')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad en navegadores

- - - -

{{Compat("javascript.builtins.Math.hypot")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/index.html b/files/es/web/javascript/referencia/objetos_globales/math/index.html deleted file mode 100644 index bdf0d21e74..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/index.html +++ /dev/null @@ -1,196 +0,0 @@ ---- -title: Math -slug: Web/JavaScript/Referencia/Objetos_globales/Math -tags: - - JavaScript - - Math - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/Math ---- -
{{JSRef}}
- -

Math es un objeto incorporado que tiene propiedades y métodos para constantes y funciones matemáticas. No es un objeto de función.

- -

Math funciona con el tipo {{jsxref("Number")}}. No funciona con {{jsxref("BigInt")}}.

- -

Descripción

- -

A diferencia de los demás objetos globales, el objeto Math no se puede editar. Todas las propiedades y métodos de Math son estáticos. Usted se puede referir a la constante pi como Math.PI y puede llamar a la función seno como Math.sin(x), donde x es el argumento del método. Las constantes se definen con la precisión completa de los números reales en JavaScript.

- -

Propiedades

- -
-
{{jsxref("Math.E")}}
-
Constante de Euler, la base de los logaritmos naturales, 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 con base 2, aproximadamente 1.443.
-
{{jsxref("Math.LOG10E")}}
-
Logaritmo de E con base 10, aproximadamente 0.434.
-
{{jsxref("Math.PI")}}
-
Ratio de la circunferencia de un circulo respecto a su diámetro, aproximadamente 3.14159.
-
{{jsxref("Math.SQRT1_2")}}
-
Raíz cuadrada de 1/2; Equivalentemente, 1 sobre la raíz cuadrada de 2, aproximadamente 0.707.
-
{{jsxref("Math.SQRT2")}}
-
Raíz cuadrada de 2, aproximadamente 1.414.
-
- -

Métodos

- -
-

Tenga en cuenta que las funciones trigonométricas (sin(), cos(), tan(), asin(), acos(), atan(), atan2()) devuelven ángulos en radianes. Para convertir radianes a grados, divida por (Math.PI / 180), y multiplique por esto para convertir a la inversa.

-
- -
-

Tenga en cuenta que muchas de las funciones matemáticas tienen una precisión que es dependiente de la implementación. Esto significa que los diferentes navegadores pueden dar un resultado diferente, e incluso el mismo motor de JS en un sistema operativo o arquitectura diferente puede dar resultados diferentes.

-
- -
-
{{jsxref("Global_Objects/Math/abs", "Math.abs(x)")}}
-
Devuelve el valor absoluto de un número.
-
{{jsxref("Global_Objects/Math/acos", "Math.acos(x)")}}
-
Devuelve el arco coseno de un número.
-
{{jsxref("Global_Objects/Math/acosh", "Math.acosh(x)")}}
-
Devuelve el arco coseno hiperbólico de un número.
-
{{jsxref("Global_Objects/Math/asin", "Math.asin(x)")}}
-
Devuelve el arco seno de un número.
-
{{jsxref("Global_Objects/Math/asinh", "Math.asinh(x)")}}
-
Devuelve el arco seno hiperbólico de un número.
-
{{jsxref("Global_Objects/Math/atan", "Math.atan(x)")}}
-
Devuelve el arco tangente de un número.
-
{{jsxref("Global_Objects/Math/atanh", "Math.atanh(x)")}}
-
Devuelve el arco tangente hiperbólico de un número.
-
{{jsxref("Global_Objects/Math/atan2", "Math.atan2(y, x)")}}
-
Devuelve el arco tangente del cuociente de sus argumentos.
-
{{jsxref("Global_Objects/Math/cbrt", "Math.cbrt(x)")}}
-
Devuelve la raíz cúbica de un número.
-
{{jsxref("Global_Objects/Math/ceil", "Math.ceil(x)")}}
-
Devuelve el entero más pequeño mayor o igual que un número.
-
{{jsxref("Global_Objects/Math/clz32", "Math.clz32(x)")}}
-
Devuelve el número de ceros iniciales de un entero de 32 bits.
-
{{jsxref("Global_Objects/Math/cos", "Math.cos(x)")}}
-
Devuelve el coseno de un número.
-
{{jsxref("Global_Objects/Math/cosh", "Math.cosh(x)")}}
-
Devuelve el coseno hiperbólico de un número.
-
{{jsxref("Global_Objects/Math/exp", "Math.exp(x)")}}
-
Devuelve Ex, donde x es el argumento, y E es la constante de Euler (2.718...), la base de los logaritmos naturales.
-
{{jsxref("Global_Objects/Math/expm1", "Math.expm1(x)")}}
-
Devuelve ex - 1.
-
{{jsxref("Global_Objects/Math/floor", "Math.floor(x)")}}
-
Devuelve el mayor entero menor que o igual a un número.
-
{{jsxref("Global_Objects/Math/fround", "Math.fround(x)")}}
-
Devuelve la representación flotante de precisión simple más cercana de un número.
-
{{jsxref("Global_Objects/Math/hypot", "Math.hypot([x[, y[, …]]])")}}
-
Devuelve la raíz cuadrada de la suma de los cuadrados de sus argumentos.
-
{{jsxref("Global_Objects/Math/imul", "Math.imul(x, y)")}}
-
Devuelve el resultado de una multiplicación de enteros de 32 bits.
-
{{jsxref("Global_Objects/Math/log", "Math.log(x)")}}
-
Devuelve el logaritmo natural (log, también ln) de un número.
-
{{jsxref("Global_Objects/Math/log1p", "Math.log1p(x)")}}
-
Devuelve el logaritmo natural de x + 1 (loge, también ln) de un número.
-
{{jsxref("Global_Objects/Math/log10", "Math.log10(x)")}}
-
Devuelve el logaritmo en base 10 de x.
-
{{jsxref("Global_Objects/Math/log2", "Math.log2(x)")}}
-
Devuelve el logaritmo en base 2 de x.
-
{{jsxref("Global_Objects/Math/max", "Math.max([x[, y[, …]]])")}}
-
Devuelve el mayor de cero o más números.
-
{{jsxref("Global_Objects/Math/min", "Math.min([x[, y[, …]]])")}}
-
Devuelve el más pequeño de cero o más números.
-
{{jsxref("Global_Objects/Math/pow", "Math.pow(x, y)")}}
-
Las devoluciones de base a la potencia de exponente, que es, baseexponent.
-
{{jsxref("Global_Objects/Math/random", "Math.random()")}}
-
Devuelve un número pseudo-aleatorio entre 0 y 1.
-
{{jsxref("Global_Objects/Math/round", "Math.round(x)")}}
-
Devuelve el valor de un número redondeado al número entero más cercano.
-
{{jsxref("Global_Objects/Math/sign", "Math.sign(x)")}}
-
Devuelve el signo de la x, que indica si x es positivo, negativo o cero.
-
{{jsxref("Global_Objects/Math/sin", "Math.sin(x)")}}
-
Devuelve el seno de un número.
-
{{jsxref("Global_Objects/Math/sinh", "Math.sinh(x)")}}
-
Devuelve el seno hiperbólico de un número.
-
{{jsxref("Global_Objects/Math/sqrt", "Math.sqrt(x)")}}
-
Devuelve la raíz cuadrada positiva de un número.
-
{{jsxref("Global_Objects/Math/tan", "Math.tan(x)")}}
-
Devuelve la tangente de un número.
-
{{jsxref("Global_Objects/Math/tanh", "Math.tanh(x)")}}
-
Devuelve la tangente hiperbólica de un número.
-
-
Math.toSource() {{non-standard_inline}}
-
-
Devuelve la cadena "Math".
-
{{jsxref("Global_Objects/Math/trunc", "Math.trunc(x)")}}
-
Devuelve la parte entera del número x, la eliminación de los dígitos fraccionarios.
-
- -

Extendiendo el objeto Math

- -

Como muchos de los objetos incluidos en JavaScript, el objeto Math puede ser extendido con propiedades y métodos personalizados. Para extender el objeto Math no se debe usar 'prototype'. Es posible extender directamente Math:

- -
Math.propName = propValue;
-Math.methodName = methodRef;
- -

Como demostración, el siguiente ejemplo agrega un método al objeto Math para calcular el máximo común divisor de una lista de argumentos.

- -
/* Función variádica -- Retorna el máximo común divisor de una lista de argumentos */
-Math.gcd = function() {
-    if (arguments.length == 2) {
-        if (arguments[1] == 0)
-            return arguments[0];
-        else
-            return Math.gcd(arguments[1], arguments[0] % arguments[1]);
-    } else if (arguments.length > 2) {
-        var result = Math.gcd(arguments[0], arguments[1]);
-        for (var i = 2; i < arguments.length; i++)
-            result = Math.gcd(result, arguments[i]);
-        return result;
-    }
-};
- -

Pruébalo:

- -
console.log(Math.gcd(20, 30, 15, 70, 40)); // `5`
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición Inicial. Implementado en JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.8', 'Math')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-math-object', 'Math')}}{{Spec2('ES6')}}Nuevos métodos {{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()")}} y {{jsxref("Math.clz32()", "clz32()")}} añadidos.
{{SpecName('ESDraft', '#sec-math-object', 'Math')}}{{Spec2('ESDraft')}}
- -

Compatibilidad con navegadores

- -
{{Compat("javascript.builtins.Math")}}
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/ln10/index.html b/files/es/web/javascript/referencia/objetos_globales/math/ln10/index.html deleted file mode 100644 index 8b9f40b77b..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/ln10/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Math.LN10 -slug: Web/JavaScript/Referencia/Objetos_globales/Math/LN10 -tags: - - JavaScript - - Math - - Property - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/Math/LN10 ---- -
{{JSRef}}
- -

La propiedad Math.LN10 representa el logaritmo natural de 10, aproximadamente 2.302:

- -

Math.LN10=ln(10)2.302\mathtt{\mi{Math.LN10}} = \ln(10) \approx 2.302

- -
{{EmbedInteractiveExample("pages/js/math-ln10.html")}}
- -
 
- -
{{js_property_attributes(0, 0, 0)}}
- -

Descripción

- -

Porque LN10 es una propiedad estática de Math, siempre usted lo usa como Math.LN10, en lugar de como una propiedad de un objeto Math creado (Math no es un constructor).

- -

Ejemplos

- -

Utilizando Math.LN10

- -

La función siguiente devuelve el logaritmo natural de 10:

- -
function getNatLog10() {
-   return Math.LN10
-}
-
-getNatLog10(); // 2.302585092994046
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.builtins.Math.LN10")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/ln2/index.html b/files/es/web/javascript/referencia/objetos_globales/math/ln2/index.html deleted file mode 100644 index 4a447f677a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/ln2/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Math.LN2 -slug: Web/JavaScript/Referencia/Objetos_globales/Math/LN2 -tags: - - JavaScript - - Math - - Property - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/Math/LN2 ---- -
{{JSRef}}
- -

La propiedad Math.LN2 representa el logaritmo natural de 2, aproximadamente 0.693:

- -

Math.LN2=ln(2)0.693\mathtt{\mi{Math.LN2}} = \ln(2) \approx 0.693

- -
{{EmbedInteractiveExample("pages/js/math-ln2.html")}}
- -
 
- -
{{js_property_attributes(0, 0, 0)}}
- -

Descripción

- -

Como LN2 es una propiedad estática de Math, siempre se usa como Math.LN2, en lugar de como una propiedad de un objeto Math que ha creado (Math no es un constructor).

- -

Ejemplos

- -

Utilizando Math.LN2

- -

La función siguiente devuelve el logaritmo natural de 2:

- -
function getNatLog2() {
-  return Math.LN2;
-}
-
-getNatLog2(); // 0.6931471805599453
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.builtins.Math.LN2")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/log/index.html b/files/es/web/javascript/referencia/objetos_globales/math/log/index.html deleted file mode 100644 index d243cd0501..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/log/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Math.log() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/log -translation_of: Web/JavaScript/Reference/Global_Objects/Math/log ---- -
{{JSRef}}
- -

La función Math.log() devuelve la base neutral de un número (base {{jsxref ("Math.E", "e")}})

- -

x>0,Math.log(x)=ln(x)=the uniqueysuch thatey=x\forall x > 0, \mathtt{\operatorname{Math.log}(x)} = \ln(x) = \text{el unico} \; y \; \text{tal que} \; e^y = x

- -

 

- -

La función en JavaScrcrip Math.log() es equivalente a ln(x) en matematicas.

- -
{{EmbedInteractiveExample("pages/js/math-log.html")}}
- - - -

Sintaxis

- -
Math.log(x)
- -

Parametetros

- -
-
x
-
Es un numero.
-
- -

Retorna el valor

- -

 

- -

La base natural (base {{jsxref("Math.E", "e")}}) del número dado. Si el número es negativo, se devuelve {{jsxref("NaN")}} 

- -

Descripcion

- -

If the value of x is negative, the return value is always {{jsxref("NaN")}}.

- -

Because log() is a static method of Math, you always use it as Math.log(), rather than as a method of a Math object you created (Math is not a constructor).

- -

If you need the natural log of 2 or 10, use the constants {{jsxref("Math.LN2")}} or {{jsxref("Math.LN10")}} .  If you need a logarithm to base 2 or 10, use {{jsxref("Math.log2()")}} or {{jsxref("Math.log10()")}} .  If you need a logarithm to other bases, use Math.log(x) / Math.log(otherBase) as in the example below; you might want to precalculate 1 / Math.log(otherBase) .

- -

Examples

- -

Using Math.log()

- -
Math.log(-1); // NaN, out of range
-Math.log(0);  // -Infinity
-Math.log(1);  // 0
-Math.log(10); // 2.302585092994046
-
- -

Using Math.log() with a different base

- -

The following function returns the logarithm of y with base x (ie. logxy\log_x y):

- -
function getBaseLog(x, y) {
-  return Math.log(y) / Math.log(x);
-}
-
- -

If you run getBaseLog(10, 1000) it returns 2.9999999999999996 due to floating-point rounding, which is very close to the actual answer of 3.

- -

Specifications

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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')}} 
- -

Browser compatibility

- - - -

{{Compat("javascript.builtins.Math.log")}}

- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/log10/index.html b/files/es/web/javascript/referencia/objetos_globales/math/log10/index.html deleted file mode 100644 index dc97208b63..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/log10/index.html +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Math.log10() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/log10 -translation_of: Web/JavaScript/Reference/Global_Objects/Math/log10 ---- -
{{JSRef}}
- -

Math.log10() funcion que retorna el logaritmo de base 10 de un numero, esto es

- -

x>0,Math.log10(x)=log10(x)=la unicay tal que10y=x\forall x > 0, \mathtt{\operatorname{Math.log10}(x)} = \log_10(x) = \text{the unique} \; y \; \text{such that} \; 10^y = x

- -

Sintaxis

- -
Math.log10(x)
- -

Parametros

- -
-
x
-
Un Numero
-
- -

Valor de Retorno

- -

El logaritmo de base 10 del numero dado. SI el numero es negativo, {{jsxref("NaN")}} es devuelto.

- -

Descripción

- -

Si el valor de x es menor que cero, el valor de retorno siempre es {{jsxref("NaN")}}.

- -

Porque log10() es un metodo estatico de Math, debe usarse siempre Math.log10(), en vez de usarse como un metodo del objeto math que se ha creado (Math no es un constructor).

- -

Esta función es equivalente de Math.log(x) / Math.log(10).  Para log10(e) use la constante {{jsxref("Math.LOG10E")}} que es 1 / {{jsxref("Math.LN10")}}.  

- -

Ejemplos

- -

usando Math.log10()

- -
Math.log10(2);      // 0.3010299956639812
-Math.log10(1);      // 0
-Math.log10(0);      // -Infinito
-Math.log10(-2);     // NaN
-Math.log10(100000); // 5
-
- -

Polyfill

- -

Puede ser emulada con la siguiente función

- -
Math.log10 = Math.log10 || function(x) {
-  return Math.log(x) * Math.LOG10E;
-};
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificacionEstadoComentarios
{{SpecName('ES6', '#sec-math.log10', 'Math.log10')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-math.log10', 'Math.log10')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con Navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}8
-
- -

Vea Tambien

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/log10e/index.html b/files/es/web/javascript/referencia/objetos_globales/math/log10e/index.html deleted file mode 100644 index 755b6ceb1a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/log10e/index.html +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: Math.LOG10E -slug: Web/JavaScript/Referencia/Objetos_globales/Math/LOG10E -tags: - - JavaScript - - Math - - Propiedad - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/Math/LOG10E ---- -
{{JSRef}}
- -
 
- -
La propiedad Math.LOG10E representa el logaritmo base 10 de e, el cual es 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)}}
- -

Descripción

- -

Debido a que LOG10E es una propiedad estatica del módulo Math, se debe de invocar siempre como Math.LOG10E, en lugar de invocarla como una propiedad de algun objeto Math que hayas creado ( Math no es un constructor ).

- -

Ejemplos

- -

Utilizando Math.LOG10E

- -

La siguiente funcion regresa el logaritmo base 10 de e:

- -
function getLog10e() {
-  return Math.LOG10E;
-}
-
-getLog10e(); // 0.4342944819032518
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificacionEstatusComentarios
{{SpecName('ES1')}}{{Spec2('ES1')}} -

Definición inicial. Implementado en 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')}} 
- - - -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver tambien

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/log2/index.html b/files/es/web/javascript/referencia/objetos_globales/math/log2/index.html deleted file mode 100644 index b394270684..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/log2/index.html +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Math.log2() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/log2 -translation_of: Web/JavaScript/Reference/Global_Objects/Math/log2 ---- -
{{JSRef}}
- -

La función Math.log2() retorna el logaritmo base 2 de un número, esto es

- -

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

- -
{{EmbedInteractiveExample("pages/js/math-log2.html")}}
- - - -

Syntax

- -
Math.log2(x)
- -

Parámetros

- -
-
x
-
Un número.
-
- -

Valor de retorno

- -

El logaritmo base 2 del número usado como parámetro. Si el número es negativo, {{jsxref("NaN")}} será retornado.

- -

Descripción

- -

Si el valor de x es mejor a 0, el valor de retorno es siempre {{jsxref("NaN")}}.

- -

Debido a que log2() es una función estática de Math, siempre debe ser usado como Math.log2(), en lugar de ser usado como un método del objeto Math (Math no es un constructor).

- -

Esta función es equivalente a Math.log(x) / Math.log(2).  Para log2(e) use la constante {{jsxref("Math.LOG2E")}} que es 1 / {{jsxref("Math.LN2")}}.  

- -

Ejemplos

- -

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

- -

This Polyfill emulates the Math.log2 function. Note that it returns imprecise values on some inputs (like 1 << 29), wrap into {{jsxref("Math.round()")}} if working with bit masks.

- -
Math.log2 = Math.log2 || function(x) {
-  return Math.log(x) * Math.LOG2E;
-};
-
- -

Specifications

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES2015', '#sec-math.log2', 'Math.log2')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-math.log2', 'Math.log2')}}{{Spec2('ESDraft')}} 
- -

Browser compatibility

- - - -

{{Compat("javascript.builtins.Math.log2")}}

- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/log2e/index.html b/files/es/web/javascript/referencia/objetos_globales/math/log2e/index.html deleted file mode 100644 index f9593b4bc6..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/log2e/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Math.LOG2E -slug: Web/JavaScript/Referencia/Objetos_globales/Math/LOG2E -tags: - - JavaScript - - Math - - Property -translation_of: Web/JavaScript/Reference/Global_Objects/Math/LOG2E ---- -
- {{JSRef("Objetos_globales", "Math")}}
-

Resumen

-

El base 2 del logaritmo natural de E (aproximadamente 1.442).

-
- {{js_property_attributes(0,0,0)}}
-

Descripción

-

Porque LOG2E es una propiedad estática de Math, siempre usted lo usa como Math.LOG2E, en lugar de una propedad de un objecto de Math usted creó.

-

Ejemplos

-

Ejemplo: Usar Math.LOG2E

-

La función siguiente devuelve el base 2 del logaritmo natural del E:

-
function getLog2e() {
-   return Math.LOG2E
-}
-

Ven También

- diff --git a/files/es/web/javascript/referencia/objetos_globales/math/max/index.html b/files/es/web/javascript/referencia/objetos_globales/math/max/index.html deleted file mode 100644 index 0e0f82881c..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/max/index.html +++ /dev/null @@ -1,145 +0,0 @@ ---- -title: Math.max() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/max -tags: - - JavaScript - - Math - - Método(2) - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/Math/max ---- -
{{JSRef("Global_Objects", "Math")}}
- -

Resumen

- -

La función Math.max() devuelve el mayor de cero o más números.

- -

Sintaxis

- -
Math.max([valor1[, valor2[, ...]]])
- -

Parámetros

- -
-
valor1, valor2, ...
-
Números.
-
- -

Descripción

- -

Ya que max() es un método estático de Math, siempre debe usarse como Math.max(), en lugar de un método de un objeto Math instanciado (Math no es un constructor).

- -

Si no se proporcionan argumentos, el resultado es -{{jsxref("Global_Objects/Infinity", "Infinity")}}.

- -

Si al menos uno de los argumentos no puede ser convertido a número, el resultado es {{jsxref("Global_Objects/NaN", "NaN")}}.

- -

Ejemplos

- -

Ejemplo: Usando Math.max()

- -
Math.max(10, 20);   //  20
-Math.max(-10, -20); // -10
-Math.max(-10, 20);  //  20
-
- -

La siguiente función usa {{jsxref("Function.prototype.apply()")}} para encontrar el elemento mayor en un array numérico. getMaxOfArray([1, 2, 3]) es equivalente a Math.max(1, 2, 3), pero se puede usar getMaxOfArray() sobre arreglos construidos programáticamente de cualquier tamaño.

- -
function getMaxOfArray(numArray) {
-  return Math.max.apply(null, numArray);
-}
-
- -

O con el nuevo {{jsxref("Operadores/Spread_operator", "spread operator")}}, obtener el máximo de un arreglo se vuelve mucho más fácil.

- -
var arr = [1, 2, 3];
-var max = Math.max(...arr);
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
ECMAScript 1ra Edición.EstandarDefinición inicial. Implementado en JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.11', 'Math.max')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.max', 'Math.max')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-math.max', 'Math.max')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome para AndroidFirefox Móvil (Gecko)IE MóvilOpera MóvilSafari Móvil
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver además

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/min/index.html b/files/es/web/javascript/referencia/objetos_globales/math/min/index.html deleted file mode 100644 index a2dbf8348a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/min/index.html +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: Math.min() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/min -tags: - - JavaScript - - Math - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Math/min ---- -
{{JSRef}}
- -

La función Math.min() devuelve el menor de cero o más números.

- -

Sintaxis

- -
Math.min([valor1[, valor2[, ...]]])
- -

Parámetros

- -
-
valor1, valor2, ...
-
Números.
-
- -

Descripción

- -

Ya que min() es un método estático de Math, siempre debe usarse como Math.min(), en lugar de como un método de un objeto Math instanciado (Math no es un constructor).

- -

Si no se proporcionan argumentos, el resultado es {{jsxref("Infinity")}}.

- -

Si al menos uno de los argumentos no puede ser convertido a número, el resultado es {{jsxref("NaN")}}.

- -

Ejemplos

- -

Usando Math.min()

- -

Lo siguiente encuentra el mínimo de x e y y lo asigna a z:

- -
var x = 10, y = -20;
-var z = Math.min(x, y);
-
- -

Recortando un valor con Math.min()

- -

Math.min() es a menudo usado para recortar un valor de tal manera que siempre sea menor o igual a un límite. Este ejemplo

- -
var x = f(foo);
-
-if (x > limite) {
-  x = limite;
-}
-
- -

puede ser escrito de la siguiente manera

- -
var x = Math.min(f(foo), limite);
-
- -

{{jsxref("Math.max()")}} puede ser usado en una forma similar para recortar un valor en el otro extremo.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementada en 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')}} 
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome para AndroidFirefox Móvil (Gecko)IE MóvilOpera MóvilSafari Móvil
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver además

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/pi/index.html b/files/es/web/javascript/referencia/objetos_globales/math/pi/index.html deleted file mode 100644 index d4428498cd..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/pi/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: Math.PI -slug: Web/JavaScript/Referencia/Objetos_globales/Math/PI -tags: - - JavaScript - - Math - - Propiedad - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/Math/PI ---- -
{{JSRef}}
- -
La propiedad Math.PI representa la relacion entre la longitud de la circunferencia de un circulo y su diametro, la cual es aproximadamente 3.14159.
- -

Math.PI=π3.14159\mathtt{\mi{Math.PI}} = \pi \approx 3.14159

- -
{{js_property_attributes(0, 0, 0)}}
- -

Descripción

- -

Debido a que PI es una propiedad estatica del modulo Math, siempre debes de utilizarla como Math.PI, en lugar de una propiedad de un objeto Math que tu hayas creado ( Math no es un constructor ).

- -

Ejemplos

- -

Utilizando Math.PI

- -

La siguiente función utiliza Math.PI para calcular la longitud de la circunferencia de un circulo mediante el radio del circulo proporcionado como parametro.

- -
function calculaCircunferencia(radio) {
-  return 2 * Math.PI * radio;
-}
-
-calculaCircunferencia(1);  // 6.283185307179586
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
{{SpecName('ES1')}}{{Spec2('ES1')}} -

Definición inicial. Implementado en 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')}} 
- - - -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Basico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Basico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver tambien

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/pow/index.html b/files/es/web/javascript/referencia/objetos_globales/math/pow/index.html deleted file mode 100644 index 7185cffede..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/pow/index.html +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: Math.pow() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/pow -translation_of: Web/JavaScript/Reference/Global_Objects/Math/pow ---- -
{{JSRef("Global_Objects", "Math")}}
- -

Resumen

- -

La función  Math.pow() devuelve la  base elevada al exponente , esto es, baseexponente.

- -

Sintaxis

- -
Math.pow(base, exponente)
- -

Parametros

- -
-
base
-
El número base.
-
exponente
-
El exponente utilizado para elevar la base.
-
- -

Descripción

- -

La función Math.pow() retorna la base elevada al exponente, es decir, baseexponente. La base y el exponente estan en el sistema numérico decimal.

- -

Puesto que pow() es un método estático de Math, siempre se utiliza como Math.pow(). Si la base es negativa y el exponente no es un número entero, el resultado será NaN.

- -

Ejemplos

- -

Ejemplo: Usando Math.pow()

- -
// simple
-Math.pow(7, 2);    // 49
-Math.pow(7, 3);    // 343
-Math.pow(2, 10);   // 1024
-// exponentes fraccionales
-Math.pow(4, 0.5);  // 2 (raíz cuadrada de 4)
-Math.pow(8, 1/3);  // 2 (raíz cúbica de 8)
-Math.pow(2, 0.5);  // 1.412135623730951 (raíz cuadrada de 2)
-Math.pow(2, 1/3);  // 1.2599210498948732 (raíz cúbica de 2)
-// exponentes con signo
-Math.pow(7, -2);   // 0.02040816326530612 (1/49)
-Math.pow(8, -1/3); // 0.5
-// bases con signo
-Math.pow(-7, 2);   // 49 (los cuadrados son positivos)
-Math.pow(-7, 3);   // -343 (El cubo de una base negativa puede ser negativo)
-Math.pow(-7, 0.5); // NaN (Los números negativos no tienen raíz cuadrada real)
-Math.pow(-7, 1/3); // NaN
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
ECMAScript 1st Edition.EstándarDefinición inicial implementada en 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')}}
- -

Compatibilidad con navegadores

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

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/random/index.html b/files/es/web/javascript/referencia/objetos_globales/math/random/index.html deleted file mode 100644 index ace95bc0cf..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/random/index.html +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: Math.random() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/random -tags: - - JavaScript - - Math - - Números Aleatorios - - Random - - Referências -translation_of: Web/JavaScript/Reference/Global_Objects/Math/random ---- -
{{JSRef("Global_Objects", "Math")}}
- -

Sumario

- -

La función Math.random() retorna un punto flotante, un número pseudo-aleatorio dentro del rango [0, 1). Esto es, desde el 0 (Incluido) hasta el 1 pero sin incluirlo (excluido), el cual se puede escalar hasta el rango deseado. La implementación selecciona la semilla inicial hasta el algoritmo que genera el número aleatorio; este no puede ser elegido o cambiado por el usuario.

- -
-

Nota: Math.random() NO provee números aleatorios con seguridad criptográfica. No deben ser usados para algo relacionado con seguridad. En vez de eso, usar la API Web Crypto, y más precisamente el método: {{domxref("RandomSource.getRandomValues()", "window.crypto.getRandomValues()")}}.

-
- -

Sintaxis

- -
Math.random()
- -

Parámetros

- -

Ninguno.

- -

Ejemplos

- -

Ejemplo: Usando Math.random()

- -

Notar que, como los números en Javascript son números de punto flotante IEEE 754 con redondeo-al-par-más-cercano, los rangos generados por las funciones de abajo (excluyendo a Math.random() en sí misma) no son exactos. Si se eligen límites extremadamente grandes (253 o más), es posible, en casos extremadamente raros, calcular el generalmente-excluído límite superior.

- -
// Retorna un número aleatorio entre 0 (incluido) y 1 (excluido)
-function getRandom() {
-  return Math.random();
-}
-
- -
// Retorna un número aleatorio entre min (incluido) y max (excluido)
-function getRandomArbitrary(min, max) {
-  return Math.random() * (max - min) + min;
-}
-
- -
// Retorna un entero aleatorio entre min (incluido) y max (excluido)
-// ¡Usando Math.round() te dará una distribución no-uniforme!
-function getRandomInt(min, max) {
-  return Math.floor(Math.random() * (max - min)) + min;
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
ECMAScript 1a Edición.{{Spec2('ES1')}}Definición inicial. JavaScript 1.0 (Sólo UNIX) / JavaScript 1.1 (Todas las plataformas).
{{SpecName('ES5.1', '#sec-15.8.2.14', 'Math.random')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.random', 'Math.random')}}{{Spec2('ES6')}} 
- -

Compatibilidad en navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
diff --git a/files/es/web/javascript/referencia/objetos_globales/math/round/index.html b/files/es/web/javascript/referencia/objetos_globales/math/round/index.html deleted file mode 100644 index 0257148e69..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/round/index.html +++ /dev/null @@ -1,218 +0,0 @@ ---- -title: Math.round() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/round -translation_of: Web/JavaScript/Reference/Global_Objects/Math/round ---- -
{{JSRef}}
- -
La función Math.round() retorna el valor de un número redondeado al entero más cercano.
- -

Sumario

- -

Devuelve el valor del número dado redondeado al entero más cercano.

- -

Sintaxis

- -
Math.round(x)
- -

Parámetros

- -
-
Un número.
-
- -

Valor de Retorno

- -
-
El valor del número dado redondeado al entero más cercano.
-
- -

Descripción

- -

Si la porción fraccionaría del número es 0.5 o mayor, el argumento es redondeado al siguiente número entero superior. Si la porción de la fracción del número es menor a 0.5, el argumento es redondeado al siguiente número entero inferior.

- -

Debido a que round() es un método estático de Math, siempre se debe utilizar como  Math.round(),  en vez de un método del objeto Math que ha creado. (Math no es un constructor)

- -

Ejemplos

- -

Usando Math.round()

- -
// Retorna el valor 20
-x = Math.round(20.49);
-
-// Retorna el valor 21
-x = Math.round(20.5);
-
-// Retorna el valor -20
-x = Math.round(-20.5);
-
-// Retorna el valor -21
-x = Math.round(-20.51);
-
-// Retorna el valor 1 (!)
-// Note el error de redondeo debido a la inexactitud del punto aritmético.
-// Compare esto con Math.round10(1.005, -2) de el ejemplo de abajo.
-x = Math.round(1.005*100)/100;
-
- -

Redondeo decimal

- -
// Conclusión
-(function() {
-  /**
-   * Ajuste decimal de un número.
-   *
-   * @param {String}  tipo  El tipo de ajuste.
-   * @param {Number}  valor El numero.
-   * @param {Integer} exp   El exponente (el logaritmo 10 del ajuste base).
-   * @returns {Number} El valor ajustado.
-   */
-  function decimalAdjust(type, value, exp) {
-    // Si el exp no está definido o es cero...
-    if (typeof exp === 'undefined' || +exp === 0) {
-      return Math[type](value);
-    }
-    value = +value;
-    exp = +exp;
-    // Si el valor no es un número o el exp no es un entero...
-    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
-Math.round10(1.005, -2);   // 1.01 -- compare this with Math.round(1.005*100)/100 above
-// 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
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}} -

Definición inicial. Implementada en JavaScript 1.0.

-
{{SpecName('ES5.1', '#sec-15.8.2.15', 'Math.round')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-math.round', 'Math.round')}}{{Spec2('ES6')}}
- -

Compatibilidad en navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/seno/index.html b/files/es/web/javascript/referencia/objetos_globales/math/seno/index.html deleted file mode 100644 index a89a6e635e..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/seno/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: Math.sin() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/seno -translation_of: Web/JavaScript/Reference/Global_Objects/Math/sin ---- -
{{JSRef("Global_Objects", "Math")}}
- -

Resumen

- -

La función Math.sin() devuelve el seno de un número.

- -

Sintaxis

- -
Math.sin(x)
- -

Parámetros

- -
-
x
-
Un número (en radianes).
-
- -

Descripción

- -

El método Math.sin() devuelve  un valor numérico entre -1 y 1, que representa el seno del ángulo dado en radianes.
- Debido a que sin() es un método estático de Math, siempre se usa como Math.sin(), en vez de  crear un objeto Math y usarlo como un método (Math no es un constructor).

- -

Ejemplos

- -

Ejemplo: Usando Math.sin()

- -
Math.sin(0);           // 0
-Math.sin(1);           // 0.8414709848078965
-
-Math.sin(Math.PI / 2); // 1
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificacionesEstatusComentarios
ECMAScript 1ª Edición.{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
- -

Compatibilidad con navegadores

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

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/sign/index.html b/files/es/web/javascript/referencia/objetos_globales/math/sign/index.html deleted file mode 100644 index 3c48027556..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/sign/index.html +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: Math.sign() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/sign -tags: - - JavaScript - - Math - - Method - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Math/sign ---- -
{{JSRef}}
- -

La función Math.sign() retorna el signo de un número, indicando si el número es positivo, negativo o cero.

- -

Syntaxis

- -
Math.sign(x)
- -

Parametros

- -
-
x
-
Un número.
-
- -

Valor de retorno.

- -

Un número representando el signo del argumento dado. Si el argumento es un número positivo, negativo, cero positivo, o cero negativo, la función retornará 1, -1, 0 or -0 respectivamente. De lo contrario, retorna {{jsxref("NaN")}}.

- -

Descripción

- -

Como sign() es un método estático de Math, siempre se utiliza como Math.sign(), en vez de un método de un objeto Math que hayas creado. (Math no es un constructor).

- -

Esta función tiene 5 tipos de valores de retorno, 1, -1, 0, -0, NaN, que representan "número positivo", "número negativo", "cero positivo", "cero negativo" y {{jsxref("NaN")}} respectivamente.

- -

El argumento pasado a esta función será convertido a tipo x implicitamente.

- -

Ejemplos

- -

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) {
-    // Si x es NaN, el resultado es NaN.
-    // Si x es -0, el resultado es -0.
-    // Si x es +0, el resultado es +0.
-    // Si x es negativo y no -0, el resultado es -1.
-    // Si x es positivo y no +0, el resultado es +1.
-    x = +x; // convertir a número
-    if (x === 0 || isNaN(x)) {
-      return Number(x);
-    }
-    return x > 0 ? 1 : -1;
-  };
-}
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-math.sign', 'Math.sign')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-math.sign', 'Math.sign')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
PropiedadChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("9")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
PropiedadAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

Ver También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/sqrt/index.html b/files/es/web/javascript/referencia/objetos_globales/math/sqrt/index.html deleted file mode 100644 index a3977c6f08..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/sqrt/index.html +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: Math.sqrt() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/sqrt -translation_of: Web/JavaScript/Reference/Global_Objects/Math/sqrt ---- -
{{JSRef}}
- -

La  función Math.sqrt() retorna la raíz cuadrada de un número, que esx0,Math.sqrt(x)=x=the uniquey0such thaty2=x\forall x \geq 0, \mathtt{Math.sqrt(x)} = \sqrt{x} = \text{the unique} \; y \geq 0 \; \text{such that} \; y^2 = x

- -

Sintaxis

- -
Math.sqrt(x)
- -

Parámetros

- -
-
x
-
Un numero
-
- -

Valor de Retorno

- -

La raíz cuadrada del número proporcionado. Si los números son negativos, {{jsxref("NaN")}} es devuelto.

- -

Descripción

- -

Si el valor de x es negativo Math.sqrt() retorna {{jsxref("NaN")}}.

- -

Debido a que sqrt() es un método estático de Math, siempre úsalo como Math.sqrt(), en lugar de un método del objeto Math que hayas creado (Math no es un constructor).

- -

Ejemplos

- -

Usando Math.sqrt()

- -
Math.sqrt(9); // 3
-Math.sqrt(2); // 1.414213562373095
-
-Math.sqrt(1);  // 1
-Math.sqrt(0);  // 0
-Math.sqrt(-1); // NaN
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementada en JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.17', 'Math.sqrt')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.sqrt', 'Math.sqrt')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-math.sqrt', 'Math.sqrt')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/sqrt1_2/index.html b/files/es/web/javascript/referencia/objetos_globales/math/sqrt1_2/index.html deleted file mode 100644 index de9bd99eb9..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/sqrt1_2/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Math.SQRT1_2 -slug: Web/JavaScript/Referencia/Objetos_globales/Math/SQRT1_2 -tags: - - JavaScript - - Math - - Propiedad - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2 ---- -
{{JSRef}}
- -
La propiedad Math.SQRT1_2 representa la raiz cuadrada de 1/2, la cual es equivalente al inverso de la raiz cuadrada de 2, aproximadadamente 0.707:
- -

Math.SQRT1_2=12=120.707\mathtt{\mi{Math.SQRT1_2}} = \sqrt{\frac{1}{2}} = \frac{1}{\sqrt{2}} \approx 0.707

- -

Descripción

- -

Debido a que SQRT1_2 es una propiedad estatica de Math, siempre debes utilizarla como Math.SQRT1_2, en lugar de invocarla como una propiedad de alguna instancia de Math que hayas creado ( Math no es un constructor ).

- -

Ejemplos

- -

Utilizando Math.SQRT1_2

- -

La siguiente funcion regresa la raiz cuadrada de 1/2:

- -
function getRoot1_2() {
-  return Math.SQRT1_2;
-}
-
-getRoot1_2(); // 0.7071067811865476
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentarios
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
- - - -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte basico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte basico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver Tambien

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/sqrt2/index.html b/files/es/web/javascript/referencia/objetos_globales/math/sqrt2/index.html deleted file mode 100644 index 7e23295f25..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/sqrt2/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Math.SQRT2 -slug: Web/JavaScript/Referencia/Objetos_globales/Math/SQRT2 -translation_of: Web/JavaScript/Reference/Global_Objects/Math/SQRT2 ---- -
{{JSRef}}
- -
La propiedad Math.SQRT2 representa la raíz cuadrada de de 2, aproximadamente 1.414:
- -

Math.SQRT2=21.414\mathtt{\mi{Math.SQRT2}} = \sqrt{2} \approx 1.414

- -
{{js_property_attributes(0, 0, 0)}}
- -

Descripción

- -

Debido a que SQRT2 es una propiedad estática de Math, siempre se utiliza como Math.SQRT2, en lugar de una propiedad de un objeto Math creado.

- -

Ejemplos

- -

Utilizando Math.SQRT2

- -

La siguiente función retorna la raíz cuadrada de 2:

- -
function getRoot2() {
-  return Math.SQRT2;
-}
-
-getRoot2(); // 1.4142135623730951
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
{{SpecName('ES1')}}{{Spec2('ES1')}} -

Definición inicial. Implementada en 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')}} 
- -

Compatibilidad en navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

 

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/tan/index.html b/files/es/web/javascript/referencia/objetos_globales/math/tan/index.html deleted file mode 100644 index 8a773b0da5..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/tan/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Math.tan() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/tan -tags: - - Matemáticas - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Math/tan ---- -
{{JSRef}}
- -

La función Math.tan() retorna la tangente de un número.

- -
{{EmbedInteractiveExample("pages/js/math-tan.html")}}
- - - -

Sintaxis

- -
Math.tan(x)
- -

Parámetros

- -
-
x
-
Un número que representa un ángulo en radianes.
-
- -

Valor de retorno

- -

La tangente del número proporcionado.

- -

Descripción

- -

El método Math.tan() retorna un valor numérico que representa la tangente de un ángulo.

- -

Dado que tan() es un método estático de Math, siempre debes usarlo como Math.tan(), y no como un método de un objeto Math que hayas creado (Math no es un constructor).

- -

Ejemplos

- -

Usando Math.tan()

- -
Math.tan(1); // 1.5574077246549023
-
- -

Ya que la función Math.tan() acepta radianes, pero es más fácil trabajar con grados, la siguiente función acepta un valor en grados, lo convierte a radianes, y retorna la tangente de dicho valor.

- -
function getTanDeg(deg) {
-  var rad = deg * Math.PI/180;
-  return Math.tan(rad);
-}
-
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-math.tan', 'Math.tan')}}
- -

Compatibilidad con el navegador

- - - -

{{Compat("javascript.builtins.Math.tan")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/tanh/index.html b/files/es/web/javascript/referencia/objetos_globales/math/tanh/index.html deleted file mode 100644 index 138c466b37..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/tanh/index.html +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Math.tanh() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/tanh -tags: - - ECMAScript 2015 - - JavaScript - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Math/tanh ---- -
{{JSRef}}
- -

La funcion Math.tanh() devuelve la hyperbolica tangente de un numero, esto es 

- -

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")}}
- -

Sintaxis

- -
Math.tanh(x)
- -

Parametros

- -
-
x
-
Un numero.
-
- -

Devolver valor

- -

La hyperbolica tangente del numero obtenido.

- -

Descripcion

- -

Porque tanh() es un metodo estatico de Math, siempre se usa como Math.tanh(), en lugar de ser un metodo de Math objeto que creas (Math no es un constructor).

- -

Ejemplos

- -

Usando Math.tanh()

- -
Math.tanh(0);        // 0
-Math.tanh(Infinity); // 1
-Math.tanh(1);        // 0.7615941559557649
-
- -

Polyfill

- -

Esto puede ser emulado con ayuda de {{jsxref("Math.exp()")}} funcion:

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

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificacionEstadoComentario
{{SpecName('ES2015', '#sec-math.tanh', 'Math.tanh')}}{{Spec2('ES2015')}} -

Definicion inicial.

-
{{SpecName('ESDraft', '#sec-math.tanh', 'Math.tanh')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.builtins.Math.tanh")}}

- -

 

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/math/trunc/index.html b/files/es/web/javascript/referencia/objetos_globales/math/trunc/index.html deleted file mode 100644 index 9efe511927..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/math/trunc/index.html +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: Math.trunc() -slug: Web/JavaScript/Referencia/Objetos_globales/Math/trunc -tags: - - ECMAScript6 - - JavaScript - - Math - - Método(2) - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/Math/trunc ---- -
{{JSRef}}
- -

La función Math.trunc() devuelve la parte entera de un numero removiendo cualquier dígito decimal (dígitos situados después de la coma).

- -

Sintaxis.

- -
Math.trunc(x)
- -

Parámetros.

- -
-
x
-
Un número.
-
- -

Valor de retorno.

- -

La parte entera del número dado.

- -

Descripción.

- -

A diferencia de los otros tres métodos de Math: {{jsxref("Math.floor()")}}, {{jsxref("Math.ceil()")}} y {{jsxref("Math.round()")}}, la forma en que Math.trunc() funciona es muy simple.  trunca (corta) el punto y los dígitos a la derecha de él, sin importar si el argumento es un número positivo o negativo.

- -

Si el argumento es un número positivo, Math.trunc() es equivalente a Math.floor(); de otra forma Math.trunc() es equivalente a Math.ceil().

- -

El argumento pasado a este método será convertido a un tipo numérico entero.

- -

Debido a que trunc() es un método estático de Math, siempre úsalo como Math.trunc(), en lugar de como un método de un objeto Math que hayas creado (Math no es un constructor).

- -

Ejemplos.

- -

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.

- -
Math.trunc = Math.trunc || function (x) {
-    return (x < 0 ? Math.ceil(x) : Math.floor(x));
-}
-
- -

Especificaciones.

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-math.trunc', 'Math.trunc')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-math.trunc', 'Math.trunc')}}{{Spec2('ESDraft')}}
- -

Compatibilidad con navegadores.

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}8
-
- -

Vea también.

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/nan/index.html b/files/es/web/javascript/referencia/objetos_globales/nan/index.html deleted file mode 100644 index f107f1bb3c..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/nan/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: NaN -slug: Web/JavaScript/Referencia/Objetos_globales/NaN -tags: - - JavaScript - - Propiedad - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/NaN ---- -
{{jsSidebar("Objects")}}
- -
-

La propiedad global NaN es un valor que representa Not-A-Number.

-
- -

Sumario

- -

Un valor representando un Not-A-Number (No es Un Número).

- -

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

- -

Sintaxis

- -

NaN

- -

Descripción

- -

NaN es una propiedad del global object (objeto global), por ejemplo, es una variable de alcance global.

- -

El valor inicial de NaN es Not-A-Number (No es Un Número) - lo mismo que el valor de {{jsxref("Number.NaN")}}.

- -

Keep text below in sync with Number.NaN page NaN nunca es equivalente con cualquier otro número, incluido el mismo NaN; no puedes chequear el valor de un not-a-number comparándolo con Number.NaN. Usar la función {{jsxref("isNaN()")}} para aquello.

- -

Muchos métodos de JavaScript (como son el {{jsxref("Number")}} constructor, {{jsxref("parseFloat")}} y {{jsxref("parseInt")}}) retornan NaN si el valor especificado en el parámetro no puede ser parseado como un número.

- -

Puedes utilizar la propiedad NaN para indicar una condición de error para tu función que devuelva un número en caso de éxito.

- -

JavaScript imprime el valor Number.NaN como NaN.

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/null/index.html b/files/es/web/javascript/referencia/objetos_globales/null/index.html deleted file mode 100644 index 94d1a392c5..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/null/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: 'null' -slug: Web/JavaScript/Referencia/Objetos_globales/null -tags: - - JavaScript - - Literal - - Primitivo -translation_of: Web/JavaScript/Reference/Global_Objects/null ---- -
{{jsSidebar("Objects")}}
- -

Resumen

- -

El valor null es un literal de Javascript que representa intencionalmente un valor nulo o "vacío". Es uno de los {{Glossary("Primitive", "valores primitivos")}} de Javascript.

- -
{{EmbedInteractiveExample("pages/js/globalprops-null.html")}}
- - - -

Sintaxis

- -
null 
- -

Descripción

- -

El valor null es un literal (no una propiedad del objeto global como podría ser {{jsxref("undefined", "undefined")}}). En APIs, se devuelve null normalmente dónde se espera un objeto pero éste no es relevante. Al comparar con null o  {{jsxref("undefined", "undefined")}} hay que tener en cuenta las diferencias entre los operadores de igualdad (==) e identidad (===) (con el primero se realiza una conversión de tipo).

- -
// foo no existe, no está definido y nunca ha sido inicializado:
-> foo
-"ReferenceError: foo is not defined"
-
-// foo existe, pero no tiene tipo ni valor:
-> var foo = null; foo
-"null"
-
- -

Diferencias entre nullundefined

- -
typeof null        // object (bug en ECMAScript, debería ser null)
-typeof undefined   // undefined
-null === undefined // false
-null  == undefined // true
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
ECMAScript 1st Edition.StandardDefinición inicial.
{{SpecName('ES5.1', '#sec-4.3.11', 'null value')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-null-value', 'null value')}}{{Spec2('ES6')}}
- -

Compatibilidad con 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() }}
-
- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/number/index.html b/files/es/web/javascript/referencia/objetos_globales/number/index.html deleted file mode 100644 index 72c1425b8b..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/index.html +++ /dev/null @@ -1,181 +0,0 @@ ---- -title: Number -slug: Web/JavaScript/Referencia/Objetos_globales/Number -tags: - - JavaScript - - Number - - Referencia - - Referência(2) -translation_of: Web/JavaScript/Reference/Global_Objects/Number ---- -
{{JSRef}}
- -

Number es un objeto primitivo envolvente que permite representar y manipular valores numéricos cómo 37 o -9.25. El constructor Number contiene constantes y métodos para trabajar con números. Valores de otro tipo pueden ser convertidos a números usando la función Number().

- -

Sintaxis

- -
new Number(value);
-var a = new Number('123'); // a === 123 es false
-var b = Number('123'); // b === 123 es true
-a instanceof Number; // es true
-b instanceof Number; // es false
- -

Parámetros

- -
-
valor
-
El valor numérico de un objeto que está siendo creado.
-
- -

Descripción

- -

Los principales usos del objeto Number(valor) son convertir un string u otro valor a uno de tipo numérico; si el argumento no puede ser convertido a un número, devuelve {{jsxref("NaN")}}.

- -

Literal syntax

- -
123    // one-hundred twenty-three
-123.0  // same
-123 === 123.0  // true
- -

Function syntax

- -
Number('123')  // retorna el número 123
-Number('123') === 123  // retorna true
-
-Number("unicorn")  // NaN
-Number(undefined)  // NaN
- -

Constructor

- -
-
Number()
-
Crea un nuevo valor Numérico ( Number value).
-
- -

Propiedades

- -
-
{{jsxref("Number.EPSILON")}}
-
El intervalo más pequeño entre dos números representables
-
{{jsxref("Number.MAX_SAFE_INTEGER")}}
-
El número máximo representable en JavaScript (253 - 1).
-
{{jsxref("Number.MAX_VALUE")}}
-
El número más grande representable.
-
{{jsxref("Number.MIN_SAFE_INTEGER")}}
-
El número mínimo representable en JavaScript (-(253 - 1)).
-
{{jsxref("Number.MIN_VALUE")}}
-
El número más pequeño representable - que es el número positivo más cercano a cero (sin llegar a ser cero)-.
-
{{jsxref("Number.NaN")}}
-
Valor especial "no es número" NaN.
-
{{jsxref("Number.NEGATIVE_INFINITY")}}
-
Valor especial para representar infinitos negativos; retorno de un desborde de pila overflow.
-
{{jsxref("Number.POSITIVE_INFINITY")}}
-
Valor especial para representar infinitos positivos; retorno de un desborde de pila overflow.
-
{{jsxref("Number.prototype")}}
-
Permite la adición de propiedades a un objeto Number.
-
- -

Métodos

- -
-
{{jsxref("Number.isNaN()")}}
-
Determina si el valor es NaN.
-
{{jsxref("Number.isFinite()")}}
-
Determina si el valor es un numero infinito.
-
{{jsxref("Number.isInteger()")}}
-
Determina si un numero es entero.
-
{{jsxref("Number.isSafeInteger()")}}
-
Determine si el valor pasado es un entero seguro (número entre -(253 - 1)253 - 1).
-
{{jsxref("Number.toInteger()")}} {{obsolete_inline}}
-
Se usa para evaluar el valor pasado y convertirlo en un entero (or {{jsxref("Global_Objects/Infinity", "Infinity")}}), pero ha sido eliminado.
-
{{jsxref("Number.parseFloat()")}}
-
El valor es el mismo que {{jsxref ("parseFloat", "parseFloat ()")}} del objeto global.
-
{{jsxref("Number.parseInt()")}}
-
El valor es el mismo que {{jsxref("parseInt", "parseInt()")}} del objeto global.
-
- -

Instancias Number

- -

Todas las instancias Number heredan de {{jsxref("Number.prototype")}}. El objeto prototipo del constructor de Number puede modificarse para aceptar a todas las instancias de Number.

- -

Métodos

- -
-
{{jsxref("Number.prototype.toExponential()" ,"Number.prototype.toExponential(fractionDigits)")}}
-
Devuelve una cadena que representa el número en notación exponencial.
-
- -
-
{{jsxref("Number.prototype.toFixed()", "Number.prototype.toFixed(digits)")}}
-
Devuelve una cadena que representa el número en notación de punto fijo.
-
{{jsxref("Number.prototype.toLocaleString()", "Number.prototype.toLocaleString([locales [, options]])")}}
-
Devuelve una cadena con una representación sensible al idioma de este número. Invalida el método {{jsxref ("Object.prototype.toLocaleString ()")}}.
-
- -

Ejemplos

- -

Ejemplo: Utilizando el objeto Number para asignar valores a variables numéricas

- -

El siguiente ejemplo utiliza las propiedades del objeto Number para asignar valores a varias variables numéricas:

- -
const MásgrandeNum    = Number.MAX_VALUE;
-const MáspequeNum     = Number.MIN_VALUE;
-const infinitoNum     = Number.POSITIVE_INFINITY;
-const notInfinitoNum  = Number.NEGATIVE_INFINITY;
-const noEsNum         = Number.NaN;
-
- -

Intervalo de enteros para Number

- -

El siguiente ejemplo muestra los valores máximos y minimos que pueden ser representados mediante el objeto Number: 

- -

Cuando se analizan datos que se han serializado en JSON, se puede esperar que los valores enteros que se encuentran fuera de este rango se corrompan cuando el analizador JSON los coacciona al tipo Number.

- -

Una posible solución es usar {{jsxref ("String")}} en su lugar.

- -

Los números más grandes se pueden representar usando el tipo {{jsxref ("BigInt")}}.

- -
const biggestInt  = Number.MAX_SAFE_INTEGER  //  (253 - 1) =>  9007199254740991
-const smallestInt = Number.MIN_SAFE_INTEGER  // -(253 - 1) => -9007199254740991
- -

Ejemplo: Utilizando el objeto Number para modificar todos los objetos Number

- -

El siguiente ejemplo crea un objeto Number, miNúmero, luego añade la propiedad descripción a todos los objetos Number. Luego el valor es asignado a la propiedad descripción del objeto miNúmero.

- -
miNúmero = new Number(65);
-Number.prototype.descripción = null;
-miNúmero.descripción = "velocidad del viento";
-
- -

Utilizando el objecto Number para transformar un objeto Date 

- -

El siguiente ejemplo convierte el objeto {{jsxref ("Date")}} a un valor numérico usando Number  como función:

- -
var d = new Date('December 17, 1995 03:24:00');
-console.log(Number(d));
- -

Esto muestra "819199440000".

- -

Convierte cadenas numéricas a números

- -
Number('123')     // 123
-Number('12.3')    // 12.3
-Number('123e-1')  // 12.3
-Number('')        // 0
-Number('0x11')    // 17
-Number('0b11')    // 3
-Number('0o11')    // 9
-Number('foo')     // NaN
-Number('100a')    // NaN
- -
Number('-Infinity') //-Infinity
- - - -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/number/isfinite/index.html b/files/es/web/javascript/referencia/objetos_globales/number/isfinite/index.html deleted file mode 100644 index f26af9f671..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/isfinite/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Number.isFinite() -slug: Web/JavaScript/Referencia/Objetos_globales/Number/isFinite -translation_of: Web/JavaScript/Reference/Global_Objects/Number/isFinite ---- -
{{JSRef}}
- -

El método Number.isFinite() determina si el valor pasado es un número finito.

- -
{{EmbedInteractiveExample("pages/js/number-isfinite.html")}}
- - - -

Syntax

- -
Number.isFinite(valor)
- -

Parameters

- -
-
valor
-
El valor cuya finitud será probada.
-
- -

Return value

- -

Un {{jsxref("Boolean")}} indicando si el valor dado es finito o no.

- -

Description

- -

En comparación con la funcion global {{jsxref("isFinite", "isFinite()")}} , este método no convierte el parámetro forzádamente a un número. Esto significa que solo valores de tipo númerico, que también son finitos, retornan true.

- -

Ejemplos

- -
Number.isFinite(Infinity);  // false
-Number.isFinite(NaN);       // false
-Number.isFinite(-Infinity); // false
-
-Number.isFinite(0);         // true
-Number.isFinite(2e64);      // true
-
-Number.isFinite('0');       // false, retornaría true con la función
-                            // global isFinite('0')
-Number.isFinite(null);      // false, retornaría true con la función
-                            // global isFinite(null)
-
- -

Polyfill

- -
Number.isFinite = Number.isFinite || function(value) {
-    return typeof value === 'number' && isFinite(value);
-}
-
- -

Specificaciones

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES6', '#sec-number.isfinite', 'Number.isInteger')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-number.isfinite', 'Number.isInteger')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de navegador

- - - -

{{Compat("javascript.builtins.Number.isFinite")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/number/isinteger/index.html b/files/es/web/javascript/referencia/objetos_globales/number/isinteger/index.html deleted file mode 100644 index 6fdafca32e..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/isinteger/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Number.isInteger() -slug: Web/JavaScript/Referencia/Objetos_globales/Number/isInteger -tags: - - JavaScript - - Number - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Number/isInteger ---- -
{{JSRef}}
- -

El método Number.isInteger() determina si el valor pasado es de tipo entero.

- -
{{EmbedInteractiveExample("pages/js/number-isinteger.html")}}
- -

Sintaxis

- -
Number.isInteger(valor)
- -

Parámetros

- -
-
valor
-
El valor a ser probado si es un entero.
-
- -

Valor devuelto

- -

Un {{jsxref("Boolean")}} indicando si el valor dado es un entero o no.

- -

Descripción 

- -

Si el valor seleccionado es un entero, devuelve true, de lo contrario false. Si el valor es {{jsxref("NaN")}} o infinito, devuelve false.

- -

Ejemplos

- -
Number.isInteger(0);         // true
-Number.isInteger(1);         // true
-Number.isInteger(-100000);   // true
-Number.isInteger(99999999999999999999999); // true
-
-Number.isInteger(0.1);       // false
-Number.isInteger(Math.PI);   // false
-
-Number.isInteger(NaN);       // false
-Number.isInteger(Infinity);  // false
-Number.isInteger(-Infinity); // false
-Number.isInteger('10');      // false
-Number.isInteger(true);      // false
-Number.isInteger(false);     // false
-Number.isInteger([1]);       // false
-
- -

Polyfill

- -
Number.isInteger = Number.isInteger || function(value) {
-  return typeof value === 'number' &&
-    isFinite(value) &&
-    Math.floor(value) === value;
-};
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-number.isinteger', 'Number.isInteger')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-number.isinteger', 'Number.isInteger')}}{{Spec2('ESDraft')}} 
- -

Compatitibilidad con navegadores

- -

{{Compat("javascript.builtins.Number.isInteger")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/number/isnan/index.html b/files/es/web/javascript/referencia/objetos_globales/number/isnan/index.html deleted file mode 100644 index cc9c62274c..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/isnan/index.html +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: Number.isNaN() -slug: Web/JavaScript/Referencia/Objetos_globales/Number/isNaN -translation_of: Web/JavaScript/Reference/Global_Objects/Number/isNaN ---- -
{{JSRef}}
- -

El método Number.isNaN() determina si el valor pasado es {{jsxref("NaN")}}. Versión más robusta de la función global {{jsxref("isNaN", "isNaN()")}}.

- -

Sintaxis

- -
Number.isNaN(value)
- -

Parámetros

- -
-
valor
-
El valor para ser evaluado por {{jsxref("NaN")}}.
-
- -

Description

- -

Debido a los dos operadores de igualdad, {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}} y {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}}, evaluando a false cuando al comprobar si {{jsxref("NaN")}} is {{jsxref("NaN")}}, la función Number.isNaN() se ha convertido en necesaria. Esta situación es diferente a las otras comparaciones de valor en JavaScript.

- -

En comparación a la función global {{jsxref("isNaN", "isNaN()")}}, Number.isNaN() no sufre el problema de forzar la conversión del parámetro a un número. Esto significa que ahora es seguro pasar valores que normalmente se convertirían a {{jsxref("NaN")}}, pero no son del mismo valor que {{jsxref("NaN")}}. Esto también significa que solo los valores de tipo número, que también son {{jsxref("NaN")}}, retornan true.

- -

Examples

- -
Number.isNaN(NaN);        // true
-Number.isNaN(Number.NaN); // true
-Number.isNaN(0 / 0)       // true
-
-// e.g. estos hubiesen sido true con la función global isNaN()
-Number.isNaN("NaN");      // false
-Number.isNaN(undefined);  // false
-Number.isNaN({});         // false
-Number.isNaN("blabla");   // false
-
-// Todos retornan false
-Number.isNaN(true);
-Number.isNaN(null);
-Number.isNaN(37);
-Number.isNaN("37");
-Number.isNaN("37.37");
-Number.isNaN("");
-Number.isNaN(" ");
-
- -

Polyfill

- -
Number.isNaN = Number.isNaN || function(value) {
-    return typeof value === "number" && isNaN(value);
-}
-
-// O
-Number.isNaN = Number.isNaN || function(value) {
-    return value !== value;
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES6', '#sec-number.isnan', 'Number.isnan')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-number.isnan', 'Number.isnan')}}{{Spec2('ESDraft')}}
- -

Compatibilidad de navegador

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome("25")}}{{CompatGeckoDesktop("15")}}{{CompatNo}}{{CompatVersionUnknown}}9
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatUnknown}}{{CompatGeckoMobile("15")}}{{CompatNo}}{{CompatNo}}9
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/number/issafeinteger/index.html b/files/es/web/javascript/referencia/objetos_globales/number/issafeinteger/index.html deleted file mode 100644 index b12c4cf4d6..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/issafeinteger/index.html +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Number.isSafeInteger() -slug: Web/JavaScript/Referencia/Objetos_globales/Number/isSafeInteger -tags: - - ECMAScript6 - - JavaScript - - Number - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger ---- -
{{JSRef}}
- -

El método Number.isSafeInteger() determina si el valor provisto es un número que es un entero seguro.

- -
{{EmbedInteractiveExample("pages/js/number-issafeinteger.html")}}
- - - -

Un entero seguro es un entero que

- - - -

Por ejemplo, 253 - 1 es un entero seguro: puede ser exactamente representado y ningún otro entero puede ser redondeado a él bajo cualquier modo de redondeo de IEEE-754. En contraste, 253 no es un entero seguro, puede ser exactamente representado en IEEE-754, pero el entero 253 + 1 no puede ser directamente representado en IEEE-754 pero en su lugar, redondea a 253 bajo los modos de redondeo redondeo-al-más-cercano y redondeo-a-cero.  Los enteros seguros consisten en todos los enteros desde -(253 - 1) inclusivo, hasta 253 - 1 inclusivo (± 9007199254740991 o ± 9,007,199,254,740,991).  

- -

Manejar valores más grandes o más pequeños que ~9 cuatrillones con presición completa requiere usar una biblioteca de artimética de presición arbitraria.  Ver Lo que todo programador necesita saber sobre aritmética de punto flotante para más información sobre representaciones de punto flotante de los números.

- -

Sintaxis

- -
Number.isSafeInteger(valorDePrueba)
-
- -

Parámetros

- -
-
valorDePrueba
-
El valor a probar si es un entero seguro.
-
- -

Valor de retorno

- -

Un {{jsxref("Boolean")}} que indica si el valor dado es un número que es entero seguro.

- -

Ejemplos

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

- -
Number.isSafeInteger = Number.isSafeInteger || function (value) {
-   return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER;
-};
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
{{SpecName('ES2015', '#sec-number.issafeinteger', 'Number.isSafeInteger')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-number.issafeinteger', 'Number.isSafeInteger')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.builtins.Number.isSafeInteger")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/number/max_safe_integer/index.html b/files/es/web/javascript/referencia/objetos_globales/number/max_safe_integer/index.html deleted file mode 100644 index e5fa9df144..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/max_safe_integer/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Number.MAX_SAFE_INTEGER -slug: Web/JavaScript/Referencia/Objetos_globales/Number/MAX_SAFE_INTEGER -tags: - - ECMAScript 2015 - - JavaScript - - Number - - Property -translation_of: Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER ---- -
{{JSRef}}
- -

La constante Number.MAX_SAFE_INTEGER es el número mas grande 'seguro' en JavaScript (253 - 1).

- -
{{EmbedInteractiveExample("pages/js/number-maxsafeinteger.html")}}
- - - -
{{js_property_attributes(0, 0, 0)}}
- -

Descripción

- -

La constante MAX_SAFE_INTEGER tiene un valor de 9007199254740991 (9,007,199,254,740,991 o ~9 mil billones). El razonamiento detrás de ese número es que JavaScript usa números flotantes de doble precisión tal como está especfificado en IEEE 754 por lo que puedes representar números de forma segura entre -(253 - 1)253 - 1.

- -

Seguro, en este contexto, se refiere a la habilidad de representar enteros de forma exacta y compararlos de forma correcta. Por ejemplo, Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 evaluará como 'verdadero', lo cual es matemáticamente incorrecto. Ver {{jsxref("Number.isSafeInteger()")}} para más información.

- -

Debido a que MAX_SAFE_INTEGER es una propiedad estática de {{jsxref("Number")}}, siempre se usa como Number.MAX_SAFE_INTEGER, en lugar de como una propiedad de un objeto {{jsxref("Number")}} que hayas creado.

- -

Ejemplos

- -
Number.MAX_SAFE_INTEGER // 9007199254740991
-Math.pow(2, 53) - 1     // 9007199254740991
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
{{SpecName('ES2015', '#sec-number.max_safe_integer', 'Number.MAX_SAFE_INTEGER')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-number.max_safe_integer', 'Number.MAX_SAFE_INTEGER')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.builtins.Number.MAX_SAFE_INTEGER")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/number/max_value/index.html b/files/es/web/javascript/referencia/objetos_globales/number/max_value/index.html deleted file mode 100644 index 60c3d04e95..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/max_value/index.html +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: Number.MAX_VALUE -slug: Web/JavaScript/Referencia/Objetos_globales/Number/MAX_VALUE -translation_of: Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE ---- -
{{JSRef}}
- -
La propiedad Number.MAX_VALUE representa el valor numérico positivo máximo representable en JavaScript.
- -
 
- -
{{js_property_attributes(0, 0, 0)}}
- -

Descripción

- -

La propiedad MAX_VALUE tiene un valor aproximado a 1.79E+308. Si el valor es mayor será representado como Infinity.

- -

Dado que MAX_VALUE es una propiedad estática de {{jsxref("Number")}}, siempre ha de usarse como Number.MAX_VALUE, y no como propiedad del objeto que has creado.

- -

Ejemplos

- -

Usando MAX_VALUE

- -

La función verificarValorMaximo recibe un número como parámetro que se compara con Number.MAX_VALUE. Si el número es menor se imprime por consola "El número no es infinito", de ser mayor "El número es infinito".

- -
var numero1 = 1.79E+307;
-var numero2 = 1.79E+310;
-
-function verificarValorMaximo(num){
-
-	if (num <= Number.MAX_VALUE) {
-	  console.log("El número no es infinito");
-	} else {
-	  console.log("El número es infinito");
-	}
-
-}
-
-verificarValorMaximo(numero1); // El número no es infinito
-verificarValorMaximo(numero2); // El número es infinito
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.7.3.2', 'Number.MAX_VALUE')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-number.max_value', 'Number.MAX_VALUE')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-number.max_value', 'Number.MAX_VALUE')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad

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

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/number/min_value/index.html b/files/es/web/javascript/referencia/objetos_globales/number/min_value/index.html deleted file mode 100644 index dadda2e337..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/min_value/index.html +++ /dev/null @@ -1,121 +0,0 @@ ---- -title: Number.MIN_VALUE -slug: Web/JavaScript/Referencia/Objetos_globales/Number/MIN_VALUE -translation_of: Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE ---- -
{{JSRef}}
- -

La propiedad Number.MIN_VALUE representa el menor valor positivo numérico representable en JavaScript.

- -
{{js_property_attributes(0, 0, 0)}}
- -

Descripción

- -

La propiedad MIN_VALUE es el número más cercano a 0, no el más negativo, que JavaScript puede representar.

- -

MIN_VALUE tiene un valor aproximado de 5e-324. Los valores menores que MIN_VALUE (“subdesbordamiento de valores”) son convertidos a 0.

- -

Ya que MIN_VALUE es una propiedad estática de {{jsxref("Number")}}, debes utilizarla como Number.MIN_VALUE, más que como una propiedad del objeto {{jsxref("Number")}} que has creado.

- -

Ejemplos

- -

Usando MIN_VALUE

- -

El siguiente código divide dos valores numéricos. Si el resultado es mayor o igual a MIN_VALUE, se ejecuta la función func1, si no, se ejecuta la función func2.

- -
if (num1 / num2 >= Number.MIN_VALUE) {
-  func1();
-} else {
-  func2();
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.7.3.3', 'Number.MIN_VALUE')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-number.min_value', 'Number.MIN_VALUE')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-number.min_value', 'Number.MIN_VALUE')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de 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}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/number/nan/index.html b/files/es/web/javascript/referencia/objetos_globales/number/nan/index.html deleted file mode 100644 index 79db15a598..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/nan/index.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Number.NaN -slug: Web/JavaScript/Referencia/Objetos_globales/Number/NaN -tags: - - JavaScript - - Número - - Propiedad -translation_of: Web/JavaScript/Reference/Global_Objects/Number/NaN ---- -
{{JSRef}}
- -

La propiedad Number.NaN representa Not-A-Number (No es numero). Equivalente de  {{jsxref("NaN")}}.

- -
{{EmbedInteractiveExample("pages/js/number-nan.html")}}
- -

No tienes que crear un objeto {{jsxref("Number")}} para acceder a esta propiedad estática (usa Number.NaN).

- -
{{js_property_attributes(0, 0, 0)}}
- -

Ejemplos

- -

Chequea si los valores son numericos

- -
function sanitise(x) {
-  if (isNaN(x)) {
-    return Number.NaN;
-  }
-  return x;
-}
- -

Testing against NaN

- -

See Testing against NaN on the NaN page.

- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-number.nan', 'Number.NaN')}}
- -

Browser compatibility

- - - -

{{Compat("javascript.builtins.Number.NaN")}}

- -

Tambien mira

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/number/negative_infinity/index.html b/files/es/web/javascript/referencia/objetos_globales/number/negative_infinity/index.html deleted file mode 100644 index 2e2d7d1573..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/negative_infinity/index.html +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: Number.NEGATIVE_INFINITY -slug: Web/JavaScript/Referencia/Objetos_globales/Number/NEGATIVE_INFINITY -tags: - - JavaScript - - Number - - Property -translation_of: Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY ---- -
- {{JSRef("Objetos_globales", "Number")}}
-

Resumen

-

La propiedad Number.NEGATIVE_INFINITY representa el valor del infinito negativo.

-

No se tiene que crear un objeto {{jsxref("Number")}} para acceder a esta propiedad estática (use Number.NEGATIVE_INFINITY).

-

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

-

Descripción

-

El valor Number.NEGATIVE_INFINITY es el mismo que el valor negativo de la propiedad del objeto global {{jsxref( "Infinity")}}.

-

Este valor tiene un comportamiento ligeramente diferente que el del infinito matematico:

- -

Muchos métodos JavaScript (tales como el constructor del objeto Number, parseFloat, y parseInt) retornan NaN si el valor especifico en el párametro es significativamente menor a Number.MIN_VALUE.

-

Podrías utilizar la propiedad Number.NEGATIVE_INFINITY para indicar una condición de error que retorne un numero finito en caso de que esto suceda. Note, sin embargo, que isFinite seria mas apropiado en estos casos.

-

Example

-

En el siguiente ejemplo, a la variable smallNumber se le asigna un valor mucho mas pequeño al valor minimo. Cuando la sentencia if es ejecutada, smallNumber tiene el valor "-Infinity", por lo cual a smallNumber le es asignado un valor finito mas manejable antes de continuar.

-
var smallNumber = (-Number.MAX_VALUE) * 2
-
-if (smallNumber === Number.NEGATIVE_INFINITY) {
- smallNumber = returnFinite();
-}
-
-

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - -
EspecificacionesEstadoComentario
ECMAScript 1ra Edición. Implementado en JavaScript 1.1EstándarDefinición inicial.
{{SpecName('ES5.1', '#sec-15.7.3.5', 'Number.NEGATIVE_INFINITY')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-number.negative_infinity', 'Number.NEGATIVE_INFINITY')}}{{Spec2('ES6')}} 
-

Compatibilidad con navegadores

-

{{ CompatibilityTable() }}

-
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico(Si)(Si)(Si)(Si)(Si)
-
-
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico(Si)(Si)(Si)(Si)(Si)(Si)
-
-

Ver también

- diff --git a/files/es/web/javascript/referencia/objetos_globales/number/parsefloat/index.html b/files/es/web/javascript/referencia/objetos_globales/number/parsefloat/index.html deleted file mode 100644 index 6285aa9b5a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/parsefloat/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Number.parseFloat() -slug: Web/JavaScript/Referencia/Objetos_globales/Number/parseFloat -tags: - - ECMAScript2015 - - ECMAScript6 - - JavaScript - - Número - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Number/parseFloat ---- -
{{JSRef}}
- -

El método Number.parseFloat() parsea un argumento cadena y regresa un número de punto flotante. Este método se comporta de igual forma a la función global {{jsxref("parseFloat", "parseFloat()")}} y es parte de ECMAScript 2015 (su propósito es la modularización de los globales).

- -
{{EmbedInteractiveExample("pages/js/number-parsefloat.html")}}
- - - -

Sintaxis

- -
Number.parseFloat(string)
- -

Parámetros

- -

{{page("en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat", "Parameters")}}

- -

Valor de regreso

- -

{{page("en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat", "Return value")}}

- -

Descripción

- -

Por favor ver {{jsxref("parseFloat", "parseFloat()")}} para más detalles y ejemplos.

- -

Polyfill

- -
if (Number.parseFloat === void 0) {
-    Number.parseFloat = parseFloat;
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
{{SpecName('ES2015', '#sec-number.parsefloat', 'Number.parseFloat')}}{{Spec2('ES2015')}}Definición inicial
{{SpecName('ESDraft', '#sec-number.parsefloat', 'Number.parseFloat')}}{{Spec2('ESDraft')}}
- -

Compatibilidad del navegador

- - - -

{{Compat("javascript.builtins.Number.parseFloat")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/number/parseint/index.html b/files/es/web/javascript/referencia/objetos_globales/number/parseint/index.html deleted file mode 100644 index e899827599..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/parseint/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Number.parseInt() -slug: Web/JavaScript/Referencia/Objetos_globales/Number/parseInt -tags: - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Number/parseInt ---- -
{{JSRef}}
- -

The Number.parseInt() method parses a string argument and returns an integer of the specified radix or base.

- -

The Number.parseInt() El método Number.parseInt () analiza un argumento de cadena y devuelve un entero de la raíz o base especificada.

- -
{{EmbedInteractiveExample("pages/js/number-parseint.html", "taller")}}
- - - -

Syntax

- -
Number.parseInt(string,[ radix])
- -

Parameters

- -
-
-
string
-
The value to parse. If this argument is not a string, then it is converted to one using the ToString abstract operation. Leading whitespace in this argument is ignored.
-
radix {{optional_inline}}
-
An integer between 2 and 36 that represents the radix (the base in mathematical numeral systems) of the string. Be careful—this does not default to 10!
-
-
- -

Return value

- -

An integer parsed from the given string.

- -

If the radix is smaller than 2 or bigger than 36, and the first non-whitespace character cannot be converted to a number, {{jsxref("NaN")}} is returned.

- -

Description

- -

This method has the same functionality as the global {{jsxref("parseInt", "parseInt()")}} function:

- -
Number.parseInt === parseInt // true
- -

and is part of ECMAScript 2015 (its purpose is modularization of globals). Please see {{jsxref("parseInt", "parseInt()")}} for more detail and examples.

- -

Polyfill

- -
if (Number.parseInt === undefined) {
-    Number.parseInt = window.parseInt
-}
-
- -

Specifications

- - - - - - - - - - - - -
Specification
{{SpecName('ESDraft', '#sec-number.parseint', 'Number.parseInt')}}
- -

Browser compatibility

- - - -

{{Compat("javascript.builtins.Number.parseInt")}}

- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/number/positive_infinity/index.html b/files/es/web/javascript/referencia/objetos_globales/number/positive_infinity/index.html deleted file mode 100644 index 41d101a569..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/positive_infinity/index.html +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Number.POSITIVE_INFINITY -slug: Web/JavaScript/Referencia/Objetos_globales/Number/POSITIVE_INFINITY -tags: - - JavaScript - - Number - - Property -translation_of: Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY ---- -

{{JSRef("Objetos_globales", "Number")}}

-

Resumen

-

La propiedad Number.POSITIVE_INFINITY representa el infinito positivo.

-

No se tiene que crear un objeto {{jsxref("Number")}} para acceder a esta propiedad estática (use Number.POSITIVE_INFINITY).

-

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

-

Descripción

-

El valor de Number.POSITIVE_INFINITY es el mismo valor de la propiedad {{jsxref( "Infinity")}} del objeto global.

-

Este valor tiene un comportamiento ligeramente diferente al infinio matemático:

- -

Muchos métodos de JavaScript (tales como el constructor del objeto Number, parseFloat y parseInt) retornan NaN si el valor especificado en el parámetro es signficativamente mayor a Number.MAX_VALUE.

-

Podrías utilizar la propiedad Number.POSITIVE_INFINITY para indicar una condición de error que retorne un numero finito en caso de que esto suceda. Note, sin embargo, que isFinite seria mas apropiado en estos casos.

-

Ejemplo

-

En el siguiente ejemplo, a la variable bigNumber se le asigna un valor mucho mayor al valor máximo. Cuando la sentencia if es ejecutada, bigNumber tiene el valor "Infinity", por lo cual a bigNumber le es asignado un valor mas manejable antes de continuar.

-
var bigNumber = Number.MAX_VALUE * 2;
-if (bigNumber === Number.POSITIVE_INFINITY) {
- bigNumber = returnFinite();
-}
-
-

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - -
EspecificacionesEstadoComentario
ECMAScript 1st Edition. Implemented in JavaScript 1.1EstándarDefinición inicial.
{{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')}} 
-

Compatibilidad con navegadores

-

{{ CompatibilityTable() }}

-
- - - - - - - - - - - - - - - - - - - -
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico(SI)(Si)(Si)(Si)(Si)
-
-
- - - - - - - - - - - - - - - - - - - - - -
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soprote básico(Si)(Si)(Si)(Si)(Si)(Si)
-
-

Ver también

- diff --git a/files/es/web/javascript/referencia/objetos_globales/number/prototype/index.html b/files/es/web/javascript/referencia/objetos_globales/number/prototype/index.html deleted file mode 100644 index c15b5b5fcb..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/prototype/index.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Number.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/Number/prototype -tags: - - JavaScript - - Number - - Property -translation_of: Web/JavaScript/Reference/Global_Objects/Number -translation_of_original: Web/JavaScript/Reference/Global_Objects/Number/prototype ---- -
- {{JSRef("Objetos_globales", "Number")}}
-

Resumen

-

Representa el prototipo para esta clase. Puede utilizar el prototipo para añadir propiedades o métodos a todas las instancias de una clase. Para información acerca de prototipos.

-
-  
diff --git a/files/es/web/javascript/referencia/objetos_globales/number/tofixed/index.html b/files/es/web/javascript/referencia/objetos_globales/number/tofixed/index.html deleted file mode 100644 index f11ccc3938..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/tofixed/index.html +++ /dev/null @@ -1,147 +0,0 @@ ---- -title: Number.prototype.toFixed() -slug: Web/JavaScript/Referencia/Objetos_globales/Number/toFixed -translation_of: Web/JavaScript/Reference/Global_Objects/Number/toFixed ---- -
{{JSRef}}
- -

El método toFixed() formatea un número usando notación de punto fijo.

- -
{{EmbedInteractiveExample("pages/js/number-tofixed.html")}}
- -

Sintaxis

- -
numObj.toFixed([digitos])
- -

Parametros

- -
-
digitos
-
Opcional. El número de digitos que aparecen después del punto decimal; este puede ser un valor entre 0 y 20, inclusive, algunas implementaciones pueden soportar un rango más amplio de valores. Si el argumento es omitido, es tratado como 0.
-
- -

Valor Devuelto

- -

Una cadena que representa el número dado, usando notación de punto fijo.

- -

Excepciones

- -
-
{{jsxref("RangeError")}}
-
Si digits es demasiado pequeño o demasiado grande. Los valores entre 0 y 20, inclusive, no causarán un error tipo {{jsxref("RangeError")}}. Las implementaciones también pueden admitir valores cada vez más grandes.
-
{{jsxref("TypeError")}}
-
Si este método se invoca en un objeto que no es un {{jsxref("Number")}}.
-
- -

Descripción

- -

toFixed() devuelve una representación de cadena de numObj que no usa notación exponencial y tiene exactamente dígitos dígitos después del decimal. El número se redondea si es necesario, y la parte fraccional se rellena con ceros si es necesario para que tenga la longitud especificada.Si numObj es mayor que 1e+21, este metodo llama a {{jsxref("Number.prototype.toString()")}} y retorna una cadena de notacion exponencial.

- -

Examples

- -

Using toFixed

- -
var numObj = 12345.6789;
-
-numObj.toFixed();       // Returns '12346': note rounding, no fractional part
-numObj.toFixed(1);      // Returns '12345.7': note rounding
-numObj.toFixed(6);      // Returns '12345.678900': note added zeros
-(1.23e+20).toFixed(2);  // Returns '123000000000000000000.00'
-(1.23e-10).toFixed(2);  // Returns '0.00'
-2.34.toFixed(1);        // Returns '2.3'
-2.35.toFixed(1);        // Returns '2.4'. Note that it rounds up in this case.
--2.34.toFixed(1);       // Returns -2.3 (due to operator precedence, negative number literals don't return a string...)
-(-2.34).toFixed(1);     // Returns '-2.3' (...unless you use parentheses)
-
- -

Specifications

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES3')}}{{Spec2('ES3')}}Initial definition. Implemented in 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')}}
- -

Browser compatibility

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/number/tolocalestring/index.html b/files/es/web/javascript/referencia/objetos_globales/number/tolocalestring/index.html deleted file mode 100644 index d0c28b1431..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/tolocalestring/index.html +++ /dev/null @@ -1,155 +0,0 @@ ---- -title: Number.prototype.toLocaleString() -slug: Web/JavaScript/Referencia/Objetos_globales/Number/toLocaleString -tags: - - Internacionalizacion - - JavaScript - - Número -translation_of: Web/JavaScript/Reference/Global_Objects/Number/toLocaleString ---- -
{{JSRef}}
- -

El método toLocaleString() retorna una representacion localizada del número en forma de texto

- -
{{EmbedInteractiveExample("pages/js/number-tolocalestring.html")}}
- - - -

Syntax

- -
numObj.toLocaleString([locales [, options]])
- -

Parametros

- -

Los argumentos locales y options personalizan el comportamiento de la funcion y permite especificar el lenguaje cuyo formato deberá ser utilizado. En implementaciones, que ignoran los argumentos locales y options la localización utilizada y la forma del texto retornado es enteramente dependiente de la implementación.

- -
Mira el  constructor Intl.NumberFormat() para ver más detalles sobre los parámetros y como se utilizan.
- -
- -

Valor de retorno

- -

Un texto con una representación localizada del número dado.

- -

Performance

- -

Cuando formateas una gran cantidad de números, es mejor crear un objeto {{jsxref("NumberFormat")}} y utilizar la función {{jsxref("NumberFormat.format")}}.

- -

Ejemplos

- -

Usando toLocaleString

- -

Un uso básico sin especificar locales, retorna un texto formateado con el locales y options por defecto.

- -
var number = 3500;
-
-console.log(number.toLocaleString()); // Muestra "3,500" si se está utilizando la localización U.S. English
-
- -

Verificando el soporte de los parámetros locales y options

- -

Los parámetros locales y options no son soportados aún por todos los navegadores. Para verificar el soporte en ES5.1 y posteriores implementaciones, se puede utilizar el hecho que los tags inválidos en la localización son rechazados con una excepción {{jsxref("Global_Objects/RangeError", "RangeError")}}:

- -
function toLocaleStringSupportsLocales() {
-  var number = 0;
-  try {
-    number.toLocaleString('i');
-  } catch (e) {
-    return e.name === 'RangeError';
-  }
-  return false;
-}
-
- -

Antes de ES5.1, las implementaciones no requieren devolver una exepción {{jsxref("Global_Objects/RangeError", "RangeError")}} cuando toLocaleString es llamado sin argumentos.

- -

Para verificar que funciona todos los navegadores, incluyendo aquellos que soportan ECMA-262, anterior a ES5.1, se puede verificar por las funcionalidades especificadas en ECMA-402 que requieren soportar opciones regionales para Number.prototype.toLocaleString directamente:

- -
function toLocaleStringSupportsOptions() {
-  return !!(typeof Intl == 'object' && Intl && typeof Intl.NumberFormat == 'function');
-}
-
- -

Esta validación del objeto global Intl , verificar que no es null (nulo) y que tiene la propiedad NumberFormat que es una función.

- -

Utilizando locales

- -

Este ejemplo muestra alguna de las variaciones en los formatos de números localizados. Para obtener el formato de la localización utilizada en la interfaz del usuario de tu aplicación, asegurate de especificar la localización (y de ser posible alguna localización de respaldo) utilizando el parámetro locales:

- -
var number = 123456.789;
-
-// Aleman utiliza comas como separador decimal y puntos miles
-console.log(number.toLocaleString('de-DE'));
-// → 123.456,789
-
-// Arabe en la mayoría de países de habla Arabe utilizan numerales Eastern Arabic
-console.log(number.toLocaleString('ar-EG'));
-// → ١٢٣٤٥٦٫٧٨٩
-
-// India utiliza separadores de miles/lakh/crore
-console.log(number.toLocaleString('en-IN'));
-// → 1,23,456.789
-
-// la extensión nu requiere un sistema numerico, e.g. Decimales Chino
-console.log(number.toLocaleString('zh-Hans-CN-u-nu-hanidec'));
-// → 一二三,四五六.七八九
-
-// cuando solicitas un lenguage que podria no ser soportado, como
-// Balinese, incluye un lenguaje de respaldo, en este caso Indonesio
-console.log(number.toLocaleString(['ban', 'id']));
-// → 123.456,789
-
- -

Utilizando options

- -

El resultado proveido por  toLocaleString puede ser personalizado utilizando el parámetro options :

- -
var number = 123456.789;
-
-// solicitar un formato de moneda
-console.log(number.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }));
-// → 123.456,79 €
-
-// en Japones yen no utiliza una moneda menor
-console.log(number.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' }))
-// → ¥123,457
-
-// limitar a tres digitos el significante
-console.log(number.toLocaleString('en-IN', { maximumSignificantDigits: 3 }));
-// → 1,23,000
-
-// Utilizar el lenguaje por defecto del host con opciones para el formato del número
-var num = 30000.65;
-console.log(num.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}));
-// → "30,000.65" donde English es el lenguaje por defecto, o
-// → "30.000,65" donde Aleman es el lenguaje por defecto, o
-// → "30 000,65" donde French es el lenguaje por defecto
-
- -

Especificaciones

- - - - - - - - - - - - - -
Specification
{{SpecName('ESDraft', '#sec-number.prototype.tolocalestring', 'Number.prototype.toLocaleString')}}
{{SpecName('ES Int Draft', '#sup-number.prototype.tolocalestring', 'Number.prototype.toLocaleString')}}
- -

Compatibilidad de navegadores

- - - -

{{Compat("javascript.builtins.Number.toLocaleString")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/number/toprecision/index.html b/files/es/web/javascript/referencia/objetos_globales/number/toprecision/index.html deleted file mode 100644 index 7a5110d7a9..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/toprecision/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: Number.prototype.toPrecision() -slug: Web/JavaScript/Referencia/Objetos_globales/Number/toPrecision -translation_of: Web/JavaScript/Reference/Global_Objects/Number/toPrecision ---- -
{{JSRef}}
- -

El método toPrecision() devuelve una cadena que representa un objeto {{jsxref("Number")}} según la precisión especificada.

- -
{{EmbedInteractiveExample("pages/js/number-toprecision.html")}}
- -

Sintaxis

- -
numObj.toPrecision([precision])
- -

Parámetros

- -
-
precision
-
Opcional. Un entero que especifica el número de digitos significativos.
-
- -

Valor devuelto

- -

Una cadena que representa un objeto {{jsxref("Number")}} en punto fijo o en notación exponencial redondeada a precision de digitos significativos. Vea la discusión acerca del redondeo en la descripción del método {{jsxref("Number.prototype.toFixed()")}} , que además aplica a toPrecision().

- -

Si el parámetro precision es omitido, se comporta como {{jsxref("Number.prototype.toString()")}}. Si el parámetro precision es un valor no entero, el valor es redondeado al entero más cercano.

- -

Exceptions

- -
-
{{jsxref("Global_Objects/RangeError", "RangeError")}}
-
If precision is not between 1 and 100 (inclusive), a {{jsxref("RangeError")}} is thrown. Implementations are allowed to support larger and smaller values as well. ECMA-262 only requires a precision of up to 21 significant digits.
-
- -

Ejemplos

- -

Usando 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 bajo algunas circunstancias el valor retornado es en notación exponencial
-console.log((1234.5).toPrecision(2)); // logs '1.2e+3'
-
- -

Especificaciónes

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Primera definición. Implementada en 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')}} 
- -

Compatibilidad de navegadores

- - - -

{{Compat("javascript.builtins.Number.toPrecision")}}

- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/number/tostring/index.html b/files/es/web/javascript/referencia/objetos_globales/number/tostring/index.html deleted file mode 100644 index f911fa271e..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/tostring/index.html +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Number.prototype.toString() -slug: Web/JavaScript/Referencia/Objetos_globales/Number/toString -tags: - - JavaScript - - Method - - Number - - Prototype - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/Number/toString ---- -
{{JSRef("Objetos_globales", "Number")}}
- -

Resumen

- -

Devuelve una cadena que representa al objeto Number especificado

- -

Sintaxis

- -

number .toString( {{ mediawiki.external('base ') }} )

- -

Parámetro

- -
-
base
-
Un entero entre 2 y 36 especificando la base a usar para representar los valores numéricos.
-
- -

Devuelve

- -

Una cadena que representa al objeto.

- -

Descripción

- -

El objeto Number sobreescribe el método toString y no lo hereda del objeto {{jsxref("Object")}}; por tanto no hereda {{jsxref("Object.prototype.toString()")}}. Para objetos Number, el método toString devuelve una cadena que representa al objeto en la base especificada.

- -

El método toString comprueba su primer argumento, e intenta devolver una cadena de representación en la base especificada. Para bases superiores a 10, las letras del alfabeto indican numerales mayores de 9. Por ejemplo, para números hexadecimales (base 16), se utiliza de A hasta F.

- -

Si no se da a toString una base entre 2 y 36, se lanza una excepción.

- -

Si no se especifica la base, JavaScript asume la base predefinida, que es 10.

- -

Ejemplos

- -
var howMany = 10;
-
-alert("howMany.toString() is " + howMany.toString()); // displays "10"
-
-alert("45 .toString() is " + 45 .toString()); //displays "45"
-
-var x = 7;
-alert(x.toString(2))      // Displays "111"
-
- - - -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/number/valueof/index.html b/files/es/web/javascript/referencia/objetos_globales/number/valueof/index.html deleted file mode 100644 index 588c421746..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/number/valueof/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Number.prototype.valueOf() -slug: Web/JavaScript/Referencia/Objetos_globales/Number/valueOf -tags: - - JavaScript - - Métodos - - Number - - Prototype -translation_of: Web/JavaScript/Reference/Global_Objects/Number/valueOf ---- -
{{JSRef}}
- -

El método valueOf() retorna el valor primitivo inserto en un objeto {{jsxref("Number")}}.

- -

Sintaxis

- -
numObj.valueOf()
- -

Valor retornado

- -

Un número representando al valor primitivo del objeto  {{jsxref("Number")}} especificado.

- -

Descripción

- -

Este método es usualmente llamado de forma interna por JavaScript y no es explicitado en el código web.

- -

Ejemplos

- -

Utilizando valueOf

- -
var numObj = new Number(10);
-console.log(typeof numObj); // objeto
-
-var num = numObj.valueOf();
-console.log(num);           // 10
-console.log(typeof num);    // número
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en 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')}} 
- -

Compatibilidad con navegador

- - - -

{{Compat("javascript.builtins.Number.valueOf")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/__definegetter__/index.html b/files/es/web/javascript/referencia/objetos_globales/object/__definegetter__/index.html deleted file mode 100644 index fceb708912..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/__definegetter__/index.html +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: Object.prototype.__defineGetter__() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/__defineGetter__ -tags: - - JavaScript - - Objeto - - Prototipo - - Prototype - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__ ---- -
{{JSRef}}
- -
-

Esta característica está obsoleta en favor de definir getters usando el object initializer syntax o la API {{jsxref("Object.defineProperty()")}}.

- -

En todo caso, como es ampliamente implementada y usada en la Web,  es poco probable que los navegadores dejen de implementarla.

-
- -

El método __defineGetter__ enlaza una propiedad de un objeto a una función a ser llamada cuando esa propiedad es buscada.

- -

Sintaxis

- -
obj.__defineGetter__(prop, func)
- -

Parámetros

- -
-
prop
-
Un texto (string) que contiene el nombre de la propiedad para enlazar la función dada.
-
func
-
A function to be bound to a lookup of the specified property.
-
- -

Descripción

- -

The __defineGetter__ allows a {{jsxref("Operators/get", "getter", "", 1)}} to be defined on a pre-existing object.

- -

Ejemplos

- -
// Forma no-estándar y obsoleta
-
-var o = {};
-o.__defineGetter__('gimmeFive', function() { return 5; });
-console.log(o.gimmeFive); // 5
-
-
-// Formas compatibles con el estándar
-
-// Usando el 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
-
- -

Especificaciones

- - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('JavaScript', '#object.prototype.__definegetter__', 'Object.prototype.__defineGetter__()')}}{{Spec2('JavaScript')}} 
- -

Compatibilidad de navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatIE("11")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Mira también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/__lookupgetter__/index.html b/files/es/web/javascript/referencia/objetos_globales/object/__lookupgetter__/index.html deleted file mode 100644 index 8292222a38..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/__lookupgetter__/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Object.prototype.__lookupGetter__() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/__lookupGetter__ -translation_of: Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__ ---- -
{{JSRef}} {{deprecated_header}}
- -

Los __lookupGetter__ metodos retornan la funcion  enlazada como un getter para especificar la propiedad.

- -

Syntax

- -
obj.__lookupGetter__(sprop)
- -

Parameters

- -
-
sprop
-
A string containing the name of the property whose getter should be returned.
-
- -

Return value

- -

The function bound as a getter to the specified property.

- -

Description

- -

If a getter has been defined for an object's property, it's not possible to reference the getter function through that property, because that property refers to the return value of that function. __lookupGetter__ can be used to obtain a reference to the getter function.

- -

It is now possible to do this in a standardized way using {{jsxref("Object.getOwnPropertyDescriptor()")}} and {{jsxref("Object.getPrototypeOf()")}}.

- -

Examples

- -
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'; })
-
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-object.prototype.__lookupGetter__', 'Object.prototype.__lookupGetter__()')}}{{Spec2('ESDraft')}}Included in the (normative) annex for additional ECMAScript legacy features for Web browsers (note that the specification codifies what is already in implementations).
- -

Browser compatibility

- -
- - -

{{Compat("javascript.builtins.Object.lookupGetter")}}

-
- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/assign/index.html b/files/es/web/javascript/referencia/objetos_globales/object/assign/index.html deleted file mode 100644 index 17de417d75..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/assign/index.html +++ /dev/null @@ -1,274 +0,0 @@ ---- -title: Object.assign() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/assign -tags: - - ECMAScript 2015 - - JavaScript - - Objeto - - Referencia - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Object/assign ---- -
{{JSRef}}
- -

El método Object.assign() copia todas las propiedades enumerables de uno o más objetos fuente a un objeto destino. Devuelve el objeto destino. 

- -
{{EmbedInteractiveExample("pages/js/object-assign.html")}}
- -

Sintaxis

- -
Object.assign(objetivo, ...fuentes)
- -

Parámetros

- -
-
objetivo
-
El objeto destino.
-
fuentes
-
Los objetos origen.
-
- -

Valor devuelto

- -

El objeto destino.

- -

Descripción

- -

Las propiedades en el objeto destino serán sobrescritas por las propiedades en las fuentes si tienen la misma clave. Propiedades posteriores de las fuentes podrán sobrescribir las anteriores.

- -

El método Object.assign() copia sólo las propiedades enumerables y propias del objeto origen a un objeto destino. Usa [[Get]] en la origen y [[Set]] en el destino, por lo que invocará los métodos de acceso y establecimiento (getters y setters). Por consiguiente asignará propiedades frente a sólo copiar o definir propiedades nuevas. Esto puede hacer que sea inadecuado para fusionar propiedades nuevas en un prototipo si los objetos fuente contienen métodos de acceso (getters). Para copiar definiciones de propiedades en prototipos, incluyendo su enumerabilidad, se deben usar {{jsxref("Object.getOwnPropertyDescriptor()")}} y {{jsxref("Object.defineProperty()")}}.

- -

Tanto las propiedades {{jsxref("String")}} como {{jsxref("Symbol")}} son copiadas.

- -

En caso de un error, por ejemplo si una propiedad es de solo lectura, se lanza un {{jsxref("TypeError")}}, y el objeto destino se mantendrá sin cambios.

- -

Note que Object.assign() no lanza excepciones al encontrar en las fuentes propiedades {{jsxref("null")}} o {{jsxref("undefined")}}.

- -

Ejemplos

- -

Clonando un objeto

- -
var obj = { a: 1 };
-var copy = Object.assign({}, obj);
-console.log(copy); // { a: 1 }
-
- -

Advertencia para clonado profundo

- -

Para un clonado profundo, necesitamos usar otra alternativa ya que Object.assign() copia valores de propiedades. Si el valor en la fuente es una referencia a un objeto, solo se copia la referencia en sí, como valor de la propiedad.

- -
function test() {
-  'use strict';
-
-  let obj1 = { a: 0 , b: { c: 0}};
-  let obj2 = Object.assign({}, obj1);
-  console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}
-
-  obj1.a = 1;
-  console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}
-  console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}
-
-  obj2.a = 2;
-  console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}
-  console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 0}}
-
-  obj2.b.c = 3;
-  console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 3}}
-  console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 3}}
-
-  // Deep Clone
-  obj1 = { a: 0 , b: { c: 0}};
-  let obj3 = JSON.parse(JSON.stringify(obj1));
-  obj1.a = 4;
-  obj1.b.c = 4;
-  console.log(JSON.stringify(obj3)); // { a: 0, b: { c: 0}}
-}
-
-test();
- -

Fusionando 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.
- -

Fusionando objetos con las mismas propiedades

- -
var o1 = { a: 1, b: 1, c: 1 };
-var o2 = { b: 2, c: 2 };
-var o3 = { c: 3 };
-
-var obj = Object.assign({}, o1, o2, o3);
-console.log(obj); // { a: 1, b: 2, c: 3 }
- -

Las propiedades también son sobreescritas por otros objetos que aparecen posteriormente en la lista de parámetros y que tienen propiedades con el mismo nombre.

- -

Copiando propiedades de tipo símbolo

- -
var o1 = { a: 1 };
-var o2 = { [Symbol('foo')]: 2 };
-
-var obj = Object.assign({}, o1, o2);
-console.log(obj); // { a : 1, [Symbol("foo")]: 2 } (cf. bug 1207182 on Firefox)
-Object.getOwnPropertySymbols(obj); // [Symbol(foo)]
-
- -

Las propiedades heredadas y las no enumerables no pueden ser copiadas

- -
var obj = Object.create({ foo: 1 }, { // foo es una propiedad heredada.
-  bar: {
-    value: 2  // bar es una propiedad no enumerable.
-  },
-  baz: {
-    value: 3,
-    enumerable: true  // baz es una propiedad propia enumerable.
-  }
-});
-
-var copy = Object.assign({}, obj);
-console.log(copy); // { baz: 3 }
-
- -

Los tipos primitivos serán encapsulados en objetos

- -
var v1 = 'abc';
-var v2 = true;
-var v3 = 10;
-var v4 = Symbol('foo')
-
-var obj = Object.assign({}, v1, null, v2, undefined, v3, v4);
-// Los tipos primitivos son encapsulados en objetos y se ignoran las propiedades con valor null o undefined.
-// Nótese que sólo los wrappers de cadenas tienen propiedades enumerables:
-console.log(obj); // { "0": "a", "1": "b", "2": "c" }
-
- -

Las excepciones interrumpen la tarea de copiado

- -
var target = Object.defineProperty({}, 'foo', {
-  value: 1,
-  writeable: false
-}); // target.foo es una propiedad de sólo lectura
-
-Object.assign(target, { bar: 2 }, { foo2: 3, foo: 3, foo3: 3 }, { baz: 4 });
-// TypeError: "foo" es de sólo lectura
-// La excepción se lanza cuando se intenta asignar un valor a target.foo
-
-console.log(target.bar);  // 2, la primera fuente fue copiada.
-console.log(target.foo2); // 3, la primera propiedad del segundo objeto fuente se copió correctamente.
-console.log(target.foo);  // 1, se lanza la excepción.
-console.log(target.foo3); // undefined, el método assign ha finalizado, no se copiará foo3.
-console.log(target.baz);  // undefined, tampoco se copiará el tercer objecto fuente.
-
- -

Copiando métodos de acceso

- -
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 that copies full descriptors
-function completeAssign(target, ...sources) {
-  sources.forEach(source => {
-    let descriptors = Object.keys(source).reduce((descriptors, key) => {
-      descriptors[key] = Object.getOwnPropertyDescriptor(source, key);
-      return descriptors;
-    }, {});
-    // by default, Object.assign copies enumerable Symbols too
-    Object.getOwnPropertySymbols(source).forEach(sym => {
-      let descriptor = Object.getOwnPropertyDescriptor(source, sym);
-      if (descriptor.enumerable) {
-        descriptors[sym] = descriptor;
-      }
-    });
-    Object.defineProperties(target, descriptors);
-  });
-  return target;
-}
-
-var copy = completeAssign({}, obj);
-console.log(copy);
-// { foo:1, get bar() { return 2 } }
-
- -

Polyfill

- -

Este {{Glossary("Polyfill","polyfill")}} no soporta propiedades símbolo, ya que ES5 no tiene símbolos.

- -
if (typeof Object.assign != 'function') {
-  // Must be writable: true, enumerable: false, configurable: true
-  Object.defineProperty(Object, "assign", {
-    value: function assign(target, varArgs) { // .length of function is 2
-      'use strict';
-      if (target == null) { // TypeError if undefined or null
-        throw new TypeError('Cannot convert undefined or null to object');
-      }
-
-      var to = Object(target);
-
-      for (var index = 1; index < arguments.length; index++) {
-        var nextSource = arguments[index];
-
-        if (nextSource != null) { // Skip over if undefined or null
-          for (var nextKey in nextSource) {
-            // Avoid bugs when hasOwnProperty is shadowed
-            if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
-              to[nextKey] = nextSource[nextKey];
-            }
-          }
-        }
-      }
-      return to;
-    },
-    writable: true,
-    configurable: true
-  });
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-object.assign', 'Object.assign')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-object.assign', 'Object.assign')}}{{Spec2('ESDraft')}}
- -

Compatibilidad con navegadores

- -
-

{{Compat("javascript.builtins.Object.assign")}}

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/constructor/index.html b/files/es/web/javascript/referencia/objetos_globales/object/constructor/index.html deleted file mode 100644 index 3871c41fe3..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/constructor/index.html +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: Object.prototype.constructor -slug: Web/JavaScript/Referencia/Objetos_globales/Object/constructor -tags: - - JavaScript - - Object - - Property - - Prototype -translation_of: Web/JavaScript/Reference/Global_Objects/Object/constructor ---- -
{{JSRef("Objetos_globales", "Object")}}
- -

Resumen

- -

Retorna una referencia a la función del {{jsxref("Object")}} que creó el objeto de la instancia. Note que el valor de esta propiedad es una referencia a la función misma, no a un string conteniendo el nombre de la función. El valor es sólo de lectura para valores primitivos tales como 1, true y 'test'.

- -

Descripción

- -

Todos los objetos tienen una propiedad constructor. Los objetos creados sin explicitar el uso de una función (como son los objetos y las cadenas literales) tendrán una propiedad de constructor que apunta al tipo de constructor del Objeto Fundamento para ese objeto.

- -
var o = {};
-o.constructor === Object; // true
-
-var a = [];
-a.constructor === Array; // true
-
-var n = new Number(3);
-n.constructor === Number; // true
- -

Ejemplos

- -

Ejemplo: Mostrando el constructor de un objeto.

- -

El siguiente ejemplo crea un prototipo, Tree, y un objeto de este tipo, theTree. El ejemplo muestra entonces la propiedad constructor para el objeto theTree.

- -
function Tree (name) {
-   this.name = name;
-}
-
-var theTree = new Tree( "Redwood" );
-console.log( "theTree.constructor is " + theTree.constructor );
- -

Este ejemplo muestra la siguiente salida:

- -
theTree.constructor is function Tree (name) {
-    this.name = name;
-}
- -

Ejemplo: Cambiando el constructor de un objeto.

- -

El siguiente ejemplo demuestra como modificar el valor del constructor de objetos genéricos. Solo true, 1 y "test" no serán afectados ya que ellos tienen constructores nativos de solo lectura. Este ejemplo demuestra que no siempre es seguro confiar en la propiedad constructor de un objeto.

- -
function Type () {}
-
-var types = [
-    new Array(),
-    [],
-    new Boolean(),
-    true,             // no cambia
-    new Date(),
-    new Error(),
-    new Function(),
-    function () {},
-    Math,
-    new Number(),
-    1,                // no cambia
-    new Object(),
-    {},
-    new RegExp(),
-    /(?:)/,
-    new String(),
-    "test"            // no cambia
-];
-
-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" ) );
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificacionesEstatusComentario
ECMAScript 1ra. Edición. Implementado en JavaScript 1.1Estandar.Definición inicial.
{{SpecName('ES5.1', '#sec-15.2.4.1', 'Objectprototype.constructor')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-object.prototype.constructor', 'Object.prototype.constructor')}}{{Spec2('ES6')}} 
- -

Compatibilidad con Navegadores

- -

{{ CompatibilityTable() }}

- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
-
- -

 

diff --git a/files/es/web/javascript/referencia/objetos_globales/object/create/index.html b/files/es/web/javascript/referencia/objetos_globales/object/create/index.html deleted file mode 100644 index 94608d1c58..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/create/index.html +++ /dev/null @@ -1,377 +0,0 @@ ---- -title: Object.create() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/create -tags: - - ECMAScript5 - - JavaScript - - 'Null' - - Objeto - - Referencia - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Object/create ---- -
{{JSRef}}
- -

El método Object.create() crea un objeto nuevo, utilizando un objeto existente como el prototipo del nuevo objeto creado.

- -
{{EmbedInteractiveExample("pages/js/object-create.html")}}
- -
- -
La fuente de este ejemplo interactivo se almacena en un repositorio de GitHub. Si desea contribuir al proyecto de ejemplos interactivos, clone https://github.com/mdn/interactive-examples y envíenos una solicitud de extracción (pull request).
- -

Sintaxis

- -
Object.create(proto[, propertiesObject])
- -

Parámetros

- -
-
proto
-
Objeto el cual debe ser el prototipo del nuevo objeto creado.
-
propertiesObject
-
Opcional. Si se especifica y no es {{jsxref("undefined")}}, un objeto cuyas propiedades enumerables propias (es decir, aquellas propiedades definidas sobre si mismo y no son propiedades enumerable a lo largo de su cadena de prototipos) espefica descriptores de propiedad para ser agregadas al objeto recien creado, con los nombres de propiedad correspondiente. Estas propiedades corresponden al segundo argumento de {{jsxref("Object.defineProperties")}}.
-
- -

Valor devuelto

- -

Un nuevo objeto con el prototipo y propiedades del objeto especificado.

- -

Excepciones

- -

Una excepción {{jsxref("TypeError")}} si el parámetro propertiesObject es {{jsxref("null")}} o un objeto envolvente no primitivo.

- -

Ejemplos

- -

Herencia clásica con Object.create()

- -

Debajo se encuentra un ejemplo de cómo usar Object.create() para lograr herencia clásica. Este es para herencia simple, la cual es todo lo que soporta JavaScript.

- -
// Shape - superclase
-function Shape() {
-  this.x = 0;
-  this.y = 0;
-}
-
-// método de la superclase
-Shape.prototype.move = function(x, y) {
-    this.x += x;
-    this.y += y;
-    console.info("Shape moved.");
-};
-
-// Rectangle - subclase
-function Rectangle() {
-  Shape.call(this); // llama al contructor de la superclase.
-}
-
-// subclase extiende superclase
-Rectangle.prototype = Object.create(Shape.prototype);
-Rectangle.prototype.constructor = Rectangle;
-
-var rect = new Rectangle();
-
-console.log('¿Es rect una instancia de Rectangle?',
-  rect instanceof Rectangle); // true
-console.log('¿Es rect una instancia de Shape?',
-  rect instanceof Shape); // true
-rect.move(1, 1); // Imprime, 'Shape moved.'
-
- -

Si desea heredar desde múltiples objetos, entonces los mixins son una posibilidad.

- -
function MyClass() {
-  SuperClass.call(this);
-  OtherSuperClass.call(this);
-}
-
-// inherit one class
-MyClass.prototype = Object.create(SuperClass.prototype);
-// mixin another
-Object.assign(MyClass.prototype, OtherSuperClass.prototype);
-// re-assign constructor
-MyClass.prototype.constructor = MyClass;
-
-MyClass.prototype.myMethod = function() {
-  // do something
-};
-
- -

{{jsxref("Object.assign()")}} copia las propiedades del prototipo OtherSuperClass al prototipo de MyClass, haciéndolas disponibles en todas las instancias de MyClass. Object.assign() se introdujo con ES2015 y tiene polyfill. Si el soporte para navegadores antiguos es necesario, se puede utilizar jQuery.extend()_.assign().

- -

Usando el argumento propertiesObject con Object.create()

- -
var o;
-
-// crea un objeto con un prototipo como null
-o = Object.create(null);
-
-
-o = {};
-// esto equivale a:
-o = Object.create(Object.prototype);
-
-
-// Ejemplo en donde creamos un objeto con un par de propiedades de ejemplo.
-// (Note que el segundo parámetro mapea claves para los *descriptores de propiedad*.)
-o = Object.create(Object.prototype, {
-  // foo es un habitual "propiedad de valor"
-  foo: { writable:true, configurable:true, value: "hello" },
-  // bar es una propiedad getter-and-setter (de acceso)
-  bar: {
-    configurable: false,
-    get: function() { return 10 },
-    set: function(value) { console.log("Setting `o.bar` to", value) }
-}});
-
-
-function Constructor(){}
-o = new Constructor();
-// es equivalente a:
-o = Object.create(Constructor.prototype);
-// Por supuesto, si hay un código de inicialización en la
-// función Constructor, el Object.create no puede reflejar esta.
-
-
-// crear un nuevo objeto cuyo prototipo es un nuevo, objeto vacío
-// y agregar una única propiedad 'p', con el valor 42
-o = Object.create({}, { p: { value: 42 } })
-
-// por defecto las propiedades NO SON editables, enumerables o configurables:
-o.p = 24
-o.p
-// 42
-
-o.q = 12
-for (var prop in o) {
-   console.log(prop)
-}
-// "q"
-
-delete o.p
-// false
-
-// para especificar una propiedad en ES3
-
-o2 = Object.create({}, { p: {
-      value: 42,
-      writable: true,
-      enumerable: true,
-      configurable: true }
-});
-
- -

Objetos personalizados y nulos

- -

Un objeto nuevo creado de un objeto completamente personalizado (especialmente uno creado de un objeto nulo, que es básicamente un objeto personalizado sin miembros) puede comportarse de manera inesperada. Esto es especialmente cierto cuando se depura, ya que las funciones comunes  de conversión/detección de propiedad de objeto pueden generar errores, o simplemente perder información (especialmente si se atrapan excepciones de manera silenciosa que ignoran los errores). Por ejemplo, aquí hay dos objetos:

- -
oco = Object.create( {} );   // Crea un objeto normal
-ocn = Object.create( null ); // Crea un objeto "null"
-
-> console.log(oco) // {} -- Parece normal
-> console.log(ocn) // {} -- Parece normal aquí también, hasta este momento
-
-oco.p = 1; // Crea una propiedad simple en un objeto normal
-ocn.p = 0; // Crea una propiedad simple en un objeto "null"
-
-> console.log(oco) // {p: 1} -- Todavía parece normal
-> console.log(ocn) // {p: 0} --Todavía parece normal aquí también. PERO ESPERA...
-
- -

Como se muestra arriba, todo parece normal hasta ahora. Sin embargo, al intentar usar estos objetos, sus diferencias se hacen evidentes rápidamente:

- -
> "oco is: " + oco // Muestra "ocn is: [object Object]"
-
-> "ocn is: " + ocn // Arroja error: Cannot convert object to primitive value
-
- -

Probar solo algunas de las funciones incorporadas más básicas muestra la magnitud del problema más claramente:

- -
> alert(oco) // Muestra: [object Object]
-> alert(ocn) // Arroja error: Cannot convert object to primitive value
-
-> oco.toString() // Muestra [object Object]
-> ocn.toString() // Arroja error: ocn.toString is not a function
-
-> oco.valueOf() // Muestra{}
-> ocn.valueOf() // Arroja error: ocn.valueOf is not a function
-
-> oco.hasOwnProperty("p") // Muestra "true"
-> ocn.hasOwnProperty("p") // Arroja error: ocn.hasOwnProperty is not a function
-
-> oco.constructor // Muestra "Object() { [native code] }"
-> ocn.constructor // Muestra "undefined"
-
- -

Como se dijo, estas diferencias pueden hacer que la depuración e incluso problemas aparentemente simples se pierdan rápidamente. Por ejemplo:

- -

Una función simple de depuración:

- -
// mostrar nombre de propiedad de nivel superior: pares de valores de un objeto dado
-function ShowProperties( b ){
-  for( var i in b ){  console.log( i + ": " + b[i] + "\n" )  }
-}
- -

Resultados no tan simples: (especialmente si la captura silenciosa de errores había ocultado los mensajes de error)

- -
ob={}; ob.po=oco; ob.pn=ocn; // crear un objeto compuesto usando los objetos de prueba de arriba como valores de propiedad
-
-> ShowProperties( ob ) // Muestra propiedades de nivel superior
-- po: [object Object]
-- Error: Cannot convert object to primitive value
-
-Tenga en cuenta que solo se muestra la primera propiedad.
-
- -

(Pero si se crea el mismo objeto simplemente en un orden diferente, al menos en algunas implementaciones ...)

- -
ob={}; ob.pn=ocn; ob.po=oco; // cree el mismo objeto compuesto nuevamente, pero cree las mismas propiedades en un orden diferente
-
-> ShowProperties( ob ) // Muestra propiedades de nivel superior
-- Error: Cannot convert object to primitive value
-
-Tenga en cuenta que ninguna propiedad se muestra.
- -

Tenga en cuenta que un orden tan diferente puede surgir estáticamente a través de codificaciones fijas dispares, como aquí, pero también dinámicamente a través del orden en que se ejecutan dichas ramas de código de adición de propiedades en tiempo de ejecución, ya que depende de entradas y / o variables aleatorias. Por otra parte, el orden de iteración real no está garantizado, independientemente de cómo son agregados los miembros.

- -

Algunas NO-soluciones

- -

A good solution for the missing object-methods is not immediately apparent.

- -

Adding the missing object-method directly from the standard-object does NOT work:

- -
ocn = Object.create( null ); // create "null" object (same as before)
-
-ocn.toString = Object.toString; // since new object lacks method then try assigning it directly from standard-object
-
-> ocn.toString // shows "toString() { [native code] }" -- missing method seems to be there now
-> ocn.toString == Object.toString // shows "true" -- method seems to be same as the standard object-method
-
-> ocn.toString() // error: Function.prototype.toString requires that 'this' be a Function
-
- -


- Adding the missing object-method directly to new object's "prototype" does not work either, since new object does not have a real prototype (which is really the cause of ALL these problems) and one cannot be directly added:

- -
ocn = Object.create( null ); // create "null" object (same as before)
-
-ocn.prototype.toString = Object.toString; // Error: Cannot set property 'toString' of undefined
-
-ocn.prototype = {};                       // try to create a prototype
-ocn.prototype.toString = Object.toString; // since new object lacks method then try assigning it from standard-object  
-
-> ocn.toString() // error: ocn.toString is not a function
-
- -


- Adding the missing object-method by using the standard-object as new object's prototype does not work either:

- -
ocn = Object.create( null );        // create "null" object (same as before)
-Object.setPrototypeOf(ocn, Object); // set new object's prototype to the standard-object
-
-> ocn.toString() // error: Function.prototype.toString requires that 'this' be a Function
-
- -

Algunas soluciones aceptables

- -

Again, adding the missing object-method directly from the standard-object does NOT work. However, adding the generic method directly, DOES:

- -
ocn = Object.create( null ); // create "null" object (same as before)
-
-ocn.toString = toString; // since new object lacks method then assign it directly from generic version
-
-> ocn.toString() // shows "[object Object]"
-> "ocn is: " + ocn // shows "ocn is: [object Object]"
-
-
-ob={}; ob.pn=ocn; ob.po=oco; // create a compound object (same as before)
-
-> ShowProperties(ob) // display top-level properties
-- po: [object Object]
-- pn: [object Object]
-
- -

However, setting the generic prototype as the new object's prototype works even better:

- -
ocn = Object.create( null );                  // create "null" object (same as before)
-Object.setPrototypeOf(ocn, Object.prototype); // set new object's prototype to the "generic" object (NOT standard-object)
-
- -

(In addition to all the string-related functions shown above, this also adds:)

- -
> ocn.valueOf() // shows {}
-> ocn.hasOwnProperty("x") // shows "false"
-> ocn.constructor // shows "Object() { [native code] }"
-
-// ...and all the rest of the properties and methods of Object.prototype.
-
- -

As shown, objects modified this way now look very much like ordinary objects.

- -

Polyfill

- -

Este polyfill cubre el caso de uso principal  el cual es la creación de un nuevo objeto para el prototipo que ha sido escogido pero no toma el segundo argumento en cuenta.

- -

Note that while the setting of null as [[Prototype]] is supported in the real ES5 Object.create, this polyfill cannot support it due to a limitation inherent in versions of ECMAScript lower than 5.

- -
 if (typeof Object.create !== "function") {
-    Object.create = function (proto, propertiesObject) {
-        if (typeof proto !== 'object' && typeof proto !== 'function') {
-            throw new TypeError('Object prototype may only be an Object: ' + proto);
-        } else if (proto === null) {
-            throw new Error("This browser's implementation of Object.create is a shim and doesn't support 'null' as the first argument.");
-        }
-
-        if (typeof propertiesObject != 'undefined') {
-            throw new Error("This browser's implementation of Object.create is a shim and doesn't support a second argument.");
-        }
-
-        function F() {}
-        F.prototype = proto;
-
-        return new F();
-    };
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.2.3.5', 'Object.create')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.8.5
{{SpecName('ES6', '#sec-object.create', 'Object.create')}}{{Spec2('ES2015')}}
{{SpecName('ESDraft', '#sec-object.create', 'Object.create')}}{{Spec2('ESDraft')}}
- -

Compatibilidad con navegadores

- -
{{Compat("javascript.builtins.Object.create")}}
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/defineproperties/index.html b/files/es/web/javascript/referencia/objetos_globales/object/defineproperties/index.html deleted file mode 100644 index 3002dd200d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/defineproperties/index.html +++ /dev/null @@ -1,194 +0,0 @@ ---- -title: Object.defineProperties() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/defineProperties -tags: - - ECMAScript5 - - JavaScript - - JavaScript 1.8.5 - - Método(2) - - Objeto -translation_of: Web/JavaScript/Reference/Global_Objects/Object/defineProperties ---- -
{{JSRef("Objetos_globales", "Object")}}
- -

Sumario

- -

El metodo Object.defineProperties() define nuevas o modifica propiedades existentes directamente en el objeto, retornando el objeto.

- -

Sintáxis

- -
Object.defineProperties(obj, propiedades)
- -

Parámetros

- -
-
obj
-
El objeto sobre el cual se crearán o modificaran sus propiedades.
-
propiedades
-
Un objeto cuyas propiedades enumerables propias consituyen descriptores para las propiedades a ser definidas o modificadas.
-
- -

Descripción

- -

Object.defineProperties, en escencia, define todas las propiedades correspondientes a las propiedades propias con capacidad de enumeración de props en el objeto objrops.

- -

Ejemplo

- -
Object.defineProperties(obj, {
-  "property1": {
-    value: true,
-    writable: true
-  },
-  "property2": {
-    value: "Hello",
-    writable: false
-  }
-  // etc. etc.
-});
- -

Polyfill

- -

Asumiendo una ejecución pristina del entorno con todos los nombres y propiedades referidas a sus valores iniciales, Object.defineProperties es casi completamente equivalente (note el comentario en isCallable) a la siguiente reimplementación de 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 = !!obj.enumerable;
-    if (hasProperty(desc, "configurable"))
-      d.configurable = !!obj.configurable;
-    if (hasProperty(desc, "value"))
-      d.value = obj.value;
-    if (hasProperty(desc, "writable"))
-      d.writable = !!desc.writable;
-    if ( hasProperty(desc, "get") ) {
-      var g = desc.get;
-
-      if (!isCallable(g) && g !== "undefined")
-        throw new TypeError("bad get");
-      d.get = g;
-    }
-    if ( hasProperty(desc, "set") ) {
-      var s = desc.set;
-      if (!isCallable(s) && s !== "undefined")
-        throw new TypeError("bad set");
-      d.set = s;
-    }
-
-    if (("get" in d || "set" in d) && ("value" in d || "writable" in d))
-      throw new TypeError("identity-confused descriptor");
-
-    return d;
-  }
-
-  if (typeof obj !== "object" || obj === null)
-    throw new TypeError("bad obj");
-
-  properties = Object(properties);
-
-  var keys = Object.keys(properties);
-  var descs = [];
-
-  for (var i = 0; i < keys.length; i++)
-    descs.push([keys[i], convertToDescriptor(properties[keys[i]])]);
-
-  for (var i = 0; i < descs.length; i++)
-    Object.defineProperty(obj, descs[i][0], descs[i][1]);
-
-  return obj;
-}
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.2.3.7', 'Object.defineProperties')}}{{Spec2('ES5.1')}}Definición inicial. Implementada en JavaScript 1.8.5
{{SpecName('ES6', '#sec-object.defineproperties', 'Object.defineProperties')}}{{Spec2('ES6')}} 
- -

Compatibilidad de navegadores

- -

Basado en Kangax's compat tables.

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
CaracteristicaFirefox (Gecko)ChromeInternet ExplorerOperaSafari
Soporte básico{{CompatGeckoDesktop("2")}}5 (previous versions untested)911.605
-
- -
- - - - - - - - - - - - - - - - - - - -
CaracteristicaFirefox Mobile (Gecko)AndroidIE MobileOpera MobileSafari Mobile
Soporte básico{{CompatGeckoMobile("2")}}{{CompatVersionUnknown}}{{CompatUnknown}}11.50{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/defineproperty/index.html b/files/es/web/javascript/referencia/objetos_globales/object/defineproperty/index.html deleted file mode 100644 index f971d5a131..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/defineproperty/index.html +++ /dev/null @@ -1,419 +0,0 @@ ---- -title: Object.defineProperty() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/defineProperty -tags: - - ECMAScript5 - - JavaScript - - JavaScript 1.8.5 - - Método(2) - - Objeto -translation_of: Web/JavaScript/Reference/Global_Objects/Object/defineProperty ---- -
{{JSRef("Global_Objects", "Object")}}
- -

Resumen

- -

El  método estático Object.defineProperty() define una nueva propiedad sobre un objeto, o modifica una ya existente, y devuelve el objeto modificado.

- -
-

Nota: Ud. puede llamar a este método directamente mediante el constructor {{jsxref("Object")}} en vez de crear una instancia del tipo Object.

-
- -

Sintaxis

- -
Object.defineProperty(obj, prop, descriptor)
- -

Parámetros

- -
-
obj
-
El objeto sobre el cual se define la propiedad.
-
prop
-
El nombre de la propiedad a ser definida o modificada.
-
descriptor
-
El descriptor de la propiedad que está siendo definida o modificada.
-
- -

Descripción

- -

Este método permite añadir o modificar una propiedad en un objeto.

- -

La adición normal de una propiedad a través de la asignación crea propiedades que aparecen durante la enumeración de propiedades en el bucle ({{jsxref("Sentencias/for...in", "for...in")}} o el método {{jsxref("Object.keys")}}), cuyos valores pueden modificarse y pudiendo incluso eliminar la propiedad del objeto mediante el método {{jsxref("Operadores/delete", "delete")}}.

- -

Este método nos permite modificar el comportamiento por defecto de las propiedades. Es decir, nos permite definir una propiedad como no enumerable, no modificable o incluso evitar que pueda ser eliminada del objeto.

- -

Existen dos tipos de descriptores: De datos y de acceso.  Un descriptor de datos define una propiedad que tiene un valor, el cual puede ser o no modificado. Un descriptor de acceso define una propiedad mediante un par de funciones getter-setter que describe como se obtiene o se modifica el contenido de dicha propiedad. Un descriptor debe de ser de uno de estos dos tipos; no puede ser ambos.

- -

Ambos tipos de descriptores son objetos y comparten las siguientes claves opcionales:

- -
-
configurable
-
true si y solo si el tipo de descriptor de propiedad puede modificarse y si la propiedad puede ser eliminada del correspondiente objeto.
- Por defecto es false.
-
enumerable
-
true si y solo si dicha propiedad se muestra durante la enumeración de las propiedades del objeto correspondiente.
- Por defecto es false.
-
- -

Un descriptor de datos tiene además las siguientes claves opcionales:

- -
-
value
-
El valor asociado a la propiedad. Puede ser cualquier tipo valido de JavaScript  (number, object, function, etc).
- Por defecto es {{jsxref("Objetos_Globales/undefined", "undefined")}}.
-
writable
-
true Indica si el valor de la propiedad puede modificarse con el  {{jsxref("Operators/Assignment_Operators", "operador de asignación", "", 1)}}.
- Defaults to false.
-
- -

Un descriptor de acceso además tiene las siguientes claves opcionales:

- -
-
get
-
Una función cuyo valor retornado será el que se use como valor de la propiedad.
- Defaults to {{jsxref("Objetos_Globales/undefined", "undefined")}}.
-
set
-
Una función que recibe como único argumento el nuevo valor que se desea asignar a la propiedad y que devuelve el valor que se almacenará finalmente en el objeto.
- Defaults to {{jsxref("Objetos_Globales/undefined", "undefined")}}.
-
- -

Hay que tener en cuenta que estas opciones también pueden heredarse; es decir, las opciones de la propiedad se han podido establecer en el prototipo de una clase de la que hereda el objeto. De modo que si queremos asegurarnos unos valores por defecto tenemos tres opciones: fijar el {{jsxref("Object.prototype")}} con {{jsxref("Object.freeze")}}, definir todas las opciones explicitamente, o establecer a {{jsxref("Objetos_Globales/null", "null")}} la propiedad {{jsxref("Object.prototype.__proto__", "__proto__")}}.

- -
// Usando __proto__
-Object.defineProperty(obj, 'key', {
-  __proto__: null, // no aceptar propiedades heredadas
-  value: 'static'  // no enumerable
-                   // no configurable
-                   // no modificable
-                   // como opciones por defecto
-});
-
-// Definiendo todo explicitamente
-Object.defineProperty(obj, 'key', {
-  enumerable: false,
-  configurable: false,
-  writable: false,
-  value: 'static'
-});
-
-// Reciclando el mismo objeto
-function withValue(value) {
-  var d = withValue.d || (
-    withValue.d = {
-      enumerable: false,
-      writable: false,
-      configurable: false,
-      value: null
-    }
-  );
-  d.value = value;
-  return d;
-}
-// ... y ...
-Object.defineProperty(obj, 'key', withValue('static'));
-
-// Si está disponible freeze, previene añadir o eliminar
-//del prototipo del objeto las propiedades
-// (value, get, set, enumerable, writable, configurable)
-(Object.freeze || Object)(Object.prototype);
-
- -

Ejemplos

- -

Si quiere ver algunos ejemplos de utilización del método Object.defineProperty con una sintaxis tipo binary-flags, vea ejemplos adicionales.

- -

Ejemplo: Creando una propiedad

- -

Cuando la propiedad especificada no existe en el objeto, Object.defineProperty() crea una nueva. En el descriptor pueden omitirse campos, a los cuales se les asignará el valor por defecto. A todos los que sean de tipo Booleano se les asignará el valor falso. Los campos value, get y set se establecerán por defecto a {{jsxref("Objetos_Globales/undefined", "undefined")}}. Una propiedad definida sin indicar  get/set/value/writable es denominada “genérica” y  “tipificada” como un descriptor de datos.

- -
var o = {}; // Creates a new object
-
-// Example of an object property added with defineProperty with a data property descriptor
-Object.defineProperty(o, 'a', {
-  value: 37,
-  writable: true,
-  enumerable: true,
-  configurable: true
-});
-// 'a' property exists in the o object and its value is 37
-
-// Example of an object property added with defineProperty with an accessor property descriptor
-var bValue = 38;
-Object.defineProperty(o, 'b', {
-  get: function() { return bValue; },
-  set: function(newValue) { bValue = newValue; },
-  enumerable: true,
-  configurable: true
-});
-o.b; // 38
-// 'b' property exists in the o object and its value is 38
-// The value of o.b is now always identical to bValue, unless o.b is redefined
-
-// You cannot try to mix both:
-Object.defineProperty(o, 'conflict', {
-  value: 0x9f91102,
-  get: function() { return 0xdeadbeef; }
-});
-// throws a TypeError: value appears only in data descriptors, get appears only in accessor descriptors
-
- -

Ejemplo: Modificando una propiedad

- -

Cuando la propiedad realmente existe, Object.defineProperty() intenta modificar la propiedad de acuerdo a los valores en la descripción y la configuración actual del objeto. Si la descripción antigüa tenía su atributo de configuración establecido en false (la propiedad se dice "sin capacidad de configuración"), entonces ningún atributo además de los que tienen capacidad de escritura pueden ser cambiados. En ese caso, no es posible cambiar hacía atras o hacía delante entre datos y métodos de acceso de tipos de propiedades.

- -

Si una propiedad no tiene capacidad de configuración, su atributo writabble solo puede ser cambiada to false.

- -

Un {{jsxref("Global_Objects/TypeError", "TypeError")}} es arrojado cuando se intenta cambiar las propiedades de atributos sin capacidad de configuración (adeḿas del atributo writable) a menos que el valor actual y el valor nuevo sean los mismos.

- -

Atributo writable

- -

Cuando la propiedad de un atributo writable es establecido to false, la propiedad se dice esta "sin capacidad de escritura". No puede ser reasignada.

- -
var o = {}; // Crea un objeto nuevo
-
-Object.defineProperty(o, 'a', {
-  value: 37,
-  writable: false
-});
-
-console.log(o.a); // logs 37
-o.a = 25; // Ningún error arrojado (lo tiraría en modo estricto, aún si el valor fuera el mismo)
-console.log(o.a); // muestra 37. La asignación no funcionó
-
- -

Como es visto en el ejemplo anterior, intentar escribir en una propiedad "sin capacidad de  escritura" no la cambia pero sí arroja un error.

- -

Atributo enumerable

- -

El atributo de la propiedad enumerable se define si la propiedad aparece en un ciclo {{jsxref("Statements/for...in", "for...in")}} y {{jsxref("Object.keys()")}} o no.

- -
var o = {};
-Object.defineProperty(o, 'a', { value: 1, enumerable: true });
-Object.defineProperty(o, 'b', { value: 2, enumerable: false });
-Object.defineProperty(o, 'c', { value: 3 }); // enumerable defaults to false
-o.d = 4; // enumerable defaults to true when creating a property by setting it
-
-for (var i in o) {
-  console.log(i);
-}
-// logs 'a' and 'd' (in undefined order)
-
-Object.keys(o); // ['a', 'd']
-
-o.propertyIsEnumerable('a'); // true
-o.propertyIsEnumerable('b'); // false
-o.propertyIsEnumerable('c'); // false
-
- -

Atributo configurable

- -

El atributo configurable define si la propiedad puede ser eliminada del objeto, y si sus atributos (excepto writable) pueden ser modificados

- -
var o = {};
-Object.defineProperty(o, 'a', {
-  get: function() { return 1; },
-  configurable: false
-});
-
-Object.defineProperty(o, 'a', { configurable: true }); // arroja TypeError
-Object.defineProperty(o, 'a', { enumerable: true }); //  arroja  TypeError
-Object.defineProperty(o, 'a', { set: function() {} }); //  arroja  TypeError (set estaba definido como undefined)
-Object.defineProperty(o, 'a', { get: function() { return 1; } }); // arroja TypeError (incluso aunque los get hacen lo mismo)
-Object.defineProperty(o, 'a', { value: 12 }); // arroja TypeError
-
-console.log(o.a); // logs 1
-delete o.a; // No hace nada
-console.log(o.a); // logs 1
-
- -

Si o.a tuviese configurable  a true, no se habrían arrojado errores y la propiedad habría sido eliminada. 

- -

Ejemplo: Añadiendo propiedades y valores por defecto

- -

Es importante tener en cuenta la forma en la se aplican los valores por defecto de los atributos. Suele haber diferencias entre simplemente usar la notación con '.' y usar Object.defineProperty(), como se muestra en el siguiente ejemplo:

- -
var o = {};
-
-o.a = 1;
-// es equivalente a :
-Object.defineProperty(o, 'a', {
-  value: 1,
-  writable: true,
-  configurable: true,
-  enumerable: true
-});
-
-
-// Sin embargo,
-Object.defineProperty(o, 'a', { value: 1 });
-// es equivalente a :
-Object.defineProperty(o, 'a', {
-  value: 1,
-  writable: false,
-  configurable: false,
-  enumerable: false
-});
-
- -

Ejemplo: Setters y Getters a medida

- -

Example below shows how to implement a self-archiving object. When temperature property is set, the archive array gets a log entry.

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

or

- -
var pattern = {
-    get: function () {
-        return 'I always return this string, whatever you have assigned';
-    },
-    set: function () {
-        this.myname = 'this is my name string';
-    }
-};
-
-
-function TestDefineSetAndGet() {
-    Object.defineProperty(this, 'myproperty', pattern);
-}
-
-
-var instance = new TestDefineSetAndGet();
-instance.myproperty = 'test';
-console.log(instance.myproperty); // I always return this string, whatever you have assigned
-
-console.log(instance.myname); // this is my name string
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES5.1', '#sec-15.2.3.6', 'Object.defineProperty')}}{{Spec2('ES5.1')}}Initial definition. Implemented in JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.defineproperty', 'Object.defineProperty')}}{{Spec2('ES6')}} 
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaFirefox (Gecko)ChromeInternet ExplorerOperaSafari
Soporte Básico{{CompatGeckoDesktop("2")}}{{CompatChrome("5")}} (versiones previas sin testear){{CompatIE("9")}} ({{CompatIE("8")}}, pero solo con objetos DOM y con muchos comportamientos no estándares  See below.){{CompatOpera("11.60")}}{{CompatSafari("5.1")}} ({{CompatSafari("5")}}, but not on DOM objects)
-
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaFirefox Mobile (Gecko)AndroidIE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatGeckoMobile("2")}}{{CompatVersionUnknown}}{{CompatIE("9")}} and above{{CompatOperaMobile("11.50")}}{{CompatVersionUnknown}}
-
- -

Based on Kangax's compat tables.

- -

Redefining the length property of an Array object

- -

It is possible to redefine the {{jsxref("Array.length", "length")}} property of arrays, subject to the usual redefinition restrictions. (The {{jsxref("Array.length", "length")}} property is initially non-configurable, non-enumerable, and writable. Thus on an unaltered array it is possible to change the {{jsxref("Array.length", "length")}} property's value, or to make it non-writable. It is not allowed to change its enumerability or configurability, or if it is non-writable to change its value or writability.) However, not all browsers permit this redefinition.

- -

Firefox 4 through 22 will throw a {{jsxref("Global_Objects/TypeError", "TypeError")}} on any attempt whatsoever (whether permitted or not) to redefine the {{jsxref("Array.length", "length")}} property of an array.

- -

Versions of Chrome which implement Object.defineProperty() in some circumstances ignore a length value different from the array's current {{jsxref("Array.length", "length")}} property. In some circumstances changing writability seems to silently not work (and not throw an exception). Also, relatedly, some array-mutating methods like {{jsxref("Array.prototype.push")}} don't respect a non-writable length.

- -

Versions of Safari which implement Object.defineProperty() ignore a length value different from the array's current {{jsxref("Array.length", "length")}} property, and attempts to change writability execute without error but do not actually change the property's writability.

- -

Only Internet Explorer 9 and later, and Firefox 23 and later, appear to fully and correctly implement redefinition of the {{jsxref("Array.length", "length")}} property of arrays. For now, don't rely on redefining the {{jsxref("Array.length", "length")}} property of an array to either work, or to work in a particular manner. And even when you can rely on it, there's really no good reason to do so.

- -

Particularidades de Internet Explorer 8

- -

El método Object.defineProperty() de Internet Explorer sólo puede ser usado en objetos del DOM. Algunas explicaciones al respecto:

- - - -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/entries/index.html b/files/es/web/javascript/referencia/objetos_globales/object/entries/index.html deleted file mode 100644 index 98aff1178a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/entries/index.html +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: Object.entries() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/entries -translation_of: Web/JavaScript/Reference/Global_Objects/Object/entries ---- -
{{JSRef}}
- -

El método Object.entries() devuelve una matriz de pares propios de una propiedad enumerable [key, value] de un objeto dado, en el mismo orden que es proporcionado por {{jsxref("Sentencias/for...in", "for...in")}} (La diferencia es que un bucle for-in enumera las propiedades en la cadena de prototipos).

- -

Sintaxis

- -
Object.entries(obj)
- -

Parámetros

- -
-
obj
-
The object whose enumerable own property [key, value] pairs are to be returned.
-
- -

Valor de retorno

- -

An array of the given object's own enumerable property [key, value] pairs.

- -

Descripción

- -

Object.entries() returns an array whose elements are arrays corresponding to the enumerable property [key, value] pairs found directly upon object. The ordering of the properties is the same as that given by looping over the property values of the object manually.

- -

Ejemplos

- -
var obj = { foo: 'bar', baz: 42 };
-console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]
-
-// array like object
-var obj = { 0: 'a', 1: 'b', 2: 'c' };
-console.log(Object.entries(obj)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]
-
-// array like object with random key ordering
-var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
-console.log(Object.entries(an_obj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]
-
-// getFoo is property which isn't enumerable
-var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
-my_obj.foo = 'bar';
-console.log(Object.entries(my_obj)); // [ ['foo', 'bar'] ]
-
-// non-object argument will be coerced to an object
-console.log(Object.entries('foo')); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]
-
-// iterate through key-value gracefully
-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"
-}
-
-// Or, using array extras
-Object.entries(obj).forEach(([key, value]) => {
-    console.log(key + ' ' + value); // "a 5", "b 7", "c 9"
-});
-
- -

Converting an Object to a Map

- -

The {{jsxref("Map", "new Map()")}} constructor accepts an iterable of entries. With Object.entries, you can easily convert from {{jsxref("Object")}} to {{jsxref("Map")}}:

- -
var obj = { foo: 'bar', baz: 42 };
-var map = new Map(Object.entries(obj));
-console.log(map); // Map { foo: "bar", baz: 42 }
- -

Polyfill

- -

To add compatible Object.entries support in older environments that do not natively support it, you can find a Polyfill in the tc39/proposal-object-values-entries or in the es-shims/Object.entries repositories.

- -

Specifications

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-object.entries', 'Object.entries')}}{{Spec2('ESDraft')}}Initial definition.
{{SpecName('ES8', '#sec-object.entries', 'Object.entries')}}{{Spec2('ES8')}}
- -

Browser compatibility

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(54)}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(47)}}{{CompatNo}}{{CompatNo}}{{CompatSafari(10.1)}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroid WebviewChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatChrome(54)}}{{CompatChrome(54)}}{{CompatVersionUnknown}}{{CompatGeckoMobile(47)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/freeze/index.html b/files/es/web/javascript/referencia/objetos_globales/object/freeze/index.html deleted file mode 100644 index 890d0d07b4..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/freeze/index.html +++ /dev/null @@ -1,174 +0,0 @@ ---- -title: Object.freeze() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/freeze -translation_of: Web/JavaScript/Reference/Global_Objects/Object/freeze ---- -
{{JSRef}}
- -

El método Object.freeze() congela un objeto, es decir: impide que se le agreguen nuevas propiedades; impide que se puedan eliminar las propiedades ya existentes; impide que dichas propiedades, o su capacidad de enumeración, configuración, o escritura, puedan ser modificadas; impide también que se pueda modificar su prototipo. El método devuelve el objeto recibido.

- -
{{EmbedInteractiveExample("pages/js/object-freeze.html")}}
- - - -

Sintaxis

- -
Object.freeze(obj)
- -

Parámetros

- -
-
obj
-
El objeto a congelar.
-
- -

Valor devuelto

- -

El mismo objeto

- -

Descripción

- -

Nada puede ser agregado o removido de las propiedades establecidas de un objeto congelado. Cualquier intento de hacerlo fallará, ya sea de manera silenciosa o arrojando una excepción {{jsxref("TypeError")}} (más comunmente, pero no exclusivamente, en {{jsxref("Strict_mode", "strict mode", "", 1)}}).

- -

Los valores no pueden ser cambiados por propiedades de datos. Propiedades de acceso (getters y setters) funcionan igual (y aún dan la ilusión de que estas cambiando el valor). Note que los valores que son objetos aún pueden ser modificados, a menos que esten congelados tambien.

- -

La función retorna el mismo objeto pasado en ella, no crea una copia congelada

- -

Ejemplos

- -

Congelando Objetos

- -
var obj = {
-  prop: function() {},
-  foo: 'bar'
-};
-
-// Nuevas propiedades pueden ser agregadas,
-// propiedades existentes pueden cambiar o removerse
-obj.foo = 'baz';
-obj.lumpy = 'woof';
-delete obj.prop;
-
-// Ambos, el objeto pasado como argumento tanto como el que se regresa
-// serán congelados
-// Es innecesario salvar el objeto que es regresado en orden de congelar
-// el original.
-var o = Object.freeze(obj);
-
-assert(Object.isFrozen(obj) === true);
-
-// Ahora cualquier cambio fallará
-obj.foo = 'quux'; // No hace nada de manera silenciosa
-obj.quaxxor = 'the friendly duck'; // No agrega una nueva propiedad, de manera silenciosa
-
-// ...y en modo estrico tal intento arrojará TypeErrors
-function fail(){
-  'use strict';
-  obj.foo = 'sparky'; // arroja un TypeError
-  delete obj.quaxxor; // arroja un TypeError
-  obj.sparky = 'arf'; // arroja un TypeError
-}
-
-fail();
-
-// Los intentos utilizando Object.defineProperty tambien arrojarán una excepción...
-Object.defineProperty(obj, 'ohai', { value: 17 }); // arroja un TypeError
-Object.defineProperty(obj, 'foo', { value: 'eit' }); // arroja un TypeError
-
-// Es imposible cambiar un prototipo
-// Estos ejemplos retornan un error TypeError
-Object.setPrototype(obj,{x:20})
-obj.__proto__ = {x:20}
-
- -

El siguiente ejemplo muestra que los valores de objetos en un objeto congelado pueden ser mutados (la congelación es superficial).

- -
obj1 = {
-  internal: {}
-};
-
-Object.freeze(obj1);
-obj1.internal.a = 'aValue';
-
-obj1.internal.a // 'aValue'
-
-// Para hacer obj completamente inmutable, congelamos cada objeto en obj.
-// Para hacerlo, usamos esta función.
-function deepFreeze(obj) {
-
-  // Recuperamos el nombre de las propiedades en obj
-  var propNames = Object.getOwnPropertyNames(obj);
-
-  // Congelamos las propiedades antes de congelar a obj
-  propNames.forEach(function(name) {
-    var prop = obj[name];
-
-    // Si la propiedad es un objeto, llamaremos a deepFreezze para que congele las propiedades de ese objeto
-    if (typeof prop == 'object' && prop !== null && !Object.isFrozen(prop))
-      deepFreeze(prop);
-  });
-
-  // congelamos a obj
-  return Object.freeze(obj);
-}
-
-obj2 = {
-  internal: {}
-};
-
-deepFreeze(obj2);
-obj2.internal.a = 'anotherValue';
-obj2.internal.a; // undefined
-
- -

Notas

- -

En ES5, si el argumento pasado a este método no es un objeto (un primitivo), entonces causará un {{jsxref("TypeError")}}. En ES6, un argumento no-objeto será tratado como si fuera un objeto congelado cualquiera, simplemente lo regresa.

- -
> Object.freeze(1)
-TypeError: 1 is not an object // Código ES5
-
-> Object.freeze(1)
-1                             // Código ES6
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES5.1', '#sec-15.2.3.9', 'Object.freeze')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.freeze', 'Object.freeze')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-object.freeze', 'Object.freeze')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de navegadores

- -

{{Compat("javascript.builtins.Object.freeze")}}

- -

Mira también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/fromentries/index.html b/files/es/web/javascript/referencia/objetos_globales/object/fromentries/index.html deleted file mode 100644 index 023cc5f8ca..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/fromentries/index.html +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Object.fromEntries() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/fromEntries -tags: - - JavaScript - - Objeto - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Object/fromEntries ---- -
{{JSRef}}
- -

El método Object.fromEntries() transforma una lista de pares con [clave-valor] en un objeto.

- -
{{EmbedInteractiveExample("pages/js/object-fromentries.html")}}
- - - -

Sintaxis

- -
Object.fromEntries(iterable);
- -

Parámetros

- -
-
iterador
-
Un iterador como {{jsxref("Array")}}, {{jsxref("Map")}} u otros objetos que implementen el protocolo iterable.
-
- -

Valor de retorno

- -

Un nuevo objeto cuyas propiedades son dadas por las entradas del iterador.

- -

Descripción

- -

El método Object.fromEntries() toma una lista de pares con clave-valor y devuelve un nuevo objeto cuyas propiedades son dadas por éstas entradas. El argumento iterador se espera que sea un objeto que implemente un método @@iterator, que devuelve un objeto iterador, que produce un objeto tipo array de dos elementos, donde el primer elemento es un valor que se usará como la clave de la propiedad, y el segundo elemento es el valor a asociar con esa clave de propiedad.

- -

Object.fromEntries() realiza lo inverso de {{jsxref("Object.entries()")}}.

- -

Ejemplos

- -

Convirtiendo un Map en un Objeto

- -

Con Object.fromEntries, puedes convertir de un {{jsxref("Map")}} a un {{jsxref("Object")}}:

- -
const map = new Map([ ['foo', 'bar'], ['baz', 42] ]);
-const obj = Object.fromEntries(map);
-console.log(obj); // { foo: "bar", baz: 42 }
-
- -

Convirtiendo un Arreglo en un Objeto

- -

Con Object.fromEntries, puedes convertir de un {{jsxref("Array")}} a un {{jsxref("Object")}}:

- -
const arr = [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ];
-const obj = Object.fromEntries(arr);
-console.log(obj); // { 0: "a", 1: "b", 2: "c" }
-
- -

Transformación de Objetos

- -

Con Object.fromEntries, su método inverso {{jsxref("Object.entries()")}}, y array métodos de manipulaciín de arreglos, puedes transformar objetos así:

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

Especificaciones

- - - - - - - - - - - - - - -
EspecificaciónEstado
{{SpecName('ESDraft', '#sec-object.fromentries', 'Object.fromEntries')}}Etapa 4
- -

Compatibilidad de navegadores

- - - -

{{Compat("javascript.builtins.Object.fromEntries")}}

- -

Véase tambien

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/getownpropertydescriptor/index.html b/files/es/web/javascript/referencia/objetos_globales/object/getownpropertydescriptor/index.html deleted file mode 100644 index fb2eaf68da..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/getownpropertydescriptor/index.html +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: Object.getOwnPropertyDescriptor() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/getOwnPropertyDescriptor -tags: - - ECMAScript5 - - JavaScript - - Método(2) - - Objeto -translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor ---- -
{{JSRef}}
- -

El método Object.getOwnPropertyDescriptor() regresa como descripción de propiedad para una propiedad propia (eso es, una presente directamente en el objeto, no presente por la fuerza a través de la cadena de prototipo del objeto) de un objeto dado.

- -

Síntaxis

- -
Object.getOwnPropertyDescriptor(obj, prop)
- -

Parametros

- -
-
obj
-
El objeto en el que se busca la propiedad.
-
prop
-
El nombre de la propiedad del cuál se obtendrá la descripción.
-
- -

Valor de retorno

- -

Un descriptor de propiedad de una propiedad dada si existe en el objeto,  {{jsxref("undefined")}} en cualquier otro caso.

- -

Descripción

- -

Éste método permite la examinación precisa de la descripción de una propiedad. Una propiedad en JavaScript consiste de el nombre de una cadena de valor y un descriptor de propiedad. Información más detallada acerca de los tipos de descripciones y sus atributos puede ser encontrada en {{jsxref("Object.defineProperty()")}}.

- -

Una descripción de propiedad es un registro con alguno de los siguientes atributos:

- -
-
value
-
El valor asociado con la propiedad (descriptores de datos unicamente).
-
writable
-
true si y solo si el valor asociado con la propiedad puede ser cambiada (descriptores de datos unicamente).
-
get
-
Una función que sirve como método de acceso para la propiedad, o {{jsxref("undefined")}} si no hay método de acceso (métodos de acceso de descripciones unicamente).
-
set
-
Una función que sirve como método de establecimiento para la propieda, o {{jsxref("undefined")}} si no hay método de establecimiento (métodos de establecimiento de descripciones unicamente).
-
configurable
-
true si y solo si el tipo de ésta descripción de propiedad puede ser cambiada y si la propiedad puede ser eliminada del objeto correspondiente.
-
enumerable
-
true si y solo si ésta propiedad aparece durante la enumeración de las propiedades del objeto correspondiente.
-
- -

Ejemplos

- -
var o, d;
-
-o = { get foo() { return 17; } };
-d = Object.getOwnPropertyDescriptor(o, 'foo');
-// d is { configurable: true, enumerable: true, get: /* la función de acceso */, set: undefined }
-
-o = { bar: 42 };
-d = Object.getOwnPropertyDescriptor(o, 'bar');
-// d is { 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 es { value: 8675309, writable: false, enumerable: false, configurable: false }
-
- -

Notas

- -

En ES5, si el primer argumento que se le pasa a éste método no es un objeto (primitivo), entonces causará un {{jsxref("TypeError")}}. En ES6, un no-objeto pasado como primer argumento será convertido (coerción) a un objeto en primera instancia.

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

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.2.3.3', 'Object.getOwnPropertyDescriptor')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.getownpropertydescriptor', 'Object.getOwnPropertyDescriptor')}}{{Spec2('ES6')}}
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("5")}}{{CompatGeckoDesktop("2")}}{{CompatIE("8")}}{{CompatOpera("12")}}{{CompatSafari("5")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/getownpropertydescriptors/index.html b/files/es/web/javascript/referencia/objetos_globales/object/getownpropertydescriptors/index.html deleted file mode 100644 index 9585fa80e8..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/getownpropertydescriptors/index.html +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: Object.getOwnPropertyDescriptors() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/getOwnPropertyDescriptors -tags: - - JavaScript - - Objeto - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors ---- -
{{JSRef}}
- -

El métodoObject.getOwnPropertyDescriptors() regresa todos los descriptores de propiedad propios de un objeto dado.

- -
{{EmbedInteractiveExample("pages/js/object-getownpropertydescriptors.html")}}
- -

Sintáxis

- -
Object.getOwnPropertyDescriptors(obj)
- -

Parámetros

- -
-
obj
-
El objeto para el cual obtener todos los descriptores de propiedad.
-
- -

Valores devueltos

- -

Un objeto que contiene todos los descriptores de propiedad propios de un objeto.

- -

Descripción

- -

Este método permite la examinación de la descripción precisa de todas las propiedades de un objeto. Una propiedad en JavaScript consiste en un valor-cadena nombre y un descriptor de propiedad. Más información acerca de los tipos de descriptores de propiedad y sus atributos pueden ser encontrados en {{jsxref("Object.defineProperty()")}}.

- -

Un descriptor de propiedad es un registro con algunos de los siguientes atributos:

- -
-
value
-
El valor asociado con la propiedad (solo descriptores de datos).
-
writable
-
true si y solo si el valor asociado con la propiedad puede ser cambiado (solo descriptores de datos).
-
get
-
Un función que sirve como un getter para la propiedad, o {{jsxref("undefined")}} si no hay getter (solo descriptores de acceso).
-
set
-
Una función que sirve como un setter para la propiedad, o {{jsxref("undefined")}} si no hay setter (solo descriptores de acceso).
-
configurable
-
true si y solo si el tipo de este descriptor de propiedad puede ser cambiado y si la propiedad puede ser borrada de el objeto correspondiente.
-
enumerable
-
true si y solo si esta propiedad aparece durante la enumeración de las propiedad en el objeto correspondiente.
-
- -

Ejemplos

- -

Creando un clon superficial

- -

Mientras el método {{jsxref("Object.assign()")}} solo copiará las propiedades enumerables y propias de un objeto fuente a un objeto destino, puedes usar este método y {{jsxref("Object.create()")}} para una copia superficial entre dos objetos desconocidos:

- -
Object.create(
-  Object.getPrototypeOf(obj),
-  Object.getOwnPropertyDescriptors(obj)
-);
-
- -

Creando una subclase

- -

Una manera típica de crear una subclase es definir la subclase, establecer su prototipo a una instancia de la superclase, y después definir propiedades en esa instancia. Esto puede ponerse incómodo especialmente por los getters y setters. En cambio, tú puedes usar este código para establecer el prototipo:

- -
function superclass() {}
-superclass.prototype = {
-  // Define tus métodos y propiedades aquí
-};
-function subclass() {}
-subclass.prototype = Object.create(
-  superclass.prototype,
-  {
-    // Define tus métodos y propiedades aquí
-  }
-);
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-object.getownpropertydescriptors', 'Object.getOwnPropertyDescriptors')}}{{Spec2('ESDraft')}}Definición inicial en ECMAScript 2017.
{{SpecName('ES2017', '#sec-object.getownpropertydescriptors', 'Object.getOwnPropertyDescriptors')}}{{Spec2('ES2017')}} 
- -

Browser compatibility

- -
- - -

{{Compat("javascript.builtins.Object.getOwnPropertyDescriptors")}}

-
- -

Ver también:

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/getownpropertynames/index.html b/files/es/web/javascript/referencia/objetos_globales/object/getownpropertynames/index.html deleted file mode 100644 index 5c3819045a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/getownpropertynames/index.html +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: Object.getOwnPropertyNames() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/getOwnPropertyNames -translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames ---- -
- {{JSRef("Global_Objects", "Object")}}
-

Resumen

-

El método Object.getOwnPropertyNames() devuelve un array con todas las propiedades (numerables o no) encontradas en un objeto dado.

-

Sintaxis

-
Object.getOwnPropertyNames(obj)
-

Parámetros

-
-
- obj
-
- El objeto cuyas propiedades directas, numerables y no-numerables, serán devueltas.
-
-

Descripción

-

Object.getOwnPropertyNames devuelve un array cuyos elementos son strings correspondientes a cada una de las propiedades encontradas directamente en obj. El orden de las propiedades numerables en el array coincide con el expuesto para for...in loop (o para {{jsxref("Object.keys")}}) con respecto a las propiedades del object. El orden de las propiedades no-numerables del array, y de éstas respecto a las numerables, no está definido.

-

Ejemplos

-
var arr = ["a", "b", "c"];
-print(Object.getOwnPropertyNames(arr).sort()); // imprime "0,1,2,length"
-
-// Objeto similar a Array
-var obj = { 0: "a", 1: "b", 2: "c"};
-print(Object.getOwnPropertyNames(obj).sort()); // imprime "0,1,2"
-
-// Imprime nombres de variables y valores usando Array.forEach
-Object.getOwnPropertyNames(obj).forEach(function(val, idx, array) {
-  print(val + " -> " + obj[val]);
-});
-// imprime
-// 0 -> a
-// 1 -> b
-// 2 -> c
-
-// propiedad no-numerable
-var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; }, enumerable: false } });
-my_obj.foo = 1;
-
-print(Object.getOwnPropertyNames(my_obj).sort()); // imprime "foo, getFoo"
-
-

Si se quiere solo las propiedades numerables, ver {{jsxref("Object.keys")}} o usar un for...in loop (aunque esto devolvería propiedades numerables no directas del objeto pertenecientes a la cadena de prototype a la que pertenezca, a menos que finalmente se filtre con hasOwnProperty()).

-

Items de la cadena prototype no se listan:

-
function ParentClass () {
-}
-ParentClass.prototype.inheritedMethod = function () {
-};
-
-function ChildClass () {
-  this.prop = 5;
-  this.method = function () {};
-}
-ChildClass.prototype = new ParentClass;
-ChildClass.prototype.prototypeMethod = function () {
-};
-
-alert(
-  Object.getOwnPropertyNames(
-    new ChildClass() // ["prop", "method"]
-  )
-)
-
-

Get Non-Enumerable Only

-

Aquí se usa la función Array.prototype.filter para quitar las keys numerables (obtenidas con Object.keys) de una lista con todas las keys (obtenida con Object.getOwnPropertynames) dejando solo las no-numerables.

-
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) {
-    //no encontrada en las keys de enum_only, por lo que se trata de una key numerable, se devuelve true para mantenerla en filter
-    return true;
-  } else {
-    return false;
-  }
-});
-
-console.log(nonenum_only);
-
-

Especificaciones

- - - - - - - - - - - - - - - - - - -
EspecificaciónStatusComentario
{{SpecName('ES5.1', '#sec-15.2.3.4', 'Object.getOwnPropertyNames')}}{{Spec2('ES5.1')}}Initial definition.
- Implemented in JavaScript 1.8.5
{{SpecName('ES6', '#sec-object.getownpropertynames', 'Object.getOwnPropertyNames')}}{{Spec2('ES6')}} 
-

 Compatibilidad con Navegadores

-
- {{CompatibilityTable}}
-
- - - - - - - - - - - - - - - - - - - -
FeatureFirefox (Gecko)ChromeInternet ExplorerOperaSafari
Basic support4 (2.0)59125
-
-
- - - - - - - - - - - - - - - - - - - -
FeatureFirefox Mobile (Gecko)AndroidIE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
-

Based on Kangax's compat table.

-

SpiderMonkey-specific notes

- -

Ver también

- diff --git a/files/es/web/javascript/referencia/objetos_globales/object/getownpropertysymbols/index.html b/files/es/web/javascript/referencia/objetos_globales/object/getownpropertysymbols/index.html deleted file mode 100644 index cf8be23f59..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/getownpropertysymbols/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Object.getOwnPropertySymbols() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/getOwnPropertySymbols -tags: - - ECMAScript6 - - Experimental - - JavaScript - - Método(2) - - Objeto -translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols ---- -
{{JSRef}}
- -

El método Object.getOwnPropertySymbols() regresa una colección de todos las propiedades de los simbolos encontrados directamente en un objeto dado.

- -

Síntaxis

- -
Object.getOwnPropertySymbols(obj)
- -

Parametros

- -
-
obj
-
El objeto del cual los simbolos de propiedades son devueltos.
-
- -

Descripción

- -

Similar a {{jsxref("Object.getOwnPropertyNames()")}}, puedes obtener todas las propiedades de simbolos de un objeto dado como una colección de simbolos. Note que {{jsxref("Object.getOwnPropertyNames()")}} no contiene en sí mismo las propiedades de simbolos de un objeto y solo contiene las propiedades de cadenas.

- -

Cómo todos los objetos no tienen inicialmente propiedades simbolos propios, Object.getOwnPropertySymbols() regresa una colección vacia a menos que tengas propiedades de simbolos establecidas en tu objeto.

- -

Ejemplos

- -
var obj = {};
-var a = Symbol('a');
-var b = Symbol.for('b');
-
-obj[a] = 'localSymbol';
-obj[b] = 'globalSymbol';
-
-var objectSymbols = Object.getOwnPropertySymbols(obj);
-
-console.log(objectSymbols.length); // 2
-console.log(objectSymbols);        // [Symbol(a), Symbol(b)]
-console.log(objectSymbols[0]);     // Symbol(a)
-
- -

Especificaciones

- - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-object.getownpropertysymbols', 'Object.getOwnPropertySymbols')}}{{Spec2('ES6')}}Definición inicial.
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome(38)}}{{CompatGeckoDesktop("36.0")}}{{CompatNo}}259
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico5.1{{CompatChrome(38)}}{{CompatGeckoMobile("36.0")}}{{CompatNo}}259
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/getprototypeof/index.html b/files/es/web/javascript/referencia/objetos_globales/object/getprototypeof/index.html deleted file mode 100644 index a9b50ec2ec..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/getprototypeof/index.html +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Object.getPrototypeOf() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/getPrototypeOf -tags: - - ECMAScript5 - - JavaScript - - Objeto - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf ---- -
{{JSRef("Global_Objects", "Object")}}
- -

Resumen

- -

El método Object.getPrototypeOf() devuelve el prototipo (es decir, el valor de la propiedad interna [[Prototype]]) del objeto especificado.

- -

Sintaxis

- -
Object.getPrototypeOf(obj)
- -

Parámetros

- -
-
obj
-
El objeto cuyo prototipo va a ser devuelto.
-
- -

Valor Devuelto

- -

El prototipo del objeto dado. Si no existen propiedades heredadas se devolverá {{jsxref("null")}}.

- -

Ejemplos

- -
var proto = {};
-var obj= Object.create(proto);
-Object.getPrototypeOf(obj) === proto; // true
-
- -

Notas

- -

En ES5, lanzará una excepción {{jsxref("Global_Objects/TypeError", "TypeError")}} si el parámetro obj no es un objeto. en ES6, El parámetro será forzado a un {{jsxref("Global_Objects/Object", "Object")}}.

- -
> Object.getPrototypeOf('foo')
-TypeError: "foo" is not an object  // ES5 code
-> Object.getPrototypeOf('foo')
-String.prototype                   // ES6 code
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.2.3.2', 'Object.getPrototypeOf')}}{{Spec2('ES5.1')}}Definición inicial.
{{SpecName('ES6', '#sec-object.getprototypeof', 'Object.getProtoypeOf')}}{{Spec2('ES6')}} 
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("5")}}{{CompatGeckoDesktop("1.9.1")}}{{CompatIE("9")}}{{CompatOpera("12.10")}} (tal vez en las últimas versiones){{CompatSafari("5")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Based on Kangax's compat table.

- -

Notas espécificas sobre Opera

- -

A pesar de que las versiones anteriores de opera no soportan aun Object.getPrototypeOf(), Opera soporta la propiedad no estándar {{jsxref("Object.proto", "__proto__")}} desde Opera 10.50.

- -

Mira también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/hasownproperty/index.html b/files/es/web/javascript/referencia/objetos_globales/object/hasownproperty/index.html deleted file mode 100644 index d84e5d6a52..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/hasownproperty/index.html +++ /dev/null @@ -1,186 +0,0 @@ ---- -title: Object.prototype.hasOwnProperty() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/hasOwnProperty -tags: - - JavaScript - - Method - - Object - - Prototype -translation_of: Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty ---- -
{{JSRef("Objetos_globales", "Object")}}
- -

Resumen

- -

El método hasOwnProperty() devuelve un booleano indicando si el objeto tiene la propiedad especificada.

- -

Sintaxis

- -
obj.hasOwnProperty(prop)
- -

Parámetros

- -
-
prop
-
El nombre de la propiedad a buscar.
-
- -

Descripción

- -

Todo objeto descendiente de Object hereda el método hasOwnProperty. Este método puede ser usando para determinar si un objeto tiene la propiedad especificada como una propiedad directa de ese objeto; a diferencia del operador {{jsxref("Operators/in", "in")}}, este método no verifica la cadena prototipo del objeto.

- -

Ejemplos

- -

Ejemplo: usar hasOwnProperty para comprobar la existencia de una propiedad

- -

El siguiente ejemplo determina si el objeto o contiene una propiedad llamada prop:

- -
o = new Object();
-o.prop = 'exists';
-
-function changeO() {
-  o.newprop = o.prop;
-  delete o.prop;
-}
-
-o.hasOwnProperty('prop');   // returns true
-changeO();
-o.hasOwnProperty('prop');   // returns false
- -

Ejemplo: Directo versus propiedades heredadas

- -

El siguiente ejemplo diferencia entre propiedades directas y propiedades heredadas a través de la cadena prototype:

- -
o = new Object();
-o.prop = 'exists';
-o.hasOwnProperty('prop');             // returns true
-o.hasOwnProperty('toString');         // returns false
-o.hasOwnProperty('hasOwnProperty');   // returns false
- -

Ejemplo: Iterando sobre las propiedades de un objeto

- -

El siguiente ejemplo muestra como iterar sobre las propiedades de un objeto sin ejecutar sobre propiedades heredadas. Observe que el bucle for..in ya está no solo iterando elementos enumerables, por consiguiente uno no debería asumir que basado en la falta de propiedades no numerales mostrando en el bucle que hasOwnProperty por si misma no está solo es estrictamente para iterar elementos numerados (como con {{jsxref("Object.getOwnPropertyNames()")}}).

- -
var buz = {
-    fog: 'stack'
-};
-
-for (var name in buz) {
-    if (buz.hasOwnProperty(name)) {
-        alert("this is fog (" + name + ") for sure. Value: " + buz[name]);
-    }
-    else {
-        alert(name); // toString or something else
-    }
-}
- -

Ejemplo: hasOwnProperty como una propiedad

- -

JavaScript no protege el nombre de la propiedad hasOwnProperty; en consecuencia, si existe la posibilidad  de que un objeto pudiera tener la propiedad con ese nombre, es necesario usar un externo hasOwnProperty para obtener los correctos resultados:

- -
var foo = {
-    hasOwnProperty: function() {
-        return false;
-    },
-    bar: 'Here be dragons'
-};
-
-foo.hasOwnProperty('bar'); // always returns false
-
-// Use another Object's hasOwnProperty and call it with 'this' set to foo
-({}).hasOwnProperty.call(foo, 'bar'); // true
-
-// It's also possible to use the hasOwnProperty property from the Object property for this purpose
-Object.prototype.hasOwnProperty.call(foo, 'bar'); // true
-
- -

Observe que en el último caso no han habido nuevos objetos creados.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificacionesEstadoComentario
ECMAScript 3rd Edition. Implemented in JavaScript 1.5StandardInitial definition.
{{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')}} 
- -

Compatibilidad 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() }}
-
- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/index.html b/files/es/web/javascript/referencia/objetos_globales/object/index.html deleted file mode 100644 index 99089bd28e..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/index.html +++ /dev/null @@ -1,187 +0,0 @@ ---- -title: Object -slug: Web/JavaScript/Referencia/Objetos_globales/Object -tags: - - Constructor - - JavaScript - - Objeto - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/Object ---- -
{{JSRef}}
- -
La clase Object representa uno de los tipos de datos de Javascript. Es es usado para guardar una colección de datos definidos y entidades más complejas. Los objetos pueden ser creados utilzando el constructor {{jsxref("Object/Object", "Object()")}} o la sintaxis literal de objeto. 
- -

El constructor Object crea una envoltura al objeto.

- -

Sintaxis

- - - -
// Object initialiser or literal
-{ [ nameValuePair1[, nameValuePair2[, ...nameValuePairN] ] ] }
-
-// Called as a constructor
-new Object([value])
- -

Parámetros

- -
-
nameValuePair1, nameValuePair2, ... nameValuePairN
-
Los pares de nombres (strings) y los valores (cualquier valor) donde los nombres son separados por una coma.
-
valor
-
Cualquier valor.
-
- -

Description

- -

El constructor Object crea una envoltura de objeto  al valor dado.  Si el valor es  {{jsxref("null")}} o {{jsxref("undefined")}}, creará y retornará un objeto vacío, de otra forma, retornará un objeto de un tipo que corresponda al valor dado. Si el valor ya es un objeto devolverá el valor.

- -

Cuando es llamano en un contexto non-constructor, Object se comportará indenticamente a new Object().

- -

Ver object initializer / literal syntax.

- -

Propiedades del constructor Object

- -
-
Object.length
-
Tiene un valor de 1.
-
{{jsxref("Object.prototype")}}
-
Permite añadir propiedades a todos los objetos del tipo Object.
-
- -

Métodos del constructor  Object

- -
-
{{jsxref("Object.assign()")}}
-
Copia los valores de todas sus propiedades enumerables desde uno o más objetos fuente a un objeto destino.
-
{{jsxref("Object.create()")}}
-
Crea un nuevo objeto con el prototipo objeto y propiedades específicadas.
-
{{jsxref("Object.defineProperty()")}}
-
Añade la propiedad nombrada descrita por un descriptor dado a un objeto.
-
{{jsxref("Object.defineProperties()")}}
-
Agrega las propiedades nombradas descritas por los descriptores dados a un objeto.
-
{{jsxref("Object.entries()")}}
-
Returns an array containing all of the [key, value] pairs of a given object's own enumerable string properties.
-
{{jsxref("Object.freeze()")}}
-
Freezes an object: other code can't delete or change any properties.
-
{{jsxref("Object.fromEntries()")}}
-
Returns a new object from an iterable of key-value pairs (reverses {{jsxref("Object.entries")}}).
-
{{jsxref("Object.getOwnPropertyDescriptor()")}}
-
Returns a property descriptor for a named property on an object.
-
{{jsxref("Object.getOwnPropertyDescriptors()")}}
-
Returns an object containing all own property descriptors for an object.
-
{{jsxref("Object.getOwnPropertyNames()")}}
-
Returns an array containing the names of all of the given object's own enumerable and non-enumerable properties.
-
{{jsxref("Object.getOwnPropertySymbols()")}}
-
Returns an array of all symbol properties found directly upon a given object.
-
{{jsxref("Object.getPrototypeOf()")}}
-
Returns the prototype of the specified object.
-
{{jsxref("Object.is()")}}
-
Compares if two values are the same value. Equates all NaN values (which differs from both Abstract Equality Comparison and Strict Equality Comparison).
-
{{jsxref("Object.isExtensible()")}}
-
Determines if extending of an object is allowed.
-
{{jsxref("Object.isFrozen()")}}
-
Determines if an object was frozen.
-
{{jsxref("Object.isSealed()")}}
-
Determines if an object is sealed.
-
{{jsxref("Object.keys()")}}
-
Returns an array containing the names of all of the given object's own enumerable string properties.
-
{{jsxref("Object.preventExtensions()")}}
-
Prevents any extensions of an object.
-
{{jsxref("Object.seal()")}}
-
Prevents other code from deleting properties of an object.
-
{{jsxref("Object.setPrototypeOf()")}}
-
Sets the prototype (i.e., the internal [[Prototype]] property).
-
{{jsxref("Object.values()")}}
-
Returns an array containing the values that correspond to all of a given object's own enumerable string properties.
-
- -

Object instances and Object prototype object

- -

All objects in JavaScript are descended from Object; all objects inherit methods and properties from {{jsxref("Object.prototype")}}, although they may be overridden. For example, other constructors' prototypes override the constructor property and provide their own toString() methods. Changes to the Object prototype object are propagated to all objects unless the properties and methods subject to those changes are overridden further along the prototype chain.

- -

Properties

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

Methods

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

Deleting a property from an object

- -

There isn't any method in an Object itself to delete its own properties (e.g. like Map.prototype.delete()). To do so one has to use the delete operator.

- -

Examples

- -

Using Object given undefined and null types

- -

The following examples store an empty Object object in o:

- -
var o = new Object();
-
- -
var o = new Object(undefined);
-
- -
var o = new Object(null);
-
- -

Using Object to create Boolean objects

- -

The following examples store {{jsxref("Boolean")}} objects in o:

- -
// equivalent to o = new Boolean(true);
-var o = new Object(true);
-
- -
// equivalent to o = new Boolean(false);
-var o = new Object(Boolean());
-
- -

Specifications

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.2', 'Object')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-object-objects', 'Object')}}{{Spec2('ES6')}}Added Object.assign, Object.getOwnPropertySymbols, Object.setPrototypeOf, Object.is
{{SpecName('ESDraft', '#sec-object-objects', 'Object')}}{{Spec2('ESDraft')}}Added Object.entries, Object.values and Object.getOwnPropertyDescriptors.
- -

Browser compatibility

- -
- - -

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

-
- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/is/index.html b/files/es/web/javascript/referencia/objetos_globales/object/is/index.html deleted file mode 100644 index 926357d0ab..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/is/index.html +++ /dev/null @@ -1,172 +0,0 @@ ---- -title: Object.is() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/is -tags: - - Comparación - - Condición - - ECMAScript2015 - - JavaScript - - Objeto - - condicional - - igualdad - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Object/is ---- -
{{JSRef}}
- -

El método Object.is() determina si dos valores son iguales.

- -

Síntaxis

- -
Object.is(valor1, valor2);
- -

Parámetros

- -
-
valor1
-
Primer valor a comparar.
-
valor2
-
Segundo valor a comparar.
-
- -

Valor return del método

- -

Este método devuelve un valor de tipo {{jsxref("Boolean")}} indicando si los valores pasados como parámetros son iguales o no.

- -

Descripción

- -

Object.is() determina si dos valores son iguales. Dos valores son iguales si se puede asegurar que:

- - - -

Esta comparación no es igual a la que realiza el operador {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}}. El operador {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}} aplica varias coerciones(comprobaciones) en ambos sentidos (si no tienen el mismo Type) antes de probar la igualdad (lo que resulta en comportamientos como  "" == false siendo true), pero Object.is no obliga a niguno de los valores.

- -

Esta tampoco es igual a la que realiza el operador {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}}. El operador {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}} (y el operador {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}}) trata los valores -0 y +0 como iguales, y además, trata {{jsxref("Number.NaN")}} como no igual a {{jsxref("NaN")}}.

- -

Ejemplos

- -
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
-
-// Special Cases
-Object.is(0, -0);            // false
-Object.is(-0, -0);           // true
-Object.is(NaN, 0/0);         // true
-
- -

Polyfill para navegadores no ES6

- -

Object.is() es una adición propuesta en el estandar ECMA-262; y como tal, puede no estar presente en todos los navegadores. Para los casos en que no tenga disponible este método, podría utilizar este código haciendolo que se cargue antes que cualquier otro script. Esto permite que puedas utilizar Object.is() en los navegadores que no lo llevan incluído.

- -
if (!Object.is) {
-  Object.is = function(x, y) {
-    // SameValue algorithm
-    if (x === y) { // Steps 1-5, 7-10
-      // Steps 6.b-6.e: +0 != -0
-      return x !== 0 || 1 / x === 1 / y;
-    } else {
-      // Step 6.a: NaN == NaN
-      return x !== x && y !== y;
-    }
-  };
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-object.is', 'Object.is')}}{{Spec2('ES6')}}Definición inicial.
- -

Compatibilidad en navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome("30")}}{{CompatGeckoDesktop("22")}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatUnknown}}{{CompatGeckoMobile("22")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/isextensible/index.html b/files/es/web/javascript/referencia/objetos_globales/object/isextensible/index.html deleted file mode 100644 index 30082032ea..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/isextensible/index.html +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: Object.isExtensible() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/isExtensible -tags: - - ECMAScript5 - - JavaScript - - JavaScript 1.8.5 - - Objeto - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Object/isExtensible ---- -
{{JSRef}}
- -

El método Object.isExtensible() determina si un objeto es extendible (si puede tener propiedades nuevas agregadas a éste).

- -

Síntaxis

- -
Object.isExtensible(obj)
- -

Parametros

- -
-
obj
-
El objeto a ser revisado.
-
- -

Descripción

- -

Los objetos son extendibles por defecto: ellos pueden tener propiedades nuevas agregadas a ellos, y (en motores que soportan {{jsxref("Object.proto", "__proto__")}} {{deprecated_inline}} la propiedad __proto__) pueden ser modificados. Un objeto puede ser marcado como no extendible usando {{jsxref("Object.preventExtensions()")}}, {{jsxref("Object.seal()")}}, o {{jsxref("Object.freeze()")}}.

- -

Ejemplos

- -
// Los Objetos nuevos son extendibles (por defecto).
-var empty = {};
-Object.isExtensible(empty); // === true
-
-// ...pero eso puede cambiar.
-Object.preventExtensions(empty);
-Object.isExtensible(empty); // === false
-
-// Objetos sellados por definición son no-extendibles.
-var sealed = Object.seal({});
-Object.isExtensible(sealed); // === false
-
-// Objetos congelados también por definición son no-extendibles.
-var frozen = Object.freeze({});
-Object.isExtensible(frozen); // === false
-
- -

Notas

- -

En ES5, si el argumento pasado a éste método no es un objeto (primitivo), entonces regresará {{jsxref("TypeError")}}. En ES6, un no-objeto pasado como argumento será tratado como si fuera un objeto no-extendible ordinario, simplemente regresa false.

- -
Object.isExtensible(1);
-// TypeError: 1 is not an object (ES5 code)
-
-Object.isExtensible(1);
-// false                         (ES6 code)
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.2.3.13', 'Object.isExtensible')}}{{Spec2('ES5.1')}}Definición inicial. Implementada en JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.isextensible', 'Object.isExtensible')}}{{Spec2('ES6')}} 
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("6")}}{{CompatGeckoDesktop("2.0")}}{{CompatIE("9")}}{{CompatOpera("12")}}{{CompatSafari("5.1")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporote básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/isfrozen/index.html b/files/es/web/javascript/referencia/objetos_globales/object/isfrozen/index.html deleted file mode 100644 index 9a2bc2ee94..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/isfrozen/index.html +++ /dev/null @@ -1,190 +0,0 @@ ---- -title: Object.isFrozen() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/isFrozen -tags: - - ECMAScript5 - - JavaScript - - JavaScript 1.8.5 - - Objeto - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Object/isFrozen ---- -
{{JSRef}}
- -

El método Object.isFrozen() determina si un objeto está congelado.

- -

Síntaxis

- -
Object.isFrozen(obj)
- -

Parametros

- -
-
obj
-
El objeto a ser revisado.
-
- -

Descripción

- -

Un objeto está congelado si y solo si no es {{jsxref("Object.isExtensible()", "extendible", "", 1)}}, todas sus propiedades son no-configurables, y todos los datos de sus propiedades no tienen capacidad de escritura.

- -

Ejemplos

- -
// Un objeto nuevo es extendible, así que no está congelado.
-Object.isFrozen({}); // === false
-
-// Un objeto vacio el cuál no es extendible está congelado vacuamente.
-var vacuouslyFrozen = Object.preventExtensions({});
-Object.isFrozen(vacuouslyFrozen); // === true
-
-// Un objeto nuevo con una propiedad es tabién extendible, ergo no congelado.
-var oneProp = { p: 42 };
-Object.isFrozen(oneProp); // === false
-
-// Prevenir la extensión de un objeto no lo congela.
-// porque la propiedad sigue teniendo capacidad de configuración (y capacidad de escritura).
-Object.preventExtensions(oneProp);
-Object.isFrozen(oneProp); // === false
-
-// ...pero eliminar la propiedad congela el objeto vacuamente.
-delete oneProp.p;
-Object.isFrozen(oneProp); // === true
-
-// Un ojbeto no-extendible con una propiedad sin capacidad de escritura pero si con capacidad de configuración no está congelado.
-var nonWritable = { e: 'plep' };
-Object.preventExtensions(nonWritable);
-Object.defineProperty(nonWritable, 'e', { writable: false }); // Le quita la capacidad de escritura.
-Object.isFrozen(nonWritable); // === false
-
-// Quitarle la capacidad de configuración a una propiedad congela el objeto.
-Object.defineProperty(nonWritable, 'e', { configurable: false }); // le quita la capacidad de configuración.
-Object.isFrozen(nonWritable); // === true
-
-// Un objeto no-extendible con una propiedad sin capacidad de configuración pero con capacidad de escritura no congela a dicho objeto.
-var nonConfigurable = { release: 'the kraken!' };
-Object.preventExtensions(nonConfigurable);
-Object.defineProperty(nonConfigurable, 'release', { configurable: false });
-Object.isFrozen(nonConfigurable); // === false
-
-// Quitarle la capacidad de configuración a esa propiedad congela el objeto.
-Object.defineProperty(nonConfigurable, 'release', { writable: false });
-Object.isFrozen(nonConfigurable); // === true
-
-// A non-extensible object with a configurable accessor property isn't frozen.
-var accessor = { get food() { return 'yum'; } };
-Object.preventExtensions(accessor);
-Object.isFrozen(accessor); // === false
-
-// ...but make that property non-configurable and it becomes frozen.
-Object.defineProperty(accessor, 'food', { configurable: false });
-Object.isFrozen(accessor); // === true
-
-// But the easiest way for an object to be frozen is if Object.freeze has been called on it.
-var frozen = { 1: 81 };
-Object.isFrozen(frozen); // === false
-Object.freeze(frozen);
-Object.isFrozen(frozen); // === true
-
-// By definition, a frozen object is non-extensible.
-Object.isExtensible(frozen); // === false
-
-// Also by definition, a frozen object is sealed.
-Object.isSealed(frozen); // === true
-
- -

Notas

- -

En ES5, si el argumento pasado a éste método no es un objeto (primitivo), entonces causará un {{jsxref("TypeError")}}. En ES6, un no-objeto pasado como argumento será tratado como si fuera un objeto ordinario congelado, simplemente regresa true.

- -
Object.isFrozen(1);
-// TypeError: 1 is not an object (ES5 code)
-
-Object.isFrozen(1);
-// true                          (ES6 code)
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.2.3.12', 'Object.isFrozen')}}{{Spec2('ES5.1')}} -

Definición inicial. Implementada en JavaScript 1.8.5.

-
{{SpecName('ES6', '#sec-object.isfrozen', 'Object.isFrozen')}}{{Spec2('ES6')}} 
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracteristicasChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("6")}}{{CompatGeckoDesktop("2.0")}}{{CompatIE("9")}}{{CompatOpera("12")}}{{CompatSafari("5.1")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracteristicasAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/isprototypeof/index.html b/files/es/web/javascript/referencia/objetos_globales/object/isprototypeof/index.html deleted file mode 100644 index 8275ebafac..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/isprototypeof/index.html +++ /dev/null @@ -1,158 +0,0 @@ ---- -title: Object.prototype.isPrototypeOf() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/isPrototypeOf -translation_of: Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf ---- -
{{JSRef}}
- -

El método isPrototypeOf() comprueba si un objeto se encuentra en la cadena de prototipado de otro.

- -
-

Nota: isPrototypeOf difiere del operador {{jsxref("Operators/instanceof", "instanceof")}}. En la expresión "object instanceof AFunction", la cadena de prototipado de object es comprobada contra AFunction.prototype, no contra la propia AFunction.

-
- -

Sintaxis

- -
prototypeObj.isPrototypeOf(obj)
- -

Parámetros

- -
-
prototypeObj
-
Un objeto para ver comprobado contra cada vínculo en la cadena de prototipado del argumento object.
-
object
-
El object sobre cuya cadena de prototipado se realizará la búsqueda.
-
- -

Descripción

- -

El método isPrototypeOf permite comprobar si un objetyo existe o no en la cadena de prototipado de otro.

- -

Por ejemplo, considerese la siguiente cadena de prototipado:

- -
function Fee() {
-  // ...
-}
-
-function Fi() {
-  // ...
-}
-Fi.prototype = new Fee();
-
-function Fo() {
-  // ...
-}
-Fo.prototype = new Fi();
-
-function Fum() {
-  // ...
-}
-Fum.prototype = new Fo();
-
- -

Al final de la secuencia, si se instanci Fum y se necesita verificar si el prototipo de Fi existe en la cadena de prototipado de Fum prototype chain, puede hacerse esto:

- -
var fum = new Fum();
-// ...
-
-if (Fi.prototype.isPrototypeOf(fum)) {
-  // do something safe
-}
-
- -

Esto, junto con el operador {{jsxref("Operators/instanceof", "instanceof")}} resulta especialmente útil si se tiene código que sólo puede operar cuando se trata de objetos descendientes de una cadena de prototipado específica, p.e., para garantizar que ciertos métodos o propiedades estén presentes en dichos objetos.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoObservaciones
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición 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')}} 
{{SpecName('ESDraft', '#sec-object.prototype.hasownproperty', 'Object.prototype.hasOwnProperty')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
PrestaciónChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
PrestaciónAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/issealed/index.html b/files/es/web/javascript/referencia/objetos_globales/object/issealed/index.html deleted file mode 100644 index c28437561a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/issealed/index.html +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: Object.isSealed() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/isSealed -tags: - - ECMAScript5 - - JavaScript - - JavaScript 1.8.5 - - Objeto - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Object/isSealed ---- -
{{JSRef}}
- -

El método Object.isSealed() si el objeto está sellado.

- -
{{EmbedInteractiveExample("pages/js/object-issealed.html")}}
- - - -

Syntax

- -
Object.isSealed(obj)
- -

Parámetros

- -
-
obj
-
El objeto que debe ser verificado.
-
- -

Valor devuelto

- -

Un {{jsxref("Boolean")}} indicando si el objeto dado está sellado.

- -

Descripción

- -

Devuelve true si el objeto está sellado, de lo contrario devuelve false. Un objeto está sellado si no es {{jsxref("Object.isExtensible", "extensible", "", 1)}} y si todas sus propiedades no se pueden configurar y por lo tanto no removibles (pero no necesariamente no modificables).

- -

Ejemplos

- -
// Los objetos no están sellados por defecto
-var empty = {};
-Object.isSealed(empty); // === false
-
-// Si haces un objeto vacío no extendible,
-// está vacíamente sellado
-Object.preventExtensions(empty);
-Object.isSealed(empty); // === true
-
-// Lo mismo no es vedad sobre un objeto no vacío,
-// a menos que sus propiedades son todas no configurables.
-var hasProp = { fee: 'fie foe fum' };
-Object.preventExtensions(hasProp);
-Object.isSealed(hasProp); // === false
-
-// Pero hazlas todas no configurables
-// y el objeto se vuelve sellado.
-Object.defineProperty(hasProp, 'fee', {
-  configurable: false
-});
-Object.isSealed(hasProp); // === true
-
-// La manerá más facil de sellar un objeto, por supuesto,
-// es Object.seal
-var sealed = {};
-Object.seal(sealed);
-Object.isSealed(sealed); // === true
-
-// Un objeto sellado es, por definición, no extendible.
-Object.isExtensible(sealed); // === false
-
-// Un objeto sellado puodría estar congelado,
-// pero no tiene que ser.
-Object.isFrozen(sealed); // === true
-// (Todas las propiedades también no modificables)
-
-var s2 = Object.seal({ p: 3 });
-Object.isFrozen(s2); // === false
-// ('p' todavía es modificable)
-
-var s3 = Object.seal({ get p() { return 0; } });
-Object.isFrozen(s3); // === true
-// (solo la configurabilidad es importante para las propiedades de acceso)
-
- -

Notes

- -

En ES5, si el argumento de este método no es un objeto (primitivo), entonces causará un {{jsxref("TypeError")}}. En ES2015, un argumento que no sea un objeto será tratado como si fuera un objeto sellado ordinario, simplemente devuelve true.

- -
Object.isSealed(1);
-// TypeError: 1 no es un objeto (ES5 code)
-
-Object.isSealed(1);
-// true                          (ES2015 code)
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES5.1', '#sec-15.2.3.11', 'Object.isSealed')}}{{Spec2('ES5.1')}}Definición inicial. Implementada en JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.issealed', 'Object.isSealed')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-object.issealed', 'Object.isSealed')}}{{Spec2('ESDraft')}} 
- -

Browser compatibility

- -
- - -

{{Compat("javascript.builtins.Object.isSealed")}}

-
- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/keys/index.html b/files/es/web/javascript/referencia/objetos_globales/object/keys/index.html deleted file mode 100644 index d6bd068f2f..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/keys/index.html +++ /dev/null @@ -1,156 +0,0 @@ ---- -title: Object.keys() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/keys -translation_of: Web/JavaScript/Reference/Global_Objects/Object/keys ---- -
{{JSRef("Global_Objects", "Object")}}
- -

Resumen

- -

El método Object.keys() devuelve un array de las propiedades names de un objeto, en el mismo orden como se obtienen en un loop normal

- -

Sintaxis

- -
Object.keys(obj)
- -

Parámetros

- -
-
obj
-
El objeto cuyas propiedades enumerables serán devueltas.
-
- -

Valor de retorno

- -

Un array de strings que representan toda las propiedades  del objeto

- -

Descripción

- -

Object.keys devuelve un array cuyos elementos son strings correspondientes a las propiedades enumerables que se encuentran directamente en el object. El orden de las propiedades es el mismo que se proporciona al iterar manualmente sobre las propiedades del objeto.

- -

Ejemplos

- -
var arr = ['a', 'b', 'c'];
-console.log(Object.keys(arr)); // console: ['0', '1', '2']
-
-// arreglo como objeto
-var obj = { 0: 'a', 1: 'b', 2: 'c' };
-console.log(Object.keys(obj)); // console: ['0', '1', '2']
-
-// arreglo como objeto con nombres ordenados aleatoriamente
-var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
-console.log(Object.keys(an_obj)); // console: ['2', '7', '100']
-
-// getFoo es una propiedad no enumerable
-var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
-my_obj.foo = 1;
-
-console.log(Object.keys(my_obj)); // console: ['foo']
-
- -

Si quieres todas las propiedades, incluso las no enumerables, mira {{jsxref("Object.getOwnPropertyNames()")}}.

- -

Notas

- -

En ES5, si el argumento para este método no es un objeto (uno primitivo), causará un {{jsxref("Global_Objects/TypeError", "TypeError")}}. En ES2015, un argumento no-objeto será coaccionado hacia un objeto.

- -
> Object.keys("foo")
-// TypeError: "foo" is not an object  (ES5)
-
-> Object.keys("foo")
-// ["0", "1", "2"]                    (ES2015)
- -

Polyfill

- -

Para añadir soporte Object.keys en entornos más antiguos que no lo soportan de forma nativa, copia el siguiente fragmento:

- -
// 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 called on non-object');
-      }
-
-      var result = [], prop, i;
-
-      for (prop in obj) {
-        if (hasOwnProperty.call(obj, prop)) {
-          result.push(prop);
-        }
-      }
-
-      if (hasDontEnumBug) {
-        for (i = 0; i < dontEnumsLength; i++) {
-          if (hasOwnProperty.call(obj, dontEnums[i])) {
-            result.push(dontEnums[i]);
-          }
-        }
-      }
-      return result;
-    };
-  }());
-}
-
- -

Ten en cuenta que el código anterior incluye claves no-enumerables en IE7 (y quizás IE8), al pasar en un objeto desde una ventana diferente.

- -

Para un simple Polyfill del Navegador, mira Javascript - Compatibilidad de Object.keys en Navegadores.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
{{SpecName('ES5.1', '#sec-15.2.3.14', 'Object.keys')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en JavaScript 1.8.5.
{{SpecName('ES2015', '#sec-object.keys', 'Object.keys')}}{{Spec2('ES2015')}}
{{SpecName('ESDraft', '#sec-object.keys', 'Object.keys')}}{{Spec2('ESDraft')}}
- -

Compatibilidad con navegadores

- -
{{Compat("javascript.builtins.Object.keys")}}
- - - -

Mira también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/preventextensions/index.html b/files/es/web/javascript/referencia/objetos_globales/object/preventextensions/index.html deleted file mode 100644 index 50f51214a8..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/preventextensions/index.html +++ /dev/null @@ -1,176 +0,0 @@ ---- -title: Object.preventExtensions() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/preventExtensions -translation_of: Web/JavaScript/Reference/Global_Objects/Object/preventExtensions ---- -
{{JSRef}}
- -

El método Object.preventExtensions() previene que nuevas propiedades sean agregadas a un objeto (p.e. previene la extensión futuras al objeto).

- -

Sintaxis

- -
Object.preventExtensions(obj)
- -

Parametros

- -
-
obj
-
El objeto que debería hacerse inextendible.
-
- -

Descripción

- -

Un objeto es extendible si propiedades nuevas pueden ser agregadas a este. Object.preventExtensions() marca un objecto como no extendible, así nunca más tendrá propiedades más allá de las tenía en el momento en que fue marcado como no extendible. Note que las propiedades de un objeto no-extendible, en general, aún pueden ser eliminadas. Los intentos de agregar propiedades nuevas a un objeto no-extendible fallarán, ya sea de manera silenciosa o arrojando una excepción {{jsxref("TypeError")}} (comunmente, pero no de manera exclusiva, en {{jsxref("Functions_and_function_scope/Strict_mode", "strict mode", "", 1)}}).

- -

Object.preventExtensions() solo previene la adición de propiedades propias. Las propiedades aún pueden ser agregadas a object.prototype. Sin embargo, llamar Object.preventExtensions() sobre un objeto tambien prevendrá extensiones sobre la propiedad {{jsxref("Object.proto", "__proto__")}} {{deprecated_inline}}.

- -

Si hay una manera de cambiar un objeto extendible a uno no-extendible, hay una manera de hacer lo opuesto en ECMAScript 5.

- -

Ejemplos

- -
// Object.preventExtensions regresa el objeto hecho no-extendible.
-var obj = {};
-var obj2 = Object.preventExtensions(obj);
-obj === obj2; // true
-
-// Los Objetos son extendibles por defecto.
-var empty = {};
-Object.isExtensible(empty); // === true
-
-// ...pero pueden ser cambiados.
-Object.preventExtensions(empty);
-Object.isExtensible(empty); // === false
-
-// Object.defineProperty arroja una excepción cuando se agrega
-// una propiedad nueva a un objeto no-extendible.
-var nonExtensible = { removable: true };
-Object.preventExtensions(nonExtensible);
-Object.defineProperty(nonExtensible, 'new', { value: 8675309 }); // arroja TypeError
-
-// En modo estricto, tratar de agregar propiedades nuevas
-// a un objeto no-extensible arroja una excepción TypeError.
-function fail() {
-  'use strict';
-  nonExtensible.newProperty = 'FAIL'; // arroja TypeError
-}
-fail();
-
-// EXTENSION (solo funciona en motores que soporten __proto__
-// (el cual esta obsoleto. Usar Object.getPrototypeOf en su lugar)):
-// La propiedad prototype de un objeto no-extendible es inmutable.
-var fixed = Object.preventExtensions({});
-fixed.__proto__ = { oh: 'hai' }; // arroja TypeError
-
- -

Notas

- -

En ES5, si el argumento pasado a este método no es un objeto (primitivo), entonces causará un {{jsxref("TypeError")}}. En ES6, un argumento no-objeto será tratado como si fuera un objeto ordinario no-extendible, simplemente lo regresa.

- -
Object.preventExtensions(1);
-// TypeError: 1 is not an object (ES5 code)
-
-Object.preventExtensions(1);
-// 1                             (ES6 code)
-
- -

Especificación

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES5.1', '#sec-15.2.3.10', 'Object.preventExtensions')}}{{Spec2('ES5.1')}}Definición inicial. Implementada en JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.preventextensions', 'Object.preventExtensions')}}{{Spec2('ES6')}} 
- -

Compatibilidad de navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("6")}}{{CompatGeckoDesktop("2.0")}}{{CompatIE("9")}}{{CompatOpera("12")}}{{CompatSafari("5.1")}}
Comportamiento en ES6 para un no-objeto pasado como argumento{{CompatChrome("44")}}{{CompatGeckoDesktop("35.0")}}{{CompatIE("11")}}{{CompatOpera("31")}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Comportamiento en ES6 para no-objetos pasados como argumentos{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile("35.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Mira también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/propertyisenumerable/index.html b/files/es/web/javascript/referencia/objetos_globales/object/propertyisenumerable/index.html deleted file mode 100644 index b2ede9dd60..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/propertyisenumerable/index.html +++ /dev/null @@ -1,185 +0,0 @@ ---- -title: Object.prototype.propertyIsEnumerable() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/propertyIsEnumerable -tags: - - JavaScript - - Objecto - - Property - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable ---- -
{{JSRef}}
- -

El método propertyIsEnumerable() regresa un Boleano indicando si la propiedad especificada es enumerable.

- -

Sintaxis

- -
obj.propertyIsEnumerable(prop)
- -

Parametros

- -
-
prop
-
Nombre de la propiedad a probar.
-
- -

Descripción

- -

Todos los objetos tienen un método propertyIsEnumerable. Este método puede determinar si la propiedad especificada en el objeto puede ser enumerada por un ciclo {{jsxref("Statements/for...in", "for...in")}}, con la excepción de propiedades heredadas a través de prototype. Si el objeto no tiene la propiedad especificada, este método regresa un valor false.

- -

Ejemplo

- -

Uso básico de propertyIsEnumerable

- -

El siguiente ejemplo muestra el uso de propertyIsEnumerable en objetos y arrays:

- -
var o = {};
-var a = [];
-o.prop = 'es enumerable';
-a[0] = 'es enumerable';
-
-o.propertyIsEnumerable('prop');   // regresa true
-a.propertyIsEnumerable(0);        // regresa true
-
- -

Definidas por usuario vs predefinidas

- -

El siguiente ejemplo demuestra la enumerabilidad de las propiedades definidas por el usuario contra las predefinidas:

- -
var a = ['es enumerable'];
-
-a.propertyIsEnumerable(0);          // regresa true
-a.propertyIsEnumerable('length');   // regresa false
-
-Math.propertyIsEnumerable('random');   // regresa false
-this.propertyIsEnumerable('Math');     // regresa false
-
- -

Directa vs  heredadas

- -
var a = [];
-a.propertyIsEnumerable('constructor');         // regresa false
-
-function primerConstructor() {
-  this.propiedad = 'no es enumerable';
-}
-
-primerConstructor.prototype.primerMetodo = function() {};
-
-function segundoConstructor() {
-  this.metodo = function() { return 'es enumerable'; };
-}
-
-secondConstructor.prototype = new primerConstructor;
-secondConstructor.prototype.constructor = segundoConstructor;
-
-var o = new segundoConstructor();
-o.propiedadArbitraria = 'is enumerable';
-
-o.propertyIsEnumerable('propiedadArbitraria ');   // regresa true
-o.propertyIsEnumerable('metodo');                 // regresa true
-o.propertyIsEnumerable('propiedad');              // regresa false
-
-o.propiedad = 'es enumerable';
-
-o.propertyIsEnumerable('propiedad');              // regresa true
-
-// Regresan false por estar en el prototipo el cual no es
-// considerado por propertyIsEnumerable (a pesar de que las dos ultimas son
-// iterables con un for-in)
-o.propertyIsEnumerable('prototype');   // regresa false (como en JS 1.8.1/FF3.6)
-o.propertyIsEnumerable('constructor'); // regresa false
-o.propertyIsEnumerable('firstMethod'); // regresa false
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial.
{{SpecName('ES5.1', '#sec-15.2.4.7', 'Object.prototype.propertyIsEnumerable')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-object.prototype.propertyisenumerable', 'Object.prototype.propertyIsEnumerable')}}{{Spec2('ES6')}} 
- -

Compatibilidad de navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Notas específicas para Gecko

- -

Al inicio de JavaScript 1.8.1 (in Firefox 3.6), propertyIsEnumerable('prototype') regresa false en lugar de true; esto hace que el resultado cumpla con la especificación de ECMAScript 5.

- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/proto/index.html b/files/es/web/javascript/referencia/objetos_globales/object/proto/index.html deleted file mode 100644 index 24055ac261..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/proto/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Object.prototype.__proto__ -slug: Web/JavaScript/Referencia/Objetos_globales/Object/proto -translation_of: Web/JavaScript/Reference/Global_Objects/Object/proto ---- -
-

Advertencia: Cambiar la propiedad [[Prototype]] de un objeto es, por como los navegadores modernos optimizan las propiedades de acceso, una operación muy lenta en todos los navegadores y motores JavaScript. Los efectos en el rendimiento de alterar la herencia son muchos y delicados, y no se limita simplemente al tiempo que necesita la asignación obj.__proto__ = ... sentencia,  sin embargo afecta a  cualquier código que tiene acceso a  cualquier objeto cuya propiedad [[Prototype]] ha sido alterada, por lo que se debe de tener mucho cuidado.

- -

Si el rendimiento en tu aplicación es necesario, deberías evitar modificar la propiedad [[Prototype]] de un objeto. En su lugar, crea un objecto nuevo con la propiedad [[Prototype]] deseada usando {{jsxref("Object.create()")}}.

-
- -
-

Advertencia: Mientras Object.prototype.__proto__ es soportado hoy día por la mayoría de navegadores, su existencia y comportamiento exacto solo ha sido estandarizado en la especificación ECMAScript 6 como una característica de legado y para asegurar la compatibilidad entre los navegadores web. Para tener un mejor soporte, es recomendable que se utilice {{jsxref("Object.getPrototypeOf()")}} para obtener el prototipo de un objeto.

-
- -
{{JSRef}}
- -

La propiedad __proto__ de {{jsxref("Object.prototype")}} es una propiedad llamada de acceso (una función getter y también función setter) que provee acceso al interior de [[Prototype]] (ya sea un objeto o {{jsxref("Global_Objects/null", "null")}}) del objeto a través del cual se accede a ella.

- -

El uso de la propiedad __proto__ es polémico actualmente, y está rechazado. Originalmente, nunca fué incluído en la especificación de EcmaScript, pero los navegadores modernos decidieron implementarla de todas maneras. Sólo actualmente, la propiedad __proto__ ha sido estandarizada en la especificación del lenguaje ECMAScript 6, para asegurar la compatibilidad entre navegadores, por lo tanto, esta será soportada en el futuro. Actualmente está obsoleta  en favor de {{jsxref("Object.getPrototypeOf")}}/{{jsxref("Reflect.getPrototypeOf")}} y {{jsxref("Object.setPrototypeOf")}}/{{jsxref("Reflect.setPrototypeOf")}} (aunque todavía establecer el [[Prototype]] de un objeto es una operación muy lenta, por lo que si nos preocupa el rendimiento, debemos de evitarlo).

- -

La propiedad __proto__ puede ser usada también en un objeto definido de forma literal, para establecer el [[Prototype]] en la creación de este, como alternativa a {{jsxref("Object.create()")}}. Ver: object initializer / literal syntax.

- -

Síntaxis

- -
var shape = {};
-var circle = new Circle();
-
-// Establecer el objeto prototype.
-// OBSOLETO. Esto es solo un ejemplo. NO HACER ESTO en código real.
-shape.__proto__ = circle;
-
-// Obtener el objeto prototype
-console.log(shape.__proto__ === circle); // true
-
- -

Nota: esto es, dos guiones bajos, seguidos de cinco carácteres "proto", seguido de dos guiones bajos mas.

- -

Descripción

- -

La función getter __proto__el valor interno del [[Prototype]] de un objeto. Para objetos creados usando un objeto literal, el valor es {{jsxref("Object.prototype")}}. Para objetos creados usando literales de array, este valor es {{jsxref("Array.prototype")}}. Para funciones, este valor {{jsxref("Function.prototype")}}. Para objetos creados utilizando el operador new fun, donde fun es una función constructora incluída en JavaScript  ({{jsxref("Array")}}, {{jsxref("Boolean")}}, {{jsxref("Date")}}, {{jsxref("Number")}}, {{jsxref("Object")}}, {{jsxref("String")}}, etcétera—incluyendo nuevos contrusctores conforme JavaScript evoluciona), este valor es fun.prototype.  (Esto es, si el constructor no devuelve un objeto de forma explícita, o el fun.prototype ha sido reasignado desde que la instancia fué creada).

- -

El __proto__ setter la mutación del objeto [[Prototype]] de un objeto. El objeto debe ser extensible según {{jsxref("Object.isExtensible()")}}: si no, un {{jsxref("Global_Objects/TypeError", "TypeError")}} es lanzado. El valor proveído debe ser un objeto o {{jsxref("Global_Objects/null", "null")}}. Provetendo otro tipo de valor no hará nada.

- -

Para entender como los prototipos son usados para herencia, ver el artículo Inheritance and the prototype chain.

- -

La propiedad __proto__ es una simple propiedad de acceso a {{jsxref("Object.prototype")}} que consiste en una función getter y setter. Un acceso a la propiedad  __proto__ que eventualmente consulta {{jsxref("Object.prototype")}} encontrará esta propiedad, pero un acceso que no consulta {{jsxref("Object.prototype")}} no lo encontrará. Si alguna otra propiedad __proto__ es encontrada antes {{jsxref("Object.prototype")}} es consultada, esta propiedad sera ocultada por la encontrada en {{jsxref("Object.prototype")}}.

- -

Especificaciones

- - - - - - - - - - - - - - -
EspecificacionesEstadoComentario
{{SpecName('ES6', '#sec-additional-properties-of-the-object.prototype-object', 'Object.prototype.__proto__')}}{{Spec2('ES6')}}Incluída en el anexo (normativa) para características de legado ECMAScript para navegadores web (observar que la especificación de codificación es lo que ya está en las implementaciones).
- -

Compatibilidad de navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatIE("11")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracteristicaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Notas de compatibilidad

- -

Mientras la especificación ECMAScript 2015 (ES6) dicta que el soporte para __proto__ es requerido solo para navegadores web (a pesar de ser normativo), otros medios pueden soportarlo por uso de legado.

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/prototype/index.html b/files/es/web/javascript/referencia/objetos_globales/object/prototype/index.html deleted file mode 100644 index 9b55c9cccc..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/prototype/index.html +++ /dev/null @@ -1,195 +0,0 @@ ---- -title: Object.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/Object/prototype -tags: - - JavaScript - - Objeto - - Propiedad -translation_of: Web/JavaScript/Reference/Global_Objects/Object -translation_of_original: Web/JavaScript/Reference/Global_Objects/Object/prototype ---- -
{{JSRef("Objetos_globales", "Object")}}
- -

Resumen

- -

La propiedad Object.prototype representa al objeto prototipo de {{jsxref("Object")}}.

- -

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

- -

Descripción

- -

Todos los objetos en JavaScript provienen de {{jsxref("Global_Objects/Object", "Object")}}; todos los objetos heredan métodos y propiedades de Object.prototype, aunque pueden ser sobrecargados. Sin embargo, un Object  puede ser deliberadamente creado para que esto no sea cierto (por ejemplo usando  {{jsxref("Object.create", "Object.create(null)")}}), o bien alterado para que no cumpla esta propiedad (por ejemplo usando {{jsxref("Object.setPrototypeOf")}}).

- -

Cambios en el prototipo de {{jsxref("Object")}} son vistos por todos los objetos a traves de el encadenado de prototype, a no ser que las propiedades y los metodos sujetos a estos cambios sean sobreescritos en algun lugar de la cadena de prototype. Este poderoso y a la vez potencialmente peligroso mecanismo permite extender o sobreescribir el comportamiento de un objeto.

- -

Propiedades

- -
-
{{jsxref("Object.prototype.constructor")}}
-
Especifica la función que crea el prototipo de un objeto.
-
{{jsxref("Object.proto", "Object.prototype.__proto__")}} {{Non-standard_inline}}
-
Apunta al objeto que se usó como prototipo cuando fue instanciado.
-
{{jsxref("Object.noSuchMethod", "Object.prototype.__noSuchMethod__")}} {{Non-standard_inline}}
-
Permite a una función ser definida que sera ejecutada cuando un miembro del objeto es llamado como un metodo.
-
{{jsxref("Object.count", "Object.prototype.__count__")}} {{obsolete_inline()}}
-
Se utiliza para devolver el número de propiedades enumerables directamente en un objeto definido por el usuario, pero que ha sido eliminado.
-
{{jsxref("Object.parent", "Object.prototype.__parent__")}} {{obsolete_inline()}}
-
Apunta al contexto de un objeto. Ha sido borrado.
-
- -

Métodos

- -
-
{{jsxref("Object.defineGetter", "Object.prototype.__defineGetter__()")}} {{Non-standard_inline}} {{deprecated_inline()}}
-
Asocia una función con una propiedad que, cuando se accede a ella, ejecuta esa función y devuelve su valor de retorno.
-
{{jsxref("Object.defineSetter", "Object.prototype.__defineSetter__()")}} {{Non-standard_inline}} {{deprecated_inline()}}
-
Asocia una función con una propiedad que al establecerse ejecuta esa función que modifica la propiedad.
-
{{jsxref("Object.lookupGetter", "Object.prototype.__lookupGetter__()")}} {{Non-standard_inline}} {{deprecated_inline()}}
-
Devuelve la función asociada con la propiedad indicada por el método {{jsxref("Object.defineGetter", "__defineGetter__")}}.
-
{{jsxref("Object.lookupSetter", "Object.prototype.__lookupSetter__()")}} {{Non-standard_inline}} {{deprecated_inline()}}
-
Devuelve la función asociada con la propiedad indicada en el método {{jsxref("Object.defineSetter", "__defineSetter__")}}.
-
{{jsxref("Object.prototype.hasOwnProperty()")}}
-
Devuelve un valor lógico (boolean) que indica si el objeto contiene la propiedad indicada como una propiedad directa de ese objeto y no heredada por la cadena de prototipo.
-
{{jsxref("Object.prototype.isPrototypeOf()")}}
-
Devuelve una indicación booleana cuando el objeto especificado está en la cadena de prototipos del objeto sobre el cuál éste método es llamado.
-
{{jsxref("Object.prototype.propertyIsEnumerable()")}}
-
Devuelve un valor lógico (boolean) indicando si el attributo ECMAScript [[Enumerable]] está definido.
-
{{jsxref("Object.prototype.toSource()")}} {{Non-standard_inline}}
-
Devuelve una cadena con el fuente de un literal de objeto que representa el objeto desde el que este método es llamado; se puede usar este valor para crear un nuevo objeto.
-
{{jsxref("Object.prototype.toLocaleString()")}}
-
Llama a {{jsxref("Object.toString", "toString()")}}.
-
{{jsxref("Object.prototype.toString()")}}
-
Devuelve la cadena de texto (string) que representa al objeto.
-
{{jsxref("Object.prototype.unwatch()")}} {{Non-standard_inline}}
-
Remueve un punto de mira de una propiedad del objeto.
-
{{jsxref("Object.prototype.valueOf()")}}
-
Devuelve el valor primitivo del objeto indicado.
-
{{jsxref("Object.prototype.watch()")}} {{Non-standard_inline}}
-
Agrega un punto de mira a una propiedad del objeto.
-
{{jsxref("Object.prototype.eval()")}} {{ obsolete_inline()}}
-
Se utiliza para evaluar una cadena de código JavaScript  en el contexto del objeto especificado, pero que ha sido removido.
-
- -

Ejemplos

- -

Al alterar el comportamiento de un método existente en Object.prototype, es oportuno considerar envolver el código de tu extensión antes o después de la existente lógica. Por ejemplo, este trozo de código (sin testear) ejecutara una determinada lógica antes de que la lógica existente o la de algún otro elemento sea ejecutada.

- -

Cuando una función es llamada, los parámetros de la llamada son mantenidos en el argumento parecido a una array llamado "arguments". Por ejemplo, en la llamada "myFn(a, b, c)", los parámetros dentro del cuerpo de la función myFn estarán contenidos en una variable llamada "arguments". Si se desea llamar al siguiente método de la cadena de prototype, simplemente añade this y arguments a la funcion apply(). Este patrón puede ser usado en cualquier prototype, por ejemplo Node.prototype, Function.prototype, etc.

- -
var current = Object.prototype.valueOf;
-
-// Como mi propiedad "-prop-value" es un atajo y no se encuentra siempre
-// en la cadena de prototype, queremos modificar Object.prototype:
-Object.prototype.valueOf = function() {
-  if (this.hasOwnProperty('-prop-value')) {
-    return this['-prop-value'];
-  } else {
-    // No parece que este objeto sea uno de los mios, por lo que recaeeremos
-    // en el comportamiento por defecto lo mejor que podamos.
-    // La llamada apply se comporta como el "super" en otros lenguages de programación.
-    // A pesar de que valueOf() no tiene parametros, alguna otra llamada podria tenerlos.
-    return current.apply(this, arguments);
-  }
-}
- -

Como JavaScript no tiene objetos de tipo “subclase”, prototype es realmente útil para crear un objeto “base” donde ciertas funciones actúan como objetos. Por ejemplo:

- -
var Person = function(name) {
-  this.name = name;
-  this.canTalk = true;
-};
-
-Person.prototype.greet = function() {
-  if (this.canTalk) {
-    console.log('Hi, I am ' + this.name);
-  }
-};
-
-var Employee = function(name, title) {
-  Person.call(this, name);
-  this.title = title;
-};
-
-Employee.prototype = Object.create(Person.prototype);
-Employee.prototype.constructor = Employee;
-
-Employee.prototype.greet = function() {
-  if (this.canTalk) {
-    console.log('Hi, I am ' + this.name + ', the ' + this.title);
-  }
-};
-
-var Customer = function(name) {
-  Person.call(this, name);
-};
-
-Customer.prototype = Object.create(Person.prototype);
-Customer.prototype.constructor = Customer;
-
-var Mime = function(name) {
-  Person.call(this, name);
-  this.canTalk = false;
-};
-
-Mime.prototype = Object.create(Person.prototype);
-Mime.prototype.constructor = Mime;
-
-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();
-// Hi, I am Bob, the Builder
-
-joe.greet();
-// Hi, I am Joe
-
-rg.greet();
-// Hi, I am Red Green, the Handyman
-
-mike.greet();
-// Hi, I am Mike
-
-mime.greet();
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoObservación
{{SpecName('ES1')}}{{Spec2('ES1')}} -

Definición inicial.Implementado en  JavaScript 1.0.

-
{{SpecName('ES5.1', '#sec-15.2.3.1', 'Object.prototype')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-object.prototype', 'Object.prototype')}}{{Spec2('ES6')}} -

 

-
{{SpecName('ESDraft', '#sec-object.prototype', 'Object.prototype')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -

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

diff --git a/files/es/web/javascript/referencia/objetos_globales/object/seal/index.html b/files/es/web/javascript/referencia/objetos_globales/object/seal/index.html deleted file mode 100644 index 42c89175a3..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/seal/index.html +++ /dev/null @@ -1,167 +0,0 @@ ---- -title: Object.seal() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/seal -translation_of: Web/JavaScript/Reference/Global_Objects/Object/seal ---- -
{{JSRef}}
- -

El método Object.seal() sella un objeto, previniendo que puedan añadirse nuevas propiedades al mismo, y marcando todas las propiedades existentes como no-configurables. Los valores de las propiedades presentes permanecen pudiendo cambiarse en tanto en cuanto dichas propiedades sean de escritura.

- -

Sintaxis

- -
Object.seal(obj)
- -

Parámetros

- -
-
obj
-
El objeto que ha de ser sellado.
-
- -

Descripción

- -

Por defecto, los objetos son {{jsxref("Object.isExtensible()", "extensibles", "", 1)}} (pueden añadirse nuevas propiedades a los mismos). Sellar un objeto previene que nuevas propiedades puedan ser añadidas y marca todas las propiedades existentes como no-configurables. Esto tiene el efecto de hacer fijo e inmutable el juego de propiedades del objeto. Al hacer todas las propiedades no-configurables previene también que se puedan convertir propiedades de datos en propiedades de acceso y viceversa, pero no evita que los valores de las propiedades de datos puedan ser modificados. Intentar eliminar o añadir propiedades a un objeto sellado, o convertir una propiedad de datos en una propiedad de acceso fallará, bien silenciadamente o bien produciendo un {{jsxref("TypeError")}} (más frecuentemente, aunque no exclusivamente, con código en {{jsxref("Strict_mode", "modo estricto", "", 1)}}).

- -

La cadena de prototiado permanece inalterada. No obstante, la propiedad {{jsxref("Object.proto", "__proto__")}} {{deprecated_inline}} es también sellada.

- -

Retorna una referencia al Objeto pasado.

- -

Ejemplos

- -
var obj = {
-  prop: function() {},
-  foo: 'bar'
-};
-
-// Pueden añadirse nuevas propiedades, propiedades existentes pueden cambiarse o eliminarse.
-obj.foo = 'baz';
-obj.lumpy = 'woof';
-delete obj.prop;
-
-var o = Object.seal(obj);
-
-o === obj; // true
-Object.isSealed(obj); // === true
-
-// Sigue permitido modificar valores de propiedades en un objeto sellado.
-obj.foo = 'quux';
-
-// Pero no puedes convertir propiedades de datos en propiedades de acceso, ni viveversa
-Object.defineProperty(obj, 'foo', { get: function() { return 'g'; } }); // produce un TypeError
-
-// Ahora, cualquier cambio que no sea modificar valores de propiedades fallará
-obj.quaxxor = 'the friendly duck'; // silenciosamente, no añadirá la propiedad
-delete obj.foo; // silenciosamente, no eliminará la propiedad
-
-// ...y en modo estricto esos intentos producirán TypeErrors.
-function fail() {
-  'use strict';
-  delete obj.foo; // genera un TypeError
-  obj.sparky = 'arf'; // genera un TypeError
-}
-fail();
-
-// Intentar añadir propiedades mediante Object.defineProperty también fallará.
-Object.defineProperty(obj, 'ohai', { value: 17 }); // genera un TypeError
-Object.defineProperty(obj, 'foo', { value: 'eit' }); // cambia el valor exisitente
-
- -

Notas

- -

En ES5, si el argumento de este método no es un objeto (una primitiva), se generará un {{jsxref("TypeError")}}. En ES6, un argumento no-objeto será tratado como si se sellase un objeto ordinario, símplemente retornándolo.

- -
Object.seal(1);
-// TypeError: 1 no es un objeto (código ES5)
-
-Object.seal(1);
-// 1                             (código ES6)
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoObservaciones
{{SpecName('ES5.1', '#sec-15.2.3.8', 'Object.seal')}}{{Spec2('ES5.1')}}Definición inicial. Implementado en  JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.seal', 'Object.seal')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-object.seal', 'Object.seal')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
PrestaciónChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("6")}}{{CompatGeckoDesktop("2.0")}}{{CompatIE("9")}}{{CompatOpera("12")}}{{CompatSafari("5.1")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
PrestiaciónAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/setprototypeof/index.html b/files/es/web/javascript/referencia/objetos_globales/object/setprototypeof/index.html deleted file mode 100644 index ff32fc5738..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/setprototypeof/index.html +++ /dev/null @@ -1,237 +0,0 @@ ---- -title: Object.setPrototypeOf() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/setPrototypeOf -tags: - - ECMAScript6 - - Experimental - - JavaScript - - Método(2) - - Objeto -translation_of: Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf ---- -

{{JSRef}}

- -

El método Object.setPrototypeOf() establece el prototipo (p.e., la propiedad interna [[Prototype]]) de un objeto especificado a otro objeto o sino establece {{jsxref("null")}}.

- -
-

Adverdencia: Cambiar la propiedad [[Prototype]] de un objeto, debido a la naturaleza de la optimización del acceso a propiedades de los motores modernos de JavaScript, es una operación bastante lenta, en todo todo navegador y motor de JavaScript. Los efectos sobre el rendimiento al alterar la herencia son sutiles y vastos., y no están limitados a simplemente el tiempo gastado en la sentencia obj.__proto___ = ...,  but may extend to any code that has access to any object whose [[Prototype]] has been altered. If you care about performance you should avoid setting the [[Prototype]] of an object. Instead, create a new object with the desired [[Prototype]] using {{jsxref("Object.create()")}}.

-
- -

Sintaxis

- -
Object.setPrototypeOf(obj, prototype);
- -

Parámetros

- -
-
obj
-
El objeto al que se ha de establecer el prototipo.
-
prototype
-
El nuevo prototipo del objeto, (un objeto o {{jsxref("null")}}).
-
- -

Descripción

- -

Arroja una excepción del tipo {{jsxref("TypeError")}} si el objeto cuyo [[Prototype]] se va a modificar no es extensible de acuerdo con {{jsxref("Object.isExtensible()")}}. No hace nada si el parametro prototype no es un objeto o {{jsxref("null")}} (p.e., número, cadena, booleano, o {{jsxref("undefined")}}). De cualquier otra forma, este método cambia la propiedad [[Prototype]] del obj al valor nuevo.

- -

Object.setPrototypeOf() está en el último borrador del estandar ECMAScript6. Es considerado generalmente la manera adecuada de establecer el prototipo de un objeto, contra la propiedad más controversial {{jsxref("Object.prototype.__proto__")}}.

- -

Ejemplos

- -
var dict = Object.setPrototypeOf({}, null);
-
- -

Polyfill

- -

Utilizando la vieja propiedad {{jsxref("Object.prototype.__proto__")}}, podemos definir facilmente Object.setPrototypeOf si aún no está disponible:

- -
// Solo funciona en Chrome y FirefoxOnly works in Chrome y FireFox, no funciona en IE:
-Object.setPrototypeOf = Object.setPrototypeOf || function(obj, proto) {
-  obj.__proto__ = proto;
-  return obj;
-}
-
- -

Agregando cadenas de prototipo

- -

Una combinación de Object.getPrototypeOf() y {{jsxref("Object.proto", "Object.prototype.__proto__")}} permite agregar una nueva cadena de prototipos al nuevo  prototipo del objeto.

- -
/**
-*** Object.appendChain(@object, @prototype)
-*
-* Agrega el primer prototipo no-nativo de una cadena a un nuevo prototipo.
-* Retorna @object (si es Primitivo (Primitive value) será transoformado a 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")
-*
-*  Agrega el primer prototipo no-nativo de una cadena a la Function.prototype nativa del objeto, luego agrega una
-* ueva Function(["@arg"(s)], "@function_body") a la cadena.
-* Retorna la función.
-*
-**/
-
-Object.appendChain = function(oChain, oProto) {
-  if (arguments.length < 2) {
-    throw new TypeError('Object.appendChain - Not enough arguments');
-  }
-  if (typeof oProto === 'number' || typeof oProto === 'boolean') {
-    throw new TypeError('second argument to Object.appendChain must be an object or a string');
-  }
-
-  var oNewProto = oProto,
-      oReturn = o2nd = oLast = oChain instanceof this ? oChain : new oChain.constructor(oChain);
-
-  for (var o1st = this.getPrototypeOf(o2nd);
-    o1st !== Object.prototype && o1st !== Function.prototype;
-    o1st = this.getPrototypeOf(o2nd)
-  ) {
-    o2nd = o1st;
-  }
-
-  if (oProto.constructor === String) {
-    oNewProto = Function.prototype;
-    oReturn = Function.apply(null, Array.prototype.slice.call(arguments, 1));
-    this.setPrototypeOf(oReturn, oLast);
-  }
-
-  this.setPrototypeOf(o2nd, oNewProto);
-  return oReturn;
-}
-
- -

Uso

- -

Primer ejemplo: Agregar una cadena a un prototipo

- -
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 ejemplo: Transofrmando un valor Primitivo en una instancia de su constructor y agregar su cadena al prototipo

- -
function Symbol() {
-  this.isSymbol = 'yes';
-}
-
-var nPrime = 17;
-
-console.log(typeof nPrime); // 'number'
-
-var oPrime = Object.appendChain(nPrime, new Symbol());
-
-console.log(oPrime); // '17'
-console.log(oPrime.isSymbol); // 'yes'
-console.log(typeof oPrime); // 'object'
-
- -

Tercer ejemplo: Agregando una cadena a la Function.prototype de un objeto y agregando una nueva función a la cadena

- -
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!!'
-
- -

Especificaciones

- - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-object.setprototypeof', 'Object.setProtoypeOf')}}{{Spec2('ES6')}}Initial definition.
- -

Compatibilidad del navegador

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome("34")}}{{CompatGeckoDesktop("31")}}{{CompatIE("11")}}{{CompatVersionUnknown}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("31")}}{{CompatUnknown}}{{CompatNo}}{{CompatNo}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/tolocalestring/index.html b/files/es/web/javascript/referencia/objetos_globales/object/tolocalestring/index.html deleted file mode 100644 index d0de708b98..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/tolocalestring/index.html +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Object.prototype.toLocaleString() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/toLocaleString -translation_of: Web/JavaScript/Reference/Global_Objects/Object/toLocaleString ---- -
{{JSRef}}
- -

El método toLocaleString() devuelve un string que representa a un objeto. Este método está pensado para ser redefinido en los objetos derivados, para los propósitos específicos de cada configuración regional.

- -
{{EmbedInteractiveExample("pages/js/object-prototype-tolocalestring.html")}}
- - - -

Sintaxis

- -
objeto.toLocaleString()
- -

Valor de retorno

- -

Un string que representa al objeto.

- -

Descripción

- -

{{jsxref("Object")}}'s toLocaleString devuelve el resultado de llamar a {{jsxref("Object.toString", "toString()")}}.

- -

Se proporciona esta función para que los objetos dispongan de un método toLocaleString genérico, aunque puede que no todos la utilicen. Véase la lista siguiente.

- -

Objetos que redefinen toLocaleString

- - - -

Ejemplos

- -

Redefinición de toLocaleString() en Array

- -

En los objetos Array se puede utilizar toLocaleString() para imprimir los valores del array como un string, con indicadores opcionales de configuración regional (como símbolos de moneda) aplicados.

- -

Por ejemplo:

- -
const unArray = [4, 7, 10];
-
-let preciosEnEuros = unArray.toLocaleString('fr', { style: 'currency', currency: 'EUR'});
-// "4,00 €,7,00 €,10,00 €"
- -

Redefinición de toLocaleString() para Date

- -

En los objetos Date se usa toLocaleString() para imprimir fechas en un formato adecuado a la configuración regional.

- -

Por ejemplo:

- -
const unaFecha = new Date(Date.now());
-// "2020-07-07T19:51:44.046Z"
-
-let fechaAleman = unaFecha.toLocaleString('de');
-// "7.7.2020, 21:55:22"
-
-var fechaFrances= unaFecha.toLocaleString('fr');
-//"07/07/2020 à 21:55:22"
- -

Redefinición de toLocaleString() para Number

- -

En los objetos Number se usa toLocaleString() para imprimir números de forma adecuada a la configuración regional, p. ej. para usar los separadores de miles correctos.

- -

Por ejemplo:

- -
const unNumero = 2901234564;
-// "2901234564"
-
-let numeroAleman = unNumero.toLocaleString('de');
-// "2.901.234.564"
-
-let numeroFrances = unNumero.toLocaleString('fr');
-// "2 901 234 564"
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-object.prototype.tolocalestring', 'Object.prototype.toLocaleString')}}
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.builtins.Object.toLocaleString")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/tosource/index.html b/files/es/web/javascript/referencia/objetos_globales/object/tosource/index.html deleted file mode 100644 index 713a176b0b..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/tosource/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: Object.prototype.toSource() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/toSource -translation_of: Web/JavaScript/Reference/Global_Objects/Object/toSource ---- -
{{JSRef}} {{non-standard_header}}
- -

El método toSource() regresa una cadena representando el código fuente del objeto.

- -

Syntax

- -
Object.toSource();
-obj.toSource();
-
- -

Return value

- -

Una cadena representando el código fuente del objeto.

- -

Description

- -

EL método toSource() regresa los siguientes valores:

- - - -

Puedes llamar el método toSource() durante el depurado para examinar el contenido de un objeto.

- -

Sobreescribir el método toSource()

- -

Es seguro para los objetos sobreescribir el método toSource(). Por ejemplo:

- -
function Person(name) {
-  this.name = name;
-}
-
-Person.prototype.toSource = function Person_toSource() {
-  return 'new Person(' + uneval(this.name) + ')';
-};
-
-console.log(new Person('Joe').toSource()); // ---> nueva Person("Joe")
-
- -

Métodos de toSource() incorporados

- -

Cada tipo fundamental de JavaScript tiene su propio método toSource().  Éstos objetos son:

- - - -

Limitaciones en objetos cíclicos

- -

EN el caso de los objetos que contienen referencia a ellos mismos, por ejemplo, una lista enlazada cíclicamente o un árbol que puede ser atravesado en ambas formas, toSource() no recreará la referencia a sí mismo, a partir de Firefox 24. Por ejemplo:

- -
var obj1 = {};
-var obj2 = { a: obj1 };
-obj1.b = obj2;
-
-console.log('Ciclico: ' + (obj1.b.a == obj1));
-
-var objSource = obj1.toSource(); // regresa "({b:{a:{}}})"
-
-obj1 = eval(objSource);
-
-console.log('Ciclico: ' + (obj1.b.a == obj1));
-
- -

Si una estructura cíclica es usada y se necesita el método toSource(), el objeto debe proveer la sobreescritura de toSource(), ya sea usando una referencia a un constructor o proveyendo una función anónima.

- -

Ejemplos

- -

Usando toSource()

- -

El código siguiente define el objeto tipo Dog y crea a theDog, un objeto 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');
-
- -

Llamando al método toSource() de theDog muestra el código JavaScript que define al objeto:

- -
theDog.toSource();
-// returns ({name:"Gabby", breed:"Lab", color:"chocolate", sex:"female"})
-
- -

Especificaciones

- -

No es parte de ningún estándar. Implementado en JavaScript 1.3.

- -

Compatibilidad en navegadores

- -
- - -

{{Compat("javascript.builtins.Object.toSource")}}

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/tostring/index.html b/files/es/web/javascript/referencia/objetos_globales/object/tostring/index.html deleted file mode 100644 index a9ffc11535..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/tostring/index.html +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Object.prototype.toString() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/toString -tags: - - JavaScript - - Method - - Object - - Prototype -translation_of: Web/JavaScript/Reference/Global_Objects/Object/toString ---- -
{{JSRef("Objetos_globales", "Object")}}
- -

Resumen

- -

Devuelve una cadena que representa al objeto.

- -

Sintaxis

- -

toString()

- -

Descripción

- -

Todos los objetos tienen un método toString que se llama automáticamente cuando el objeto se representa como un valor de texto o cuando un objeto se referencia de tal manera que se espera una cadena. Por defecto, el método toString es heredado por todos los objetos que descienden de Object. Si este método no se sobreescribe en el objeto personalizado, toString devuelve {{ mediawiki.external('objecttype ') }}, donde type es el tipo de objeto. El siguiente código ilustra esto:

- -
var objeto = new Object();
-objeto.toString(); // Devuelve [object Object]
-
- -

Ejemplos

- -

Sobreescribir el método por defecto toString

- -

Puede crear una función que sea llamada en lugar del método predeterminado toString. El método toString no toma argumentos y debería devolver una cadena. El método toString que cree puede ser cualquier valor que quiera, pero será más útil si aporta información sobre el objeto.

- -

El siguiente código define el tipo de objeto Perro y crea elPerro, un objeto de tipo Perro:

- -
function Perro(nombre,criadero,color,sexo) {
-   this.nombre=nombre;
-   this.criadero=criadero;
-   this.color=color;
-   this.sexo=sexo;
-}
-
-elPerro = new Perro("Gabby","Laboratorio","chocolate","femenino")
-
- -

Si llama al método toString en el objeto personalizado, devuelve el valor predeterminado heredado de Object:

- -
elPerro.toString() //devuelve [object Object]
-
- -

El siguiente código crea y asigna perroToString para sobreescribir el método predeterminado toString. Esta función genera una cadena que contiene nombre, criadero, color, y sexo del objeto, en la forma "propiedad = valor;".

- -
Perro.prototype.toString = function perroToString() {
-  var retorno = "Perro " + this.nombre + " es " + this.sexo + " " + this.color + " " + this.criadero;
-  return retorno;
-}
-
- -

Con el código precedente en su lugar, cualquier vez que se use elDog en un contexto de una cadena, JavaScript automáticamente llamará a la función perroToString, la cuál devuelve la siguiente cadena:

- -
Perro Gabby es femenino chocolate Laboratorio
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/valueof/index.html b/files/es/web/javascript/referencia/objetos_globales/object/valueof/index.html deleted file mode 100644 index 5cf466078d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/valueof/index.html +++ /dev/null @@ -1,157 +0,0 @@ ---- -title: Object.prototype.valueOf() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/valueOf -translation_of: Web/JavaScript/Reference/Global_Objects/Object/valueOf ---- -
{{JSRef("Global_Objects", "Object")}}
- -

El método valueOf() retorna el valor primitivo del objeto especificado.

- -

Sintaxis

- -
object.valueOf()
- -

Valor de retorno

- -

El valor primitivo del objeto especificado.

- -

 

- -

{{EmbedInteractiveExample("pages/js/object-prototype-valueof.html")}}

- -

 

- -

Descripción

- -

JavaScript utiliza el método valueOf para convertir un objeto a un valor primitivo. Raramente usted necesitará invocar el método valueOf por su cuenta; JavaScript lo realizará de forma automática cuando encuentre un objeto, donde un valor primitivo es esperado.

- -

Por defecto, el método valueOf es heredado por cada objeto descendiente de {{jsxref("Object")}}. Cada objeto incorporado en el núcleo del lenguaje sobreescribe este método para retornar un valor apropiado. Si un objeto no tiene un valor primitivo, valueOf devuelve el objeto en sí.

- -

Puede utilizar valueOf dentro de su propio código para convertir un objeto incorporado en el núcleo del lenguaje en un valor primitivo. Cuando usted crea un objeto personalizado, puede sobreescribir el comportamiento de Object.prototype.valueOf() para invocar un método personalizado, en vez de utilizar el método por defecto {{jsxref("Object")}}.

- -

Sobreescribiendo valueOf para objetos personalizados

- -

Puede crear una función para ser invocada en lugar de utilizar el método valueOf por defecto. Su función no debe contener ningún parámetro.

- -

Suponga que tiene un objeto de tipo myNumberType y usted quiere crear un método valueOf para este. El código a continuación asigna una función personalizada al método valueOf:

- -
myNumberType.prototype.valueOf = function() { return customPrimitiveValue; };
- -

Al tener el código anterior funcionando, cada vez que un objeto de tipo myNumberType es utilizado en un contexto donde deba ser representado por un valor primitivo, JavaScript automáticamente invocará la función definida en el código anterior.

- -

El método valueOf es invocado usualmente por JavaScript pero usted puede invocarlo directamente como sigue a continuación:

- -
myNumber.valueOf()
- -
-

Nota: Objetos en contextos de string realizan la conversión a string a través del método {{jsxref("Object.toString", "toString()")}} , el cual, es diferente de {{jsxref("String")}} para convertir objetos a primitivos string utilizando el método valueOf. Todos los objetos pueden ser convertidos a string, si solo "[object type]". Pero muchos objetos no se pueden convertir a number, boolean o function.

-
- -

Ejemplos

- -

Utilizando valueOf

- -
function myNumberType(n) {
-    this.number = n;
-}
-
-myNumberType.prototype.valueOf = function() {
-    return this.number;
-};
-
-myObj = new myNumberType(4);
-myObj + 3; // 7
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoCommentario
ECMAScript 1ra Edición.EstándarDefinición inicial. Implementado en 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')}}    
- -

Compatibilidad con Navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
ElementoChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
ElementoAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/object/values/index.html b/files/es/web/javascript/referencia/objetos_globales/object/values/index.html deleted file mode 100644 index 81b56ef1e0..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/object/values/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Object.values() -slug: Web/JavaScript/Referencia/Objetos_globales/Object/values -tags: - - JavaScript - - Objeto - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Object/values ---- -
{{JSRef}}
- -

El método Object.values() devuelve un array con los valores correspondientes a las propiedades enumerables de un objeto. Las propiedades son devueltas en el mismo orden a como lo haría un bucle {{jsxref("Statements/for...in", "for...in")}} (la única diferencia es que un bucle for-in también enumera las propiedades en la cadena de prototipo de un objeto).

- -

{{EmbedInteractiveExample("pages/js/object-values.html")}}

- -

Sintaxis

- -
Object.values(obj)
- -

Parámetros

- -
-
obj
-
Objeto cuyas propiedades enumerables serán devueltas.
-
- -

Valor devuelto

- -

Un array con las propiedades enumerables del objeto pasado como parámetro.

- -

Descripción

- -

El método Object.values() devuelve un array cuyos elementos son valores de propiedades enumarables que se encuentran en el objeto. El orden de las propiedades es el mismo que el dado cuando se recorre el objeto de forma manual.

- -

Ejemplos

- -
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 con una ordenación aleatoria de las claves
-var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
-console.log(Object.values(an_obj)); // ['b', 'c', 'a']
-
-// getFoo no es una propiedade enumerable, por lo que como se observa, no se devuelve
-var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
-my_obj.foo = 'bar';
-console.log(Object.values(my_obj)); // ['bar']
-
-// parámetros que no son Objetos se fuerzan a que se comporten como tal
-console.log(Object.values('foo')); // ['f', 'o', 'o']
-
- -

Polyfill

- -

Para dar soporte compatible con  Object.values() a entornos antiguos que no la soportan de forma nativa, puedes encontrar un Polyfill en tc39/proposal-object-values-entries o en los repositorios es-shims/Object.values.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ESDraft', '#sec-object.values', 'Object.values')}}{{Spec2('ESDraft')}}Definición inicial.
{{SpecName('ES8', '#sec-object.values', 'Object.values')}}{{Spec2('ES8')}}
- -

Compatibilidad en navegadores

- -
{{Compat("javascript.builtins.Object.values")}}
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/parsefloat/index.html b/files/es/web/javascript/referencia/objetos_globales/parsefloat/index.html deleted file mode 100644 index 16510d882d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/parsefloat/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: parseFloat() -slug: Web/JavaScript/Referencia/Objetos_globales/parseFloat -translation_of: Web/JavaScript/Reference/Global_Objects/parseFloat ---- -
{{jsSidebar("Objects")}}
- -

Resumen

- -

Convierte (parsea) un argumento de tipo cadena y devuelve un número de punto flotante.

- -

Sintaxis

- -

parseFloat(cadena )

- -

Parámetros

- -
-
cadena
-
Una cadena que representa al valor que se desea convertir.
-
- -

Descripción

- -

parseFloat es una función de alto nivel y no está asociada a ningún objeto.

- -

parseFloat convierte su argumento, una cadena, y devuelve un número de punto flotante. Si encuentra un carácter diferente al signo (+ o -), numerales (0-9), un punto decimal o un exponente, devuelve el valor hasta ese punto e ignora ese carácter y todos los correctos siguientes. Se permiten espacios anteriores y posteriores.

- -

Si el primer carácter no se puede convertir a número, parseFloat devuelve NaN.

- -

Para fines aritméticos, el valor NaN no es un número para ninguna base. Puede llamar a la función {{jsxref("isNaN")}} para determinar si el resultado de parseFloat es NaN. Si se pasa NaN en operaciones aritméticas, la operación resultante también será NaN.

- -

Ejemplos

- -

Ejemplo: parseFloat devolviendo un número

- -

Todos los siguientes ejemplos devuelven 3.14.

- -
parseFloat("3.14");
-parseFloat("314e-2");
-parseFloat("0.0314E+2"); v
-var cadena = "3.14"; parseFloat(cadena);
-parseFloat("3.14más caracteres no dígitos");
- -

Example: parseFloat returning NaN

- -

El siguiente ejemplo devuelve NaN:

- -
parseFloat("FF2");
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/parseint/index.html b/files/es/web/javascript/referencia/objetos_globales/parseint/index.html deleted file mode 100644 index 30e3874a34..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/parseint/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: parseInt() -slug: Web/JavaScript/Referencia/Objetos_globales/parseInt -translation_of: Web/JavaScript/Reference/Global_Objects/parseInt ---- -
{{jsSidebar("Objects")}}
- -

Resumen

- -

Convierte (parsea) un argumento de tipo cadena y devuelve un entero de la base especificada.

- -

Sintaxis

- -
parseInt(string, base);
- -

Parámetros

- -
-
cadena
-
Una cadena que representa el valor que se desea convertir.
-
- -
-
base
-
Un entero que representa la base de la mencionada cadena.
-
- -

Descripción

- -

parseInt es una función de alto nivel y no está asociada a ningún objeto.

- -

La función parseInt comprueba el primer argumento, una cadena, e intenta devolver un entero de la base especificada. Por ejemplo, una base de 10 indica una conversión a número decimal, 8 octal, 16 hexadecimal, y así sucesivamente. Para bases superiores a 10, las letras del alfabeto indican numerales mayores que 9. Por ejemplo, para números hexadecimales (base 16), se utiliza de la A hasta la F.

- -

Si parseInt encuentra un carácter que no es un numeral de la base especificada, lo ignora a él y a todos los caracteres correctos siguientes, devolviendo el valor entero obtenido hasta ese punto. parseInt trunca los números en valores enteros. Se permiten espacios anteriores y posteriores.

- -

Si no se especifica la base o se especifica como 0, JavaScript asume lo siguiente:

- - - -

Si el primer carácter no se puede convertir en número, parseInt devuelve NaN.

- -

Para fines aritméticos, el valor NaN no es un número en ninguna base. Puede llamar a la función {{jsxref("Objetos_globales/isNaN", "isNaN")}} para determinar se el resultado de parseInt es NaN. Si se pasa NaN en operaciones aritméticas, la operación resultante también será NaN.

- -

Para convertir números a su literal cadena en una base en particular, utilice intValue.toString(base).

- -

Ejemplos

- -

Ejemplo: Usando parseInt

- -

Todos los siguientes ejemplos devuelven 15:

- -
parseInt("F", 16);
-parseInt("17", 8);
-parseInt("15", 10);
-parseInt(15.99, 10);
-parseInt("FXX123", 16);
-parseInt("1111", 2);
-parseInt("15*3", 10);
-parseInt("12", 13);
-
- -

Todos los siguientes ejemplos devuelven NaN:

- -
parseInt("Hello", 8); // No es un número en absoluto
-parseInt("0x7", 10);  // No es de base 10
-parseInt("546", 2);   // Los dígitos no son válidos para representaciones binarias.
-
- -

Incluso aunque la base especificada es diferente, todos los siguientes ejemplos devuelven 17 ya que el argumento cadena comienza por "0x".

- -
parseInt("0x11", 16);
-parseInt("0x11", 0);
-parseInt("0x11");
-
- -

Véase También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/promise/all/index.html b/files/es/web/javascript/referencia/objetos_globales/promise/all/index.html deleted file mode 100644 index 79a16aadc6..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/promise/all/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Promise.all() -slug: Web/JavaScript/Referencia/Objetos_globales/Promise/all -tags: - - ECMAScript6 - - JavaScript - - Método(2) - - Promesa - - Promise -translation_of: Web/JavaScript/Reference/Global_Objects/Promise/all ---- -
{{JSRef}}
- -

El método Promise.all(iterable) devuelve una promesa que termina correctamente cuando todas las promesas en el argumento iterable han sido concluídas con éxito, o bien rechaza la petición con el motivo pasado por la primera promesa que es rechazada.

- -

Sintaxis

- -
Promise.all(iterable);
- -
-
iterable
-
Un objeto iterable, por ejemplo un {{jsxref("Array")}}. Vea iterable.
-
- -

Valor devuelto

- -

Una {{jsxref("Promise")}}  que se cumplirá cuando todas las promesas del argumento iterable hayan sido cumplidas, o bien se rechazará cuando alguna de ellas se rechace.

- -

Descripción

- -

Promise.all  se cumple cuando todas las promesas del iterable dado se han cumplido, o es rechazada si alguna promesa no se cumple. {{jsxref("Promise.resolve")}}.

- -

Si alguna de las promesas pasadas en el argumento iterable falla, la promesa all es rechazada inmediatamente con el valor de la promesa que fué rechazada, descartando todas las demás promesas hayan sido o no cumplidas. Si se pasa un array vacío a all , la promesa se cumple inmediatamente.

- -

Ejemplos

- -

Uso de Promise.all

- -

Promise.all espera a que todo se cumpla (o bien al primer rechazo).

- -
var p1 = Promise.resolve(3);
-var p2 = 1337;
-var p3 = new Promise((resolve, reject) => {
-  setTimeout(resolve, 100, "foo");
-});
-
-Promise.all([p1, p2, p3]).then(values => {
-  console.log(values); // [3, 1337, "foo"]
-});
- -

Promise.all comportamiento de fallo-rápido

- -

Promise.all se rechaza si uno de los elementos ha sido rechazado y Promise.all falla rápido: Si tienes cuatro promesas que se resuelven después de un timeout y una de ellas falla inmediatamente, entonces Promise.all se rechaza inmediatamente.

- -
var p1 = new Promise((resolve, reject) => {
-  setTimeout(resolve, 1000, "one");
-});
-var p2 = new Promise((resolve, reject) => {
-  setTimeout(resolve, 2000, "two");
-});
-var p3 = new Promise((resolve, reject) => {
-  setTimeout(resolve, 3000, "three");
-});
-var p4 = new Promise((resolve, reject) => {
-  setTimeout(resolve, 4000, "four");
-});
-var p5 = new Promise((resolve, reject) => {
-  reject("reject");
-});
-
-Promise.all([p1, p2, p3, p4, p5]).then(values => {
-  console.log(values);
-}, reason => {
-  console.log(reason)
-});
-
-//From console:
-//"reject"
-
-// Evenly, it's possible to use .catch
-Promise.all([p1, p2, p3, p4, p5]).then(values => {
-  console.log(values);
-}).catch(reason => {
-  console.log(reason)
-});
-
-//From console:
-//"reject"
-
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónStatusComentario
{{SpecName('ES6', '#sec-promise.all', 'Promise.all')}}{{Spec2('ES6')}}Initial definition in an ECMA standard.
{{SpecName('ESDraft', '#sec-promise.all', 'Promise.all')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad entre navegadores

- -

{{Compat("javascript/promise","Promise.all")}}

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/promise/catch/index.html b/files/es/web/javascript/referencia/objetos_globales/promise/catch/index.html deleted file mode 100644 index a99a071979..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/promise/catch/index.html +++ /dev/null @@ -1,183 +0,0 @@ ---- -title: Promise.prototype.catch() -slug: Web/JavaScript/Referencia/Objetos_globales/Promise/catch -translation_of: Web/JavaScript/Reference/Global_Objects/Promise/catch ---- -
{{JSRef}}
- -

El método catch() retorna una Promise y solo se ejecuta en los casos en los que la promesa se marca como Reject. Se comporta igual que al llamar {{jsxref("Promise.then", "Promise.prototype.then(undefined, onRejected)")}} (de hecho, al llamar obj.catch(onRejected) internamente llama a obj.then(undefined, onRejected)).

- -

Síntaxis

- -
p.catch(onRejected);
-
-p.catch(function(reason) {
-   // rejection
-});
-
- -

Parámetros

- -
-
onRejected
-
Una {{jsxref("Function")}} llamada cuando la Promise es rechazada. Esta función tiene un argumento: -
-
reason
-
La razón del rechazo.
-
- La promesa devuelta por catch() es rechazada si onRejected lanza un error o retorna una Promise que a su vez se rechaza, de cualquier otra manera la Promise es resuelta.
-
- -

Valor de Retorno (Return)

- -

Internamente llama a Promise.prototype.then en el objeto sobre el que se llama, pasándole el parámetro undefined y el manejador onRejected recibido; luego devuelve un valor de esa llamada (que es una {{jsxref("Promise")}}).

- -

Demostración de la llamada interna:

- -
// overriding original Promise.prototype.then/catch just to add some logs
-(function(Promise){
-    var originalThen = Promise.prototype.then;
-    var originalCatch = Promise.prototype.catch;
-
-    Promise.prototype.then = function(){
-        console.log('> > > > > > called .then on %o with arguments: %o', this, arguments);
-        return originalThen.apply(this, arguments);
-    };
-    Promise.prototype.catch = function(){
-        console.log('> > > > > > called .catch on %o with arguments: %o', this, arguments);
-        return originalCatch.apply(this, arguments);
-    };
-
-})(this.Promise);
-
-
-
-// calling catch on an already resolved promise
-Promise.resolve().catch(function XXX(){});
-
-// logs:
-// > > > > > > called .catch on Promise{} with arguments: Arguments{1} [0: function XXX()]
-// > > > > > > called .then on Promise{} with arguments: Arguments{2} [0: undefined, 1: function XXX()]
-
- -

Descripción

- -

El método catch puede ser muy útil para el manejo de errores en tu código con promesas.

- -

Ejemplos

- -

Usando y encadenando el método catch

- -
var p1 = new Promise(function(resolve, reject) {
-  resolve('Success');
-});
-
-p1.then(function(value) {
-  console.log(value); // "Success!"
-  throw 'oh, no!';
-}).catch(function(e) {
-  console.log(e); // "oh, no!"
-}).then(function(){
-  console.log('after a catch the chain is restored');
-}, function () {
-  console.log('Not fired due to the catch');
-});
-
-// The following behaves the same as above
-p1.then(function(value) {
-  console.log(value); // "Success!"
-  return Promise.reject('oh, no!');
-}).catch(function(e) {
-  console.log(e); // "oh, no!"
-}).then(function(){
-  console.log('after a catch the chain is restored');
-}, function () {
-  console.log('Not fired due to the catch');
-});
-
- -

Trucos cuando lanzamos errores

- -
// Hacer un throw llamará al método catch
-var p1 = new Promise(function(resolve, reject) {
-  throw 'Uh-oh!';
-});
-
-p1.catch(function(e) {
-  console.log(e); // "Uh-oh!"
-});
-
-// Los errores que se lancen dentro de funciones asíncronas actuarán como errores no capturados
-var p2 = new Promise(function(resolve, reject) {
-  setTimeout(function() {
-    throw 'Uncaught Exception!';
-  }, 1000);
-});
-
-p2.catch(function(e) {
-  console.log(e); // Nunca será llamado
-});
-
-// Errores lanzados después de resolve() serán omitidos
-var p3 = new Promise(function(resolve, reject) {
-  resolve();
-  throw 'Silenced Exception!';
-});
-
-p3.catch(function(e) {
-   console.log(e); // Nunca será llamado
-});
- -

Si se resuelve la promesa

- -
// Crea una promesa que no llamará a onReject
-var p1 = Promise.resolve("calling next");
-
-var p2 = p1.catch(function (reason) {
-    // Nunca será llamado
-    console.log("catch p1!");
-    console.log(reason);
-});
-
-p2.then(function (value) {
-    console.log("next promise's onFulfilled"); /* next promise's onFulfilled */
-    console.log(value); /* calling next */
-}, function (reason) {
-    console.log("next promise's onRejected");
-    console.log(reason);
-});
- -

Especificación

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES2015', '#sec-promise.prototype.catch', 'Promise.prototype.catch')}}{{Spec2('ES2015')}}Definición inicial en el standar ECMA.
{{SpecName('ESDraft', '#sec-promise.prototype.catch', 'Promise.prototype.catch')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de navegadores

- - - -

{{Compat("javascript.builtins.promise.catch")}}

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/promise/finally/index.html b/files/es/web/javascript/referencia/objetos_globales/promise/finally/index.html deleted file mode 100644 index 8d21aa785a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/promise/finally/index.html +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Promise.prototype.finally() -slug: Web/JavaScript/Referencia/Objetos_globales/Promise/finally -translation_of: Web/JavaScript/Reference/Global_Objects/Promise/finally ---- -
{{JSRef}}
- -

El método finally() devuelve una {{jsxref("Promise")}}. Cuando la promesa se resuelve, sea exitosa o rechazada, la función de callback específicada será ejecutada. Esto ofrece una forma de ejecutar código sin importar como se haya resuelto la promesa.

- -

Esto ayuda a evitar tener código duplicado tanto en el {{jsxref("Promise.then", "then()")}} como en el {{jsxref("Promise.catch", "catch()")}}.

- -

Sintaxis

- -
p.finally(alFinalizar);
-
-p.finally(function() {
-   // finalizada (exitosa o rechazada)
-});
-
- -

Parámetros

- -
-
alFinalizar
-
Una {{jsxref("Function")}} llamada cuando la Promise se resuelve con éxito o falla.
-
- -

Valor de retorno

- -

Devuelve una {{jsxref("Promise")}} cuyo finally fue fijado a la función específicada en alFinalizar.

- -

Descripción

- -

El método finally() puede ser de utilidad si quieres hacer algún proceso o limpieza una vez que la promesa termina, sin importar su resultado.

- -

Utilizar finally() es muy similar a llamar .then(onFinally, onFinally), sin embargo tiene algunas diferencias:

- - - -
-

Nota: Un throw (o retornar una promesa rechazada) en el callback finally va a rechazar la nueva promesa con la razón de rechazo especificada al llamar throw().

-
- -

Ejemplos

- -
let isLoading = true;
-
-fetch(myRequest).then(function(response) {
-    var contentType = response.headers.get("content-type");
-    if(contentType && contentType.includes("application/json")) {
-      return response.json();
-    }
-    throw new TypeError("Oops, no hemos obtenido un JSON!");
-  })
-  .then(function(json) { /* procesar el JSON */ })
-  .catch(function(error) { console.log(error); /* esta línea podría arrojar error, e.g. cuando console = {} */ })
-  .finally(function() { isLoading = false; });
-
-
- -

Especificaciones

- - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ESDraft', '#sec-promise.prototype.finally', 'Promise.prototype.finally')}}{{Spec2('ESDraft')}}
- -

Compatibilidad en navegador

- - - -

{{Compat("javascript.builtins.Promise.finally")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/promise/index.html b/files/es/web/javascript/referencia/objetos_globales/promise/index.html deleted file mode 100644 index 58a2319c2f..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/promise/index.html +++ /dev/null @@ -1,222 +0,0 @@ ---- -title: Promise -slug: Web/JavaScript/Referencia/Objetos_globales/Promise -tags: - - ECMAScript6 - - JavaScript - - Promesa - - Promise -translation_of: Web/JavaScript/Reference/Global_Objects/Promise ---- -
{{JSRef}}
- -

El objeto Promise (Promesa) es usado para computaciones asíncronas. Una promesa representa un valor que puede estar disponible ahora, en el futuro, o nunca.

- -

Sintaxis

- -
new Promise( /* ejecutor */ function(resolver, rechazar) { ... } );
- -

Parámetros

- -
-
ejecutor
-
Una función con los argumentos resolver y rechazar. La función ejecutor es ejecutada inmediatamente por la implementación de la Promesa, pasándole las funciones resolver y rechazar (el ejecutor es llamado incluso antes de que el constructor de la Promesa devuelva el objeto creado). Las funciones resolver y rechazar, al ser llamadas, resuelven o rechazan la promesa, respectivamente. Normalmente el ejecutor inicia un trabajo asíncrono, y luego, una vez que es completado, llama a la función resolver para resolver la promesa o la rechaza si ha ocurrido un error.
- Si un error es lanzado en la función ejecutor, la promesa es rechazada y el valor de retorno del ejecutor es rechazado.
-
- -

Descripción

- -

Una Promesa es un proxy para un valor no necesariamente conocido en el momento que es creada la promesa. Permite asociar manejadores que actuarán asincrónicamente sobre un eventual valor en caso de éxito, o la razón de falla en caso de una falla. Esto permite que métodos asíncronos devuelvan valores como si fueran síncronos: en vez de inmediatamente retornar el valor final, el método asíncrono devuelve una promesa de suministrar el valor en algún momento en el futuro.

- -

Una Promesa se encuentra en uno de los siguientes estados:

- - - -

Una promesa pendiente puede ser cumplida con un valor, o rechazada con una razón (error). Cuando cualquiera de estas dos opciones sucede, los métodos asociados, encolados por el método then de la promesa, son llamados. (Si la promesa ya ha sido cumplida o rechazada en el momento que es anexado su correspondiente manejador, el manejador será llamado, de tal manera que no exista una condición de carrera entre la operación asíncrona siendo completada y los manejadores siendo anexados)

- -

Como los métodos {{jsxref("Promise.then", "Promise.prototype.then()")}} y {{jsxref("Promise.catch", "Promise.prototype.catch()")}} retornan promesas, éstas pueden ser encadenadas.

- -

- -
-

No confundir con: Varios lenguajes tienen mecanismos para evaluar perezosamente y postergar una computación, a los que también les llaman "promesas" - p.ej.: Scheme. Las promesas en JavaScript representan procesos que ya están sucediendo, y pueden ser encadenados con funciones callback. Si lo que se busca es evaluar perezosamente una expresión, se debe considerar la función flecha (arrow function) sin argumentos: f = () => expresión para crear la expresión evaluada perezosamente, y f() para evaluar.

-
- -
-

Nota: Una promesa se dice que está determinada (settled) si se ha cumplido o si se ha rechazado, pero no está pendiente. Con promesas también se usa el término resuelta — esto significa que la promesa está determinada, o que se encuentra bloqueada dentro de una cadena de promesas. States and fates de Domenic Denicola contiene mas detalles sobre la terminología de las promesas.

-
- -

Propiedades

- -
-
Promise.length
-
Propiedad longitud cuyo valor es siempre 1 (numero de argumentos del constructor).
-
{{jsxref("Promise.prototype")}}
-
Representa el prototipo del constructor Promise.
-
- -

Métodos

- -
-
{{jsxref("Promise.all", "Promise.all(iterable)")}}
-
Devuelve una de dos promesas: una que se cumple cuando todas las promesas en el argumento iterable han sido cumplidas, o una que se rechaza tan pronto como una de las promesas del argumento iterable es rechazada. Si la promesa retornada es cumplida, lo hace con un arreglo de los valores de las promesas cumplidas en el mismo orden definido en el iterable. Si la promesa retornada es rechazada, es rechazada con la razón de la primera promesa rechazada en el iterable. Este método puede ser útil para agregar resultados de múltiples promesas
-
{{jsxref("Promise.race", "Promise.race(iterable)")}}
-
Devuelve una promesa que se cumple o rechaza tan pronto como una de las promesas del iterable se cumple o rechaza, con el valor o razón de esa promesa.
-
- -
-
{{jsxref("Promise.reject", "Promise.reject(reason)")}}
-
Devuelve un objeto Promise que es rechazado con la razón dada.
-
- -
-
{{jsxref("Promise.resolve", "Promise.resolve(value)")}}
-
Devuelve un objeto Promise que es resuelto con el valor dado. Si el valor es un thenable (p.ej. tiene un método then), la promesa devuelta "seguirá" este thenable, adoptando su eventual estado; de lo contrario la promesa devuelta será cumplida con el valor. Generalmente, si se quiere saber si un valor es una promesa o no, se podría usar - {{jsxref("Promise.resolve", "Promise.resolve(value)")}} y trabajar con el valor devuelto como una promesa.
-
- -

Prototipo Promise

- -

Propiedades

- -

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

- -

Métodos

- -

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

- -

Ejemplos

- -

Súper simple (¡10 líneas!)

- -
let miPrimeraPromise = new Promise((resolve, reject) => {
-  // Llamamos a resolve(...) cuando lo que estabamos haciendo finaliza con éxito, y reject(...) cuando falla.
-  // En este ejemplo, usamos setTimeout(...) para simular código asíncrono.
-  // En la vida real, probablemente uses algo como XHR o una API HTML5.
-  setTimeout(function(){
-    resolve("¡Éxito!"); // ¡Todo salió bien!
-  }, 250);
-});
-
-miPrimeraPromise.then((successMessage) => {
-  // succesMessage es lo que sea que pasamos en la función resolve(...) de arriba.
-  // No tiene por qué ser un string, pero si solo es un mensaje de éxito, probablemente lo sea.
-  console.log("¡Sí! " + successMessage);
-});
- -

Creando una Promise

- -

Este pequeño ejemplo muestra el mecanismo de una Promise. El método testPromise() se llama cada vez que se pulsa el {{HTMLElement("button")}}. Esto crea una promesa que se cumplirá, aplicando {{domxref("window.setTimeout()")}}, al contador de la promesa (partiendo desde 1) aleatoriamente cada 1-3 segundos. El constructor de la Promise() es usado para crear dicha promesa.

- -

El cumplimiento de la promesa simplemente se registra, a través de una llamada de retorno al cumplirse utilizando {{jsxref("Promise.prototype.then()","p1.then()")}}. A los pocos registros muestra cómo la parte síncrona del método se desacopla de la finalización asíncrona de la promesa.

- -
'use strict';
-var promiseCount = 0;
-
-function testPromise() {
-  var thisPromiseCount = ++promiseCount;
-
-  var log = document.getElementById('log');
-  log.insertAdjacentHTML('beforeend', thisPromiseCount +
-    ') Comenzó (<small>Comenzó el código sincrónico</small>)<br/>');
-
-  // Hacemos una promesa: prometemos un contador numérico de esta promesa,
-  // empezando por 1 (después de esperar 3s)
-  var p1 = new Promise(
-    // La función resolvedora es llamada con la
-    // habilidad de resolver o rechazar la promesa
-    function(resolve, reject) {
-      log.insertAdjacentHTML('beforeend', thisPromiseCount +
-        ') Comenzó la promesa (<small>Código asíncrono comenzó</small>)<br/>');
-
-      // Esto es solo un ejemplo para crear asincronismo
-      window.setTimeout(
-        function() {
-          // ¡Cumplimos la promesa!
-          resolve(thisPromiseCount);
-        }, Math.random() * 2000 + 1000);
-    }
-  );
-
-  // Definimos qué hacer cuando la promesa es resuelta/cumplida con la llamada
-  // al método then(). La llamada al método catch() define qué hacer si
-  // la promesa es rechazada
-  p1.then(
-    // Registrar el valor de la promesa cumplida
-    function(val) {
-      log.insertAdjacentHTML('beforeend', val +
-        ') Promesa cumplida (<small>Código asíncrono terminado.</small>)<br/>');
-    })
-  .catch(
-    // Registrar la razón del rechazo
-    function(reason) {
-      console.log('Manejar promesa rechazada ('+reason+') aquí.');
-    });
-
-  log.insertAdjacentHTML('beforeend', thisPromiseCount +
-    ') Promesa hecha (<small>Código síncrono terminado. </small>)<br/>');
-}
-
- - - -

Este ejemplo es ejecutado cuando pulsas el botón. Necesitas un navegador que soporte Promise. Al pulsar el botón varias veces en un período corto de tiempo, verás las diferentes promesas siendo cumplidas una tras otra.

- -

{{EmbedLiveSample("Creando_una_Promise", "500", "200")}}

- -

Cargando una imagen con XHR

- -

Otro ejemplo sencillo utilizando Promise y XMLHttpRequest para cargar una imagen está disponible en el repositorio js-examples de MDN en GitHub. También puedes verlo en acción. Cada paso está comentado y te permite seguir de cerca la arquitectura detrás de las Promesas y XHR.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES2015', '#sec-promise-objects', 'Promise')}}{{Spec2('ES2015')}}Initial definition in an ECMA standard.
{{SpecName('ESDraft', '#sec-promise-objects', 'Promise')}}{{Spec2('ESDraft')}}
- -

Compatibilidad de navegadores

- - - -

{{Compat("javascript/promise")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/promise/prototype/index.html b/files/es/web/javascript/referencia/objetos_globales/promise/prototype/index.html deleted file mode 100644 index c15107912a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/promise/prototype/index.html +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Promise.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/Promise/prototype -tags: - - JavaScript - - Promesa - - Propiedad -translation_of: Web/JavaScript/Reference/Global_Objects/Promise -translation_of_original: Web/JavaScript/Reference/Global_Objects/Promise/prototype ---- -
{{JSRef}}
- -

La propiedad Promise.prototype representa el prototipo del constructor de {{jsxref("Promise")}}

- -
{{js_property_attributes(0,0,0)}}
- -

Descripción

- -

Las instancias de {{jsxref("Promise")}} heredan de {{jsxref("Promise.prototype")}}. Se puede usar el objeto prototipo del constructor para agregar propiedades o métodos a todas las instancias de Promise.

- -

Propiedades

- -
-
Promise.prototype.constructor
-
Retorna la función que creó el prototipo de una instancia. Esta es la función por defecto de {{jsxref("Promise")}}.
-
- -

Métodos

- -
-
{{jsxref("Promise.catch", "Promise.prototype.catch(alRechazarse)")}}
-
Anexa a la promesa un callback manejador de rechazo, y retorna una nueva promesa que resuelve al valor de retorno del callback si es llamado, o de lo contrario a su valor de cumplimiento original si la promesa es cumplida.
-
{{jsxref("Promise.then", "Promise.prototype.then(alCumplirse, alRechazarse)")}}
-
Anexa a la promesa manejadores de cumplimiento y rechazo, y retorna una nueva promesa que resuelve al valor de retorno del manejador llamado, o a su valor de determinación (settled) original si la promesa no fue manejada (p.ej. si el manejador relevante alCumplirse o alRechazarse no es una función).
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
{{SpecName('ES6', '#sec-promise.prototype', 'Promise.prototype')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-promise.prototype', 'Promise.prototype')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de navegadores

- - - -

{{Compat("javascript/promise","Promise.prototype")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/promise/race/index.html b/files/es/web/javascript/referencia/objetos_globales/promise/race/index.html deleted file mode 100644 index f24be82a9c..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/promise/race/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Promise.race() -slug: Web/JavaScript/Referencia/Objetos_globales/Promise/race -tags: - - ECMAScript2015 - - ECMAScript6 - - JavaScript - - Promesa - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Promise/race ---- -
{{JSRef}}
- -

El método Promise.race(iterable) retorna una promesa que se cumplirá o no tan pronto como una de las promesas del argumento iterable se cumpla o se rechace, con el valor o razón de rechazo de ésta.

- -

Sintaxis

- -
Promise.race(iterable);
- -

Parámetros

- -
-
iterable
-
Un objeto iterable , como por ejemplo un {{jsxref("Array")}}. Vea iterable.
-
- -

Retorna

- -

Una {{jsxref("Promise")}} que se cumple o se rechaza tan pronto como una de las promesas dadas en el argumento iterable se cumple o se rechaza.

- -

Descripción

- -

La función race retorna una Promise que se comporta como tal. Se cumple o se rechaza, lo que suceda antes en alguno de sus argumentos (iterable).

- -

Ejemplos

- -

Usando Promise.race – ejemplos con setTimeout

- -
var p1 = new Promise( (resolve, reject) => {
-    setTimeout(resolve, 500, "uno");
-});
-var p2 = new Promise( (resolve, reject) => {
-    setTimeout(resolve, 100, "dos");
-});
-
-Promise.race([p1, p2]).then( value => {
-  console.log(value); // "dos"
-  // Ambas se resuelven, pero la p2 antes.
-});
-
-  // Ejemplo con un resolve y un reject en el mismo método race.
-var p3 = new Promise( (resolve, reject) => {
-    setTimeout(resolve, 100, "tres");
-});
-var p4 = new Promise( (resolve, reject) => {
-    setTimeout(reject, 500, "cuatro");
-});
-
-Promise.race([p3, p4]).then( value => {
-  console.log(value); // "tres"
-  // p3 es mas rápida, así que se resuelve el race
-}, reason => {
-  // No es llamado
-});
-
-var p5 = new Promise( (resolve, reject) => {
-    setTimeout(resolve, 500, "cinoc");
-});
-var p6 = new Promise( (resolve, reject) => {
-    setTimeout(reject, 100, "seis");
-});
-
-Promise.race([p5, p6]).then( value => {
-  // No es llamado
-}, reason => {
-  console.log(reason); // "seis"
-  // p6 es mas rápida, así que se rechaza
-});
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónStatusComentar
{{SpecName('ES6', '#sec-promise.race', 'Promise.race')}}{{Spec2('ES6')}}Initial definition in an ECMA standard.
{{SpecName('ESDraft', '#sec-promise.race', 'Promise.race')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad entre navegadores

- -

{{Compat}}

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/promise/reject/index.html b/files/es/web/javascript/referencia/objetos_globales/promise/reject/index.html deleted file mode 100644 index 70505d7471..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/promise/reject/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Promise.reject() -slug: Web/JavaScript/Referencia/Objetos_globales/Promise/reject -translation_of: Web/JavaScript/Reference/Global_Objects/Promise/reject ---- -
{{JSRef}}
- -

El método Promise.reject(reason) retorna un objeto Promise que es rechazado por la razón específicada.

- -
{{EmbedInteractiveExample("pages/js/promise-reject.html")}}
- - - - - - - -

Sintaxis

- -
Promise.reject(reason);
- -

Parámetros

- -
-
reason
-
Razón por la cual esta {jsxref("Promise")}} fue rechazada.
-
- -

Return value

- -

Un objeto {{jsxref("Promise")}} que es rechazado por la razón específicada.

- -

Descripción

- -

La función estática Promise.reject retorna un objecto {{jsxref("Promise")}} que es rechazado. Para fines de depuración y captura selectiva de error, se suele pasar por el parámetro reason un  instanceof {{jsxref("Error")}}.

- -

Ejemplos

- -

Usando el método estático Promise.reject()

- -
Promise.reject(new Error('fail')).then(function() {
-  // no entra en esta función
-}, function(error) {
-  console.log(error); // Stacktrace
-});
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES2015', '#sec-promise.reject', 'Promise.reject')}}{{Spec2('ES2015')}}Initial definition in an ECMA standard.
{{SpecName('ESDraft', '#sec-promise.reject', 'Promise.reject')}}{{Spec2('ESDraft')}}
- -

Browser compatibility

- - - -

{{Compat("javascript.builtins.Promise.reject")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/promise/resolve/index.html b/files/es/web/javascript/referencia/objetos_globales/promise/resolve/index.html deleted file mode 100644 index e91dc7b80d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/promise/resolve/index.html +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: Promise.resolve() -slug: Web/JavaScript/Referencia/Objetos_globales/Promise/resolve -tags: - - ECMAScript 2015 - - JavaScript - - Promise - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Promise/resolve ---- -
{{JSRef}}
- -

El método Promise.resolve(value) retorna un objeto {{jsxref("Promise")}} que es resuelto con el valor dado. Si el valor es una promise, esa promise es devuelta; si el valor es un thenable (si tiene un {{jsxref("Promise.then", "método \"then\"")}}), el valor devuelto le seguirá a ese thenable, adoptando su estado; de otro modo la promise devuelta estará completada con el valor.

- -
{{EmbedInteractiveExample("pages/js/promise-resolve.html")}}
- - - -

Sintáxis

- -
Promise.resolve(value);
-Promise.resolve(promise);
-Promise.resolve(thenable);
-
- -

Parámetros

- -
-
value
-
Argumento por resolver por esta Promise. También puede ser una Promise o un thenable por resolver.
-
- -

Valor retornado

- -

Una {{jsxref("Promise")}} que es resuelta con el valor dado, o con la promise pasada como valor, si el valor era un objeto promise.

- -

Descripción

- -

La función estática Promise.resolve retorna una Promise que es resuelta.

- -

Ejemplos

- -

Utilizando el método estático Promise.resolve

- -
Promise.resolve('Éxito').then(function(value) {
-  console.log(value); // "Éxito"
-}, function(value) {
-  // no es llamada
-});
-
- -

Resolviendo un arreglo

- -
var p = Promise.resolve([1,2,3]);
-p.then(function(v) {
-  console.log(v[0]); // 1
-});
- -

Resolviendo otra Promise

- -
var original = Promise.resolve(33);
-var cast = Promise.resolve(original);
-cast.then(function(value) {
-  console.log('valor: ' + value);
-});
-console.log('original === cast ? ' + (original === cast));
-
-// registros, en orden:
-// original === cast ? true
-// valor: 33
-
- -

El orden invertido de los registros se debe al hecho de que los handler then sean llamados asíncronamente. Vea cómo funciona then aquí.

- -

Resolviendo thenables y arrojando Errores

- -
// Resolviendo un objeto thenable
-var p1 = Promise.resolve({
-  then: function(onFulfill, onReject) { onFulfill('¡Completada!'); }
-});
-console.log(p1 instanceof Promise) // true, objeto convertido en una Promise
-j
-p1.then(function(v) {
-    console.log(v); // "¡Completada!"
-  }, function(e) {
-    // no es llamada
-});
-
-// Thenable arroja antes del callback
-// Rechaza la Promise
-var thenable = { then: function(resolve) {
-  throw new TypeError('Arrojando');
-  resolve('Resolviendo');
-}};
-
-var p2 = Promise.resolve(thenable);
-p2.then(function(v) {
-  // no es llamada
-}, function(e) {
-  console.log(e); // TypeError: Arrojando
-});
-
-// Thenable arroja después del callback
-// Resuelve la Promise
-var thenable = { then: function(resolve) {
-  resolve('Resolviendo');
-  throw new TypeError('Arrojando');
-}};
-
-var p3 = Promise.resolve(thenable);
-p3.then(function(v) {
-  console.log(v); // "Resolviendo"
-}, function(e) {
-  // no es llamada
-});
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-promise.resolve', 'Promise.resolve')}}{{Spec2('ES2015')}}Definición inicial en un estándar de ECMA.
{{SpecName('ESDraft', '#sec-promise.resolve', 'Promise.resolve')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.builtins.Promise.resolve")}}

- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/promise/then/index.html b/files/es/web/javascript/referencia/objetos_globales/promise/then/index.html deleted file mode 100644 index 8998f3b180..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/promise/then/index.html +++ /dev/null @@ -1,302 +0,0 @@ ---- -title: Promise.prototype.then() -slug: Web/JavaScript/Referencia/Objetos_globales/Promise/then -tags: - - ECMAScript 2015 - - JavaScript - - Method - - Promise - - Prototype -translation_of: Web/JavaScript/Reference/Global_Objects/Promise/then ---- -
{{JSRef}}
- -

El método then() retorna una {{domxref("Promesa")}}. Recibe dos argumentos: funciones callback  para los casos de éxito y fallo de Promise.

- -

Nota: Si ambos argumentos son omitidos, o se proveen métodos que no sean funciones, se creará una nueva Promesa sin handlers adicionales, que simplemente adoptan el estado final de la Promesa que entonces es llamado. Si el primer argumento es omitido o se provee una no-función, el nuevo Promise que es creado simplemente adopta el  estado cumplido del Promise que entonces es llamado (si se convierte en fulfilled). Si el segundo argument es omitido o se provee una no-función, el nuevo Promise que es creado simplemente adopta  el estado de rechazo del Promesa que entonces es llamado (si se convierte en rechazado).

- -

Sintaxis

- -
p.then(alCumplir[, enRechazo]);
-
-p.then(function(value) {
-   // cumplimiento
-  }, function(reason) {
-  // rechazo
-});
-
- -

Parámetros

- -

Retorna un Promise el cual es determinado por las funciones input:

- - - -
-
alCumplir {{optional_inline}}
-
Una Función es llamada si la Promesa se cumple. Esta función tiene un argumento, el valor de cumplimiento. Si no es una función, se reemplaza internamente con una función de "Identidad"  (devuelve el argumento recibido).
-
enRechazo {{optional_inline}}
-
Una Función es llamada si la Promesa es rechazada. Esta función tiene un argumento, la razón de rechazo. Si no es una función, se reemplaza internamente con una función "Lanzador" (lanza un error que recibió como argumento).
-
- -

Valor de retorno

- -

Un Promise en estado pendiente. La función de control (alCumplir o enRechazo) es llamada de forma asíncrona (tan pronto como el stack se vacíe). Después de la invocación de la función de control pueden darse diferentes casos:

- - - -

Veamos un ejemplo para demostrar la asincronía del método then.

- -
// al usar una promesa revuelta, el bloque 'then' se lanzará automáticamente,
-// pero sus funciones controladoras se lanzarán asíncronamente,
-// como demuestran los console.logs
-var promResuelta = Promise.resolve(33);
-
-var thenProm = promResuelta.then(función(valor){
-    console.log("ésto será invocado cuando acabe el stack principal. El valor recibido y devuelto es: " + valor);
-    return valor;
-});
-// imprimimos al momento el valor de thenProm()
-console.log(thenProm);
-
-// usando setTimeout podemos posponer la ejecución de una función al momento en el que el stack quede vacío.
-setTimeout(función(){
-    console.log(thenProm);
-});
-
-
-// logs, en orden:
-// Promise {[[EstadoPromise¡]]: "pendiente", [[ValorPromise]]: undefined}
-// "ésto será invocado cuando acabe el stack principal. El valor recibido y devuelto es: "33"
-// Promise {[[EstadoPromise]]: "resuelta", [[ValorPromise]]: 33}
- -

Descripción

- -

Ya que los métodos then y {{jsxref("Promise.prototype.catch()")}} devuelven promesas, pueden ser encadenados — una operación llamada composición.

- -

Ejemplos

- -

Usando el metodo 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!
-});
-
- -

Encadenamiento

- -

El método then devuelve una Promise que permite encadenar métodos.

- -

Puedes pasar una lambda a then y si devuelve una promesa, una Promise equivalente será expuesta al then subsecuente en la cadena de métodos. El fragmento incluido debajo simula un código asíncrono mediante la función setTimeout

- -
Promise.resolve('foo')
-  // 1. Recibe "foo", concatena "bar" con él, y resuelve la cadena con el siguiente 'then'
-  .then(función(hilo) {
-    return new Promise(function(resolve, reject) {
-      setTimeout(función() {
-        hilo += 'bar';
-        resolve(hilo);
-      }, 1);
-    });
-  })
-  // 2. recibe "foobar", registra una función de llamada para opear sobre ese hilo
-  // e imprimirlo en la consola, pero no antes de devolver el hilo sin modificar
-  // en la resolución del siguiente 'then'
-  .then(función(hilo) {
-    setTimeout(función() {
-      hilo += 'baz';
-      console.log(hilo);
-    }, 1)
-    return hilo;
-  })
-  // 3. imprime mensajes útiles sobre cómo funcionará el código en esta sección
-  // antes de que el hilo se procese por el código de prueba
-  // antes del bloque 'then'.
-  .then(función(hilo) {
-    console.log("Último Then:  oops... no me he molestado en instanciar y devolver " +
-                "una promesa en el then anterior, así que la secuencia puede ser un poco " +
-                "sorprendente");
-
-    // Observemos que `string` no incluye el trozo 'baz' en éste punto. Ésto ocurre
-    // porque lo hemos contruido para que ocurra asíncronamente con una función setTimeout
-    console.log(hilo);
-});
- -

Cuando un valor sencillamente se devuelve desde un lambda then , devolverá un Promise.resolve(<valor devuelto por el controlador que haya sido invocado>).

- -
var p2 = nueva Promise(function(resolver, rechazar) {
-  resolver(1);
-});
-
-p2.then(función(valor) {
-  console.log(valor); // 1
-  return valor + 1;
-}).then(function(value) {
-  console.log(valor + '- Este uso síncrono es prácticamente inútil'); // 2- Este uso síncrono es prácticamente inútil
-});
-
-p2.then(función(valor) {
-  console.log(valor); // 1
-});
-
- -

Una llamada a  then devolverá una promesa rechazada si la función lanza un error o devuelve una Promise rechazada.

- -
Promise.resolve()
-  .then( () => {
-    // Hace que .then() devuelva una promera rechazada
-    throw new Error('Oh no!');
-  })
-  .then( () => {
-    console.log( 'No invocada.' );
-  }, error => {
-    console.error( 'Función de rechazo llamada: ', error );
-});
- -

En cualquier otro caso, una Promise en resolución será devuelta. El el siguiente ejemplo, el primer then() devolverá un 42 dentro de una Promise en resolución, aunque la Promise de la cadena fue rechazada.

- -
Promise.reject()
-  .then( () => 99, () => 42 ) // enRechazo devuelve 42, que está dentro de una Promise en resolución
-  .then( respuesta => console.log( 'Resuelta con ' + respuesta ) ); // Resuelta con 42
- -

En la práctica, suele ser preferible capturar promesas rechazadas en lugar de utilizar la sintaxis de dos casos de then, como demostramos abajo.

- -
Promise.resolve()
-  .then( () => {
-    // Hace que .then() devuelva una promesa rechazada
-    throw new Error('Oh no!');
-  })
-  .catch( error => {
-    console.error( 'función enRechazo invocada: ', error );
-  })
-  .then( () => {
-    console.log( "Siempre soy invocada, incluso si la promesa del then previo es rechazada" );
-  });
- -


- También puedes usar encadenamiento para implementar una función con una API basada en promesas, sobre una función del mismo tipo.

- -
function traer_datos_actuales() {
-  // La función fetch() de la API devuelve una Promesa. Esta función
-  // expone una API similar, pero el valor de cumplimiento
-  // de la Promesa de esta función tiene más tareas
-  // implementadas sobre ella.
-  return fetch('datos_actuales.json').then((response) => {
-    if (response.headers.get('content-type') != 'application/json') {
-      throw new TypeError();
-    }
-    var j = response.json();
-    // podríamos hacer algo con j
-    return j; // valor de cumplimiento asignado al usuario de
-              // fetch_datos_actuales().then()
-  });
-}
-
- -

Si alCumplir devuelve una promesa, el valor de retorno de then será resuelto o rechazado por la promesa.

- -
function resolverDespues(resolver, reject) {
-  setTimeout(función () {
-    resolver(10);
-  }, 1000);
-}
-function rechazarDespues(resolver, reject) {
-  setTimeout(function () {
-    resolver(new Error('Error'));
-  }, 1000);
-}
-
-var p1 = Promise.resolve('foo');
-var p2 = p1.then(función() {
-  // Devuelve la promesa aquí, que será resuelta igualada a 10 tras 1 segundo
-  return new Promise(resolverDespues);
-});
-p2.then(función(v) {
-  console.log('resuelta', v);  // "resuelta", 10
-}, función(e) {
-  // no invocada
-  console.log('rechazada', e);
-});
-
-var p3 = p1.then(funcion() {
- // Devuelve la promesa aquí, que será rechazada con 'Error' despues de 1 segundo
- return new Promise(rechazarDespues);
-});
-p3.then(funcion(v) {
- // no invocada
-  console.log('resuelta', v);
-}, funcion(e) {
-  console.log('rechazada', e); // "rechazada", 'Error'
-});
-
- -

window.setImmediate estilo polyfill basado en promesas

- -

Usar un método {{jsxref("Function.prototype.bind()")}}Reflect.apply ({{jsxref("Reflect.apply()")}}) para crear un (non-cancellable) setImmediate-style function.

- -
const nextTick = (() => {
-  const noop = () => {}; // literally
-  const nextTickPromise = () => Promise.resolve().then(noop);
-
-  const rfab = Reflect.apply.bind; // (thisArg, fn, thisArg, [...args])
-  const nextTick = (fn, ...args) => (
-    fn !== undefined
-    ? Promise.resolve(args).then(rfab(null, fn, null))
-    : nextTickPromise(),
-    undefined
-  );
-  nextTick.ntp = nextTickPromise;
-
-  return nextTick;
-})();
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-promise.prototype.then', 'Promise.prototype.then')}}{{Spec2('ES2015')}}Definición inicial en el estándar ECMA.
{{SpecName('ESDraft', '#sec-promise.prototype.then', 'Promise.prototype.then')}}{{Spec2('ESDraft')}}
- -

Compatibilidad en navegador

- - - -

{{Compat("javascript/promise","Promise.prototype.then")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/proxy/index.html b/files/es/web/javascript/referencia/objetos_globales/proxy/index.html deleted file mode 100644 index 1469b1f138..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/proxy/index.html +++ /dev/null @@ -1,439 +0,0 @@ ---- -title: Proxy -slug: Web/JavaScript/Referencia/Objetos_globales/Proxy -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy ---- -
-
{{JSRef}}
-
- -

El objeto Proxy se usa para definir un comportamiento personalizado para operaciones fundamentales (por ejemplo, para observar propiedades, cuando se asignan, enumeración, invocación de funciones, etc).

- -

Terminología

- -
-
handler
-
Objeto que gestiona las intercepciones a las propiedades del objeto proxy.
-
traps
-
Son los métodos interceptores que proveen acceso a las propiedades. Es análogo al concepto de traps en los sistemas operativos.
-
target
-
El objeto que virtualiza este objeto. Suele usarse como backend de almacenamiento del proxy. Invariantes (semántica que no acepta cambios) respecto a la no extensibilidad del objeto o propiedades no configurables se verifican contra este target.
-
- -

Sintaxis

- -
var p = new Proxy(target, handler);
-
- -

Parámetros

- -
-
target
-
Un objeto target (puede ser cualquier órden de objetos, incluyendo un array nativa, funcion o incluso otro proxy) o función que contenga el Proxy
-
handler
-
Un objeto cuyas propiedades son funciones que definen el comportamiento del proxy cuando una operación es realizada en él.
-
- -

Métodos

- -
-
{{jsxref("Proxy.revocable()")}}
-
Crea un objeto Proxy revocable
-
- -

Métodos del objeto handler

- -

The handler object is a placeholder object which contains traps for Proxy.

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

Ejemplos

- -

Ejemplo básico

- -

En este simple ejemplo el número 37 se devuelve como valor predeterminado cuando la propiedad name no se encuentra en el objeto. Se utilizando el manejador 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
-
- -

No-op forwarding proxy

- -

In this example, we are using a native JavaScript object to which our proxy will forward all operations that are applied to it.

- -
var target = {};
-var p = new Proxy(target, {});
-
-p.a = 37; // operation forwarded to the target
-
-console.log(target.a); // 37. The operation has been properly forwarded
-
- -

Validación

- -

Con un Proxy, puedes validar fácilmente el valor puesto a un objeto. Este ejemplo usa el handler (manejador) 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');
-      }
-    }
-
-    // The default behavior to store the value
-    obj[prop] = value;
-  }
-};
-
-let person = new Proxy({}, validator);
-
-person.age = 100;
-console.log(person.age); // 100
-person.age = 'young'; // Throws an exception
-person.age = 300; // Throws an exception
-
- -

Extending constructor

- -

A function proxy could easily extend a constructor with a new constructor. This example uses the construct and apply handlers.

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

Manipular nodos del DOM

- -

A veces queremos cambiar el atributo clase de dos elementos diferentes. Aquí se muestra cómo usando el handler (manejador) 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');
-      }
-    }
-
-    // The default behavior to store the value
-    obj[prop] = newval;
-  }
-});
-
-let i1 = view.selected = document.getElementById('item-1');
-console.log(i1.getAttribute('aria-selected')); // 'true'
-
-let i2 = view.selected = document.getElementById('item-2');
-console.log(i1.getAttribute('aria-selected')); // 'false'
-console.log(i2.getAttribute('aria-selected')); // 'true'
-
- -

Value correction and an extra property

- -

The products proxy object evaluates the passed value and convert it to an array if needed. The object also supports an extra property called latestBrowser both as a getter and a setter.

- -
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];
-    }
-
-    // The default behavior to return the value
-    return obj[prop];
-  },
-  set: function(obj, prop, value) {
-    // An extra property
-    if (prop === 'latestBrowser') {
-      obj.browsers.push(value);
-      return;
-    }
-
-    // Convert the value if it is not an array
-    if (typeof value === 'string') {
-      value = [value];
-    }
-
-    // The default behavior to store the value
-    obj[prop] = value;
-  }
-});
-
-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'
-
- -

Finding an array item object by its property

- -

This proxy extends an array with some utility features. As you see, you can flexibly "define" properties without using Object.defineProperties. This example can be adapted to find a table row by its cell. In that case, the target will be table.rows.

- -
let products = new Proxy([
-  { name: 'Firefox', type: 'browser' },
-  { name: 'SeaMonkey', type: 'browser' },
-  { name: 'Thunderbird', type: 'mailer' }
-],
-{
-  get: function(obj, prop) {
-    // The default behavior to return the value; prop is usually an integer
-    if (prop in obj) {
-      return obj[prop];
-    }
-
-    // Get the number of products; an alias of 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];
-      }
-    }
-
-    // Get a product by name
-    if (result) {
-      return result;
-    }
-
-    // Get products by type
-    if (prop in types) {
-      return types[prop];
-    }
-
-    // Get product types
-    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
-
- -

A complete traps list example

- -

Now in order to create a complete sample traps list, for didactic purposes, we will try to proxify a non native object that is particularly suited to this type of operation: the docCookies global object created by the "little framework" published on the document.cookie page.

- -
/*
-  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;
-  },
-});
-
-/* Cookies test */
-
-console.log(docCookies.my_cookie1 = "First value");
-console.log(docCookies.getItem("my_cookie1"));
-
-docCookies.setItem("my_cookie1", "Changed value");
-console.log(docCookies.my_cookie1);
- -

Specifications

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES2015', '#sec-proxy-objects', 'Proxy')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-proxy-objects', 'Proxy')}}{{Spec2('ESDraft')}}
- -

Browser compatibility

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(49.0)}}13 (10586){{ CompatGeckoDesktop("18") }}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatChrome(49.0)}}{{ CompatGeckoDesktop("18") }}13 (10586){{CompatUnknown}}{{CompatUnknown}}
-
- -

Gecko specific notes

- - - -

See also

- - - -

Licensing note

- -

Some content (text, examples) in this page has been copied or adapted from the ECMAScript wiki which content is licensed CC 2.0 BY-NC-SA.

diff --git a/files/es/web/javascript/referencia/objetos_globales/referenceerror/index.html b/files/es/web/javascript/referencia/objetos_globales/referenceerror/index.html deleted file mode 100644 index 5b48497b5d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/referenceerror/index.html +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: ReferenceError -slug: Web/JavaScript/Referencia/Objetos_globales/ReferenceError -tags: - - Clase - - Class - - JavaScript - - Object - - Objeto - - ReferenceError - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/ReferenceError ---- -
{{JSRef("Objetos_globales", "ReferenceError")}}
- -

El objeto ReferenceError representa un error cuando se hace referencia a una variable inexistente.

- -

Constructor

- -
-
ReferenceError()
-
Crea un nuevo objeto ReferenceError.
-
- -

Propiedades de la instancia

- -
-
{{jsxref("Error.prototype.message", "ReferenceError.prototype.message")}}
-
Mensaje de error. Aunque ECMA-262 especifica que {{jsxref("ReferenceError")}} debe proporcionar su propia propiedad message, en SpiderMonkey, hereda {{jsxref("Error.prototype.message")}}.
-
{{jsxref("Error.prototype.name", "ReferenceError.prototype.name")}}
-
Nombre del error. Heredado de {{jsxref("Error")}}.
-
{{jsxref("Error.prototype.fileName", "ReferenceError.prototype.fileName")}}
-
Ruta al archivo que generó este error. Heredado de {{jsxref("Error")}}.
-
{{jsxref("Error.prototype.lineNumber", "ReferenceError.prototype.lineNumber")}}
-
Número de línea en el archivo que generó este error. Heredado de {{jsxref("Error")}}.
-
{{jsxref("Error.prototype.columnNumber", "ReferenceError.prototype.columnNumber")}}
-
Número de columna en la línea que generó este error. Heredado de {{jsxref("Error")}}.
-
{{jsxref("Error.prototype.stack", "ReferenceError.prototype.stack")}}
-
Seguimiento de la pila. Heredado de {{jsxref("Error")}}.
-
- -

Ejemplos

- -

Capturar un ReferenceError

- -
try {
-  let a = undefinedVariable
-} catch (e) {
-  console.log(e instanceof ReferenceError)  // true
-  console.log(e.message)                    // "undefinedVariable no 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"
-}
-
- -

Crear un ReferenceError

- -
try {
-  throw new ReferenceError('Hola', 'someFile.js', 10)
-} catch (e) {
-  console.log(e instanceof ReferenceError)  // true
-  console.log(e.message)                    // "Hola"
-  console.log(e.name)                       // "ReferenceError"
-  console.log(e.fileName)                   // "someFile.js"
-  console.log(e.lineNumber)                 // 10
-  console.log(e.columnNumber)               // 0
-  console.log(e.stack)                      // "@Scratchpad/2:2:9\n"
-}
-
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-referenceerror', 'ReferenceError')}}
- -

Compatibilidad del navegador

- -
- - -

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

-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/regexp/compile/index.html b/files/es/web/javascript/referencia/objetos_globales/regexp/compile/index.html deleted file mode 100644 index 0bce81a56d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/regexp/compile/index.html +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: RegExp.prototype.compile() -slug: Web/JavaScript/Referencia/Objetos_globales/RegExp/compile -tags: - - Desaprovado - - Expresion Regular - - JavaScript - - Obsoleto - - Prototype - - Referencia - - RegExp - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/compile ---- -
{{JSRef}} {{deprecated_header}}
- -

El método obsoleto compile() es usado para (re-)compilar una expresión regular durante la ejecución del script. Es básicamente lo mismo que el constructor RegExp.

- -

Sintaxis

- -
regexObj.compile(patrón, flags)
- -

Parámetros

- -
-
patrón
-
El texto de la expresión regular.
-
flags
-
-

Si es especificado, las flags pueden tener cualquier combinación de los siguientes valores:

- -
-
g
-
búsqueda global (global match)
-
i
-
ignorar mayúsculas o minúsculas
-
m
-
Tratar caracteres de inicio y fin (^ y $) como multiples líneas de texto(por ejemplo: encontrar el inicio o fin de cada línea delimitada por \n o \r, no sólo al inicio o fin de toda la entrada de texto)
-
y
-
sticky; busca solamente desde el índice indicado por la propiedad lastIndex de esta expresión regular en la cadena objetivo (y no intenta buscar desde ningún índice posterior).
-
-
-
- -

Descripción

- -

 El método compile es obsoleto. Puedes simplemente utilizar el constructor RegExp para lograr el mismo efecto.

- -

Ejemplos

- -

Usando compile()

- -

El siguiente ejemplo muestra como recompilar una expresión regultar con un nuevo patrón y nuevas flags.

- -
var regexObj = new RegExp('foo', 'gi');
-regexObj.compile('new foo', 'g');
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoCommentario
{{SpecName('ES6', '#sec-regexp.prototype.compile', 'RegExp.prototype.compile')}}{{Spec2('ES6')}}Definición inicial. Definido en la (norma) Annex B ECMAScript para Características Adicionales para Navegadores Web.
{{SpecName('ESDraft', '#sec-regexp.prototype.compile', 'RegExp.prototype.compile')}}{{Spec2('ESDraft')}}Definido en la (norma) Annex B ECMAScript para Características Adicionales para Navegadores Web.
- -

Compatiblidad con navegadores

- -
- - -

{{Compat("javascript.builtins.RegExp.compile")}}

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/regexp/exec/index.html b/files/es/web/javascript/referencia/objetos_globales/regexp/exec/index.html deleted file mode 100644 index 1925e63b67..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/regexp/exec/index.html +++ /dev/null @@ -1,238 +0,0 @@ ---- -title: RegExp.prototype.exec() -slug: Web/JavaScript/Referencia/Objetos_globales/RegExp/exec -tags: - - Expresiones Regulares - - JavaScript - - Prototipo - - Referencia - - RegExp - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/exec ---- -
{{JSRef}}
- -

El método exec() ejecuta una busqueda sobre las coincidencias de una expresión regular en una cadena especifica. Devuelve el resultado como array, o {{jsxref("null")}}.

- -

Si está ejecutando una expresión regular solo para buscar si algo se cumple o no, usa el método {{jsxref("RegExp.prototype.test()")}} o el método {{jsxref("String.prototype.search()")}}.

- -

Sintaxis

- -
regexObj.exec(cadena)
- -

Parametros

- -
-
cadena
-
Cadena sobre la cual se quiere aplicar la expresión regular
-
- -

Valor devuelto

- -

Si se encuentran coincidencial, el método exec() devuelve un array y actualiza las propiedades del objecto de la expresión regular. El array devuelto contiene los elementos encontrados en su primer elemento, y un elemento por cada parte de la expresión regular que se encuentra entre parentesis y se encuentra dentro del texto que fué capturado.

- -

Si la busqueda falla, el método exec() devuelve {{jsxref("null")}}.

- -

Descripción

- -

Considerando el siguiente ejemplo:

- -
// Busca "quick brown" seguido de "jumps", ignorando los caracteres que se
-// encuentren entre medias.
-// Recuerda "brown" y "jumps"
-// Ignora mayusculas y minusculas
-var re = /quick\s(brown).+?(jumps)/ig;
-var result = re.exec('The Quick Brown Fox Jumps Over The Lazy Dog');
-
- -

La siguiente tabla muestra el resultado de este script:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ObjetoPropiedad/ÍndiceDescripciónEjemplo
result[0]Todas las partes de la cadena que cumplen la expresión regularQuick Brown Fox Jumps
[1],...[n] -

Las subcadenas entre parentesis que han sido encontradas, si hay alguna. El número de subcadenas encontradas es ilimitado

-
[1] = Brown
- [2] = Jumps
indexEl índice de base-0 del elemento encontrado en la cadena.4
inputLa cadena original.The Quick Brown Fox Jumps Over The Lazy Dog
relastIndexEl índice sobre el cual empieza la siguiente busqueda. Cuando no se usa g (busqueda global), esto va a ser siempre 0.25
ignoreCaseIndica si la bandera "i" ha sido usada para ignorar mayusculas y minusculas.true
globalIndica si la bandera "g" fue usada para hacer una busqueda global.true
multilineIndica si la bandera "m" fue usada para buscar en cadenas sobre multiples lineasfalse
sourceEl texto del patrón de busquedaquick\s(brown).+?(jumps)
- -

Ejemplos

- -

Encontrando coincidencias sucesivas

- -

Si tu expresión regular contiene la bandera "g", puedes usar el método exec() varias veces para encontrar coincidencias sucesivas en la misma cadena. Cuando lo haces, la busqueda empieza en la subcadena str especificada por la propiedad {{jsxref("RegExp.lastIndex", "lastIndex")}} de la expresión regular ({{jsxref("RegExp.prototype.test()", "test()")}} también movera hacia adelante el indice de la propiedad {{jsxref("RegExp.lastIndex", "lastIndex")}}). Por ejemplo, asumiendo que tienes este script:

- -
var myRe = /ab*/g;
-var str = 'abbcdefabh';
-var myArray;
-while ((myArray = myRe.exec(str)) !== null) {
-  var msg = 'Se ha encontrado ' + myArray[0] + '. ';
-  msg += 'La siguiente coincidencia empieza en el indice ' + myRe.lastIndex;
-  console.log(msg);
-}
-
- -

Este script muestra el siguiente texto:

- -
Se ha encontrado abb. La siguiente coincidencia empieza en el indice 3
-Se ha encontrado ab. La siguiente coincidencia empieza en el indice 9
-
- -

Nota: No uses la expresión regular literalmente (o el constructor {{jsxref("RegExp")}}) dentro de la condición del bucle while o se creará un bucle infinito si hay una coincidencia, por culpa de que la propiedad {{jsxref("RegExp.lastIndex", "lastIndex")}} va a ser reiniciada por cada iteración del bucle. Además asegurate de que has usado la bandera de busqueda global "g" o se creará un bucle también.

- -

Usando exec() con RegExp literales

- -

También se puede usar exec() sin crear un objeto de  {{jsxref("RegExp")}}:

- -
var matches = /(hola \S+)/.exec('Esto es un hola mundo!');
-console.log(matches[1]);
-
- -

Esto logueará un mensaje que contiene 'hola mundo!'.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónStatusComment
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial. Implementado en 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')}} 
- -

Compatiblidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - -
FuncionalidadChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FuncionalidadAndroidChrome for AndroidEdgeFirefox Móvil (Gecko)IE MóvilOpera MóvilSafari Móvil
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/regexp/ignorecase/index.html b/files/es/web/javascript/referencia/objetos_globales/regexp/ignorecase/index.html deleted file mode 100644 index 9073d631d1..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/regexp/ignorecase/index.html +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: RegExp.prototype.ignoreCase -slug: Web/JavaScript/Referencia/Objetos_globales/RegExp/ignoreCase -translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase ---- -
{{JSRef}}
- -

La propiedad ignoreCase indica si la expresión regular está usando la bandera "i". ignoreCase es una propiedad de sólo lectura de una instancia de expresión regular.

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

Descripción

- -

El valor de ignoreCase es un {{jsxref("Boolean")}} y true si la bandera "i" fue usada. De otra manera es false. La bandera "i" indica que el se debe ignorar la capitalización al tratar de encontrar los equivalentes en un texto.

- -

No se puede cambiar esta propiedad directamente.

- -

Ejemplos

- -

Usando ignoreCase

- -
var regex = new RegExp('foo', 'i');
-
-console.log(regex.ignoreCase); // true
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial. Implementado en JavaScript 1.2. JavaScript 1.5: ignoreCase es una propiedad de la instancia  {{jsxref("RegExp")}}, y no del objecto {{jsxref("RegExp")}}.
{{SpecName('ES5.1', '#sec-15.10.7.3', 'RegExp.prototype.ignoreCase')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-get-regexp.prototype.ignorecase', 'RegExp.prototype.ignoreCase')}}{{Spec2('ES6')}}ignoreCase es ahora una propiedad accesora del prototipo en lugar de una propiedad de dato de una instancia.
{{SpecName('ESDraft', '#sec-get-regexp.prototype.ignorecase', 'RegExp.prototype.ignoreCase')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Propiedad accesor del Prototipo{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoDesktop(38)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome para AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Propiedad accesor del Prototipo{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile(38)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/regexp/index.html b/files/es/web/javascript/referencia/objetos_globales/regexp/index.html deleted file mode 100644 index 9a26edead0..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/regexp/index.html +++ /dev/null @@ -1,264 +0,0 @@ ---- -title: RegExp -slug: Web/JavaScript/Referencia/Objetos_globales/RegExp -tags: - - Clase - - Expresiones Regulares - - JavaScript - - Referencia - - RegExp -translation_of: Web/JavaScript/Reference/Global_Objects/RegExp ---- -
{{JSRef}}
- -

El objeto RegExp se utiliza para hacer coincidir texto con un patrón.

- -

Para obtener una introducción a las expresiones regulares, lee el {{JSxRef("../Guide/Regular_Expressions", "capítulo sobre expresiones regulares")}} en la {{JSxRef("../Guide/Regular_Expressions", "Guía de JavaScript")}}.

- -

Descripción

- -

Notación literal y constructor

- -

Hay dos formas de crear un objeto RegExp: una notación literal y un constructor.

- - - -

Las siguientes tres expresiones crean el mismo objeto de expresión regular:

- -
let er = /ab+c/i; // notación literal
-let er = new RegExp('ab+c', 'i') // constructor con patrón de cadena como primer argumento
-let er = new RegExp(/ab+c/, 'i') // constructor con expresión regular literal como primer argumento (a partir de ECMAScript 6)
-
- -

La notación literal da como resultado la compilación de la expresión regular cuando se evalúa la expresión. Utiliza la notación literal cuando la expresión regular permanecerá constante. Por ejemplo, si usas notación literal para construir una expresión regular usada en un bucle, la expresión regular no se volverá a compilar en cada iteración.

- -

El constructor del objeto de expresión regular, por ejemplo, new RegExp('ab+c'), da como resultado la compilación en tiempo de ejecución de la expresión regular. Utiliza la función constructora cuando sepas que el patrón de expresión regular cambiará, o no conozcas el patrón y lo obtienes de otra fuente, tal como la entrada del usuario.

- -

Banderas en el constructor

- -

A partir de ECMAScript 6, new RegExp(/ab+c/, 'i') ya no arroja un {{JSxRef("TypeError")}} ("no puedes proporcionar banderas cuando construyes una expresión regular a partir de otra") cuando el primer argumento es una RegExp y el segundo argumento flags está presente. En su lugar, se crea una nueva RegExp a partir de los argumentos.

- -

Cuando se utiliza la función constructora, las reglas de escape de cadenas normales (antes de los caracteres especiales con \ cuando se incluyen en una cadena) son necesarias.

- -

Por ejemplo, los siguientes son equivalentes:

- -
let er = /\w+/
-let er = new RegExp('\\w+')
-
- -

Propiedades de expresiones regulares similares a Perl

- -

Ten en cuenta que varias de las propiedades de {{JSxRef("RegExp")}} tienen nombres largos y cortos (tipo Perl). Ambos nombres siempre se refieren al mismo valor. (Perl es el lenguaje de programación a partir del cual JavaScript modeló sus expresiones regulares). Consulta también las propiedades {{JSxRef("Características_Desaprobadas", "en desuso de RegExp", "#Propiedades_de_RegExp")}}

- -

Constructor

- -
-
{{JSxRef("Objetos_globales/RegExp/RegExp", "RegExp()")}}
-
Crea un nuevo objeto RegExp.
-
- -

Propiedades estáticas

- -
-
{{JSxRef("RegExp.@@species", "get RegExp[@@species]")}}
-
La función constructora utilizada para crear objetos derivados.
-
{{JSxRef("RegExp.lastIndex")}}
-
El índice en el que comenzará la siguiente búsqueda.
-
- -

Propiedades de la instancia

- -
-
{{JSxRef("RegExp.prototype.flags")}}
-
Una cadena que contiene las banderas del objeto RegExp.
-
{{JSxRef("RegExp.prototype.dotAll")}}
-
Si el "." coincide con nuevas líneas o no.
-
{{JSxRef("RegExp.prototype.global")}}
-
Si se debe probar o no la expresión regular con todas las posibles ocurrencias en una cadena, o solo con la primera.
-
{{JSxRef("RegExp.prototype.ignoreCase")}}
-
Si se deben o no ignorar las mayúsculas/minúsculas al buscar en una cadena.
-
{{JSxRef("RegExp.prototype.multiline")}}
-
Si buscar o no en cadenas multilínea.
-
{{JSxRef("RegExp.prototype.source")}}
-
El texto del patrón.
-
{{JSxRef("RegExp.prototype.sticky")}}
-
Si la búsqueda es pegajosa o no.
-
{{JSxRef("RegExp.prototype.unicode")}}
-
Si las funciones Unicode están habilitadas o no.
-
- -

Métodos de instancia

- -
-
{{JSxRef("RegExp.prototype.compile()")}}
-
(Re)compila una expresión regular durante la ejecución de un script.
-
{{JSxRef("RegExp.prototype.exec()")}}
-
Ejecuta una búsqueda de una coincidencia en su parámetro de cadena.
-
{{JSxRef("RegExp.prototype.test()")}}
-
Prueba una coincidencia en su parámetro de cadena.
-
{{JSxRef("RegExp.prototype.toString()")}}
-
Devuelve una cadena que representa el objeto especificado. Redefine el método {{JSxRef("Object.prototype.toString()")}}.
-
{{JSxRef("RegExp.prototype.@@match()", "RegExp.prototype[@@match]()")}}
-
Realiza la coincidencia con la cadena dada y devuelve el resultado de la coincidencia.
-
{{JSxRef("RegExp.prototype.@@matchAll()", "RegExp.prototype[@@matchAll]()")}}
-
Devuelve todas las coincidencias de la expresión regular con una cadena.
-
{{JSxRef("RegExp.prototype.@@replace()", "RegExp.prototype[@@replace]()")}}
-
Reemplaza las coincidencias en una cadena dada con una nueva subcadena.
-
{{JSxRef("RegExp.prototype.@@search()", "RegExp.prototype[@@search]()")}}
-
Busca la coincidencia en la cadena dada y devuelve el índice del patrón encontrado en la cadena.
-
{{JSxRef("RegExp.prototype.@@split()", "RegExp.prototype[@@split]()")}}
-
Divide la cadena dada en un arreglo separando la cadena en subcadenas.
-
- -

Ejemplos

- -

Usar una expresión regular para cambiar el formato de los datos

- -

El siguiente script usa el método {{JSxRef("String.prototype.replace()", "replace()")}} de la instancia {{JSxRef("Objetos_globales/String", "String")}} para hacer coincidir una nombre en el formato primero último y enviarlo en el formato último, primero.

- -

En el texto de reemplazo, el script usa $1 y $2 para indicar los resultados de los correspondientes paréntesis coincidentes en el patrón de expresión regular.

- -
let er = /(\w+)\s(\w+)/
-let str = 'John Smith'
-let newstr = str.replace(er, '$2, $1')
-console.log(newstr)
-
- -

Esto muestra "Smith, John".

- -

Uso de expresiones regulares para dividir líneas con diferentes finales de línea/saltos de línea

- -

El final de línea predeterminado varía según la plataforma (Unix, Windows, etc.). La división de líneas proporcionada en este ejemplo funciona en todas las plataformas.

- -
let texto = 'Un poco de texto\ny un poco más\r\ny aún\reste es el final'
-let lineas = texto.split(/\r\n|\r|\n/)
-console.log(lineas) // logs [ 'Un poco de texto', 'y un poco más', 'y aún', 'este es el final' ]
-
- -

Ten en cuenta que el orden de los patrones en la expresión regular es importante.

- -

Usar expresiones regulares en varias líneas

- -
let s = '¡Por favor, sí\nhazme el día!'
-
-s.match(/sí.*día/);
-// Devuelve null
-
-s.match(/sí[^]*día/);
-// Devuelve ["sí\nhazme el día"]
-
- -

Usar una expresión regular con la bandera pegajosa

- -

La bandera {{JSxRef("Objetos_globales/RegExp/sticky", "sticky")}} indica que la expresión regular realiza una coincidencia permanente en la cadena de destino al intentar hacer coincidir a partir de {{JSxRef("RegExp.prototype.lastIndex")}}.

- -
let str = '#foo#'
-let regex = /foo/y
-
-regex.lastIndex = 1
-regex.test(str)      // true
-regex.lastIndex = 5
-regex.test(str)      // false (lastIndex se tiene en cuenta con una bandera pegajosa)
-regex.lastIndex      // 0 (restablecer después de un error de coincidencia)
- -

La diferencia entre la bandera pegajosa y la bandera global

- -

Con la bandera pegajosa y, la siguiente coincidencia tiene que ocurrir en la posición lastIndex, mientras que con la bandera global g, la coincidencia puede ocurrir en la posición lastIndex o posterior:

- -
er = /\d/y;
-while (r = re.exec("123 456")) console.log(r, "Y er.lastIndex", er.lastIndex);
-
-// [ '1', index: 0, input: '123 456', groups: undefined ] AND er.lastIndex 1
-// [ '2', index: 1, input: '123 456', groups: undefined ] AND er.lastIndex 2
-// [ '3', index: 2, input: '123 456', groups: undefined ] AND er.lastIndex 3
-//   ... y no más coincidencias.
- -

Con la bandera global g, coincidirían los 6 dígitos, no solo 3.

- -

Expresión regular y caracteres Unicode

- -

\w y \W solo coincide con caracteres basados en ASCII; por ejemplo, a a z, A a Z, 0 a 9 y _.

- -

Para hacer coincidir caracteres de otros idiomas como Cirílico o Hebreo, usa \uhhhh, donde hhhh es el Valor Unicode en hexadecimal.

- -

Este ejemplo demuestra cómo se pueden separar los caracteres Unicode de una palabra.

- -
let texto = 'Образец texto на русском языке'
-let regex = /[\u0400-\u04FF]+/g
-
-let match = regex.exec(text)
-console.log(match[0])        // registra 'Образец'
-console.log(regex.lastIndex) // registra '7'
-
-let match2 = regex.exec(texto)
-console.log(match2[0])       // registra 'на' [no registró 'texto']
-console.log(regex.lastIndex) // registra '15'
-
-// y así sucesivamente
-
- -

La función {{JSxRef("../Guide/Regular_Expressions/Unicode_Property_Escapes", "Escapes de propiedad Unicode")}} presenta una solución, al permitir una declaración tan simple como \p{scx=Cyrl}.

- -

Extraer el nombre de subdominio de la URL

- -
let url = 'http://xxx.dominio.com'
-console.log(/[^.]+/.exec(url)[0].substr(7)) // registra 'xxx'
-
- -
-

En lugar de utilizar expresiones regulares para analizar las URL, normalmente es mejor utilizar el analizador de URL integrado en los navegadores mediante la API URL.

-
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-regexp-regular-expression-objects', 'RegExp')}}
- -

Compatibilidad del navegador

- -
- - -

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

-
- -

Notas específicas de Firefox

- -

A partir de Firefox 34, en el caso de un grupo de captura con cuantificadores que impiden su ejercicio, el texto coincidente para un grupo de captura ahora es undefined en lugar de una cadena vacía:

- -
// Firefox 33 o anterior
-'x'.replace(/x(.)?/g, function(m, group) {
-  console.log("'grupo: " + group + "'");
-});
-// 'grupo: '
-
-// Firefox 34 o más reciente
-'x'.replace(/x(.)?/g, function(m, group) {
-  console.log("'grupo: " + group + "'");
-});
-// 'grupo: undefined'
-
- -

Ten en cuenta que, debido a la compatibilidad web, RegExp.$N seguirá devolviendo una cadena vacía en lugar de undefined ({{bug(1053944)}}).

- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/regexp/regexp/index.html b/files/es/web/javascript/referencia/objetos_globales/regexp/regexp/index.html deleted file mode 100644 index ad3a8c90e9..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/regexp/regexp/index.html +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: Constructor RegExp() -slug: Web/JavaScript/Referencia/Objetos_globales/RegExp/RegExp -tags: - - Constructor - - JavaScript - - Referencia - - RegExp -translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/RegExp ---- -
{{JSRef}}
- -

El constructor RegExp crea un objeto de expresión regular para hacer coincidir el texto con un patrón.

- -

Para ver la introducción a las expresiones regulares, lee el {{JSxRef("../Guide/Regular_Expressions", "capítulo sobre expresiones regulares")}} en la {{JSxRef("../Guide", "Guía de JavaScript")}}.

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

Sintaxis

- -

Son posibles las notaciones literal, constructor y de fábrica:

- -
/patrón/banderas
-new RegExp(patrón[, banderas])
-RegExp(patrón[, banderas])
-
- -

Parámetros

- -
-
patrón
-
El texto de la expresión regular.
-
A partir de ES5, también puede ser otro objeto o RegExp literal (solo para las dos notaciones del constructor RegExp). Los patrones pueden incluir {{JSxRef("../Guide/Regular_Expressions", "caracteres especiales", "#Usar_caracteres_especiales")}} para que coincidan con un rango de valores más amplio que el de una cadena literal.
-
banderas
-
-

Si se especifica, banderas es una cadena que contiene las banderas para agregar.

- -

Alternativamente, si se proporciona un objeto para el patrón, la cadena banderas reemplazará cualquiera de las banderas de ese objeto (y lastIndex se restablecerá a 0) (a partir de ES2015).

- -

Si no se especifica banderas y se proporciona un objeto de expresiones regulares, las banderas de ese objeto (y el valor de lastIndex) se copiarán.

- -

banderas puede contener cualquier combinación de los siguientes caracteres:

- -
-
g (coincidencia global)
-
Encuentra todas las coincidencias en lugar de detenerse después de la primera.
-
i (ignorar mayúsculas y minúsculas)
-
Si el indicador u también está habilitado, utiliza el plegado de mayúsculas y minúsculas Unicode.
-
m (multilínea)
-
Trata los caracteres iniciales y finales (^ y $) como si estuvieran trabajando en varias líneas. En otras palabras, hace coincidir el principio o el final de cada línea (delimitada por \n o \r), no solo al principio o final de toda la cadena de entrada.
-
sdotAll» o punto para todo)
-
Permite que el punto (. coincida con nuevas líneas o no.
-
u (unicode)
-
Trata el patrón como una secuencia de puntos de código Unicode. (Consulta también Cadenas binarias).
-
y (sticky)
-
Coincide solo con el índice indicado por la propiedad lastIndex de esta expresión regular en la cadena destino. No intenta coincidir con índices posteriores.
-
-
-
- -

Ejemplos

- -

Notación literal y constructor

- -

Hay dos formas de crear un objeto RegExp: una notación literal y un constructor.

- - - -

Las siguientes tres expresiones crean la misma expresión regular:

- -
/ab+c/i
-new RegExp(/ab+c/, 'i') // notación literal
-new RegExp('ab+c', 'i') // constructor
-
- -

La notación literal da como resultado la compilación de la expresión regular cuando se evalúa la expresión. Utiliza la notación literal cuando la expresión regular permanecerá constante. Por ejemplo, si usas notación literal para construir una expresión regular usada en un bucle, la expresión regular no se volverá a compilar en cada iteración.

- -

El constructor del objeto de expresión regular, por ejemplo, new RegExp('ab+c'), da como resultado la compilación en tiempo de ejecución de la expresión regular. Usa la función constructora cuando sepas que el patrón de la expresión regular cambiará, o no conoces el patrón y lo obtienes de otra fuente, como la entrada del usuario.

- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-regexp-constructor', 'RegExp constructor')}}
- -

Compatibilidad del navegador

- -
- - -

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

-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/regexp/rightcontext/index.html b/files/es/web/javascript/referencia/objetos_globales/regexp/rightcontext/index.html deleted file mode 100644 index 39530ee1b5..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/regexp/rightcontext/index.html +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: RegExp.rightContext ($') -slug: Web/JavaScript/Referencia/Objetos_globales/RegExp/rightContext -translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/rightContext ---- -
{{JSRef}} {{non-standard_header}}
- -

La propiedad rightContext (No es estándar) es una propiedad estática y de solo lectura de expresiones regulares que contiene la subcadena que sigue a la coincidencia más reciente. el alias para esta propiedad es RegExp.$'.

- -

Sintaxis

- -
RegExp.rightContext
-RegExp["$'"]
-
- -

Descripción

- -

La propiedad rightContext es estática, no es una propiedad de un objeto de expresión regular individual. Debe usarse como RegExp.rightContextRegExp["$'"].

- -

El valor de la propiedad rightContext es de solo lectura y se modifica cada que hay una coincidencia exitosa.

- -

Tenga presente que no puede usar la abreviatura (RegExp.$'), porque el analizador espera una cadena de inicio, si lo hace optendra un error de sintaxis {{jsxref("SyntaxError")}} , para este caso, usted debe usar corchetes. consulte notación de paréntesis para acceso a la propiedad.

- -

Ejemplos

- -

Usando rightContext y $'

- -
var re = /hola/g;
-re.test('hola mundo!');
-RegExp.rightContext; // " mundo!"
-RegExp["$'"];       // " mundo!"
-
- -

Especificaciones

- -

No estándar. No forma parte de ninguna especificación actual.

- - - -
- - -

{{Compat("javascript.builtins.RegExp.rightContext")}}

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/regexp/test/index.html b/files/es/web/javascript/referencia/objetos_globales/regexp/test/index.html deleted file mode 100644 index 4507b57c97..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/regexp/test/index.html +++ /dev/null @@ -1,152 +0,0 @@ ---- -title: RegExp.prototype.test() -slug: Web/JavaScript/Referencia/Objetos_globales/RegExp/test -tags: - - Expresion Regular - - Prototipo - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/test ---- -
{{JSRef}}
- -

El método test() ejecuta la búsqueda de una ocurrencia entre una expresión regular y una cadena especificada. Devuelve true o false.

- -

Sintaxis

- -
regexObj.test(cadena)
- -

Parámetros

- -
-
cadena
-
La cadena a comparar contra la expresión regular.
-
- -

Valor de Retorno

- -

Retorna true si existe una coincidencia entre la expresión regular y la cadena especificada; de lo contrario retorna false.

- -

Descripción

- -

Use test() cuando desee saber si existe la ocurrencia de un patrón en una cadena (similar al método {{jsxref("String.prototype.search()")}}, la diferencia es que test() devuelve un booleano, mientras que search() devuelve el índice de la coincidencia (si la encuentra) o -1 si no la encuentra).

- -

Si requiere más información (a coste de una ejecución más lenta) utilice el método {{jsxref("RegExp.prototype.exec()", "exec()")}}. Al igual que este último, multiples llamadas a test() sobre la misma instancia global de una expresión regular avanzará desde de la ocurrencia anterior.

- -

Ejemplos

- -

Usando test()

- -

Ejemplo simple que prueba si "hello" está contenido al principio de una cadena y devuelve un valor booleano.

- -
var cadena = "hello world!";
-var result = /^hello/.test(cadena);
-console.log(result); // true
-
- -

El siguiente ejemplo registra un mensaje que depende del éxito de la prueba:

- -
function probarEntrada(regexp, cadena){
-  var subcadena;
-  if (regexp.test(cadena)) {
-    subcadena = ' contiene ';
-  } else {
-    subcadena = ' no contiene ';
-  }
-  console.log(cadena + subcadena + regexp.source);
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definition inicial. Implementado en 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')}} 
{{SpecName('ESDraft', '#sec-regexp.prototype.test', 'RegExp.test')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad en 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}}
-
- -

Notas específicas para Gecko

- -

Antes de Gecko 8.0 {{geckoRelease("8.0")}}, test() estaba incorrectamente implementado; cuando era llamado sin parámetros, buscaba emparejar contra el valor de la entrada anterior (la propiedad RegExp.input) en lugar de hacerlo contra la cadena "undefined". Esto ha sido corregido; ahora /undefined/.test() resulta correctamente en true, en lugar de un error.

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/regexp/tostring/index.html b/files/es/web/javascript/referencia/objetos_globales/regexp/tostring/index.html deleted file mode 100644 index 50c10d2bb2..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/regexp/tostring/index.html +++ /dev/null @@ -1,171 +0,0 @@ ---- -title: RegExp.prototype.toString() -slug: Web/JavaScript/Referencia/Objetos_globales/RegExp/toString -tags: - - Expresion Regular - - Prototipo - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/toString ---- -
{{JSRef}}
- -

El método toString() devuelve una cadena que representa el patrón de la expresión regular.

- -

Sintaxis

- -
regexObj.toString();
- -

Valor de Retorno

- -

Una cadena que representa el objeto dado.

- -

Descripción

- -

El objeto {{jsxref("RegExp")}} reemplaza el método toString() del objeto {{jsxref("Object")}}; no hereda de {{jsxref("Object.prototype.toString()")}}. Para objetos {{jsxref("RegExp")}}, el método toString() retorna una cadena que representa el patrón de la expresión regular.

- -

Ejemplos

- -

Usando toString()

- -

El siguiente ejemplo muestra la cadena de representación de un objeto {{jsxref("RegExp")}}:

- -
var myExp = new RegExp('a+b+c');
-console.log(myExp.toString());  // '/a+b+c/'
-
-var foo = new RegExp('bar', 'g');
-console.log(foo.toString());    // '/bar/g'
-
- -

Expresiones regulares vacías y escapado

- -

A partir de ECMAScript 5, una expresión regular vacía devuelve la cadena "/(?:)/" y los terminadores de línea tales como "\n" son escapados:

- -
new RegExp().toString(); // "/(?:)/"
-
-new RegExp('\n').toString() === "/\n/";  // true, antes de ES5
-new RegExp('\n').toString() === "/\\n/"; // true, desde ES5
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial. Implementado en JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.9.5.2', 'RegExp.prototype.toString')}}{{Spec2('ES5.1')}}Agregado de la definición para escapado de caracteres especiales y "(?:)" para expresiones regulares vacías.
{{SpecName('ES6', '#sec-regexp.prototype.tostring', 'RegExp.prototype.toString')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-regexp.prototype.tostring', 'RegExp.prototype.toString')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad en Navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Escaping{{CompatVersionUnknown}}{{CompatGeckoDesktop(38)}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Generic function{{CompatUnknown}}{{CompatGeckoDesktop(39)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Escaping{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile(38)}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Generic function{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile(39)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/set/@@iterator/index.html b/files/es/web/javascript/referencia/objetos_globales/set/@@iterator/index.html deleted file mode 100644 index 7445821fc0..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/set/@@iterator/index.html +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: 'Set.prototype[@@iterator]()' -slug: Web/JavaScript/Referencia/Objetos_globales/Set/@@iterator -tags: - - Iteradores -translation_of: Web/JavaScript/Reference/Global_Objects/Set/@@iterator ---- -
{{JSRef}}
- -

El valor inicial de la propiedad @@iterator, es la misma función objeto que el valor inicial de la propiedad {{jsxref("Set.prototype.values()", "values")}}.

- -
{{EmbedInteractiveExample("pages/js/set-prototype-@@iterator.html")}}
- - - -

Sintaxis

- -
mySet[Symbol.iterator]
- -

 Valor retornado

- -

La función iteradora Set , la cuál es {{jsxref("Set.prototype.values()", "values()")}} por defecto.

- -

Ejemplos

- -

Usando [@@iterator]()

- -
const mySet = new Set();
-mySet.add('0');
-mySet.add(1);
-mySet.add({});
-
-const setIter = mySet[Symbol.iterator]();
-
-console.log(setIter.next().value); // "0"
-console.log(setIter.next().value); // 1
-console.log(setIter.next().value); // Object
-
- -

Usando [@@iterator]() con for..of

- -
const mySet = new Set();
-mySet.add('0');
-mySet.add(1);
-mySet.add({});
-
-for (const v of mySet) {
-  console.log(v);
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-set.prototype-@@iterator', 'Set.prototype[@@iterator]')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-set.prototype-@@iterator', 'Set.prototype[@@iterator]')}}{{Spec2('ESDraft')}}
- -

Compatibilidad en navegadores

- - - -

{{Compat("javascript.builtins.Set.@@iterator")}}

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/set/add/index.html b/files/es/web/javascript/referencia/objetos_globales/set/add/index.html deleted file mode 100644 index f9385894fb..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/set/add/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Set.prototype.add() -slug: Web/JavaScript/Referencia/Objetos_globales/Set/add -translation_of: Web/JavaScript/Reference/Global_Objects/Set/add ---- -
{{JSRef}}
- -

El método add() añade un nuevo elemento con un valor específico al final del objeto Set.

- -

Sintaxis

- -
mySet.add(value);
- -

Parameters

- -
-
value
-
Requerido. El valor del elemento a ser añadido al objeto Set.
-
- -

Return value

- -

El objeto Set.

- -

Ejemplos

- -

Usando el método add

- -
var mySet = new Set();
-
-mySet.add(1);
-mySet.add(5).add("some text"); // chainable
-
-console.log(mySet);
-// Set [1, 5, "some text"]
-
- -

Specifications

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES6', '#sec-set.prototype.add', 'Set.prototype.add')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-set.prototype.add', 'Set.prototype.add')}}{{Spec2('ESDraft')}} 
- -

Browser compatibility

- -

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

Firefox-specific notes

- - - -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/set/clear/index.html b/files/es/web/javascript/referencia/objetos_globales/set/clear/index.html deleted file mode 100644 index 0fdca7e492..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/set/clear/index.html +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: Set.prototype.clear() -slug: Web/JavaScript/Referencia/Objetos_globales/Set/clear -tags: - - ECMAScript6 - - JavaScript - - Prototype - - set -translation_of: Web/JavaScript/Reference/Global_Objects/Set/clear ---- -
{{JSRef}}
- -

El método clear() remueve todos los elementos de un objeto Set.

- -

Syntaxis

- -
mySet.clear();
- -

Valor de retorno

- -

{{jsxref("undefined")}}.

- -

Ejemplos

- -

Usando el 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
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-set.prototype.clear', 'Set.prototype.clear')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-set.prototype.clear', 'Set.prototype.clear')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico38{{CompatGeckoDesktop("19.0")}}11257.1
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatNo}}25{{CompatGeckoMobile("19.0")}}{{CompatNo}}{{CompatNo}}8
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/set/delete/index.html b/files/es/web/javascript/referencia/objetos_globales/set/delete/index.html deleted file mode 100644 index 3e5544e06a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/set/delete/index.html +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: Set.prototype.delete() -slug: Web/JavaScript/Referencia/Objetos_globales/Set/delete -translation_of: Web/JavaScript/Reference/Global_Objects/Set/delete ---- -
{{JSRef}}
- -

El método delete() remueve el elemento especificado del objeto Set.

- -

Syntaxis

- -
mySet.delete(value);
- -

Parametros

- -
-
valor
-
Requerido. El valor del elemento a remover del objeto Set.
-
- -

Valor de retorno

- -

true si el elemento ha sido removido exitosamente en el Set; de otra manera retorna false.

- -

Ejemplos

- -

Usando el método delete

- -
var mySet = new Set();
-mySet.add("foo");
-
-mySet.delete("bar"); // Retorna false. No hay elemento "bar" para ser removido.
-mySet.delete("foo"); // Retorna true.  Removido exitosamente.
-
-mySet.has("foo");    // Retorna false. El elemento "foo" ya no está presente.
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-set.prototype.delete', 'Set.prototype.delete')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-set.prototype.delete', 'Set.prototype.delete')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico38{{CompatGeckoDesktop("13.0")}}11257.1
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatNo}}38{{CompatGeckoMobile("13.0")}}{{CompatNo}}{{CompatNo}}8
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/set/entries/index.html b/files/es/web/javascript/referencia/objetos_globales/set/entries/index.html deleted file mode 100644 index ba07d24187..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/set/entries/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Set.prototype.entries() -slug: Web/JavaScript/Referencia/Objetos_globales/Set/entries -translation_of: Web/JavaScript/Reference/Global_Objects/Set/entries ---- -
{{JSRef}}
- -

El método entries() devuelve un nuevo objeto de tipo Iterator que contiene un array de tuplas [value, value] por cada elemento en el Set original, manteniendo el orden de inserción. En los objetos de tipo Set no existe una clave key como ocurre en los objetos de tipo Map. Sin embargo, para mantener una API similar a la de los objetos de tipo Map, cada entry contiene el mismo valor para su clave y valor, devolviendo por tanto un array de tuplas [value, value].

- -
{{EmbedInteractiveExample("pages/js/set-prototype-entries.html")}}
- - - -

Sintaxis

- -
mySet.entries()
- -

Valor de retorno

- -

Un nuevo objeto de tipo Iterator que contiene un array de tuplas [value, value] por cada elemento en el Set original, en orden de inserción.

- -

Ejemplos

- -

Usando el método 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"]
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoCommentario
{{SpecName('ES2015', '#sec-set.prototype.entries', 'Set.prototype.entries')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-set.prototype.entries', 'Set.prototype.entries')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de navegadores

- - - -

{{Compat("javascript.builtins.Set.entries")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/set/has/index.html b/files/es/web/javascript/referencia/objetos_globales/set/has/index.html deleted file mode 100644 index e133de2d00..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/set/has/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Set.prototype.has() -slug: Web/JavaScript/Referencia/Objetos_globales/Set/has -tags: - - ECMAScript6 - - JavaScript - - Prototype - - set -translation_of: Web/JavaScript/Reference/Global_Objects/Set/has ---- -
{{JSRef}}
- -

El método has() retorna un booleano indicando si el elemento especificado existe en el objeto Set o no.

- -

Syntaxis

- -
mySet.has(value);
- -

Parametros

- -
-
valor
-
Requerido. El valor del cual se probará su presencia en el objeto Set.
-
- -

Valor de retorno

- -
-
Booleano
-
Retorna true si el elemento con el valor especificado existe en el objeto  Set; de otra manera retorna false.
-
- -

Ejemplos

- -

Usando el método has

- -
var mySet = new Set();
-mySet.add("foo");
-
-mySet.has("foo");  // retorna true
-mySet.has("bar");  // retorna false
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-set.prototype.has', 'Set.prototype.has')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-set.prototype.has', 'Set.prototype.has')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico38{{CompatGeckoDesktop("13.0")}}11257.1
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatNo}}38{{CompatGeckoMobile("13.0")}}{{CompatNo}}{{CompatNo}}8
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/set/index.html b/files/es/web/javascript/referencia/objetos_globales/set/index.html deleted file mode 100644 index db091b3a59..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/set/index.html +++ /dev/null @@ -1,230 +0,0 @@ ---- -title: Set -slug: Web/JavaScript/Referencia/Objetos_globales/Set -tags: - - ECMAScript 2015 - - JavaScript - - Object - - set -translation_of: Web/JavaScript/Reference/Global_Objects/Set ---- -
{{JSRef}}
- -

El objeto Set permite almacenar valores únicos de cualquier tipo, incluso {{Glossary("Primitive", "valores primitivos")}} u referencias a objetos.

- -

Sintaxis

- -
new Set([iterable]);
- -

Parámetros

- -
-
iterable
-
Si un objeto iterable es pasado, todos sus elementos serán añadidos al nuevo Set. Si no se especifica este parámetro, o si su valor es null, el nuevo Set estará vacío.
-
- -

Valor retornado

- -

Una nueva instancia de Set.

- -

Descripción

- -

Los objetos Set son colecciones de valores. Se puede iterar sus elementos en el orden de su inserción. Un valor en un Set sólo puede estar una vez; éste es único en la colección Set.

- -

Igualdad de valores

- -

Ya que cada valor en el Set tiene que ser único, la igualdad del valor será comprobada y esta igualdad no se basa en el mismo algoritmo usado en el operador ===. Específicamente, para Sets, +0 (el cual es estrictamente igual a -0) y -0 son valores distintos. Sin embargo, esto ha cambiado en la última especificación ECMAScript 6. Iniciando con Gecko 29.0 {{geckoRelease("29")}} ({{bug("952870")}}) y un recent nightly Chrome, +0-0 son tratados como el mismo valor en objetos Set

- -

NaN y undefined también pueden ser almacenados en un Set. NaN es considerado igual que NaN (A pesar que NaN !== NaN).

- -

Propiedades

- -
-
Set.length
-
El valor de la propiedad length es 0.
-
{{jsxref("Set.@@species", "get Set[@@species]")}}
-
La función constructora que es usada para crear objetos derivados.
-
{{jsxref("Set.prototype")}}
-
Representa el prototipo para el constructor Set. Permite la adición de propiedades a todos los objetos Set.
-
- -

Instancias Set

- -

Todas las instancias de Set heredan de {{jsxref("Set.prototype")}}.

- -

Propiedades

- -

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

- -

Métodos

- -

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

- -

Ejemplos

- -

Usando el objeto Set

- -
const mySet = new Set();
-
-mySet.add(1);
-mySet.add(5);
-mySet.add('some text');
-
-const o = {a: 1, b: 2};
-mySet.add(o);
-
-mySet.add({a: 1, b: 2}); // La variable "o" referencia a otro objeto, por lo que agrega otro valor.
-
-mySet.has(1); // true
-mySet.has(3); // false, 3 no ha sido añadido al Set
-mySet.has(5);              // true
-mySet.has(Math.sqrt(25));  // true
-mySet.has('Some Text'.toLowerCase()); // true
-mySet.has(o); // true
-
-mySet.size; // 5
-
-mySet.delete(5); // Elimina 5 del Set
-mySet.has(5);    // false, 5 fue eliminado
-
-mySet.size; // 4, sólo removimos un valor
-console.log(mySet);// Set {1, "some text", Object {a: 1, b: 2}, Object {a: 1, b: 2}}
- -

Iterando los Sets

- -
// iterar todos los items de un set
-// imprimir en consola los items en orden: 1, 'some text', {a: 1, b: 2}
-for (let item of mySet) console.log(item);
-
-// imprimir en consola los items en orden: 1, 'some text', {a: 1, b: 2}
-for (let item of mySet.keys()) console.log(item);
-
-// imprimir en consola los items en orden: 1, 'some text', {a: 1, b: 2}
-for (let item of mySet.values()) console.log(item);
-
-// imprimir en consola los items en orden: 1, 'some text', {a: 1, b: 2}
-//(key y value poseen en mismo valor en este caso)
-for (let [key, value] of mySet.entries()) console.log(key);
-
-// crear un Array plano con los mismos valores, utilizando Array.from
-const myArr = Array.from(mySet); // [1, 'some text', {a: 1, b: 2}]
-
-// también se puede utilizar para guardar elementos del DOM
-mySet.add(document.body);
-mySet.has(document.querySelector('body')); // true
-
-// crear un Array plano con los mismos valores, utilizando propagación
-const mySet2 = new Set([1,2,3,4]);
-mySet2.size; // 4
-[...mySet2]; // [1,2,3,4]
-
-// la intersección entre dos sets puede ser simulada con
-const intersection = new Set([...set1].filter(x => set2.has(x)));
-
-// la diferencia puede ser simulada con
-const difference = new Set([...set1].filter(x => !set2.has(x)));
-
-// Iteración utilizando forEach
-mySet.forEach((value) => {
-  console.log(value);
-});
-
-// 1
-// 2
-// 3
-// 4
- -

Implementando operaciones básicas

- -
Set.prototype.isSuperset = function(subset) {
-    for (var elem of subset) {
-        if (!this.has(elem)) {
-            return false;
-        }
-    }
-    return true;
-}
-
-Set.prototype.union = function(setB) {
-    var union = new Set(this);
-    for (var elem of setB) {
-        union.add(elem);
-    }
-    return union;
-}
-
-Set.prototype.intersection = function(setB) {
-    var intersection = new Set();
-    for (var elem of setB) {
-        if (this.has(elem)) {
-            intersection.add(elem);
-        }
-    }
-    return intersection;
-}
-
-Set.prototype.difference = function(setB) {
-    var difference = new Set(this);
-    for (var elem of setB) {
-        difference.delete(elem);
-    }
-    return difference;
-}
-
-//Examples
-var setA = new Set([1,2,3,4]),
-    setB = new Set([2,3]),
-    setC = new Set([3,4,5,6]);
-
-setA.isSuperset(setB); // => true
-setA.union(setC); // => Set [1, 2, 3, 4, 5, 6]
-setA.intersection(setC); // => Set [3, 4]
-setA.difference(setC); // => Set [1, 2]
- -

Relación con los objetos Array

- -
const myArray = ['value1', 'value2', 'value3'];
-
-// Utiliza el constructor para para crear un set con el mismo contenido que un array
-const mySet = new Set(myArray);
-
-mySet.has('value1'); // devuelve true
-
-// Utiliza la propagación para crear un array con los contenidos de un set
-console.log([...mySet]); // Muestra lo mismo utilizando myArray
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-set-objects', 'Set')}}{{Spec2('ES2015')}}Definición inicial
{{SpecName('ESDraft', '#sec-set-objects', 'Set')}}{{Spec2('ESDraft')}}
- -

Compatibilidad de navegadores

- - - -

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

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/set/size/index.html b/files/es/web/javascript/referencia/objetos_globales/set/size/index.html deleted file mode 100644 index 444ad7ae8a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/set/size/index.html +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Set.prototype.size -slug: Web/JavaScript/Referencia/Objetos_globales/Set/size -translation_of: Web/JavaScript/Reference/Global_Objects/Set/size ---- -
{{JSRef}}
- -

La propiedad de acceso size devuelve el número de elementos que hay en el objeto {{jsxref("Set")}}.

- -

Descripción

- -

El valor de size es un entero que representa cuantas entradas tiene el objeto Set. La función de accesso set para size es undefined; no se puede cambiar esta propiedad.

- -

Ejemplos

- -

Usando size

- -
var mySet = new Set();
-mySet.add(1);
-mySet.add(5);
-mySet.add("un texto")
-
-mySet.size; // 3
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
{{SpecName('ES6', '#sec-get-set.prototype.size', 'Set.prototype.size')}}{{Spec2('ES6')}}Definición inicial
{{SpecName('ESDraft', '#sec-get-set.prototype.size', 'Set.prototype.size')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico38{{ CompatGeckoDesktop("19") }} [1]{{ CompatIE("11") }}257.1
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}38{{CompatGeckoMobile("19")}}{{CompatNo}}{{CompatNo}}8
-
- -

[1] From Gecko 13 (Firefox 13 / Thunderbird 13 / SeaMonkey 2.10) to Gecko 18 (Firefox 18 / Thunderbird 18 / SeaMonkey 2.15 / Firefox OS 1.0.1 / Firefox OS 1.1) la propiedad size fue implementado como un método Set.prototype.size(), esto fue cambiado a una propiedad en versiones posteriores conforme la especificación ECMAScript 6 (bug 807001).

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/set/values/index.html b/files/es/web/javascript/referencia/objetos_globales/set/values/index.html deleted file mode 100644 index 8b7ec88ece..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/set/values/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Set.prototype.values() -slug: Web/JavaScript/Referencia/Objetos_globales/Set/values -translation_of: Web/JavaScript/Reference/Global_Objects/Set/values ---- -
{{JSRef}}
- -

El método values() retorna un objeto de tipo Iterator que contiene los valores para cada elemento en el objecto Set en orden de inserción.

- -

El metodo keys() es un alias para este metodo (por similaridad con objetos {{jsxref("Map")}}); se comporta exactamente igual y retorna valores para cada elemento de un Set.

- -
{{EmbedInteractiveExample("pages/js/set-prototype-values.html")}}
- - - -

Syntax

- -
mySet.values();
-
- -

Return value

- -

Un nuevo objeto Iterator que contiene los valores para cada elemento en el Set dado,  en orden de inserción.

- -

Examples

- -

Using 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"
- -

Specifications

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES2015', '#sec-set.prototype.values', 'Set.prototype.values')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-set.prototype.values', 'Set.prototype.values')}}{{Spec2('ESDraft')}}
- -

Browser compatibility

- - - -

{{Compat("javascript.builtins.Set.values")}}

- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/anchor/index.html b/files/es/web/javascript/referencia/objetos_globales/string/anchor/index.html deleted file mode 100644 index c34abd62b1..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/anchor/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: String.prototype.anchor() -slug: Web/JavaScript/Referencia/Objetos_globales/String/anchor -tags: - - HTML wrapper methods - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/anchor ---- -
{{JSRef("Objetos_globales", "String")}}
- -

Resumen

- -

El método anchor() crea un ancla HTML, {{HTMLElement("a")}}, que se usa como un enlace a hipertexto.

- -

Sintaxis

- -
cadena.anchor(nombreAtributo)
- -

Parámetros

- -
-
nombreAtributo
-
Una cadena.
-
- -

Descripción

- -

Usa el método anchor con los métodos document.write o document.writeln para crear y mostrar programando un ancla en un documento. Crea el ancla con el método anchor, y entonces llama a write o writeln para mostrar el ancla en el documento. En JavaScript en el lado Servidor, usa la función write para mostrar el ancla.

- -

En la sintaxis, la cadena de texto representa el texto literal que usted quiere que el usuario vea. La cadena nombreAtributo representa el atributo NAME de la etiqueta A.

- -

Los anclas creados con el método anchor serán elementos del arreglo {{domxref("document.anchors")}}

- -

Ejemplos

- -

Ejemplo: Usando anchor

- -

El siguiente código de ejemplo dentro de un elemento HTML script:

- -
var miCadena = "Tabla de Contenidos";
-document.body.innerHTML = miCadena.anchor("ancla_contenidos");
-
- -

obtendrá el siguiente HTML:

- -
<a name="ancla_contenidos">Tabla de Contenidos</A>
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/big/index.html b/files/es/web/javascript/referencia/objetos_globales/string/big/index.html deleted file mode 100644 index 0aa04e5b74..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/big/index.html +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: String.prototype.big() -slug: Web/JavaScript/Referencia/Objetos_globales/String/big -tags: - - Deprecated - - HTML wrapper methods - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/big ---- -

{{JSRef("Objetos_globales", "String")}}

- -

{{deprecated_header}}

- -

Resumen

- -

Provoca que una cadena sea mostrada con un tamaño de fuente grade, como si estuviese en una etiqueta {{HTMLElement("big")}}.

- -

Sintaxis

- -
cadena.big()
- -

Descripción

- -

Usa el método big para formatear y mostrar una cadena en un documento.

- -

Ejemplos

- -

Ejemplo: Usando big

- -

El siguiente ejemplo usa los métodos de string para cambiar el tamañó de una cadena:

- -
var cadenaMundo="¡Hola Mundo!";
-
-console.log(cadenaMundo.small());
-console.log("<P>" + cadenaMundo.big());
-console.log("<P>" + cadenaMundo.fontsize(7));
-
- -

Este ejemplo produce el mismo resultado que el siguiente HTML:

- -
<small>¡Hola Mundo!</small>
-<p><big>¡Hola Mundo!</big>
-<p><fontsize=7>¡Hola Mundo!</fontsize>
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/blink/index.html b/files/es/web/javascript/referencia/objetos_globales/string/blink/index.html deleted file mode 100644 index cf49f3d840..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/blink/index.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: String.prototype.blink() -slug: Web/JavaScript/Referencia/Objetos_globales/String/blink -tags: - - Deprecated - - HTML wrapper methods - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/blink ---- -

{{JSRef("Objetos_globales", "String")}}

-

{{deprecated_header}}

-

Resumen

-

Causa que una cadena parpadee como si estuviese en una etiqueta {{HTMLElement("blink")}}.

-

Sintaxis

-
cadena.blink()
-

Descripción

-

Usa el método blink para formatear y mostrar una cadena en un documento.

-

Ejemplos

-

Ejemplo: Usando métodos de string para cambiar el formateado de una cadena

-

El siguiente ejemplo usa métodos de string para cambiar el formateado de una cadena:

-
var cadenaMundo="¡Hola mundo!"
-
-console.log(cadenaMundo.blink())
-console.log(cadenaMundo.bold())
-console.log(cadenaMundo.italics())
-console.log(cadenaMundo.strike())
-
-

Este ejemplo produce el mismo resultado que el siguiente código HTML:

-
<blink>¡Hola mundo!</blink>
-<b>¡Hola mundo!</b>
-<i>¡Hola mundo!</b>
-<strike>¡Hola mundo!</strike>
-
-

Vea también

- diff --git a/files/es/web/javascript/referencia/objetos_globales/string/bold/index.html b/files/es/web/javascript/referencia/objetos_globales/string/bold/index.html deleted file mode 100644 index cc7c841181..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/bold/index.html +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: String.prototype.bold() -slug: Web/JavaScript/Referencia/Objetos_globales/String/bold -tags: - - Deprecated - - HTML wrapper methods - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/bold ---- -

{{JSRef("Objetos_globales", "String")}}
-
- {{Deprecated_header}}

-

Resumen

-

Provoca que una cadena se muestre en negrita como si estuviera en una etiqueta {{HTMLElement("b")}}.

-

Sintaxis

-
cadena.bold()
-

Descripción

-

Usa el método bold para formatear y mostrar una cadena en un documento.

-

Ejemplos

-

Ejemplo: Usando métodos de string para cambiar el formateado de una cadena

-

El siguiente ejemplo usa métodos de string para cambiar el formateado de una cadena:

-
var cadenaMundo="¡Hola mundo!"
-
-console.log(cadenaMundo.blink())
-console.log(cadenaMundo.bold())
-console.log(cadenaMundo.italics())
-console.log(cadenaMundo.strike())
-
-

Este ejemplo produce el mismo resultado que el siguiente código HTML:

-
<blink>¡Hola mundo!</blink>
-<b>¡Hola mundo!</b>
-<i>¡Hola mundo!</i>
-<strike>¡Hola mundo!</strike>
-
-

Vea También

- diff --git a/files/es/web/javascript/referencia/objetos_globales/string/charat/index.html b/files/es/web/javascript/referencia/objetos_globales/string/charat/index.html deleted file mode 100644 index 6ef6d46e37..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/charat/index.html +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: String.prototype.charAt() -slug: Web/JavaScript/Referencia/Objetos_globales/String/charAt -tags: - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/charAt ---- -

{{JSRef("Objetos_globales", "String")}}

- -

Resumen

- -

El método charAt() de {{jsxref("String")}} devuelve en un nuevo String el carácter UTF-16 de una cadena.

- -

Sintaxis

- -
str.charAt(indice)
- -

Parámetros

- -
-
indice
-
Un entero entre 0 y 1 menos que la longitud de la cadena. Si no se proporciona ningún indice charAt() utilizará 0.
-
- -

Descripción

- -

Los caracteres de una cadena se indexan de izquierda a derecha. El índice del primer caracter es 0, y el índice del último caracter en una cadena llamada nombreCadena es nombreCadena.length - 1. Si el indice que usted proporciona está fuera del rango, JavaScript devuelve una cadena vacía.

- -

Ejemplos

- -

Ejemplo: Mostrando caracteres de diferentes localizaciones en una cadena

- -

El siguiente ejemplo muestra caracteres de diferentes localizaciones en la cadena "Brave new world":

- -
var cualquierCadena="Brave new world";
-
-console.log("El carácter en el índice 0 es '" + cualquierCadena.charAt(0) + "'")
-console.log("El carácter en el índice 1 es '" + cualquierCadena.charAt(1) + "'")
-console.log("El carácter en el índice 2 es '" + cualquierCadena.charAt(2) + "'")
-console.log("El carácter en el índice 3 es '" + cualquierCadena.charAt(3) + "'")
-console.log("El carácter en el índice 4 es '" + cualquierCadena.charAt(4) + "'")
-console.log("El carácter en el índice 999 es '" + cualquierCadena.charAt(999) + "'")
-
- -

Estas líneas muestran lo siguiente:

- -
El carácter en el índice 0 es 'B'
-El carácter en el índice 1 es 'r'
-El carácter en el índice 2 es 'a'
-El carácter en el índice 3 es 'v'
-El carácter en el índice 4 es 'e'
-El carácter en el índice 999 es ''
-
- -

Especificaciónes

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
ECMAScript 1st Edition.EstándarPrimera definición
{{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')}} 
- -

Compatibilidad 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() }}
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/charcodeat/index.html b/files/es/web/javascript/referencia/objetos_globales/string/charcodeat/index.html deleted file mode 100644 index 4eccf78f13..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/charcodeat/index.html +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: String.prototype.charCodeAt() -slug: Web/JavaScript/Referencia/Objetos_globales/String/charCodeAt -tags: - - JavaScript - - Method - - Prototype - - String - - Unicode -translation_of: Web/JavaScript/Reference/Global_Objects/String/charCodeAt ---- -

{{JSRef("Objetos_globales", "String")}}

- -

Resumen

- -

El charCodeAt() método devuelve un número indicando el valor Unicode del carácter en el índice proporcionado.

- -

Sintaxis

- -
cadena.charCodeAt(indice);
-
- -

Parámetros

- -
-
indice
-
Un entero entre 0 y 1 menos que la longitud de la cadena; si no se especifica, su valor predeterminado es 0.
-
- -

Descripción

- -

El rango del código Unicode va del 0 al 1,114,1110x10FFFF. Los primeros 128 códigos de Unicode encajan directamente con los códigos de caractéres de la codificación ASCII. Para información sobre Unicode, vea la Guía de JavaScript. Observe que charCodeAt siempre devolverá un valor menor de 65.536.

- -

charCodeAt devuelve {{jsxref("NaN")}} si el indice proporcionado no está entre 0 y 1 menos de la longitud de la cadena.

- -

En JavaScript 1.2 el método charCodeAt devuelve un número indicando el valor de la hoja de códigos ISO-Latin-1 del carácter correspondiente al índice proporcionado. El rango de la hoja de códigos ISO-Latin-1 va del 0 al 255. Del 0 al 127 encajan directamente con la hoja de códigos ASCII.

- -

Ejemplos

- -

Ejemplo: Usando charCodeAt

- -

El siguiente ejemplo devuelve 65, el valor Unicode para A. 

- -
"ABC".charCodeAt(0) // returns 65
-
- -

El siguiente ejemplo devuelve 83.

- -
"AaSdas".charCodeAt(2) // returns 83
-
- -

teniendo en cuenta que 2 es la posicion de la letra. Si `S` fuera minuscula, el Unicode es diferente

- -
"Aasdas".charCodeAt(2) // returns 115
- -

 

- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/codepointat/index.html b/files/es/web/javascript/referencia/objetos_globales/string/codepointat/index.html deleted file mode 100644 index ae3fef3ec8..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/codepointat/index.html +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: String.prototype.codePointAt() -slug: Web/JavaScript/Referencia/Objetos_globales/String/codePointAt -translation_of: Web/JavaScript/Reference/Global_Objects/String/codePointAt ---- -
{{JSRef}}
- -
 
- -
El método codePointAt() devuelve un entero no negativo que equivale al valor Unicode code point del carácter.
- -

Sintaxis

- -
str.codePointAt(indice)
- -

Parámetros

- -
-
indice
-
Índice del carácter en la cadena del que se quiere obtener el valor del Unicode code point.
-
- -

Valor de retorno

- -

Un número que equivale al valor code point del carácter especificado en el índice de la cadena; devuelve {{jsxref("undefined")}} si no se encuentra carácter en la posición especifica.

- -

Description

- -

If there is no element at the specified position, {{jsxref("undefined")}} is returned. If no UTF-16 surrogate pair begins at pos, the code unit at pos is returned.

- -

Examples

- -

Using codePointAt()

- -
'ABC'.codePointAt(1);          // 66
-'\uD800\uDC00'.codePointAt(0); // 65536
-
-'XYZ'.codePointAt(42); // undefined
-
- -

Polyfill

- -

The following extends Strings to include the codePointAt() function as specified in ECMAScript 2015 for browsers not supporting it natively.

- -
/*! http://mths.be/codepointat v0.1.0 by @mathias */
-if (!String.prototype.codePointAt) {
-  (function() {
-    'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
-    var codePointAt = function(position) {
-      if (this == null) {
-        throw TypeError();
-      }
-      var string = String(this);
-      var size = string.length;
-      // `ToInteger`
-      var index = position ? Number(position) : 0;
-      if (index != index) { // 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
-          // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
-          return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
-        }
-      }
-      return first;
-    };
-    if (Object.defineProperty) {
-      Object.defineProperty(String.prototype, 'codePointAt', {
-        'value': codePointAt,
-        'configurable': true,
-        'writable': true
-      });
-    } else {
-      String.prototype.codePointAt = codePointAt;
-    }
-  }());
-}
-
- -

Specifications

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES2015', '#sec-string.prototype.codepointat', 'String.prototype.codePointAt')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-string.prototype.codepointat', 'String.prototype.codePointAt')}}{{Spec2('ESDraft')}} 
- -

Browser compatibility

- - - -

{{Compat("javascript.builtins.String.codePointAt")}}

- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/concat/index.html b/files/es/web/javascript/referencia/objetos_globales/string/concat/index.html deleted file mode 100644 index d00ffce70e..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/concat/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: String.prototype.concat() -slug: Web/JavaScript/Referencia/Objetos_globales/String/concat -tags: - - JavaScript - - Prototipo - - Referencia - - String - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/String/concat ---- -
{{JSRef}}
- -

El método concat() combina dos o más cadenas de texto y devuelve una cadena de texto nueva.

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

Sintaxis

- -
str.concat(str2 [, ...strN])
- -

Parámetros

- -
-
str2 [, ...strN]
-
Cadenas que se concatenarán con str.
-
- -

Valor devuelto

- -

Una nueva cadena que contiene el texto combinado de las cadenas proporcionadas.

- -

Descripción

- -

La función concat() concatena los argumentos de tipo texto con la cadena de sobre la que se llama a la función y devuelve una nueva cadena de texto. Los cambios en la cadena original o la cadena devuelta no afectan al otro.

- -

Si los argumentos no son de tipo texto, son convertidos a texto antes de concatenarlos

- -

Rendimiento

- -

Es altamente recomendado que se utilicen {{jsxref("Operators/Assignment_Operators", "operadores de asignación", "", 1)}} (+, +=) en lugar del método concat().

- -

Ejemplos

- -

Usando concat()

- -

El siguiente ejemplo combina cadenas de texto en una nueva.

- -
let hello = 'Hello, '
-console.log(hello.concat('Kevin', '. Have a nice day.'))
-// Hello, Kevin. Have a nice day.
-
-let greetList = ['Hello', ' ', 'Venkat', '!']
-"".concat(...greetList)  // "Hello Venkat!"
-
-"".concat({})    // [object Object]
-"".concat([])    // ""
-"".concat(null)  // "null"
-"".concat(true)  // "true"
-"".concat(4, 5)  // "45"
-
-
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-string.prototype.concat', 'String.prototype.concat')}}
- -

Compatibilidad con navegadores

- - - -

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

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/endswith/index.html b/files/es/web/javascript/referencia/objetos_globales/string/endswith/index.html deleted file mode 100644 index cbeac4f481..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/endswith/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: String.prototype.endsWith() -slug: Web/JavaScript/Referencia/Objetos_globales/String/endsWith -tags: - - JavaScript - - Prototipo - - Referencia - - String - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/String/endsWith ---- -
{{JSRef}}
- -

El método endsWith() determina si una cadena de texto termina con los caracteres de una cadena indicada, devolviendo true o false según corresponda.

- -
{{EmbedInteractiveExample("pages/js/string-endswith.html")}}
- -

Sintaxis

- -
str.endsWith(searchString[, position])
- -

Parámetros

- -
-
searchString
-
Los caracteres a buscar hasta el final de la cadena str.
-
length {{optional_inline}}
-
Si se indica, se utiliza como el tamaño de str. Por defecto se usa str.length.
-
- -

Valor devuelto

- -

true si los caracteres proporcionados se encuentran al final de la cadena de texto; en caso contrario, false.

- -

Descripción

- -

Este método determina si una cadena de texto termina en otra cadena o no. Este método distingue entre mayúsculas y minúsculas.

- -

Polyfill

- -

Este método ha sido añadido a la especificación ECMAScript 6 y puede no estar disponible en todas las implementaciones de JavaScript. Sin embargo, puedes implementar el polyfill String.prototype.endsWith() con el siguiente fragmento de código:

- -
if (!String.prototype.endsWith) {
-	String.prototype.endsWith = function(search, this_len) {
-		if (this_len === undefined || this_len > this.length) {
-			this_len = this.length;
-		}
-		return this.substring(this_len - search.length, this_len) === search;
-	};
-}
-
- -

Ejemplos

- -

Usando endsWith()

- -
let str = 'To be, or not to be, that is the question.'
-
-console.log(str.endsWith('question.'))  // true
-console.log(str.endsWith('to be'))      // false
-console.log(str.endsWith('to be', 19))  // true
-
- -

Especificaciones

- - - - - - - - - - -
Specification
{{SpecName('ESDraft', '#sec-string.prototype.endswith', 'String.prototype.endsWith')}}
- -

Compatibilidad en navegadores

- -

{{Compat("javascript.builtins.String.endsWith")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/fixed/index.html b/files/es/web/javascript/referencia/objetos_globales/string/fixed/index.html deleted file mode 100644 index 3d188bc39d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/fixed/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: String.prototype.fixed() -slug: Web/JavaScript/Referencia/Objetos_globales/String/fixed -tags: - - Deprecated - - HTML wrapper methods - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/fixed ---- -

{{JSRef("Objetos_globales", "String")}}

-

{{deprecated_header}}

-

Resumen

-

Causa que una cadena se muestre con una fuente de ancho fijo, como si estuviesde dentro de una etiqueta {{HTMLElement("tt")}}.

-

Sintaxis

-
cadena.fixed()
-

Descripción

-

Usa el método fixed para formatear y mostrar unacadena en un documento.

-

Ejemplos

-

Ejemplo: Usando fixed para cambiar el formateado de una cadena

-

El siguiente ejemplo usa el método fixed para cambiar el formateado de una cadena:

-
var cadenaMundo="¡Hola Mundo!"
-console.log(cadenaMundo.fixed())
-
-

Este ejemplo produce el mismo resultado que el siguiente código HTML:

-
<tt>¡Hola Mundo!</tt>
-
-

Vea También

- diff --git a/files/es/web/javascript/referencia/objetos_globales/string/fontcolor/index.html b/files/es/web/javascript/referencia/objetos_globales/string/fontcolor/index.html deleted file mode 100644 index 135e805cb2..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/fontcolor/index.html +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: String.prototype.fontcolor() -slug: Web/JavaScript/Referencia/Objetos_globales/String/fontcolor -translation_of: Web/JavaScript/Reference/Global_Objects/String/fontcolor ---- -
{{JSRef}} {{deprecated_header}}
- -

El método fontcolor() crea {{HTMLElement("font")}} elemento HTML que cambia el color de la cadena.

- -
-

Usage note: La etiqueta <font> fue eliminada en HTML5 y no debe ser usada. En lugar de es, es necesario aplicar propiedades CSS.

-
- -

Sintaxis

- -
str.fontcolor(color)
- -

Parametros

- -
-
color
-
A string expressing the color as a hexadecimal RGB triplet or as a string literal. String literals for color names are listed in the CSS color reference.
-
- -

Descripción

- -

Si expresas el color como hexadecimal, usa el formato rrggbb. Por ejemplo, el color hexadecimal para salmón es R=FA, G=80, B=72, así que el valor será "FA8072".

- -

Ejemplos

- -

Usos fontcolor()

- -

Los siguientes ejemplos usan el método fontcolor() para cambiar el color de una cadena.

- -
var worldString = 'Hello, world';
-
-console.log(worldString.fontcolor('red') +  ' en rojo');
-// '<font color="red">Hello, world</font> en rojo'
-
-console.log(worldString.fontcolor('FF00') + ' es rojo en hexadecimal');
-// '<font color="FF00">Hello, world</font> es rojo en hexadecimal'
-
- -

Con el objeto {{domxref("HTMLElement.style", "element.style")}} obtienes el atributo style y manipularlo:

- -
document.getElementById('yourElemId').style.color = 'red';
-
- -

Especificaciones

- - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
{{SpecName('ES6', '#sec-string.prototype.fontcolor', 'String.prototype.fontcolor')}}{{Spec2('ES6')}}Initial definition. Implemented in JavaScript 1.0. Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers.
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Basico{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Basico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/fontsize/index.html b/files/es/web/javascript/referencia/objetos_globales/string/fontsize/index.html deleted file mode 100644 index 212c49d638..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/fontsize/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: String.prototype.fontsize() -slug: Web/JavaScript/Referencia/Objetos_globales/String/fontsize -translation_of: Web/JavaScript/Reference/Global_Objects/String/fontsize ---- -
{{JSRef}} {{deprecated_header}}
- -

El método fontsize() crea {{HTMLElement("font")}} elemento HTML que muestra una cadena con el tamaño especificado.

- -
-

Usage note: El elemento <font> ha sido eliminado HTML5 y no se debe usar. Los desarrolladores web deben usar propiedades CSS.

-
- -

Sintaxis

- -
str.fontsize(size)
- -

Parámetros

- -
-
size
-
Un entero entre 1 y 7.
-
- -

Descripción

- -

Cuando especificas el tamaño como entero, estableces el tamaño de la fuente. Cuando especificas el tamaño como cadena tal como "-2", se ajusta el tamaño de la fuente al de la etiqueta {{HTMLElement("basefont")}}.

- -

When you specify size as an integer, you set the font size of str to one of the 7 defined sizes. When you specify size as a string such as "-2", you adjust the font size of str relative to the size set in the {{HTMLElement("basefont")}} tag.

- -

Ejemlpos

- -

Usos fontsize()

- -

The following example uses string methods to change the size of a string:

- -
var worldString = 'Hello, world';
-
-console.log(worldString.small());     // <small>Hello, world</small>
-console.log(worldString.big());       // <big>Hello, world</big>
-console.log(worldString.fontsize(7)); // <font size="7">Hello, world</fontsize>
-
- -

With the {{domxref("HTMLElement.style", "element.style")}} object you can get the element's style attribute and manipulate it more generically, for example:

- -
document.getElementById('yourElemId').style.fontSize = '0.7em';
-
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES6', '#sec-string.prototype.fontsize', 'String.prototype.fontsize')}}{{Spec2('ES6')}}Initial definition. Implemented in JavaScript 1.0. Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers.
- -

Browser compatibility

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/fromcharcode/index.html b/files/es/web/javascript/referencia/objetos_globales/string/fromcharcode/index.html deleted file mode 100644 index 7e87f3d90d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/fromcharcode/index.html +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: String.fromCharCode() -slug: Web/JavaScript/Referencia/Objetos_globales/String/fromCharCode -tags: - - JavaScript - - Method - - String - - Unicode -translation_of: Web/JavaScript/Reference/Global_Objects/String/fromCharCode ---- -

{{JSRef("Objetos_globales", "String")}}

- -

Resumen

- -

El String.fromCharCode() método estático que devuelve una cadena creada mediante el uso de una secuencia de valores Unicode especificada.

- -

Sintaxis

- -
String.fromCharCode(num1, ..., numN) 
- -

Parámetros

- -
-
num1, ..., numN
-
Secuencia de números con los valores Unicode.
-
- -

Descripción

- -

Este método devuelve una cadena y no un objeto String.

- -

Debido a que fromCharCode es un método estático de String, usted siempre lo usará como String.fromCharCode(), en vez de un método de un objeto String creado por usted.

- -

Ejemplos

- -

Ejemplo: Usando fromCharCode

- -

El siguiene ejemplo devuelve la cadena "ABC".

- -
String.fromCharCode(65,66,67)
-
- -

Especificaciónes

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
ECMAScript 1st Edition.EstándarPrimera definicíon
- Implementada en JavaScript 1.2
{{SpecName('ES5.1', '#sec-15.5.3.2', 'StringfromCharCode')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.fromcharcodes', 'String.fromCharCode')}}{{Spec2('ES6')}} 
- -

Compatibilidad 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() }}
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/fromcodepoint/index.html b/files/es/web/javascript/referencia/objetos_globales/string/fromcodepoint/index.html deleted file mode 100644 index 39fe662b75..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/fromcodepoint/index.html +++ /dev/null @@ -1,204 +0,0 @@ ---- -title: String.fromCodePoint() -slug: Web/JavaScript/Referencia/Objetos_globales/String/fromCodePoint -translation_of: Web/JavaScript/Reference/Global_Objects/String/fromCodePoint ---- -
{{JSRef("Global_Objects", "String")}}
- -

Resumen

- -

El método estatico String.fromCodePoint() devuelve una cadena creada por una secuencia de puntos de codigo.

- -

Sintaxis

- -
String.fromCodePoint(num1[, ...[, numN]])
- -

Parametros

- -
-
num1, ..., numN
-
Una secuencia de puntos de código.
-
- -

Throws

- -
-
{{jsxref("Global_Objects/RangeError", "RangeError")}}
-
A {{jsxref("Global_Objects/RangeError", "RangeError")}} is thrown if an invalid Unicode code point is given (e.g. "RangeError: NaN is not a valid code point").
-
- -

Descripción

- -

Because fromCodePoint() is a static method of {{jsxref("Global_Objects/String", "String")}}, you always use it as String.fromCodePoint(), rather than as a method of a {{jsxref("Global_Objects/String", "String")}} object you created.

- -

Ejemplos

- -

Ejemplos: 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

- -

The String.fromCodePoint method has been added to the ECMAScript standard in version 6 and may not be supported in all web browsers or environments yet. Use the code below for a 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;
-    }
-  }());
-}
-
- -

Specifications

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES6', '#sec-string.fromcodepoint', 'String.fromCodePoint')}}{{Spec2('ES6')}}Initial definition.
- -

Browser compatibility

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support41{{CompatGeckoDesktop("29")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("29")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/includes/index.html b/files/es/web/javascript/referencia/objetos_globales/string/includes/index.html deleted file mode 100644 index 094a3fd648..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/includes/index.html +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: String.prototype.includes() -slug: Web/JavaScript/Referencia/Objetos_globales/String/includes -tags: - - Cadena de texto - - JavaScript - - Prototipo - - Referencia - - String - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/String/includes ---- -
{{JSRef}}
- -

El método includes() determina si una cadena de texto puede ser encontrada dentro de otra cadena de texto, devolviendo true o false según corresponda.

- -
{{EmbedInteractiveExample("pages/js/string-includes.html", "shorter")}}
- -

Sintaxis

- -
str.includes(searchString[, position])
- -

Parametros

- -
-
searchString
-
Una cadena a buscar en el texto str.
-
position {{optional_inline}}
-
La posición dentro de la cadena en la cual empieza la búsqueda de searchString (Por defecto este valor es 0).
-
- -

Valor devuelto

- -

true si la cadena de texto contiene la cadena buscada; en caso contrario, false.

- -

Descripción

- -

Este método permite determinar si una cadena de texto se encuentra incluida dentro de la otra.

- -

Sensibilidad a Mayúsculas/Minúsculas

- -

El método includes() es "case sensitive" (tiene en cuenta mayúsculas y minúsculas). Por ejemplo, la siguiente expresión devolverá false:

- -
'Ballena azul'.includes('ballena'); // devuelve false
-
- -

Polyfill

- -

Este método ha sido agregado a la especificación ECMAScript 2015 y puede no estar  disponible en toda las implementaciones de JavaScript.

- -

Sin embargo, puedes usar este método como polyfill:

- -
if (!String.prototype.includes) {
-  String.prototype.includes = function(search, start) {
-    'use strict';
-
-    if (search instanceof RegExp) {
-      throw TypeError('first argument must not be a RegExp');
-    }
-    if (start === undefined) { start = 0; }
-    return this.indexOf(search, start) !== -1;
-  };
-}
-
- -

Ejemplos

- -

Usando includes()

- -
const str = 'To be, or not to be, that is the question.'
-
-console.log(str.includes('To be'))        // true
-console.log(str.includes('question'))     // true
-console.log(str.includes('nonexistent'))  // false
-console.log(str.includes('To be', 1))     // false
-console.log(str.includes('TO BE'))        // false
-console.log(str.includes(''))             // true
-
- -

Especificaciones

- - - - - - - - - - - - -
Specification
{{SpecName('ESDraft', '#sec-string.prototype.includes', 'String.prototype.includes')}}
- -

Compatibilidad en navegadores

- -

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

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/index.html b/files/es/web/javascript/referencia/objetos_globales/string/index.html deleted file mode 100644 index a6c5aea8e3..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/index.html +++ /dev/null @@ -1,385 +0,0 @@ ---- -title: String — Cadena de caracteres -slug: Web/JavaScript/Referencia/Objetos_globales/String -tags: - - Clase - - Class - - ECMAScript 2015 - - JavaScript - - Referencia - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String ---- -
{{JSRef}}
- -

El objeto String se utiliza para representar y manipular una secuencia de caracteres.

- -

Descripción

- -

Las cadenas son útiles para almacenar datos que se pueden representar en forma de texto. Algunas de las operaciones más utilizadas en cadenas son verificar su {{jsxref("String.length", "length")}}, para construirlas y concatenarlas usando operadores de cadena + y +=, verificando la existencia o ubicación de subcadenas con {{jsxref("String.prototype.indexOf()", "indexOf()")}} o extraer subcadenas con el método {{jsxref("String.prototype.substring()", "substring()")}}.

- -

Crear cadenas

- -

Las cadenas se pueden crear como primitivas, a partir de cadena literales o como objetos, usando el constructor {{jsxref("String/String", "String()")}}:

- -
const string1 = "Una cadena primitiva";
-const string2 = 'También una cadena primitiva';
-const string3 = `Otra cadena primitiva más`;
- -
const string4 = new String("Un objeto String");
-
- -

Las strings primitivas y los objetos string se pueden usar indistintamente en la mayoría de las situaciones. Consulta "Primitivas String y objetos String" a continuación.

- -

Los cadena literales se pueden especificar usando comillas simples o dobles, que se tratan de manera idéntica, o usando el carácter de comilla invertida `. Esta última forma especifica una Plantilla literal: con esta forma puedes interpolar expresiones.

- -

Acceder a un caracter

- -

Hay dos formas de acceder a un caracter individual en una cadena. La primera es con el método {{jsxref("String.prototype.charAt()", "charAt()")}}:

- -
return 'cat'.charAt(1) // devuelve "a"
-
- -

La otra forma (introducida en ECMAScript 5) es tratar a la cadena como un objeto similar a un arreglo, donde los caracteres individuales corresponden a un índice numérico:

- -
return 'cat'[1] // devuelve "a"
-
- -

Cuando se usa la notación entre corchetes para acceder a los caracteres, no se puede intentar eliminar o asignar un valor a estas propiedades. Las propiedades involucradas no se pueden escribir ni configurar. (Ve {{jsxref("Object.defineProperty()")}} para más información).

- -

Comparar cadenas

- -

En C, se usa la función strcmp() para comparar cadenas. En JavaScript, solo usas los operadores menor que y mayor que:

- -
let a = 'a'
-let b = 'b'
-if (a < b) { // true
-  console.log(a + ' es menor que ' + b)
-} else if (a > b) {
-  console.log(a + ' es mayor que ' + b)
-} else {
-  console.log(a + ' y ' + b + ' son iguales.')
-}
-
- -

Puedes lograr un resultado similar usando el método {{jsxref("String.prototype.localeCompare()", "localeCompare()")}} heredado por las instancias de String.

- -

Ten en cuenta que a == b compara las cadenas en a y b por ser igual en la forma habitual que distingue entre mayúsculas y minúsculas. Si deseas comparar sin tener en cuenta los caracteres en mayúsculas o minúsculas, usa una función similar a esta:

- -
function isEqual(str1, str2)
-{
-    return str1.toUpperCase() === str2.toUpperCase()
-} // isEqual
-
- -

En esta función se utilizan mayúsculas en lugar de minúsculas, debido a problemas con ciertas conversiones de caracteres UTF-8.

- -

Primitivas String y objetos String

- -

Ten en cuenta que JavaScript distingue entre objetos String y valores de {{Glossary("Primitive", "primitivas string")}}. (Lo mismo ocurre con {{jsxref("Boolean", "Booleanos")}} y {{jsxref("Global_Objects/Number", "Números")}}).

- -

Las cadenas literales (denotadas por comillas simples o dobles) y cadenas devueltas de llamadas a String en un contexto que no es de constructor (es decir, llamado sin usar la palabra clave {{jsxref("Operators/new", "new")}}) son cadenas primitivas. JavaScript automáticamente convierte las primitivas en objetos String, por lo que es posible utilizar métodos del objeto String en cadenas primitivas. En contextos donde se va a invocar a un método en una cadena primitiva o se produce una búsqueda de propiedad, JavaScript ajustará automáticamente la cadena primitiva y llamará al método o realizará la búsqueda de la propiedad.

- -
let s_prim = 'foo'
-let s_obj = new String(s_prim)
-
-console.log(typeof s_prim) // Registra "string"
-console.log(typeof s_obj)  // Registra "object"
-
- -

Las primitivas de String y los objetos String también dan diferente resultado cuando se usa {{jsxref("Global_Objects/eval", "eval()")}}. Las primitivas pasadas a eval se tratan como código fuente; Los objetos String se tratan como todos los demás objetos, devuelven el objeto. Por ejemplo:

- -
let s1 = '2 + 2'              // crea una string primitiva
-let s2 = new String('2 + 2')  // crea un objeto String
-console.log(eval(s1))         // devuelve el número 4
-console.log(eval(s2))         // devuelve la cadena "2 + 2"
-
- -

Por estas razones, el código se puede romper cuando encuentra objetos String y espera una string primitiva en su lugar, aunque generalmente los autores no necesitan preocuparse por la distinción.

- -

Un objeto String siempre se puede convertir a su contraparte primitiva con el método {{jsxref("String.prototype.valueOf()", "valueOf()")}}.

- -
console.log(eval(s2.valueOf()))  // devuelve el número 4
-
- -

Notación de escape

- -

Los caracteres especiales se pueden codificar mediante notación de escape:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CódigoSalida
\XXX
- (donde XXX es de 1 a 3 dígitos octales; rango de 0-377)
Punto de código Unicode/carácter ISO-8859-1 entre U+0000 y U+00FF
\'Comilla sencilla
\"Comilla doble
\\Barra inversa
\nNueva línea
\rRetorno de carro
\vTabulación vertical
\tTabulación
\bRetroceso
\fAvance de página
\uXXXX (donde XXXX son 4 dígitos hexadecimales; rango de 0x0000-0xFFFF)Unidad de código UTF-16/punto de código Unicode entre U+0000 y U+FFFF
\u{X} ... \u{XXXXXX}
- (donde XXXXXXX es de 1 a 6 dígitos hexadecimales; rango de 0x0-0x10FFFF)
Unidad de código UTF-32/punto de código Unicode entre U+0000 y U+10FFFF
\xXX
- (donde XX son 2 dígitos hexadecimales; rango de 0x00-0xFF)
Punto de código Unicode/carácter ISO-8859-1 entre U+0000 y U+00FF
- -

Cadenas literales largas

- -

A veces, tu código incluirá cadenas que son muy largas. En lugar de tener líneas que se prolongan interminablemente o que se ajustan según el capricho de tu editor, es posible que desees dividir específicamente la cadena en varias líneas en el código fuente sin afectar el contenido real de la cadena. hay dos maneras de conseguirlo.

- -

Método 1

- -

Puedes usar el operador + para agregar varias cadenas juntas, así:

- -
let longString = "Esta es una cadena muy larga que necesita " +
-                 "que dividimos en varias líneas porque " +
-                 "de lo contrario, mi código es ilegible."
-
- -

Método 2

- -

Puedes usar el caracter de barra invertida (\) al final de cada línea para indicar que la cadena continúa en la siguiente línea. Asegúrate de que no haya ningún espacio ni ningún otro carácter después de la barra invertida (a excepción de un salto de línea) o como sangría; de lo contrario, no trabajará.

- -

Esa forma se ve así:

- -
let longString = "Esta es una cadena muy larga que necesita \
-que dividimos en varias líneas porque \
-de lo contrario, mi código es ilegible."
-
- -

Ambos métodos anteriores dan como resultado cadenas idénticas.

- -

Constructor

- -
-
{{jsxref("String/String", "String()")}}
-
Crea un nuevo objeto String. Realiza la conversión de tipos cuando se llama como función, en lugar de como constructor, lo cual suele ser más útil.
-
- -

Métodos estáticos

- -
-
{{jsxref("String.fromCharCode()", "String.fromCharCode(num1 [, ...[, numN]])")}}
-
Devuelve una cadena creada utilizando la secuencia de valores Unicode especificada.
-
{{jsxref("String.fromCodePoint()", "String.fromCodePoint(num1 [, ...[, numN]])")}}
-
Devuelve una cadena creada utilizando la secuencia de puntos de código especificada.
-
{{jsxref("String.raw()")}}
-
Devuelve una cadena creada a partir de una plantilla literal sin formato.
-
- -

Propiedades de la instancia

- -
-
{{jsxref("String.prototype.length")}}
-
Refleja la length de la cadena. Solo lectura.
-
- -

Métodos de instancia

- -
-
{{jsxref("String.prototype.charAt()", "String.prototype.charAt(index)")}}
-
Devuelve el caracter (exactamente una unidad de código UTF-16) en el index especificado.
-
{{jsxref("String.prototype.charCodeAt()", "String.prototype.charCodeAt(index)")}}
-
Devuelve un número que es el valor de la unidad de código UTF-16 en el index dado.
-
{{jsxref("String.prototype.codePointAt()", "String.prototype.codePointAt(pos)")}}
-
Devuelve un número entero no negativo que es el valor del punto de código del punto de código codificado en UTF-16 que comienza en la pos especificada.
-
{{jsxref("String.prototype.concat()", "String.prototype.concat(str[, ...strN])")}}
-
Combina el texto de dos (o más) cadenas y devuelve una nueva cadena.
-
{{jsxref("String.prototype.includes()", "String.prototype.includes(searchString [, position])")}}
-
Determina si la cadena de la llamada contiene searchString.
-
{{jsxref("String.prototype.endsWith()", "String.prototype.endsWith(searchString[, length])")}}
-
Determina si una cadena termina con los caracteres de la cadena searchString.
-
{{jsxref("String.prototype.indexOf()", "String.prototype.indexOf(searchValue[, fromIndex])")}}
-
Devuelve el índice dentro del objeto {{jsxref("String")}} llamador de la primera aparición de searchValue, o -1 si no lo encontró.
-
{{jsxref("String.prototype.lastIndexOf()", "String.prototype.lastIndexOf(searchValue[, fromIndex])")}}
-
Devuelve el índice dentro del objeto {{jsxref("String")}} llamador de la última aparición de searchValue, o -1 si no lo encontró.
-
{{jsxref("String.prototype.localeCompare()", "String.prototype.localeCompare(compareString[, locales[, options]])")}}
-
Devuelve un número que indica si la cadena de referencia compareString viene antes, después o es equivalente a la cadena dada en el orden de clasificación.
-
{{jsxref("String.prototype.match()", "String.prototype.match(regexp)")}}
-
Se utiliza para hacer coincidir la expresión regular regexp con una cadena.
-
{{jsxref("String.prototype.matchAll()", "String.prototype.matchAll(regexp)")}}
-
Devuelve un iterador de todas las coincidencias de regexp.
-
{{jsxref("String.prototype.normalize()", "String.prototype.normalize([form])")}}
-
Devuelve la forma de normalización Unicode del valor de la cadena llamada.
-
{{jsxref("String.prototype.padEnd()", "String.prototype.padEnd(targetLength[, padString])")}}
-
Rellena la cadena actual desde el final con una cadena dada y devuelve una nueva cadena de longitud targetLength.
-
{{jsxref("String.prototype.padStart()", "String.prototype.padStart(targetLength[, padString])")}}
-
Rellena la cadena actual desde el principio con una determinada cadena y devuelve una nueva cadena de longitud targetLength.
-
{{jsxref("String.prototype.repeat()", "String.prototype.repeat(count)")}}
-
Devuelve una cadena que consta de los elementos del objeto repetidos count veces.
-
{{jsxref("String.prototype.replace()" , "String.prototype.replace(searchFor, replaceWith)")}}
-
Se usa para reemplazar ocurrencias de searchFor usando replaceWith. searchFor puede ser una cadena o expresión regular, y replaceWith puede ser una cadena o función.
-
{{jsxref("String.prototype.replaceAll()", "String.prototype.replaceAll(searchFor, replaceWith)")}}
-
Se utiliza para reemplazar todas las apariciones de searchFor usando replaceWith. searchFor puede ser una cadena o expresión regular, y replaceWith puede ser una cadena o función.
-
{{jsxref("String.prototype.search()", "String.prototype.search(regexp)")}}
-
Busca una coincidencia entre una expresión regular regexp y la cadena llamadora.
-
{{jsxref("String.prototype.slice()", "String.prototype.slice(beginIndex[, endIndex])")}}
-
Extrae una sección de una cadena y devuelve una nueva cadena.
-
{{jsxref("String.prototype.split()", "String.prototype.split([sep[, limit] ])")}}
-
Devuelve un arreglo de cadenas pobladas al dividir la cadena llamadora en las ocurrencias de la subcadena sep.
-
{{jsxref("String.prototype.startsWith()", "String.prototype.startsWith(searchString[, length])")}}
-
Determina si la cadena llamadora comienza con los caracteres de la cadena searchString.
-
{{jsxref("String.prototype.substr()")}}
-
Devuelve los caracteres en una cadena que comienza en la ubicación especificada hasta el número especificado de caracteres.
-
{{jsxref("String.prototype.substring()", "String.prototype.substring(indexStart[, indexEnd])")}}
-
Devuelve una nueva cadena que contiene caracteres de la cadena llamadora de (o entre) el índice (o indeces) especificados.
-
{{jsxref("String.prototype.toLocaleLowerCase()", "String.prototype.toLocaleLowerCase( [locale, ...locales])")}}
-
-

Los caracteres dentro de una cadena se convierten a minúsculas respetando la configuración regional actual.

- -

Para la mayoría de los idiomas, devolverá lo mismo que {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}}.

-
-
{{jsxref("String.prototype.toLocaleUpperCase()", "String.prototype.toLocaleUpperCase( [locale, ...locales])")}}
-
-

Los caracteres dentro de una cadena se convierten a mayúsculas respetando la configuración regional actual.

- -

Para la mayoría de los idiomas, devolverá lo mismo que {{jsxref("String.prototype.toUpperCase()", "toUpperCase()")}}.

-
-
{{jsxref("String.prototype.toLowerCase()")}}
-
Devuelve el valor de la cadena llamadora convertido a minúsculas.
-
{{jsxref("String.prototype.toString()")}}
-
Devuelve una cadena que representa el objeto especificado. Redefine el método {{jsxref("Object.prototype.toString()")}}.
-
{{jsxref("String.prototype.toUpperCase()")}}
-
Devuelve el valor de la cadena llamadora convertido a mayúsculas.
-
{{jsxref("String.prototype.trim()")}}
-
Recorta los espacios en blanco desde el principio y el final de la cadena. Parte del estándar ECMAScript 5.
-
{{jsxref("String.prototype.trimStart()")}}
-
Recorta los espacios en blanco desde el principio de la cadena.
-
{{jsxref("String.prototype.trimEnd()")}}
-
Recorta los espacios en blanco del final de la cadena.
-
{{jsxref("String.prototype.valueOf()")}}
-
Devuelve el valor primitivo del objeto especificado. Redefine el método {{jsxref("Object.prototype.valueOf()")}}.
-
{{jsxref("String.prototype.@@iterator()")}}
-
Devuelve un nuevo objeto Iterator que itera sobre los puntos de código de un valor de cadena, devolviendo cada punto de código como un valor de cadena.
-
- -

Métodos de contenedor HTML

- -
-
-

Desaprobado. Evita estos métodos.

- -

Son de uso limitado, ya que proporcionan solo un subconjunto de las etiquetas y atributos HTML disponibles.

-
- -
-
{{jsxref("String.prototype.anchor()")}}
-
{{htmlattrxref("name", "a", "<a name=\"name\">")}} (hipertexto destino)
-
{{jsxref("String.prototype.big()")}}
-
{{HTMLElement("big")}}
-
{{jsxref("String.prototype.blink()")}}
-
{{HTMLElement("blink")}}
-
{{jsxref("String.prototype.bold()")}}
-
{{HTMLElement("b")}}
-
{{jsxref("String.prototype.fixed()")}}
-
{{HTMLElement("tt")}}
-
{{jsxref("String.prototype.fontcolor()")}}
-
{{htmlattrxref("color", "font", "<font color=\"color\">")}}
-
{{jsxref("String.prototype.fontsize()")}}
-
{{htmlattrxref("size", "font", "<font size=\"size\">")}}
-
{{jsxref("String.prototype.italics()")}}
-
{{HTMLElement("i")}}
-
{{jsxref("String.prototype.link()")}}
-
{{htmlattrxref("href", "a", "<a href=\"url\">")}} (enlace a URL)
-
{{jsxref("String.prototype.small()")}}
-
{{HTMLElement("small")}}
-
{{jsxref("String.prototype.strike()")}}
-
{{HTMLElement("strike")}}
-
{{jsxref("String.prototype.sub()")}}
-
{{HTMLElement("sub")}}
-
{{jsxref("String.prototype.sup()")}}
-
{{HTMLElement("sup")}}
-
-
- -

Ejemplos

- -

Conversión de cadenas

- -

Es posible usar String como una alternativa más confiable de {{jsxref("String.prototype.toString()", "toString()")}}, ya que funciona cuando se usa en {{jsxref( "null")}}, {{jsxref("undefined")}} y en {{jsxref("Symbol", "símbolos")}}. Por ejemplo:

- -
let outputStrings = []
-for (let i = 0, n = inputValues.length; i < n; ++i) {
-  outputStrings.push(String(inputValues[i]));
-}
-
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-string-objects', 'String')}}
- -

Compatibilidad del navegador

- - - -

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

- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/indexof/index.html b/files/es/web/javascript/referencia/objetos_globales/string/indexof/index.html deleted file mode 100644 index 14f7b01eb8..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/indexof/index.html +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: String.prototype.indexOf() -slug: Web/JavaScript/Referencia/Objetos_globales/String/indexOf -tags: - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/indexOf ---- -

{{JSRef("Objetos_globales", "String")}}

- -

Resumen

- -

El método indexOf()devuelve el índice, dentro del objeto String que realiza la llamada, de la primera ocurrencia del valor especificado, comenzando la búsqueda desde indiceDesde; o -1 si no se encuentra dicho valor.

- -

Sintaxis

- -
cadena.indexOf(valorBusqueda[, indiceDesde])
- -

Parámetros

- -
-
valorBusqueda
-
Una cadena que representa el valor de búsqueda.
-
- -
-
indiceDesde
-
La localización dentro de la cadena llamada desde la que empezará la búsqueda. Puede ser un entero entre 0 y la longitud de la cadena. El valor predeterminado es 0.
-
- -

Descripción

- -

Los caracteres de una cadena se indexan de izquierda a derecha. El índice del primer carácter es 0, y el índice del último carácter de una cadena llamada nombreCadena es nombreCadena.length - 1.

- -
"Blue Whale".indexOf("Blue")    // returns 0
-"Blue Whale".indexOf("Blute")   // returns -1
-"Blue Whale".indexOf("Whale",0) // returns 5
-"Blue Whale".indexOf("Whale",5) // returns 5
-"Blue Whale".indexOf("",9)      // returns 9
-"Blue Whale".indexOf("",10)     // returns 10
-"Blue Whale".indexOf("",11)     // returns 10
-
- -

El método indexOf es sensible a mayúsculas. Por ejemplo, la siguiente expresión devuelve -1:

- -
"Ballena Azul".indexOf("azul")
-
- -

Ejemplos

- -

Ejemplo: Usando indexOf y lastIndexOf

- -

El siguiente ejemplo utiliza indexOf y lastIndexOf para localizar valores dentro de la cadena "Brave new world".

- -
var cualquierCadena="Brave new world"
-
-
-document.write("<P>The index of the first w from the beginning is " +
-   cualquierCadena.indexOf("w"))         // Muestra 8
-
-document.write("<P>The index of the first w from the end is " +
-   cualquierCadena.lastIndexOf("w"))    // Muestra 10
-
-document.write("<P>The index of 'new' from the beginning is " +
-   cualquierCadena.indexOf("new"))      // Muestra 6
-
-document.write("<P>The index of 'new' from the end is " +
-   cualquierCadena.lastIndexOf("new"))  // Muestra 6
-
- -

Ejemplo: indexOf y sensibilidad a mayúsculas

- -

El siguiente ejemplo define dos variables de tipo cadena. Las variables contienen la misma cadena excepto que la segunda cadena contienen letras en mayúscula. El primer método writeln muestra 19. Pero a que el método indexOf es sensible a mayúsculas, no se encuentra la cadena "cheddar" en miCadenaMayusculas, así que el segundo método writeln muestra -1.

- -
miCadena="brie, pepper jack, cheddar"
-miCadenaMayusculas="Brie, Pepper Jack, Cheddar"
-document.writeln('miCadena.indexOf("cheddar") is ' +
-   miCadena.indexOf("cheddar"))
-document.writeln('<P>miCadenaMayusculas.indexOf("cheddar") is ' +
-   miCadenaMayusculas.indexOf("cheddar"))
-
- -

Ejemplo: Usando indexOf para contar ocurrencias de una letra en una cadena

- -

El siguiente ejemplo establece cuenta como el número de ocurrencias de la letra x dentro de la cadena miCadena:

- -
cuenta = 0;
-posicion = miCadena.indexOf("x");
-while ( posicion != -1 ) {
-   cuenta++;
-   posicion = miCadena.indexOf("x",posicion+1);
-}
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/italics/index.html b/files/es/web/javascript/referencia/objetos_globales/string/italics/index.html deleted file mode 100644 index 71897293bb..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/italics/index.html +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: String.prototype.italics() -slug: Web/JavaScript/Referencia/Objetos_globales/String/italics -tags: - - Deprecated - - HTML wrapper methods - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/italics ---- -

{{JSRef("Objetos_globales", "String")}}

- -

{{deprecated_header}}

- -

Resumen

- -

Provoca que una cadena ponga en cursiva, como si estuviese dentro de una etiqueta {{HTMLElement("i")}}.

- -

Sintaxis

- -
cadena.italics()
- -

Descripción

- -

Usa el método italics para formatear y mostrar una cadena en un documento.

- -

Ejemplos

- -

Ejemplo: Usando métodos de italics()

- -

El siguiente ejemplo usa métodos de string para cambiar el formateado de una cadena:

- -
var cadenaMundo="¡Hola mundo!";
-
-console.log(cadenaMundo.blink());
-console.log(cadenaMundo.bold());
-console.log(cadenaMundo.italics());
-console.log(cadenaMundo.strike());
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/lastindexof/index.html b/files/es/web/javascript/referencia/objetos_globales/string/lastindexof/index.html deleted file mode 100644 index ffde251071..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/lastindexof/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: String.prototype.lastIndexOf() -slug: Web/JavaScript/Referencia/Objetos_globales/String/lastIndexOf -tags: - - Cadena - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/String/lastIndexOf ---- -

{{JSRef("Objetos_globales", "String")}}

- -

Resumen

- -

El  método lastIndexOf() devuelve la posicion (indice) en la que se encuentra el valorBusqueda, dentro del objeto String que realiza la llamada, de la última ocurrencia del valor especificado; o -1 si no se halla. La búsqueda se realiza empezando por el final de la cadena que realiza la llamada, empezando en indiceDesde.

- -

Sintaxis

- -
cadena.lastIndexOf(valorBusqueda[, indiceDesde])
- -

Parámetros

- -
-
valorBusqueda
-
Una cadena que representa el valor que se desea buscar.
-
- -
-
indiceDesde
-
La localización dentro de la cadena que realiza la llamada desde donde comenzará la búsqueda. Puede ser cualquier entero entre 0 y la longitud de la cadena. El valor predeterminado es la longitud de la cadena.
-
- -

Descripción

- -

Los caracteres de una cadena se indexan de izquierda a derecha. El índice del primer carácter es 0, y el índice del último carácter es nombreCadena.length - 1.

- -
"canal".lastIndexOf("a")   // returns 3
-"canal".lastIndexOf("a",2) // returns 1
-"canal".lastIndexOf("a",0) // returns -1
-"canal".lastIndexOf("x")   // returns -1
-
- -

El método lastIndexOf es sensible a mayúsculas. Por ejemplo, la siguiente expresión devuelve -1:

- -
"Ballena Azul, Ballena Asesina".lastIndexOf("azul")
-
- -

Ejemplos

- -

Ejemplo: Usando indexOf y lastIndexOf

- -

The following example uses indexOf and lastIndexOf to locate values in the string "Brave new world".

- -
var anyString="Brave new world"
-
-// Displays 8
-document.write("<P>The index of the first w from the beginning is " +
-   anyString.indexOf("w"))
-// Displays 10
-document.write("<P>The index of the first w from the end is " +
-   anyString.lastIndexOf("w"))
-// Displays 6
-document.write("<P>The index of 'new' from the beginning is " +
-   anyString.indexOf("new"))
-// Displays 6
-document.write("<P>The index of 'new' from the end is " +
-   anyString.lastIndexOf("new"))
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/length/index.html b/files/es/web/javascript/referencia/objetos_globales/string/length/index.html deleted file mode 100644 index 9401b8898a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/length/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: String.length -slug: Web/JavaScript/Referencia/Objetos_globales/String/length -tags: - - JavaScript - - Propiedad - - Prototipo - - Referencia - - String - - length -translation_of: Web/JavaScript/Reference/Global_Objects/String/length ---- -
{{JSRef}}
- -

La propiedad length de un objeto {{jsxref("String")}} representa la longitud de una cadena, en unidades de código UTF-16.

- -

Sintaxis

- -
str.length
- -

Descripción

- -

Esta propiedad devuelve el número de caracteres de una cadena. {{interwiki("wikipedia", "UTF-16")}}, el formato usado por JavaScript, usa 16-bit para representar los caracteres más comunes, pero necesita usar dos caracteres para otros menos usados, así que es posible que el valor devuelto por length no corresponda al número de caracteres de la cadena.

- -

ECMASCript 2016 (ed. 7) estableció una longitud máxima de 2^53 - 1 elementos. Anteriormente, ninguna longitud máxima era especificada. 

- -

Para una cadena vacía, length es 0.

- -

La propiedad static String.length devuelve 1.

- -

Ejemplos

- -

Uso Básico

- -
var x = 'Mozilla';
-var empty = '';
-
-console.log('Mozilla is ' + x.length + ' code units long');
-/* "Mozilla is 7 code units long" */
-
-console.log('The empty string has a length of ' + empty.length);
-/* "The empty string has a length of 0" */
- -

Asignando a length

- -
var myString = "bluebells";
-
-// Attempting to assign a value to a string's .length property has no observable effect.
-myString.length = 4;
-console.log(myString);
-/* "bluebells" */
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
ECMAScript 1st Edition.EstándarPrimera definicíon. Implementado en 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')}}
{{SpecName('ESDraft', '#sec-properties-of-string-instances-length', 'String.prototype.length')}}{{Spec2('ESDraft')}}
- -

Compatibilidad con navegadores

- -

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

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/link/index.html b/files/es/web/javascript/referencia/objetos_globales/string/link/index.html deleted file mode 100644 index 021c659f34..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/link/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: String.prototype.link() -slug: Web/JavaScript/Referencia/Objetos_globales/String/link -tags: - - HTML wrapper methods - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/link ---- -

{{JSRef("Objetos_globales", "String")}}

- -

Resumen

- -

Crea un enlace de hipertexto HTML, {{HTMLElement("a")}}, que solicita otra URL.

- -

Sintaxis

- -
cadena.link(atributoHref)
- -

Parámetros

- -
-
atributoHref
-
Cualquier cadena que especifique el atributo {{htmlattrxref("href", "a")}} de la etiqueta {{HTMLElement("a")}}; debería ser una URL válida (relativa o absoluta).
-
- -

Descripción

- -

Usa el método link para crear un atajo HTML para un enlace de hipertexto. La cadena devuelta puede ser añadida al documento vía {{domxref("element.innerHTML")}}.

- -

Los enlaces creados con el método link serán elementos del array links del objeto document. Vea {{domxref("document.links")}}.

- -

Ejemplos

- - - -

El siguiente ejemplo muestra la palabra "Netscape" como un enlace de hipertexto que devuelve al usuario a la página inicial de Netscape:

- -
var textoActivo="MDN"
-var URL="https://developer.mozilla.org/"
-
-console.log("Haga click para volver a " + textoActivo.link(URL))
-
- -

Este ejemplo produce el mismo resultado que el siguiente código HTML:

- -
Haga click para volver a <a href="http://developer.mozilla.org/">MDN</a>
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/localecompare/index.html b/files/es/web/javascript/referencia/objetos_globales/string/localecompare/index.html deleted file mode 100644 index 2bda296c61..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/localecompare/index.html +++ /dev/null @@ -1,159 +0,0 @@ ---- -title: String.prototype.localeCompare() -slug: Web/JavaScript/Referencia/Objetos_globales/String/localeCompare -translation_of: Web/JavaScript/Reference/Global_Objects/String/localeCompare ---- -
{{JSRef}}
- -

El método localeCompare() devuelve un número que indica si la cadena de caracteres actual es anterior, posterior o igual a la cadena pasada como parámetro, en orden lexicográfico.

- -

Los nuevos argumentos locales y options permiten a las aplicaciones especificar el idioma y el orden de clasificación que debe usarse y personalizar el comportamiento de la función. En las implementaciones más antiguas, que ignoran los argumentos locales y options, la configuración locale y el orden de clasificación utilizados dependen enteramente de la implementación

- -

Sintaxis

- -
referenceStr.localeCompare(compareString[, locales[, options]])
- -

Parámetros

- -

Comprueba la sección Compatibilidad con el navegador para ver que navegadores soportan los argumentos locales y options, and the Checking for support for locales and options arguments for feature detection.

- -
-
compareString
-
La cadena con la que queremos comparar la cadena actual de caracteres.
-
- -
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator', 'Parameters')}}
- -

Valor devuelto

- -

Un número negativo si la cadena de referencia ocurre antes de la cadena de comparación; positivo si la cadena de referencia ocurre después de la cadena de comparación; 0 si son equivalentes.

- -

Descripción

- -

Returns an integer indicating whether the referenceStr comes before, after or is equivalent to the compareStr.

- - - -

NO CONFIAR en que los valores devueltos sean siempre -1 o 1. Los resultados de enteros negativos y positivos varían entre los navegadores (así como entre diferentes versiones de un mismo navegador) porque la especificación W3C solo exige valores negativos y positivos. Algunos navegadores pueden devolver -2 o 2 o incluso algún otro valor negativo o positivo.

- -

Ejemplos

- -

Uso de localeCompare()

- -
// La letra "a" es anterior a la "c" produciendo un valor negativo
-'a'.localeCompare('c'); // -2 o -1 (u otro valor negativo)
-
-// Alfabeticamente la palabra "check" viene después de "against" produciendo un valor ppositivo
-'check'.localeCompare('against'); // 2 o 1 (u otro valor positivo)
-
-// "a" y "a" son equivalentes produciendo un valor neutro de 0
-'a'.localeCompare('a'); // 0
-
- -

Ordenar un array

- -

localeCompare enables a case-insensitive sort of an array.

- -
var items = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu'];
-items.sort((a, b) => a.localeCompare(b)); // ['adieu', 'café', 'cliché', 'communiqué', 'premier', 'réservé']
-
- -

Verificar si el navegador soporta argumentos extendidos

- -

The locales and options arguments are not supported in all browsers yet. To check whether an implementation supports them, use the "i" argument (a requirement that illegal language tags are rejected) and look for a {{jsxref("RangeError")}} exception:

- -
function localeCompareSupportsLocales() {
-  try {
-    'foo'.localeCompare('bar', 'i');
-  } catch (e) {
-    return e.name === 'RangeError';
-  }
-  return false;
-}
-
- -

Uso de locales

- -

The results provided by localeCompare() vary between languages. In order to get the sort order 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:

- -
console.log('ä'.localeCompare('z', 'de')); // a negative value: in German, ä sorts before z
-console.log('ä'.localeCompare('z', 'sv')); // a positive value: in Swedish, ä sorts after z
-
- -

Uso de options

- -

The results provided by localeCompare() can be customized using the options argument:

- -
// in German, ä has a as the base letter
-console.log('ä'.localeCompare('a', 'de', { sensitivity: 'base' })); // 0
-
-// in Swedish, ä and a are separate base letters
-console.log('ä'.localeCompare('a', 'sv', { sensitivity: 'base' })); // a positive value
-
- -

Performance

- -

When comparing large numbers of strings, such as in sorting large arrays, it is better to create an {{jsxref("Global_Objects/Collator", "Intl.Collator")}} object and use the function provided by its {{jsxref("Collator.prototype.compare", "compare")}} property.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial. Implementado en JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.5.4.9', 'String.prototype.localeCompare')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.localecompare', 'String.prototype.localeCompare')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-string.prototype.localecompare', 'String.prototype.localeCompare')}}{{Spec2('ESDraft')}} 
{{SpecName('ES Int 1.0', '#sec-13.1.1', 'String.prototype.localeCompare')}}{{Spec2('ES Int 1.0')}}Definiciones de los parámetros locale y option.
{{SpecName('ES Int 2.0', '#sec-13.1.1', 'String.prototype.localeCompare')}}{{Spec2('ES Int 2.0')}} 
{{SpecName('ES Int Draft', '#sec-String.prototype.localeCompare', 'String.prototype.localeCompare')}}{{Spec2('ES Int Draft')}} 
- -

Compatibilidad con el navegador

- - - -

{{Compat("javascript.builtins.String.localeCompare")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/match/index.html b/files/es/web/javascript/referencia/objetos_globales/string/match/index.html deleted file mode 100644 index 6403dbaf06..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/match/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: String.prototype.match() -slug: Web/JavaScript/Referencia/Objetos_globales/String/match -tags: - - JavaScript - - Method - - Prototype - - RegExp - - Regular Expressions - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/match ---- -

{{JSRef("Objetos_globales", "String")}}

- -

Resumen

- -

El método match() se usa para obtener todas las ocurrencias de una expresión regular dentro de una cadena.

- -

Sintaxis

- -
cadena.match(regexp)
- -

Parámetros

- -
-
regexp
-
Un objeto expresión regular. Si se pasa un objeto obj que no es expresión regular, se convierte implícitamente a RegExp usando new RegExp(obj).
-
- -

Descripción

- -

Si la expresión regular no incluye el flag g, devuelve el mismo resultado que {{jsxref("Regexp.exec()")}}.

- -

Si la expresión regular incluye el flag g, el método devuelve un {{jsxref("Array")}} que contiene todos los emparejamientos.

- -

Notas

- - - -

Ejemplos

- -

Ejemplo: Usando match

- -

En el siguiente ejemplo, se usa match para hallar "Capítulo" seguido de 1 o más caracteres numéricos seguidos de un punto decimal y caracteres numéricos cero o más veces. La expresión regular incluye el flag i por lo que las mayúsculas serán ignoradas.

- -
cadena = "Para más información, vea Capítulo 3.4.5.1";
-expresion = /(capítulo \d+(\.\d)*)/i;
-hallado = cadena.match(expresion);
-console.log(hallado);
-
- -

Esto devuelve un array que contiene Capítulo 3.4.5.1,Capítulo 3.4.5.1,.1

- -

"Capítulo 3.4.5.1" es el primer emparejamiento y el primer valor referenciado por (Chapter \d+(\.\d)*).

- -

".1" es el segundo valor referenciado por (\.\d).

- -

Ejemplo: Usando los flags global e ignorar mayúsculas con match

- -

El siguiente ejemplo demuestra el uso de los flags global e ignorar mayúsculas con match. Todas las letras de A hasta E y de a hasta e son devueltas, en su propio elemento dentro del array.

- -
var cadena = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-var expresion = /[A-E]/gi;
-var array_emparejamientos = cadena.match(expresion);
-console.log(array_emparejamientos);
-
- -

array_emparejamientos será {{ mediawiki.external('\'A\', \'B\', \'C\', \'D\', \'E\', \'a\', \'b\', \'c\', \'d\', \'e\'') }}

- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/matchall/index.html b/files/es/web/javascript/referencia/objetos_globales/string/matchall/index.html deleted file mode 100644 index a536720dbd..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/matchall/index.html +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: String.prototype.matchAll() -slug: Web/JavaScript/Referencia/Objetos_globales/String/matchAll -tags: - - Cadena - - Expresiones Regulares - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/String/matchAll ---- -
{{JSRef}}
- -

El método matchAll() retorna un iterador de todos los resultados de ocurrencia en una cadena de texto contra una expresión regular, incluyendo grupos de captura.

- -
{{EmbedInteractiveExample("pages/js/string-matchall.html")}}
- - - -

Sintaxis

- -
cadena.matchAll(expresionRegular)
- -

Parámetros

- -
-
expresionRegular
-
Un objeto expresión regular. Si se pasa un objeto no-RegExp obj, este es implícitamente convertido a {{jsxref("RegExp")}} vía new RegExp(obj).
-
- -

Valor devuelto

- -

Un iterador (el cual no es reiniciable).

- -

Ejemplo

- -

Regexp.exec() y matchAll()

- -

Antes de la adición de  matchAll a JavaScript, fue posible hacer llamados a regexp.exec (y usar expresiones regulares con la bandera /g) en un ciclo para obtener las ocurrencias:

- -
const regexp = RegExp('foo[a-z]*','g');
-const cadena = 'mesa football, foosball';
-let ocurrencia;
-
-while ((ocurrencia = regexp.exec(cadena)) !== null) {
-  console.log(`Encontrado ${ocurrencia[0]} inicio=${ocurrencia.index} final=${regexp.lastIndex}.`);
-  // salida esperada: "Encontrado football inicio=5 final=13."
-  // salida esperada: "Encontrado foosball inicio=15 final=23."
-}
- -

Con matchAll disponible, puedes evitar el ciclo while y exec con /g. Por el contrario, usando matchAll, obtienes un iterador con el cual puedes usar con constructores más convenientes  for...of, array spread, o {{jsxref("Array.from()")}}:

- -
const regexp = RegExp('foo[a-z]*','g');
-const cadena = 'mesa football, foosball';
-const ocurrencias = cadena.matchAll(regexp);
-
-for (const ocurrencia of ocurrencias) {
-  console.log(`Encontrado ${ocurrencia[0]} inicio=${ocurrencia.index} final=${ocurrencia.index + ocurrencia[0].length}.`);
-}
-// salida esperada: "Encontrado football start=5 end=13."
-// salida esperada: "Encontrado foosball start=15 end=23."
-
-// el iterador ocurrencias es agotado después de la iteración for..of
-// Llama matchAll de nuevo para crear un nuevo iterador
-Array.from(cadena.matchAll(regexp), m => m[0]);
-// Array [ "football", "foosball" ]
- -

matchAll solo devuelve la primer ocurrencia si la bandera /g está ausente.

- -
const regexp = RegExp('[a-c]','');
-const cadena = 'abc';
-Array.from(cadena.matchAll(regexp), m => m[0]);
-// Array [ "a" ]
-
- -

matchAll internamente hace un clon de la expresión regular, entonces a diferencia de regexp.exec,  lastIndex no cambia a medida que la cadena es escaneada.

- -
const regexp = RegExp('[a-c]','g');
-regexp.lastIndex = 1;
-const cadena = 'abc';
-Array.from(cadena.matchAll(regexp), m => `${regexp.lastIndex} ${m[0]}`);
-// Array [ "1 b", "1 c" ]
- -

Mejor acceso para capturar grupos

- -

Otra buena razón para matchAll es el mejorado acceso a los grupos de captura. Los grupos de captura son ignorados cuando se usa match() con la bandera global /g:

- -
var regexp = /t(e)(st(\d?))/g;
-var cadena = 'test1test2';
-
-cadena.match(regexp);
-// Array ['test1', 'test2']
- -

Con matchAll puedes acceder a ellos:

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

Especificaciones

- - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ESDraft', '#sec-string.prototype.matchall', 'String.prototype.matchAll')}}{{Spec2('ESDraft')}}
- -

Compatibilidad de navegadores

- - - -

{{Compat("javascript.builtins.String.matchAll")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/normalize/index.html b/files/es/web/javascript/referencia/objetos_globales/string/normalize/index.html deleted file mode 100644 index 2794644f1c..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/normalize/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: String.prototype.normalize() -slug: Web/JavaScript/Referencia/Objetos_globales/String/normalize -tags: - - Cadena - - ECMAScript 2015 - - JavaScript - - Prototipo - - Referencia - - String - - Unicode - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/String/normalize ---- -
{{JSRef}}
- -

El método normalize() retorna la Forma de Normalización Unicode de la cadena dada (si el valor no es una cadena, primero será convertido a ese tipo).

- -

Sintaxis

- -
str.normalize([form])
- -

Parámetros

- -
-
form
-
Uno de"NFC", "NFD", "NFKC", o "NFKD", especificando la Forma de Normalización Unicode. Si es omitida o {{jsxref("undefined")}}, se utiliza "NFC". -
    -
  • NFC — Forma de Normalización de Composición Canónica.
  • -
  • NFD — Forma de Normalización de Descomposición Canónica.
  • -
  • NFKC — Forma de Normalización de Composición de Compatibilidad.
  • -
  • NFKD — Forma de Normalización de Descomposición de Compatibilidad.
  • -
-
-
- -

Valor de retorno

- -

Una cadena que contiene la Forma de Normalización Unicode de la cadena dada.

- -

Errores lanzados

- -
-
{{jsxref("RangeError")}}
-
Un error {{jsxref("RangeError")}} es lanzado si form no es uno de los valores especificados arriba.
-
- -

Descripción

- -

El método normalize() retorna la Forma de Normalización Unicode de una cadena. No afecta el valor de la cadena en sí misma.

- -

Ejemplos

- -

Uso de normalize()

- -
// Cadena inicial
-
-// U+1E9B: LETRA S LATINA MINÚSCULA CON PUNTO ARRIBA
-// U+0323: COMBINACIÓN CON PUNTO ABAJO
-var str = '\u1E9B\u0323';
-
-
-// Forma compuesta canónicamente (NFC)
-
-// U+1E9B: LETRA S LATINA MINÚSCULA CON PUNTO ARRIBA
-// U+0323: COMBINACIÓN CON PUNTO ABAJO
-str.normalize('NFC'); // '\u1E9B\u0323'
-str.normalize();      // lo mismo que arriba
-
-
-// Forma canónicamente descompuesta (NFD)
-
-// U+017F: LETRA S LATINA MINÚSCULA
-// U+0323: COMBINACIÓN CON PUNTO ABAJO
-// U+0307: COMBINACIÓN CON PUNTO ARRIBA
-str.normalize('NFD'); // '\u017F\u0323\u0307'
-
-
-// Compuesta con compatibilidad (NFKC)
-
-// U+1E69: LETRA S LATINA MINÚSCULA CON PUNTO ARRIBA Y ABAJO
-str.normalize('NFKC'); // '\u1E69'
-
-
-// Descompuesta con compatibilidad (NFKD)
-
-// U+0073: LETRA S LATINA MINÚSCULA
-// U+0323: COMBINACIÓN CON PUNTO ABAJO
-// U+0307: COMBINACIÓN CON PUNTO ARRIBA
-str.normalize('NFKD'); // '\u0073\u0323\u0307'
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-string.prototype.normalize', 'String.prototype.normalize')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-string.prototype.normalize', 'String.prototype.normalize')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de Navegadores

- - - -

{{Compat("javascript.builtins.String.normalize")}}

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/padstart/index.html b/files/es/web/javascript/referencia/objetos_globales/string/padstart/index.html deleted file mode 100644 index 57abbd8f5c..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/padstart/index.html +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: String.prototype.padStart() -slug: Web/JavaScript/Referencia/Objetos_globales/String/padStart -tags: - - Cadena - - Experimental - - JavaScript - - Método(2) - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/String/padStart ---- -
{{JSRef}}{{SeeCompatTable}}
- -

El método padStart() rellena la cadena actual con una cadena dada (repetida eventualmente) de modo que la cadena resultante alcance una longitud dada. El relleno es aplicado desde el inicio (izquierda) de la cadena actual.

- -

Sintaxis

- -
str.padStart(targetLength [, padString])
- -

Parámetros

- -
-
targetLength
-
La longitud de la cadena resultante una vez la cadena actual haya sido rellenada. Si este parámetro es más pequeño que la longitud de la cadena actual, la cadena actual será devuelta sin modificar.
-
padString {{optional_inline}}
-
La cadena para rellenar la cadena actual. Si esta cadena es muy larga, será recortada y la parte más a la izquierda será aplicada. El valor por defecto para este parámetro es " " (U+0020).
-
- -

Valor devuelto

- -

Un {{jsxref("String")}} de la longitud específicada con la cadena de relleno aplicada desde el inicio.

- -

Ejemplos

- -
'abc'.padStart(10);         // "       abc"
-'abc'.padStart(10, "foo");  // "foofoofabc"
-'abc'.padStart(6,"123465"); // "123abc"
-
- -

Especificaciones

- -

Este método aún no ha alcanzado el estándar ECMAScript. Actualmente es una propuesta para ECMAScript.

- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome("52")}} {{CompatGeckoDesktop(48)}}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile(48)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/prototype/index.html b/files/es/web/javascript/referencia/objetos_globales/string/prototype/index.html deleted file mode 100644 index 89519b08d2..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/prototype/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: String.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/String/prototype -tags: - - JavaScript - - Property - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String -translation_of_original: Web/JavaScript/Reference/Global_Objects/String/prototype ---- -

{{JSRef("Objetos_globales", "String")}}

- -

Resumen

- -

The String.prototype propiedad representa el prototipo de esta clase. Puede usar el prototipo para añadir propiedades o métodos a todas las instancias de una clase.

- -
{{js_property_attributes(0,0,0)}}
- -

Propiedades

- -
-
String.prototype.constructor
-
Especifica la función que crea un prototipo de objeto.
-
{{jsxref("String.prototype.length")}}
-
Refleja la longitud de la cadena.
-
- -
{{ jsOverrides("Object", "properties", "constructor", "length") }}
- -

Métodos

- -

Métodos no relacionados con HTML

- -
-
{{jsxref("String.prototype.charAt()")}}
-
Devuelve el carácter en el índice especificado.
-
{{jsxref("String.prototype.charCodeAt()")}}
-
Devuelve el número que indica el valor Unicode del carácter en el índice especificado.
-
{{jsxref("String.prototype.concat()")}}
-
Combina el texto de dos cadenas y devuelve una nueva cadena.
-
{{jsxref("String.prototype.indexOf()")}}
-
Devuelve el índice dentro del objeto String que realiza la llamada de la primera ocurrencia del valor especificado, o -1 si no lo encuentra.
-
{{jsxref("String.prototype.lastIndexOf()")}}
-
Devuelve el índice dentro del objeto String que realiza la llamada de la última ocurrencia del valor especificado, o -1 si no lo encuentra.
-
{{jsxref("String.prototype.match()")}}
-
Se usa para emparejar una expresión regular con una cadena.
-
{{jsxref("String.prototype.replace()")}}
-
Se usa para emparejar una expresión regular con una cadena, y reemplezar la subcadena emparejada con una nueva subcadena.
-
{{jsxref("String.prototype.search()")}}
-
Realiza una búsqueda de una expresión regular en una cadena especificada.
-
{{jsxref("String.prototype.slice()")}}
-
Extrae una sección de una cadena y devuelve una nueva cadena.
-
{{jsxref("String.prototype.split()")}}
-
Divide un objeto String en un arreglo de cadenas, separando la cadena en subcadenas.
-
{{jsxref("String.prototype.substr()")}}
-
Devuelve los caracteres de una cadena comenzando en la localización especificada y hasta el número de caracteres especificado.
-
{{jsxref("String.prototype.substring()")}}
-
Devuelve los caracteres de una cadena entre dos índices dentro de la cadena.
-
{{jsxref("String.prototype.toLowerCase()")}}
-
Devuelve el valor de la cadena que realiza la llamada en minúsculas.
-
{{jsxref("String.prototype.toSource()")}}
-
Devuelve el objeto literal que representa el objeto especificado; puede usar este valor para crear un nuevo objeto. Sobreescribe el método {{jsxref("Object.prototype.toSource()")}}.
-
{{jsxref("String.prototype.toString()")}}
-
Devuelve una cadena que representa el objeto especificado. Sobreescribe el método {{jsxref("Object.prototype.toString()")}}.
-
{{jsxref("String.prototype.toUpperCase()")}}
-
Devuelve el valor de la cadena que realiza la llamada en mayúsculas.
-
{{jsxref("String.prototype.valueOf()")}}
-
Devuelve el valor primitivo del objeto especificado. Sobreescribe el método {{jsxref("Object.prototype.valueOf()")}}.
-
- -

Métodos de encapsulado HTML

- -

Cada uno de los métodos siguientes devuelve una copia de la cadena encapsulada dentro de una etiqueta HTML. Por ejemplo, "test".bold() devuelve "<b>test</b>".

- -
-
{{jsxref("String.prototype.anchor()")}}
-
<a name="name"> (Ancha Hipertexto)
-
{{jsxref("String.prototype.big()")}}
-
{{HTMLElement("big")}}
-
{{jsxref("String.prototype.blink()")}}
-
{{HTMLElement("blink")}}
-
{{jsxref("String.prototype.bold()")}}
-
{{HTMLElement("b")}}
-
{{jsxref("String.prototype.fixed()")}}
-
{{HTMLElement("tt")}}
-
{{jsxref("String.prototype.fontcolor()")}}
-
<font color="color">
-
{{jsxref("String.prototype.fontsize()")}}
-
<font size="size">
-
{{jsxref("String.prototype.italics()")}}
-
{{HTMLElement("i")}}
-
{{jsxref("String.prototype.link()")}}
-
<a href="url"> (Enlace a URL)
-
{{jsxref("String.prototype.small()")}}
-
{{HTMLElement("small")}}
-
{{jsxref("String.prototype.strike()")}}
-
{{HTMLElement("strike")}}
-
{{jsxref("String.prototype.sub()")}}
-
{{HTMLElement("sub")}}
-
{{jsxref("String.prototype.sup()")}}
-
{{HTMLElement("sup")}}
-
- -

Estos métodos son de uso limitado, ya que sólo están disponibles un subconjunto de etiquetas HTML y atributos.

- -

{{ jsOverrides("Object", "methods", "charAt", "charCodeAt", "concat", "indexOf", "lastIndexOf", "localeCompare", "match", "quote", "replace", "search", "slice", "split", "substr", "substring", "toLocaleLowerCase", "toLocaleUpperCase", "toLowerCase", "toSource", "toString", "toUpperCase", "trim", "trimLeft", "trimRight", "valueOf", "anchor", "big", "blink", "bold", "fixed", "fontcolor", "fontsize", "italics", "link", "small", "strike", "sub", "sup") }}

- -

Vea también

- - - -
-
 
-
diff --git a/files/es/web/javascript/referencia/objetos_globales/string/raw/index.html b/files/es/web/javascript/referencia/objetos_globales/string/raw/index.html deleted file mode 100644 index 3c8f3c1d55..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/raw/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: String.raw() -slug: Web/JavaScript/Referencia/Objetos_globales/String/raw -translation_of: Web/JavaScript/Reference/Global_Objects/String/raw ---- -
{{JSRef}}
- -

El método estatico String.raw()  es una función de  plantilla de literales, similar al prefijo r en Python o al prefijo @ en C# para strings literales (con ciertas diferencias: ver la explicación en este problema). Se utiliza para obtener un string crudo a partir de plantillas de string (es decir, el original, texto no interpretado).

- -

Sintaxis

- -
String.raw(callSite, ...substitutions)
-
-String.raw`templateString`
-
- -

Parametros

- -
-
callSite
-
Plantilla bien estructurada, similar a { raw: ['foo', 'bar', 'baz'] }.
-
...substitutions
-
Contiene valores de sustitución.
-
templateString
-
[opcional] Una plantilla string, con sustituciones (${...}).
-
- -

Valor de regreso

- -

La forma cruda del string de una plantilla string proporcionada.

- -

Excepciones

- -
-
{{jsxref("TypeError")}}
-
Un {{jsxref("TypeError")}} es arrojado si el primer argumento no es un objeto bien estructurado.
-
- -

Descripción

- -

En la mayoría de los casos, String.raw() es usado con plantillas string. La primera sintaxis mencionada arriba es raramente usada,  porque el motor de JavaScript hará la llamada por ti con los argumentos apropiados, al igual que otras funciones de etiqueta.

- -

String.raw() es la unica función de etiqueta incorporada en las plantillas string; trabaja igual que la función de la plantilla por defecto y ejecuta la concatenación. Incluso puedes reimplementarlo con código normal de JavaScript.

- -

Ejemplos

- -

Usando String.raw()

- -
String.raw`Hi\n${2+3}!`;
-// 'Hi\n5!', the character after 'Hi'
-// is not a newline character,
-// '\' and 'n' are two characters.
-
-String.raw`Hi\u000A!`;
-// 'Hi\u000A!', same here, this time we will get the
-//  \, u, 0, 0, 0, A, 6 characters.
-// All kinds of escape characters will be ineffective
-// and backslashes will be present in the output string.
-// You can confirm this by checking the .length property
-// of the string.
-
-let name = 'Bob';
-String.raw`Hi\n${name}!`;
-// 'Hi\nBob!', substitutions are processed.
-
-// Normally you would not call String.raw() as a function,
-// but to simulate `t${0}e${1}s${2}t` you can do:
-String.raw({ raw: 'test' }, 0, 1, 2); // 't0e1s2t'
-// Note that 'test', a string, is an array-like object
-// The following is equivalent to
-// `foo${2 + 3}bar${'Java' + 'Script'}baz`
-String.raw({
-  raw: ['foo', 'bar', 'baz']
-}, 2 + 3, 'Java' + 'Script'); // 'foo5barJavaScriptbaz'
-
-
- -

Especificaciónes

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-string.raw', 'String.raw')}}{{Spec2('ES2015')}}Definicion inicial.
{{SpecName('ESDraft', '#sec-string.raw', 'String.raw')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de navegador

- - - -

{{Compat("javascript.builtins.String.raw")}}

- -

Tambien ver

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/repeat/index.html b/files/es/web/javascript/referencia/objetos_globales/string/repeat/index.html deleted file mode 100644 index a449bdfb27..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/repeat/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: String.prototype.repeat() -slug: Web/JavaScript/Referencia/Objetos_globales/String/repeat -tags: - - ECMAScript2015 - - JavaScript - - Prototype - - Referencia - - String - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/String/repeat ---- -
{{JSRef}}
- -

El método repeat() construye y devuelve una nueva cadena que contiene el número especificado de copias de la cadena en la cual fue llamada, concatenados.

- -

Sintáxis

- -
str.repeat(count)
- -

Parámetros

- -
-
count
-
Un entero entre 0 y +∞: [0, +∞), indicando el número de veces a repetir la cadena en la nueva cadenada creada que será devuelta.
-
- -

Valor devuelto

- -

Un nuevo string que contiene el número especificado de copias del string original.

- -

Excepciones

- - - -
-
- -

Ejemplos

- -
'abc'.repeat(-1);   // RangeError
-'abc'.repeat(0);    // ''
-'abc'.repeat(1);    // 'abc'
-'abc'.repeat(2);    // 'abcabc'
-'abc'.repeat(3.5);  // 'abcabcabc' (count will be converted to integer)
-'abc'.repeat(1/0);  // RangeError
-
-({ toString: () => 'abc', repeat: String.prototype.repeat }).repeat(2);
-// 'abcabc' (repeat() is a generic method)
-
- -

Polyfill

- -

Este método ha sido añadido a la especificación ECMAScript 6 y tal vez aún no se encuentre disponible en todas las implementaciones de JavaScript. Sin embargo, usted puede establecer String.prototype.repeat() con el siguiente fragmento de código:

- -
if (!String.prototype.repeat) {
-  String.prototype.repeat = function(count) {
-    'use strict';
-    if (this == null) {
-      throw new TypeError('can\'t convert ' + this + ' to object');
-    }
-    var str = '' + this;
-    count = +count;
-    if (count != count) {
-      count = 0;
-    }
-    if (count < 0) {
-      throw new RangeError('repeat count must be non-negative');
-    }
-    if (count == Infinity) {
-      throw new RangeError('repeat count must be less than infinity');
-    }
-    count = Math.floor(count);
-    if (str.length == 0 || count == 0) {
-      return '';
-    }
-    // Ensuring count is a 31-bit integer allows us to heavily optimize the
-    // main part. But anyway, most current (August 2014) browsers can't handle
-    // strings 1 << 28 chars or longer, so:
-    if (str.length * count >= 1 << 28) {
-      throw new RangeError('repeat count must not overflow maximum string size');
-    }
-    var rpt = '';
-    for (;;) {
-      if ((count & 1) == 1) {
-        rpt += str;
-      }
-      count >>>= 1;
-      if (count == 0) {
-        break;
-      }
-      str += str;
-    }
-    return rpt;
-  }
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
{{SpecName('ES6', '#sec-string.prototype.repeat', 'String.prototype.repeat')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-string.prototype.repeat', 'String.prototype.repeat')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad en Navegadores

- -
{{Compat("javascript.builtins.String.repeat")}}
- -
 
diff --git a/files/es/web/javascript/referencia/objetos_globales/string/replace/index.html b/files/es/web/javascript/referencia/objetos_globales/string/replace/index.html deleted file mode 100644 index 680393ece1..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/replace/index.html +++ /dev/null @@ -1,202 +0,0 @@ ---- -title: String.prototype.replace() -slug: Web/JavaScript/Referencia/Objetos_globales/String/replace -tags: - - JavaScript - - Method - - Prototype - - Regular Expressions - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/replace ---- -

{{JSRef("Objetos_globales", "String")}}

- -

Resumen

- -

El método replace() devuelve una nueva cadena con algunas o todas las coincidencias de un patrón, siendo cada una de estas coincidencias reemplazadas por remplazo. El patrón puede ser una cadena o una {{jsxref("RegExp")}}, y el reemplazo puede ser una cadena o una función que será llamada para cada coincidencia. Si el patrón es una cadena, sólo la primera coincidencia será reemplazada.

- -

La cadena original permanecerá inalterada.

- -
{{EmbedInteractiveExample("pages/js/string-replace.html")}}
- -

Sintaxis

- -
cadena.replace(regexp|substr, newSubStr|function[, {{ Non-standard_inline() }} flags]);
-
- -

Parámetros

- -
-
expresionregular
-
Un objeto {{jsxref("RegExp")}} o literal. Las coincidencias son reemplazadas por ewSubSt o el valor devuelto por la función especificada.
-
- -
-
subcadena
-
Un objeto {{jsxref("String")}} que será reemplazado por nuevaSubcadena.
-
- -
-
nuevaSubcadena
-
El objeto {{jsxref("String")}} que reemplaza la subcadena que recibida desde el primer parámetro.
-
- -
-
funcion
-
Una función que será invocada para crear la nueva subcadena (para ponerla en lugar de la subcadena recibida por el primer parámetro).
-
- -
-
flags {{ non-standard_inline() }}
-
Un objeto {{jsxref("String")}} que contiene cualquier combinación de flags de la clase RegExp: g - emparejamiento global, i - ignorar mayúsculas, m - emparejar multiples líneas. Este parámetro se usa sólo si el primer parámetro es una cadena.
-
- -

Descripción

- -

Este método no cambia el objeto String sobre el que se realiza la llamada. Simplemente devuelve una nueva cadena.

- -

Para realizar una búsqueda global y reemplazarla, o se incluye el flag g en la expresión regular o si el primer parámetro es una cadena, se incluye g en el parámetro flags.

- -

Especificando una cadena como un parámetro

- -

La cadena de reemplazo puede incluir los siguientes patrones de reemplazo especiales:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PatrónInserta
$$Inserta una "$".
$&Inserta la subcadena emparejada.
$`Inserta la sección de cadena que precede a la subcadena emparejada.
$'Inserta la porción de subcadena que sigue a la subcadena emparejada.
$n o $nn Donde n o nn son dígitos decimales positivos menores a 100, inserta la subcadena emparejada de orden n del paréntesis, proporcionado por el primer argumento del objeto RegExp.
- -

Especificando una función con un parámetro

- -

Cuando se especifica una función en el segundo parámetro, la función es invocada después de que el emparejamiento se haya realizado. (El uso de una función de este modo se llama expresión lambda.)

- -

En la función, puedes generar dinámicamente la cadena que reemplaza la subcadena emparejada. El resultado de la llamada de la función se usa como valor de reemplazo.

- -

The nested function can use the matched substrings to determine the new string (newSubStr) that replaces the found substring. You get the matched substrings through the parameters of your function. The first parameter of your function holds the complete matched substring. If the first argument was a RegExp object, then the followingn parameters can be used for parenthetical matches, remembered submatch strings, wheren is the number of submatch strings in the regular expression. Finally, the last two parameters are the offset within the string where the match occurred and the string itself. For example, the following replace method returns XXzzzz - XX , zzzz.

- -
function replacer(str, p1, p2, offset, s)
-{
-  return str + " - " + p1 + " , " + p2;
-}
-var newString = "XXzzzz".replace(/(X*)(z*)/, replacer);
-console.log(newString); // XXzzzz - XX , zzzz
-
- -

Ejemplos

- -

Ejemplo: Usando global e ignore con replace

- -

En el siguiente ejemplo, la expresión regular incluye las banderas "global" e "ignore case", las cuales permiten al método replace reemplazar cada aparición de la cadena 'apples' por la cadena 'oranges'.

- -
var re = /apples/gi;
-var str = "Apples are round, and apples are juicy.";
-var newstr = str.replace(re, "oranges");
-print(newstr);
-
- -

In this version, a string is used as the first parameter and the global and ignore case flags are specified in the flags parameter.

- -
var str = "Apples are round, and apples are juicy.";
-var newstr = str.replace("apples", "oranges", "gi");
-print(newstr);
-
- -

Both of these examples print "oranges are round, and oranges are juicy."

- -

Ejemplo: Definiendo la expresión regular en replace

- -

En el siguiente ejemplo, se define la expresión regular en replace e incluye el flag de ignorar mayúsculas.

- -
var cadena = "Twas the night before Xmas...";
-var nuevaCadena = cadena.replace(/xmas/i, "Christmas");
-print(nuevaCadena);
-
- -

Esto muestra "Twas the night before Christmas..."

- -

Ejemplo: Conectando palabras en una cadena

- -

El siguiente código conecta las palabras dentro de la cadena. Para reemplazar el texto, el código usa $1 y $2 como patrones de reemplazo.

- -
var expresion = /(\w+)\s(\w+)/;
-var cadena = "John Smith";
-var nuevaCadena = cadena.replace(expresion, "$2, $1");
-print(nuevaCadena);
-
- -

Esto muestra "Smith, John".

- -

Ejemplo: Using an inline function that modifies the matched characters

- -

In this example, all occurrences of capital letters in the string are converted to lower case, and a hyphen is inserted just before the match location. The important thing here is that additional operations are needed on the matched item before it is given back as a replacement.

- -

The replacement function accepts the matched snippet as its parameter, and uses it to transform the case and concatenate the hyphen before returning.

- -
function styleHyphenFormat(propertyName)
-{
-  function upperToHyphenLower(match)
-  {
-    return '-' + match.toLowerCase();
-  }
-  return propertyName.replace(/[A-Z]/, upperToHyphenLower);
-}
-
- -

Given styleHyphenFormat('borderTop'), this returns 'border-top'.

- -

Because we want to further transform theresult of the match before the final substitution is made, we must use a function. This forces the evaluation of the match prior to the toLowerCase() method. If we had tried to do this using the match without a function, the toLowerCase() would have no effect.

- -
var newString = propertyName.replace(/[A-Z]/, '-' + '$&'.toLowerCase());  // won't work
-
- -

This is because '$&'.toLowerCase() would be evaluated first as a string literal (resulting in the same '$&') before using the characters as a pattern.

- -

Ejemplo: Reemplazando grados Fahrenheit con su equivalente Celsius

- -

El siguiente ejemplo reemplaza los grados Fahrenheit con su enquivalente en grados Celsius. Los grados Fahrenheit deberían ser un número acabado en F. La función devuelve el número Celsius acabado en C. Por ejemplo, si el número de entrada es 212F, la función devuelve 100C. Si el número es 0F, la función devuelve -17.77777777777778C.

- -

La expresión regular test revisa si para un número termina en F. El número de grados Fahrenheit es accesible a la función a través de su segundo parámetro, p1. La función establece el número Celsius basado en los grados Fahrenheit pasados en una cadena a la función f2c. Entonces f2c devuelve el número Celsius. Esta función aproxima al flag de Perl s///e.

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

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/search/index.html b/files/es/web/javascript/referencia/objetos_globales/string/search/index.html deleted file mode 100644 index 23e37234d1..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/search/index.html +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: String.prototype.search() -slug: Web/JavaScript/Referencia/Objetos_globales/String/search -tags: - - JavaScript - - Method - - Prototype - - Reference - - Regular Expressions - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/search ---- -

{{JSRef("Objetos_globales", "String")}}

- -

Resumen

- -

El método search() ejecuta una búsqueda que encaje entre una expresión regular y el objeto String desde el que se llama.

- -

Sintaxis

- -
str.search(expresionregular)
- -

Parámetros

- -
-
regexp
-
Un objeto expresión regular. Si se pasa un objeto obj que no sea una expresión regular, se convierte implicitamente en una expresión regualar usando new RegExp(obj).
-
- -

Valor devuelto

- -

El índice de la primera coincidencia entre la expresión regular y la cadena de texto proporcionada, si no se encuentra devuelve -1.

- -

Descripción

- -

Cuando se desee saber en qué casos un patrón se encuentra en una cadena de texto utiliza search() (si sólo deseas saber si existe, utiliza el método {{jsxref("RegExp.prototype.test()", "test()")}} del prototipo de RegExp); para más información (pero de ejecución más lenta) utiliza {{jsxref("String.prototype.match()", "match()")}} (similar al método {{jsxref("RegExp.prototype.exec()", "exec()")}} de las expresiones regulares).

- -

Ejemplos

- - - -

El siguiente ejemplo imprime un mensaje dependiendo de cuál sea el resultado de la evaluación.

- -
function testinput(re, str) {
-  var midstring;
-  if (str.search(re) != -1) {
-    midstring = ' contains ';
-  } else {
-    midstring = ' does not contain ';
-  }
-  console.log(str + midstring + re);
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificacionesEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial. Implementado en 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')}} 
- -

Compatibilidad con navegadores

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

Notas específicas de Gecko

- - - -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/slice/index.html b/files/es/web/javascript/referencia/objetos_globales/string/slice/index.html deleted file mode 100644 index cbfe5a716b..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/slice/index.html +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: String.prototype.slice() -slug: Web/JavaScript/Referencia/Objetos_globales/String/slice -tags: - - Cadena - - JavaScript - - Método(2) - - Prototipo - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/slice ---- -

{{JSRef("Objetos_globales", "String")}}

- -

Resumen

- -

El método slice() extrae una sección de una cadena y devuelve una cadena nueva.

- -

Sintaxis

- -
cadena.slice(inicioTrozo[, finTrozo])
-
- -

Parameters

- -
-
inicioTrozo
-
El índice basado en cero en el cual empieza la extracción.  Si es negativo, se trata como longCadena + inicioTrozo donde longCadena es la longitud de la cadena (por ejemplo, si inicioTrozo es -3 se trata como longCadena - 3)
-
- -
-
finTrozo
-
Opcional. El índice basado en cero en el que termina la extracción. Si se omite, slice extrae hasta el final de la cadena.  Si es negativo, se trata como longCadena + finTrozo donde longCadena es la longitud de la cadena (por ejemplo, si finTrozo es -3 se trata como longCadena - 3).
-
- -

Valor retornado

- -

Una nueva cadena que contiene la sección de la cadena.

- -

Descripción

- -

slice extrae el texto de una cadena y devuelve una nueva cadena. Los cambios en el texto de una cadena no afectan a la otra cadena.

- -

slice extrae hasta, pero sin incluir finalTrozo. string.slice(1,4) extrae del segundo carácter hasta el cuarto carácter (caracteres con índice 1, 2 y 3).

- -

Si se usa un índice negativo, finalTrozo indica el punto desde el final de la cadena.string.slice(2, -1) extrae desde tercer carácter hasta el último carácter de la cadena.

- -

Ejemplos

- -

Ejemplo: Uso de slice() para crear una nueva cadena

- -

El siguiente ejemplo usa slice() para crear una nueva cadena.

- -
var cadena1 = "La mañana se nos echa encima.";
-var cadena2 = cadena1.slice(3, -2);
-console.log(cadena2);
-
- -

Esto escribe:

- -
mañana se nos echa encim
- -

Uso de slice() con índices negativos

- -

El siguiente ejemplo usa slice() con índices negativos.

- -
var cad = "La mañana se nos echa encima.";
-cad.slice(-3);     // retorna 'ma.'
-cad.slice(-3, -1); // retorna 'ma'
-cad.slice(0, -1);  // retorna 'La mañana se nos echa encima'
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definición inicial. Implementado en 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')}} 
{{SpecName('ESDraft', '#sec-string.prototype.slice', 'String.prototype.slice')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad en navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/small/index.html b/files/es/web/javascript/referencia/objetos_globales/string/small/index.html deleted file mode 100644 index a8b2f302fd..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/small/index.html +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: String.prototype.small() -slug: Web/JavaScript/Referencia/Objetos_globales/String/small -tags: - - Deprecated - - HTML wrapper methods - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/small ---- -

{{JSRef("Objetos_globales", "String")}}

-

{{deprecated_header}}

-

Resumen

-

Causa que una cadena se muestra con una fuente pequeña, como si estuviese dentro de una etiqueta {{HTMLElement("small")}}.

-

Sintaxis

-
cadena.small()
-

Descripción

-

Usa el método small para formatear y mostrar una cadena en un documento.

-

Ejemplos

-

Ejemplo: Usando métodos de string para cambiar el tamaño de una cadena

-
var cadenaMundo="¡Hola mundo!"
-
-console.log(cadenaMundo.small())
-console.log(cadenaMundo.big())
-console.log(cadenaMundo.fontsize(7))
-
-

Este ejemplo produce el mismo resultado que el siguiente código HTML:

-
<small>¡Hola mundo!</small>
-<big>¡Hola mundo!</big>
-<fontsize=7>¡Hola mundo!</fontsize>
-
-

Vea También

- diff --git a/files/es/web/javascript/referencia/objetos_globales/string/split/index.html b/files/es/web/javascript/referencia/objetos_globales/string/split/index.html deleted file mode 100644 index ade291da0f..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/split/index.html +++ /dev/null @@ -1,240 +0,0 @@ ---- -title: String.prototype.split() -slug: Web/JavaScript/Referencia/Objetos_globales/String/split -tags: - - JavaScript - - Method - - Prototype - - Regular Expressions - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/split ---- -

{{JSRef("Objetos_globales", "String")}}

- -

El método split() divide un objeto de tipo String en un array (vector) de cadenas mediante la separación de la cadena en subcadenas.

- -

Sintaxis

- -
cadena.split([separador][,limite])
- -

Parámetros

- -
-
separador
-
Especifica el carácter a usar para la separación de la cadena. El separador es tratado como una cadena o como una {{jsxref("Objetos_globales/RegExp", "expresión regular", "", 1)}}. Si se omite el separador, el array devuelto contendrá un sólo elemento con la cadena completa.
-
- -
-
limite
-
Opcional. Entero que especifica un límite sobre el número de divisiones a realizar. El método split() todavía se divide en todas las concordancias del separador, pero divide la matriz devuelta en la cantidad de elementos impuesta por el limite.
-
- -

Descripción

- -

El método split() devuelve el nuevo array.

- -

Cuando se encuentra, el separador es eliminado de la cadena y las subcadenas obtenidas se devuelven en un array. Si el separador no es encontrado o se omite, el array contendrá un único elemento con la cadena original completa. Si el separador es una cadena vacía la cadena es convertida en un array de carácteres.

- -

Si el separador es una expresión regular que contiene paréntesis de captura, entonces cada vez que el separador concuerda, los resultados (incluído cualquier resultado indefinido) de los paréntesis de captura son divididos en el array resultante. Sin embargo no todos los navegadores soportan esta característica.

- -

{{Note("Cuando la cadena está vacía, split() devuelve un array que contiene una cadena vacía, en lugar de un array vacío.")}}

- -

Ejemplos

- -

Usando split()

- -

El siguiente ejemplo define una función que divide una cadena en un array de cadenas usando el separador especificado. Después de la división de la cadena, la función muestra mensajes indicando la cadena original (antes de la división), el separador usado, el número de elementos del array y los elementos individuales del array.

- -
function dividirCadena(cadenaADividir,separador) {
-   var arrayDeCadenas = cadenaADividir.split(separador);
-   document.write('<p>La cadena original es: "' + cadenaADividir + '"');
-   document.write('<br>El separador es: "' + separador + '"');
-   document.write("<br>El array tiene " + arrayDeCadenas.length + " elementos: ");
-
-   for (var i=0; i < arrayDeCadenas.length; i++) {
-      document.write(arrayDeCadenas[i] + " / ");
-   }
-}
-
-var cadenaVerso = "Oh brave new world that has such people in it.";
-var cadenaMeses = "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec";
-
-var espacio = " ";
-var coma = ",";
-
-dividirCadena(cadenaVerso, espacio);
-dividirCadena(cadenaVerso);
-dividirCadena(cadenaMeses, coma);
-
- -

Este ejemplo produce el siguiente resultado:

- -
La cadena original es: "Oh brave new world that has such people in it."
-El separador es: " "
-El array tiene 10 elementos: Oh / brave / new / world / that / has / such / people / in / it. /
-
-La cadena original es: "Oh brave new world that has such people in it."
-El separador es: "undefined"
-El array tiene 1 elementos: Oh brave new world that has such people in it. /
-
-La cadena original es: "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec"
-El separador es: ","
-El array tiene 12 elementos: Jan / Feb / Mar / Apr / May / Jun / Jul / Aug / Sep / Oct / Nov / Dec /
-
- -

Eliminar espacios de una cadena

- -

En el siguiente ejemplo, split busca 0 o más espacios seguidos de un punto y coma seguido por 0 o más espacios y, cuando los halla, elimina los espacios de la cadena. listaNombres es el array devuelto como resultado de la llamada a split.

- -
var nombres = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand ";
-document.write(nombres + "<br>" + "<br>");
-var expresionRegular = /\s*;\s*/;
-var listaNombres = nombres.split(expresionRegular);
-document.write(listaNombres);
-
- -

Esto imprime dos líneas; la primera línea imprime la cadena original, y la segunda línea imprime el array resultante.

- -
Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand
-Harry Trump,Fred Barney,Helen Rigby,Bill Abel,Chris Hand
-
- -

Devolviendo un número limitado de divisiones

- -

El el siguiente ejemplo, split busca 0 o más espacios en una cadena y devuelve las tres primeras divisiones que encuentra.

- -
var miCadena = "Hola Mundo. Cómo estás hoy?";
-var divisiones = miCadena.split(" ", 3);
-
-print(divisiones);
-
- -

Este script muestra lo siguiente:

- -
Hola,Mundo.,Cómo
-
- -

Paréntesis de captura

- -

Si el separador contiene paréntesis de capturaI los resultados que concuerden son devueltos en el array.

- -
var miCadena = 'Hola 1 mundo. Oración número 2.';
-var division = miCadena.split(/(\d)/);
-
-console.log(division);
- -
 
- -
 
- -
 
- -
 
- -

Este script muestra lo siguiente:

- -
Hola ,1, mundo. Oración número ,2,.
- -
 
- -

Dar la vuelta a una cadena usando split()

- -
var str = 'asdfghjkl';
-var strReverse = str.split('').reverse().join(''); // 'lkjhgfdsa'
-// split() retorna un array en el cual reverse() y join() pueden ser aplicados
- -
 
- -
 
- -
 
- -

Extra: usar el operador === para verificar si la cadena anterior era un palíndromo.

- -

Specifications

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
ECMAScript 3rd Edition.EstándarDefinición inicial. Implementado en 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')}} 
- -

Compatibilidad con los navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/startswith/index.html b/files/es/web/javascript/referencia/objetos_globales/string/startswith/index.html deleted file mode 100644 index c658cc80da..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/startswith/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: String.prototype.startsWith() -slug: Web/JavaScript/Referencia/Objetos_globales/String/startsWith -tags: - - ECMAScript 2015 - - JavaScript - - Method - - Prototipo - - Prototype - - Reference - - Referencia - - String - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/String/startsWith ---- -
{{JSRef}}
- -

El método startsWith() indica si una cadena de texto comienza con los caracteres de una cadena de texto concreta, devolviendo true o false según corresponda.

- -
{{EmbedInteractiveExample("pages/js/string-startswith.html")}}
- -

Sintaxis

- -
str.startsWith(stringBuscada[, posicion])
- -

Parámetros

- -
-
stringBuscada
-
Los caracteres a ser buscados al inicio de la cadena de texto.
-
posicion {{optional_inline}}
-
La posición de str en la cual debe comenzar la búsqueda de stringBuscada. El valor por defecto es 0.
-
- -

Valor devuelto

- -

true si los caracteres dados se encuentran al inicio de la cadena de texto; false en cualquier otro caso.

- -

Descripción

- -

Este método te permite saber si una cadena de texto comienza o no con otra cadena de texto. Este método distingue entre mayúsculas y minúsculas.

- -

Polyfill

- -

Este método se ha añadido a la especificación ECMAScript 2015 y podría no estar disponible aún en todas las implementaciones de JavaScript. Sin embargo, puedes utilizar un polyfill de String.prototype.startsWith() con el siguiente fragmento de 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;
-        }
-    });
-}
-
- -

Un polyfill más robusto (totalmente compatible con la especificación ES2015), pero con menos rendimiento y menos compacto está disponible en GitHub, por Mathias Bynens.

- -

Ejemplos

- -

Usando startsWith()

- -
//startswith
-var str = 'Ser, o no ser. ¡Esa es la cuestión!';
-
-console.log(str.startsWith('Ser'));           // true
-console.log(str.startsWith('no ser'));        // false
-console.log(str.startsWith('Esa es la', 16)); // true
-
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-string.prototype.startswith', 'String.prototype.startsWith')}}
- -

Compatibilidad en navegadores

- -

{{Compat("javascript.builtins.String.startsWith")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/strike/index.html b/files/es/web/javascript/referencia/objetos_globales/string/strike/index.html deleted file mode 100644 index 20ba5e9c90..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/strike/index.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: String.prototype.strike() -slug: Web/JavaScript/Referencia/Objetos_globales/String/strike -tags: - - Deprecated - - HTML wrapper methods - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/strike ---- -

{{JSRef("Objetos_globales", "String")}}

-

{{deprecated_header}}

-

Resumen

-

Causa que una cadena se muestre como texto tachado, como si estuviese dentro de una etiqueta {{HTMLElement("strike")}}.

-

Sintaxis

-
cadena.strike()
-

Descripción

-

Usa el método strike para formatear y mostrar una cadena en un documento.

-

Ejemplos

-

Ejemplo: Usando métodos de string para cambiar el formateado de una cadena

-

El siguiente ejemplo usa los métodos de string para cambiar el formateado de una cadena:

-
var cadenaMundo="¡Hola mundo!"
-
-console.log(cadenaMundo.blink())
-console.log(cadenaMundo.bold())
-console.log(cadenaMundo.italics())
-console.log(cadenaMundo.strike())
-
-

Este ejemplo produce el mismo resultado que el siguiente código HTML:

-
<blink>¡Hola mundo!</blink>
-<b>¡Hola mundo!</b>
-<i>¡Hola mundo!</i>
-<strike>¡Hola mundo!</strike>
-
-

Vea También

- diff --git a/files/es/web/javascript/referencia/objetos_globales/string/sub/index.html b/files/es/web/javascript/referencia/objetos_globales/string/sub/index.html deleted file mode 100644 index 195bca9d1e..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/sub/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: String.prototype.sub() -slug: Web/JavaScript/Referencia/Objetos_globales/String/sub -tags: - - HTML wrapper methods - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/sub ---- -

{{JSRef("Objetos_globales", "String")}}

-

Resumen

-

Causa que una cadena se muestre como subíndice, como si estuviese dentro de una etiqueta {{HTMLElement("sub")}}.

-

Sintaxis

-
cadena.sub()
-

Descripción

-

Usa el método sub junto para formatear y mostrar una cadena en un documento.

-

Ejemplos

-

Ejemplo: Usando los métodos sub y sup para formatear una cadena

-

El siguiente ejemplo usa los métodos sub y sup para formatear una cadena:

-
var superText="superscript"
-var subText="subscript"
-
-console.log("Esto es lo que un " + superText.sup() + " parece.")
-console.log("Esto es lo que un " + subText.sub() + " parece.")
-
-

Este ejemplo produce el mismo resultado que el siguiente código HTML:

-
Esto es lo que <sup>superscript</sup> parece.
-Esto es lo que <sub>subscript</sub> parece.
-
-

Vea También

- diff --git a/files/es/web/javascript/referencia/objetos_globales/string/substr/index.html b/files/es/web/javascript/referencia/objetos_globales/string/substr/index.html deleted file mode 100644 index 290d1292ab..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/substr/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: String.prototype.substr() -slug: Web/JavaScript/Referencia/Objetos_globales/String/substr -tags: - - JavaScript - - Método(2) - - Prototipo - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/substr ---- -

{{JSRef("Objetos_globales", "String")}}

- -
Advertencia: Aunque String.prototype.substr(…) no está estrictamente obsoleto (como en "eliminado de los estándares web"), se define en el anexo B de la norma ECMA-262, cuya introducción establece: - -
... Todas las características y comportamientos del lenguaje especificados en este anexo tienen una o más características indeseables y, en ausencia de uso heredado, se eliminarían de esta especificación. ... ... Los programadores no deben usar ni asumir la existencia de estas características y comportamientos al escribir un nuevo código ECMAScript.
-
- -

 

- -

Resumen

- -

El método substr() devuelve los caracteres de una cadena que comienzan en una localización especificada y de acuerdo al número de caracteres que se especifiquen.

- -

Sintaxis

- -
cadena.substr(inicio[, longitud])
- -

Parámetros

- -
-
inicio
-
Localización en la cual se empiezan a extraer caracteres. Si se da un número negativo, se trata como longCad + inicio donde  longCad es la longitud de la cadena (por ejemplo, si inicio es -3 se trata como longCad - 3).
-
- -
-
longitud
-
Opcional. El número de caracteres a extraer. Si este argumento es {{jsxref("undefined")}}, todos los caracteres desde inicio hasta el final de la cadena serán extraidos.
-
- -

Valor retornado

- -

Una nueva cadena que contiende la sección extraída de la cadena dada. Sí la longitud es 0 o un número negativo, retorna la cadena vacía.

- -

Descripción

- -

inicio es el índice de un carácter. El índice del primer carácter es 0, y el índice del último carácter es la longitud de la cadena menos 1. substr comienza extrayendo caracteres a partir de inicio y recolecta longitud  caracteres (a menos que se alcance primero el final de la cadena, en cuyo caso devuelve menos).

- -

Si inicio es positivo y es mayor o igual que la longitud de la cadena, substr() devuelve una cadena vacía.

- -

Si inicio es negativo, substr() lo usa como un índice de carácter desde el final de la cadena. Si inicio es negativo y abs(inicio) es mayor que la longitud de la cadena, substr usa 0 como índice inical. Nota: el uso descrito de valores negativos del argumento inicio no es soportado por Microsoft JScript .

- -

Si longitud es 0 o negativa, substr devuelve una cadena vacía. Si se omite longitud, inicio extrae caracteres hasta el final de la cadena.

- -

Ejemplos

- -

Ejemplo: Uso de substr()

- -
var cadena = "abcdefghij";
-
-console.log("(1,2): "    + cadena.substr(1,2));   // '(1, 2): bc'
-console.log("(-3,2): "   + cadena.substr(-3,2));  // '(-3, 2): hi'
-console.log("(-3): "     + cadena.substr(-3));    // '(-3): hij'
-console.log("(1): "      + cadena.substr(1));     // '(1): bcdefghij'
-console.log("(-20, 2): " + cadena.substr(-20,2)); // '(-20, 2): ab'
-console.log("(20, 2): "  + cadena.substr(20,2));  // '(20, 2): '
-
- -

Este script muestra:

- -
(1,2): bc
-(-3,2): hi
-(-3): hij
-(1): bcdefghij
-(-20, 2): ab
-(20, 2):
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/substring/index.html b/files/es/web/javascript/referencia/objetos_globales/string/substring/index.html deleted file mode 100644 index 9918417f95..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/substring/index.html +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: String.prototype.substring() -slug: Web/JavaScript/Referencia/Objetos_globales/String/substring -tags: - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/substring ---- -

{{JSRef("Objetos_globales", "String")}}

- -

Resumen

- -

El substring() método devuelve un subconjunto de un objeto String.

- -

Sintaxis

- -
cadena.substring(indiceA[, indiceB'])
- -

Parámetros

- -
-
indiceA
-
Un entero entre 0 y la longitud de la cadena menos 1.
-
indiceB
-
(opcional) Un entero entre 0 y la longitud de la cadena.
-
- -

Descripción

- -

substring extrae caracteres desde indiceA hasta indiceB sin incluirlo. En particular:

- - - -

Si indiceA es mayor que indiceB, entonces el efecto de substring es como si los dos argumentos se intercambiasen; por ejemplo, cadena.substring(1, 0) == cadena.substring(0, 1).

- -

Ejemplos

- -

Ejemplo: Usando substring

- -

El siguiente ejemplo usa substring para mostrar caracteres de la cadena "Mozilla":

- -
// asume una función print ya definida
-var cualquierCadena = "Mozilla";
-
-// Muestra "Moz"
-print(cualquierCadena.substring(0,3));
-print(cualquierCadena.substring(3,0));
-
-// Muestra "lla"
-print(cualquierCadena.substring(4,7));
-print(cualquierCadena.substring(7,4));
-
-// Muestra "Mozill"
-print(cualquierCadena.substring(0,6));
-print(cualquierCadena.substring(6,0));
-
-// Muestra "Mozilla"
-print(cualquierCadena.substring(0,7));
-print(cualquierCadena.substring(0,10));
-
- -

Ejemplo: Reemplazar una subcadena dentro de una cadena

- -

El siguiente ejemplo reemplaza una subcadena dentro de una cadena. Reemplazará tanto caracteres individuales como subcadenas. La llamada de la función al final del ejemplo cambia la cadena "Bravo Nuevo Mundo" por "Bravo Nueva Web".

- -
function reemplazarCadena(cadenaVieja, cadenaNueva, cadenaCompleta) {
-// Reemplaza cadenaVieja por cadenaNueva en cadenaCompleta
-
-   for (var i = 0; i < cadenaCompleta.length; i++) {
-      if (cadenaCompleta.substring(i, i + cadenaVieja.length) == cadenaVieja) {
-         cadenaCompleta= cadenaCompleta.substring(0, i) + cadenaNueva + cadenaCompleta.substring(i + cadenaVieja.length, cadenaCompleta.length);
-      }
-   }
-   return cadenaCompleta;
-}
-
-reemplazarCadena("Mundo", "Web", "Bravo Nuevo Mundo");
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/sup/index.html b/files/es/web/javascript/referencia/objetos_globales/string/sup/index.html deleted file mode 100644 index 6b8db218b6..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/sup/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: String.prototype.sup() -slug: Web/JavaScript/Referencia/Objetos_globales/String/sup -tags: - - HTML wrapper methods - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/sup ---- -

{{JSRef("Objetos_globales", "String")}}

-

Resumen

-

Causa que una cadena se muestre como superíndice, como si estuviese dentro de una etiqueta {{HTMLElement("sup")}}.

-

Sintaxis

-
cadena.sup()
-

Descripción

-

Usa el método sup junto para formatear y mostrar una cadena en un documento.

-

Ejemplos

-

Ejemplo: Usando los métodos sub y sup para formatear una cadena

-

El siguiente ejemplo usa los métodos sub y sup para formatear una cadena:

-
var textoSuper="superscript"
-var textoSub="subscript"
-
-console.log("Esto es lo que un " + textoSuper.sup() + " parece.")
-console.log("Esto es lo que un " + textoSub.sub() + " parece.")
-
-

Este ejemplo produce el mismo resultado que el siguiente código HTML:

-
Esto es lo que <sup>superscript</sup> parece.
-Esto es lo que <sub>subscript</sub> parece.
-
-

Vea También

- diff --git a/files/es/web/javascript/referencia/objetos_globales/string/tolocalelowercase/index.html b/files/es/web/javascript/referencia/objetos_globales/string/tolocalelowercase/index.html deleted file mode 100644 index 5c1eae2144..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/tolocalelowercase/index.html +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: String.prototype.toLocaleLowerCase() -slug: Web/JavaScript/Referencia/Objetos_globales/String/toLocaleLowerCase -tags: - - Cadena - - Internacionalizacion - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase ---- -
{{JSRef}}
- -
El método toLocaleLowerCase() retorna la cadena de texto desde la que se llama convertida en minúsculas, de acuerdo con cualquier localización específica de correspondencia de mayúsculas y minúsculas.
- -
 
- -
{{EmbedInteractiveExample("pages/js/string-tolocalelowercase.html")}}
- - - -

Sintaxis

- -
str.toLocaleLowerCase()
-str.toLocaleLowerCase(locale)
-str.toLocaleLowerCase([locale, locale, ...])
-
- -

Parámetros

- -
-
locale {{optional_inline}}
-
El parámetro locale indica la localización que se utilizará para convertir a minúsculas de acuerdo con culalquier correspondencia de mayúsculas y minúsculas. Si se proporcionan múltiples locales en un {{jsxref("Array")}}, se utiliza el mejor local disponible. La localización por defecto es la localización actual configurada en el host.
-
- -

Valor retornado

- -

Una nueva cadena que representa la cadena desde la que se llama convertida a minúsculas, de acuerdo con cualquier localización específica de correspondencia de mayúsculas y minúsculas.

- -

Excepciones

- - - -

Descripción

- -

El método toLocaleLowerCase() retorna la cadena de texto desde la que se llama convertida en minúsculas, de acuerdo con cualquier localización específica de correspondencia de mayúsculas y minúsculas.  toLocaleLowerCase() no afecta el valor de la cadena desde la que se llama. En la mayoría de los casos, producirá el mismo resultado que {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}}, pero para algunos locales, como el turco, cuyas correspondencias de mayúsculas y minúsculas no siguen las correpsondencias por defecto de Unicode, podría producir de un resultado diferente.

- -

Ejemplos

- -

Utilizando toLocaleLowerCase()

- -
'ALPHABET'.toLocaleLowerCase(); // 'alphabet'
-
-'\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
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Initial definition. Implemented in JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.5.4.17', 'String.prototype.toLocaleLowerCase')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.tolocalelowercase', 'String.prototype.toLocaleLowerCase')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-string.prototype.tolocalelowercase', 'String.prototype.toLocaleLowerCase')}}{{Spec2('ESDraft')}} 
{{SpecName('ES Int Draft', '#sup-string.prototype.tolocalelowercase', 'String.prototype.toLocaleLowerCase')}}{{Spec2('ES Int Draft')}}ES Intl 2017 added the locale parameter.
- -

Compatibilidad entre navegadores

- - - -

{{Compat("javascript.builtins.String.toLocaleLowerCase")}}

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/tolocaleuppercase/index.html b/files/es/web/javascript/referencia/objetos_globales/string/tolocaleuppercase/index.html deleted file mode 100644 index 7199ca3ae5..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/tolocaleuppercase/index.html +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: String.prototype.toLocaleUpperCase() -slug: Web/JavaScript/Referencia/Objetos_globales/String/toLocaleUpperCase -translation_of: Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase ---- -
{{JSRef}}
- -

El método toLocaleUpperCase() devuelve el valor de la cadena que lo llama convertido en mayúsculas, de acuerdo con las asignaciones de casos específicos de la configuración regional.

- -

Syntaxis

- -
str.toLocaleUpperCase()
-str.toLocaleUpperCase(locale)
-str.toLocaleUpperCase([locale, locale, ...])
-
- -

Parámetros

- -
-
locale {{optional_inline}}
-
El parámetro locale indica la configuración regional que se va a utilizar para convertir en mayúsculas según las asignaciones de casos específicos de la configuración regional. Si se proporcionan varios locales en un {{jsxref ("Array")}}, se utiliza la mejor configuración regional disponible. La configuración regional predeterminada es la configuración regional actual del entorno de host.
-
- -

Valor de retorno

- -

Una nueva cadena que representa la cadena de llamada convertida en mayúsculas, de acuerdo con cualquier asignación de mayúsculas de idioma específico.

- -

Exceciones

- - - -

Descripción

- -

El método toLocaleUpperCase() devuelve el valor de la cadena convertida en mayúsculas según las asignaciones de casos específicos de la configuración regional. toLocaleUpperCase() no afecta al valor de la cadena en sí. En la mayoría de los casos, esto producirá el mismo resultado que {{jsxref("String.prototype.toUpperCase()", "toUpperCase()")}}, pero para algunas localidades, como turco, cuyas asignaciones de mayúsculas y minúsculas no siguen la mayúsculas y minúsculas en Unicode, puede haber un resultado diferente.

- -

Ejemplos

- -

Usando toLocaleUpperCase()

- -
'alphabet'.toLocaleUpperCase(); // 'ALPHABET'
-
-'i\u0307'.toLocaleUpperCase('lt-LT'); // 'I'
-
-let locales = ['lt', 'LT', 'lt-LT', 'lt-u-co-phonebk', 'lt-x-lietuva'];
-'i\u0307'.toLocaleUpperCase(locales); // 'I'
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónStatusComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Initial definition. Implemented in JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.5.4.19', 'String.prototype.toLocaleUpperCase')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.tolocaleuppercase', 'String.prototype.toLocaleUpperCase')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-string.prototype.tolocaleuppercase', 'String.prototype.toLocaleUpperCase')}}{{Spec2('ESDraft')}} 
{{SpecName('ES Int Draft', '#sup-string.prototype.tolocaleuppercase', 'String.prototype.toLocaleUpperCase')}}{{Spec2('ES Int Draft')}}ES Intl 2017 added the locale parameter.
- -

Compatibilidad de navegadores

- - - -

{{Compat("javascript.builtins.String.toLocaleUpperCase")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/tolowercase/index.html b/files/es/web/javascript/referencia/objetos_globales/string/tolowercase/index.html deleted file mode 100644 index 8060f3dd1c..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/tolowercase/index.html +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: String.prototype.toLowerCase() -slug: Web/JavaScript/Referencia/Objetos_globales/String/toLowerCase -tags: - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/toLowerCase ---- -

{{JSRef("Objetos_globales", "String")}}

- -

Resumen

- -

El método toLowerCase() devuelve el valor en minúsculas de la cadena que realiza la llamada.

- -

Sintaxis

- -
cadena.toLowerCase() 
- -

Descripción

- -

El método toLowerCase devuelve el valor de la cadena convertida a minúsculas. toLowerCase no afecta al valor de la cadena en sí misma.

- -

Ejemplos

- -

Ejemplo: Usando toLowerCase

- -

El siguiente ejemplo muestra la cadena "alfabeto" en minúsculas:

- -
var textoMayusculas="ALFABETO"
-document.write(textoMayusculas.toLowerCase())
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/tosource/index.html b/files/es/web/javascript/referencia/objetos_globales/string/tosource/index.html deleted file mode 100644 index 104738c22d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/tosource/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: String.prototype.toSource() -slug: Web/JavaScript/Referencia/Objetos_globales/String/toSource -tags: - - Cadena - - JavaScript - - No estandar - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/String/toSource ---- -
{{JSRef}} {{non-standard_header}}
- -

El método toSource() devuelve una cadena que representa el código fuente del objeto.

- -

Sintaxis

- -
String.toSource()
-str.toSource()
-
- -

Valor devuelto

- -

Una cadena que representa el código fuente del objeto.

- -

Descripción

- -

El método toSource() devuelve los siguientes valores:

- -

Para el objeto incorporado {{jsxref("String")}}, toSource() devuelve la siguiente cadena indicando que el código fuente no está disponible:

- -
function String() {
-    [native code]
-}
-
- -

Para instancias de {{jsxref("String")}} o cadenas literales, toSource() devuelve una cadena representando el código fuente.

- -

Este método usualmente es llamado internamente por JavaScript y no explícitamente en código.

- -

Especificaciones

- -

No es parte de ningún estándar. Implementado en JavaScript 1.3.

- -

Compatibilidad entre navegadores

- - - -

{{Compat("javascript.builtins.String.toSource")}}

- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/tostring/index.html b/files/es/web/javascript/referencia/objetos_globales/string/tostring/index.html deleted file mode 100644 index 89f53666b1..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/tostring/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: String.prototype.toString() -slug: Web/JavaScript/Referencia/Objetos_globales/String/toString -tags: - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/toString ---- -

{{JSRef("Objetos_globales", "String")}}

-

Resumen

-

El toString() método devuelve una cadena que representa al objeto especificado.

-

Sintaxis

-
cadena.toString() 
-

Descripción

-

El objeto String sobreescribe el método toString del objeto {{jsxref("Object")}} object; no hereda {{jsxref("Object.toString()")}}. Para objetos String, el método toString devuelve una cadena que representa al objeto.

-

Ejemplos

-

Ejemplo: Usando toString

-

El siguiente ejemplo muestra el valor cadena de un objeto String:

-
cadena = new String("Hello world");
-alert(cadena.toString())      // Displays "Hello world"
-
-

Vea También

- diff --git a/files/es/web/javascript/referencia/objetos_globales/string/touppercase/index.html b/files/es/web/javascript/referencia/objetos_globales/string/touppercase/index.html deleted file mode 100644 index 77b05b28b4..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/touppercase/index.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: String.prototype.toUpperCase() -slug: Web/JavaScript/Referencia/Objetos_globales/String/toUpperCase -tags: - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/toUpperCase ---- -

{{JSRef("Objetos_globales", "String")}}

- -

Resumen

- -

El toUpperCase() método devuelve el valor convertido en mayúsculas de la cadena que realiza la llamada.

- -

Sintaxis

- -
cadena.toUpperCase() 
- -

Descripción

- -

El método toUpperCase devuelve el valor de la cadena convertida a mayúsculas. toUpperCase no afecta al valor de la cadena en sí mismo.

- -

Ejemplos

- -

Ejemplo: Usando toUpperCase

- -

El siguiente ejemplo muestra la cadena "ALPHABET":

- -
console.log( "alphabet".toUpperCase() ); // "ALPHABET"
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/trim/index.html b/files/es/web/javascript/referencia/objetos_globales/string/trim/index.html deleted file mode 100644 index d958d713eb..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/trim/index.html +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: String.prototype.trim() -slug: Web/JavaScript/Referencia/Objetos_globales/String/Trim -translation_of: Web/JavaScript/Reference/Global_Objects/String/Trim ---- -
{{JSRef("Global_Objects", "String")}}
- -

Resumen

- -

El método trim( ) elimina los espacios en blanco en ambos extremos del string. Los espacios en blanco en este contexto, son todos los caracteres sin contenido (espacio, tabulación, etc.) y todos los caracteres de nuevas lineas (LF,CR,etc.).

- -

Sintaxis

- -
str.trim()
- -

Una nueva cadena que representa la cadena de llamada sin espacios en blanco de ambos extremos.

- -

Descripción

- -

El método trim( ) devuelve la cadena de texto despojada de los espacios en blanco en ambos extremos. El método no afecta al valor de la cadena de texto.

- -

Ejemplos

- -

Ejemplo: Uso de trim()

- -

El siguiente ejemplo muestra la cadena de texto en minúsculas 'foo':

- -
var orig = '   foo  ';
-console.log(orig.trim()); // 'foo'
-
-// Otro ejemplo de .trim() eliminando el espacio en blanco sólo de un lado.
-
-var orig = 'foo    ';
-console.log(orig.trim()); // 'foo'
-
- -

Polyfill

- -

Ejecutar el siguiente código antes de cualquier otro código creará un trim ( ) si este no está disponible de manera nativa.

- -
if (!String.prototype.trim) {
-  (function() {
-    // Make sure we trim BOM and NBSP
-    var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
-    String.prototype.trim = function() {
-      return this.replace(rtrim, '');
-    };
-  })();
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
{{SpecName('ES5.1', '#sec-15.5.4.20', 'String.prototype.trim')}}{{Spec2('ES5.1')}} -

Definición inicial. Implementado en JavaScript 1.8.1.

-
{{SpecName('ES6', '#sec-string.prototype.trim', 'String.prototype.trim')}}{{Spec2('ES6')}} 
- -

Compatibilidad en Navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte Básico{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.9.1")}}{{CompatIE("9")}}{{CompatOpera("10.5")}}{{CompatSafari("5")}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/trimend/index.html b/files/es/web/javascript/referencia/objetos_globales/string/trimend/index.html deleted file mode 100644 index 6252141adf..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/trimend/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: String.prototype.trimEnd() -slug: Web/JavaScript/Referencia/Objetos_globales/String/trimEnd -tags: - - Espacios en blanco - - JavaScript - - Métodos - - Prototype - - String - - Texto - - cadenas de texto -translation_of: Web/JavaScript/Reference/Global_Objects/String/trimEnd ---- -
{{JSRef}}
- -

El método trimEnd() elimina los espacios en blanco al final de una cadena de carácteres. trimRight() es el alias de este método.

- -
{{EmbedInteractiveExample("pages/js/string-trimend.html")}}
- - - -

Sintaxis

- -
str.trimEnd();
-str.trimRight();
- -

Valor de retorno

- -

Una nueva cadena de texto que representa la cadena de texto llamada sin espacios en blanco de su extremo (derecho).

- -

Descripción

- -

trimEnd() / trimRight() Los metodos devuelven una cadena de texto sin espacios en blanco desde su extremo derecho. trimEnd() ó trimRight() no afectan el valor de la cadena de texto en sí.

- -

Superposición

- -

Por coherencia de funciones como {{jsxref("String.prototype.padEnd")}} el nombre del método estandar es trimEnd. Sin embargo por compatibilidad web, trimRight permanece como un alias para trimEnd. En algunos motores esto significa: 

- -
String.prototype.trimRight.name === "trimEnd";
- -

Ejemplo

- -

Usando trimEnd()

- -

El siguiente ejemplo muestra la cadena de texto en minusculas '   foo':

- -
var str = '   foo  ';
-
-console.log(str.length); // 8
-
-str = str.trimEnd();
-console.log(str.length); // 6
-console.log(str);        // '   foo'
-
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-string.prototype.trimend', 'String.prototype.trimEnd')}}
- -

Compatibilidad en Navegadores

- - - -

{{Compat("javascript.builtins.String.trimEnd")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/string/valueof/index.html b/files/es/web/javascript/referencia/objetos_globales/string/valueof/index.html deleted file mode 100644 index b287c4d774..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/string/valueof/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: String.prototype.valueOf() -slug: Web/JavaScript/Referencia/Objetos_globales/String/valueOf -tags: - - JavaScript - - Method - - Prototype - - String -translation_of: Web/JavaScript/Reference/Global_Objects/String/valueOf ---- -

{{JSRef("Objetos_globales", "String")}}

-

Resumen

-

The valueOf() método devuelve el valor primitivo de un objeto String.

-

Sintaxis

-
caneda.valueOf() 
-

Descripción

-

El método valueOf de String devuelve el valor primitivo de un objeto String como un tipo de dato cadena. Este valor es equivalente a String.toString.

-

Normalmente este método es llamado internamente por JavaScript y no en el código.

-

Ejemplos

-

Ejemplo: Usando valueOf

-
cadena = new String("Hello world");
-alert(cadena.valueOf())          // Displays "Hello world"
-
-

Vea También

- diff --git a/files/es/web/javascript/referencia/objetos_globales/symbol/for/index.html b/files/es/web/javascript/referencia/objetos_globales/symbol/for/index.html deleted file mode 100644 index 1111e49b7a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/symbol/for/index.html +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: Symbol.for() -slug: Web/JavaScript/Referencia/Objetos_globales/Symbol/for -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/for ---- -
{{JSRef}}
- -

El método Symbol.for(key) busca símbolos existentes en el runtime global del registro de symbols con la key enviada cómo argumento y devuelve el symbol si fue encontrada. Sino, un nuevo symbol es creado en el registro global de symbols con dicha key .

- -

Syntax

- -
Symbol.for(key);
- -

Parámetros

- -
-
key
-
String, requirido. La key para el símbolo (y también usada para la descripción del Symbol).
-
- -

Valor de retorno

- -

Un Symbol existente para la key enviada si se encuentra, un nuevo Symbol creado para la key si no es encontrado.

- -

Descripción

- -

A diferencia de Symbol(),  la función Symbol.for() crea un symbol disponible el registro global de symbols.

- -

Sin embargo, Symbol.for() no crea un nuevo symbol en cada llamada: primero chequea si existe un symbol para la key en el registro y sólo crea un nuevo symbol si la key no es encontrada.

- -

El registro global de symbol es una lista con la siguiente estructura (inicializada vacía):

- - - - - - - - - - - - - - - - - -
Estructura registro global de symbol
Field nameValue
[[key]]Un string usado como key para identifcar al símbolo.
[[symbol]]El symbol que es guardado globalmente.
- -

Examples

- -
Symbol.for('foo'); // crea un nuevo global symbol
-Symbol.for('foo'); // devuelve el symbol creado
-
-// El mismo symbol global, pero no localmente
-Symbol.for('bar') === Symbol.for('bar'); // true
-Symbol('bar') === Symbol('bar'); // false
-
-// La key es usada en la descripción
-var sym = Symbol.for('mario');
-sym.toString(); // "Symbol(mario)"
-
- -

Es una buena práctica agregar un prefijo a los symbols para evitar conflictos con otras librerias del código:

- -
Symbol.for('mdn.foo');
-Symbol.for('mdn.bar');
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-symbol.for', 'Symbol.for')}}{{Spec2('ES2015')}}Definición inicial
{{SpecName('ESDraft', '#sec-symbol.for', 'Symbol.for')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad entre exploradores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{ CompatChrome(40) }}{{CompatVersionUnknown}}{{ CompatGeckoDesktop("36.0") }}{{CompatNo}}{{CompatNo}}9
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{ CompatGeckoMobile("36.0") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/symbol/hasinstance/index.html b/files/es/web/javascript/referencia/objetos_globales/symbol/hasinstance/index.html deleted file mode 100644 index 9149aeda00..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/symbol/hasinstance/index.html +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Symbol.hasInstance -slug: Web/JavaScript/Referencia/Objetos_globales/Symbol/hasInstance -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance ---- -
{{JSRef}}
- -

El bien conocido símbolo Symbol.hasInstance es usado para determinar si un constructor reconoce un objeto como su instancia. El comportamiento del operador {{jsxref("Operators/instanceof", "instanceof")}} puede ser personalizado con este símbolo.

- -
{{js_property_attributes(0,0,0)}}
- -

Ejemplos

- -

Usted puede implementar un comportamiento personalizado para el operador instanceof tal que así:

- -
class MyArray {
-  static [Symbol.hasInstance](instance) {
-    return Array.isArray(instance);
-  }
-}
-console.log([] instanceof MyArray); // true
- -

Specifications

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES2015', '#sec-symbol.hasinstance', 'Symbol.hasInstance')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-symbol.hasinstance', 'Symbol.hasInstance')}}{{Spec2('ESDraft')}} 
- -

Browser compatibility

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(51)}}{{CompatVersionUnknown}}{{ CompatGeckoDesktop(50) }}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{ CompatGeckoMobile(50) }}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/symbol/index.html b/files/es/web/javascript/referencia/objetos_globales/symbol/index.html deleted file mode 100644 index ef21b5fb6c..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/symbol/index.html +++ /dev/null @@ -1,364 +0,0 @@ ---- -title: Symbol -slug: Web/JavaScript/Referencia/Objetos_globales/Symbol -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol ---- -
{{JSRef}}
- -

Symbol es un tipo de datos cuyos valores son únicos e immutables. Dichos valores pueden ser utilizados como identificadores (claves) de las propiedades de los objetos.  Cada valor del tipo Symbol tiene asociado un valor del tipo String o Undefined que sirve únicamente como descripción del símbolo.

- -

La función Symbol {{Glossary("Primitive", "primitive data type")}} es el constructor de valores del tipo Symbol. Cuando Symbol es llamado como función nos devuelve una nuevo valor del tipo Symbol. El constructor Symbol no debe ser usado con el operador new. Tampoco debe ser extendido mediante clases.

- - - -

Sintaxis

- -
Symbol([description])
- -

Parametros

- -
-
Descripcion {{optional_inline}}
-
Es un valor opcional de tipo String. Únicamente sirve como descripción del símbolo que puede ser útil para depurar. No permite el acceso al símbolo que describe.
-
- -

Descripción

- -

Para crear un nuevo símbolo, simplemente escribimos  Symbol(), opcionalmente  con un argumento de tipo String que constituiría la descripción del símbolo:

- -
var sym1 = Symbol();
-var sym2 = Symbol("foo");
-var sym3 = Symbol("foo");
-
- -

El código anterior crea tres símbolos nuevos. Hay que destacar que  Symbol("foo") no convierte la cadena "foo" en un símbolo, sino que crea un símbolo nuevo que tiene la misma descripción.

- -
Symbol("foo") === Symbol("foo"); // false
- -

La siguiente sintaxis con el operador {{jsxref("Operators/new", "new")}} lanzará un {{jsxref("TypeError")}}:

- -
var sym = new Symbol(); // TypeError
- -

Esto evita la creación de un objeto envolvente explícito de Symbol en lugar de un nuevo valor de tipo símbolo. Si realmente se desea crear un Symbol wrapper object,  podemos usar la función Object():

- -
var sym = Symbol("foo");
-typeof sym;     // "symbol"
-var symObj = Object(sym);
-typeof symObj;  // "object"
-
- -

Símbolos compartidos en el registro global de símbolos

- -

La sintaxis anteriormente descrita que usa la función Symbol() no creara un símbolo global disponible para toda el código base. Para crear símbolos accesibles a través de los archivos incluso a través de realms (cada uno de los cuales tiene su propio global scope) es necesario utilizar los métodos {{jsxref("Symbol.for()")}} y {{jsxref("Symbol.keyFor()")}} para crear y acceder a los símbolos desde un registro global de valores del tipo Symbol.

- -

Encontrando las claves de tipo símbolo de un objeto

- -

El método {{jsxref("Object.getOwnPropertySymbols()")}} devuelve un array con los símbolos que sirven como claves de las propiedades propias de un objeto. Hay que destacar que cada objeto es inicializado sin propiedades propias con claves de tipo Symbol, así que este array estará vacio a menos que se hayan creado explicitamente propiedades con clave de tipo símbolo en el objeto.

- -

Propiedades

- -
-
Symbol.length
-
La propiedad length cuyo valor es 0 para todos los símbolos.
-
{{jsxref("Symbol.prototype")}}
-
Representa el prototipo constructor Symbol. Es un objeto ordinario.
-
- -

Símbolos bien conocidos

- -

JavaScript tiene algunos símbolos incorporados que representan comportamientos internos del lenguaje que no fueron expuestos a los programadores antes de ECMAScript 6. Se accede a los dichos símbolos a través de las siguientes propiedades del constructor Symbol.

- -

Símbolo de iteración

- -
-
{{jsxref("Symbol.iterator")}}
-
Los objetos que implementen la interfaz Iterable deben tener una propiedad que tenga como clave este símbolo. Dicha propiedad debe ser una función que devuelva un objeto que implemente la interfaz Iterator.  Usado por for...of.
-
- -

Símbolos de expresiones regulares

- -
-
{{jsxref("Symbol.match")}}
-
Un método que iguala a un String, también usado para determinar si un objeto puede ser usado como una expresión regular. Usado por {{jsxref("String.prototype.match()")}}.
-
{{jsxref("Symbol.replace")}}
-
Un método que reemplaza las subcadenas que coinciden con una cadena. Utilizado por {{jsxref("String.prototype.replace()")}}.
-
{{jsxref("Symbol.search")}}
-
Un método que devuelve el índice dentro de una cadena que coincide con la expresión regular. Utilizado por {{jsxref("String.prototype.search()")}}.
-
{{jsxref("Symbol.split")}}
-
Un método que separa una cadena en los índices que coincide una expresión regular. Utilizado por {{jsxref("String.prototype.split()")}}.
-
- -

Otros símbolos

- -
-
{{jsxref("Symbol.hasInstance")}}
-
Un método que determina si un objeto constructor reconoce al objeto como su instancia. Utilizado por {{jsxref("Operators/instanceof", "instanceof")}}.
-
{{jsxref("Symbol.isConcatSpreadable")}}
-
Un valor booleano que indica si un objeto debe ser aplanado a sus elementos de matriz. Usado por {{jsxref("Array.prototype.concat()")}}.
-
{{jsxref("Symbol.unscopables")}}
-
An Array of string values that are property values. These are excluded from the with environment bindings of the associated objects.
-
{{jsxref("Symbol.species")}}
-
Una función constructor utilizada para crear objetos derivados.
-
{{jsxref("Symbol.toPrimitive")}}
-
Un método para convertir un objeto a su valor primitivo.
-
{{jsxref("Symbol.toStringTag")}}
-
Un método para definir la descripción por defecto de un objeto. Usado por {{jsxref("Object.prototype.toString()")}}.
-
- -

Métodos

- -
-
{{jsxref("Symbol.for()", "Symbol.for(key)")}}
-
Searches for existing symbols with the given key and returns it if found. Otherwise a new symbol gets created in the global symbol registry with this key.
-
{{jsxref("Symbol.keyFor", "Symbol.keyFor(sym)")}}
-
Retrieves a shared symbol key from the global symbol registry for the given symbol.
-
- -

Symbol prototype

- -

All Symbols inherit from {{jsxref("Symbol.prototype")}}.

- -

Propiedades

- -

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

- -

Métodos

- -

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

- -

Ejemplos

- -

Usando el operador typeof con  symbols

- -

El operador {{jsxref("Operators/typeof", "typeof")}} puede ayudar a identificar los Symbol.

- -
typeof Symbol() === 'symbol'
-typeof Symbol('foo') === 'symbol'
-typeof Symbol.iterator === 'symbol'
-
- -

Symbol type conversions

- -

Some things to note when working with type conversion of symbols.

- - - -

Symbols y el iterador for...in

- -

Symbols are not visible in for...in iterations. In addition, {{jsxref("Object.getOwnPropertyNames()")}} will not return symbol object properties, however, you can use {{jsxref("Object.getOwnPropertySymbols()")}} to get these.

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

Symbols y JSON.stringify()

- -

Symbol-keyed properties will be completely ignored when using JSON.stringify():

- -
JSON.stringify({[Symbol("foo")]: "foo"});
-// '{}'
- -

For more details, see {{jsxref("JSON.stringify()")}}.

- -

Symbol wrapper objects as property keys

- -

When a Symbol wrapper object is used as a property key, this object will be coerced to its wrapped symbol:

- -
var sym = Symbol("foo");
-var obj = {[sym]: 1};
-obj[sym];            // 1
-obj[Object(sym)];    // still 1
-
- -

Especificaciones

- - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES6', '#sec-symbol-objects', 'Symbol')}}{{Spec2('ES6')}}Initial definition
- -

Compatibilidad del navegador

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(38)}}{{CompatGeckoDesktop("36.0")}}{{CompatNo}}259
Symbol.iterator (@@iterator){{CompatChrome(38)}}{{CompatGeckoDesktop("36.0")}}{{CompatNo}}259
Symbol.unscopables (@@unscopables){{CompatChrome(38)}}{{CompatNo}}{{CompatNo}}259
Symbol.match (@@match){{CompatNo}}{{CompatGeckoDesktop("40.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
Symbol.species (@@species){{CompatNo}}{{CompatGeckoDesktop("41.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
Symbol.toPrimitive (@@toPrimitive){{CompatNo}}{{CompatGeckoDesktop("44.0")}}{{CompatNo}}{{CompatNo}}{{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}}259
Symbol.iterator (@@iterator){{CompatNo}}{{CompatChrome(38)}}{{ CompatGeckoMobile("36.0") }}{{CompatNo}}259
Symbol.unscopables (@@unscopables){{CompatNo}}{{CompatChrome(38)}}{{CompatNo}}{{CompatNo}}259
Symbol.match (@@match){{CompatNo}}{{CompatNo}}{{ CompatGeckoMobile("40.0") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
Symbol.species (@@species){{CompatNo}}{{CompatNo}}{{ CompatGeckoMobile("41.0") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
Symbol.toPrimitive (@@toPrimitive){{CompatNo}}{{CompatNo}}{{ CompatGeckoMobile("44.0") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
Other well-known symbols{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

Mira también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/symbol/iterator/index.html b/files/es/web/javascript/referencia/objetos_globales/symbol/iterator/index.html deleted file mode 100644 index 4f9e0212cc..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/symbol/iterator/index.html +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: Symbol.iterator -slug: Web/JavaScript/Referencia/Objetos_globales/Symbol/iterator -tags: - - ECMAScript6 - - JavaScript - - Property - - Symbol -translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/iterator ---- -
{{JSRef}}
- -

El símbolo Symbol.iterator especifica al iterador por defecto de un objeto. Es utilizado por el bucle {{jsxref("Sentencias/for","for")}}.

- -
{{EmbedInteractiveExample("pages/js/symbol-iterator.html")}}
- - - -
{{js_property_attributes(0,0,0)}}
- -

Descripción

- -

En cualquier situación donde se necesita iterar un objeto (por ejemplo al inicio de un bucle for..of), su método @@iterator es invocado sin argumentos, y el iterador regresado es utilizador para obtener los valores a iterar.

- -

Algunos tipos integrados cuentan con un comportamiento de iterar por defecto, mientras que otros tipos (como {{jsxref("Object")}}) no. Los tipos integrados con un método @@iterator son:

- - - -

Ver Protocolos de iteración para más información.

- -

Ejemplos

- -

Iterables definidos por el usuario

- -

Podemos definir nuestros propios iterables de la siguiente forma:

- -
var myIterable = {}
-myIterable[Symbol.iterator] = function* () {
-    yield 1;
-    yield 2;
-    yield 3;
-};
-[...myIterable] // [1, 2, 3]
-
- -

Iterables mal formados

- -

Si un método iterador @@iterator no devuelve un objeto iterador, es un iterable mal formado. Usarlo como tal es probable que genere excepciones en tiempo de ejecución, o comportamientos inesperados.

- -
var nonWellFormedIterable = {}
-nonWellFormedIterable[Symbol.iterator] = () => 1
-[...nonWellFormedIterable] // TypeError: [] is not a function
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificacióbEstadoComentario
{{SpecName('ES2015', '#sec-symbol.iterator', 'Symbol.iterator')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-symbol.iterator', 'Symbol.iterator')}}{{Spec2('ESDraft')}}
- -

Compatibilidad en navegadores

- - - -

{{Compat("javascript.builtins.Symbol.iterator")}}

- -

Temas relacionados

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/syntaxerror/index.html b/files/es/web/javascript/referencia/objetos_globales/syntaxerror/index.html deleted file mode 100644 index 92bf3f4991..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/syntaxerror/index.html +++ /dev/null @@ -1,176 +0,0 @@ ---- -title: SyntaxError -slug: Web/JavaScript/Referencia/Objetos_globales/SyntaxError -tags: - - Constructor - - Error - - JavaScript - - SyntaxError -translation_of: Web/JavaScript/Reference/Global_Objects/SyntaxError ---- -
{{JSRef}}
- -

El objeto SyntaxError representa un error cuando se trata de interpretar codigo sintacticamente invalido.

- -

Descripción

- -

Un SyntaxError es lanzado cuando el motor de JavaScript se encuentra con partes de código que no forman parte de la sintaxtis del lenguaje al momento analizar el código.

- -

Sintaxis

- -
new SyntaxError([mensaje[, nombreArchivo[, numeroLinea]]])
- -

Parametros

- -
-
mensaje
-
Opcional. Descripción legible del error.
-
nombreArchivo {{non-standard_inline}}
-
Opcional. El nombre del archivo que contiene el código que causó la excepción.
-
numeroLinea {{non-standard_inline}}
-
Opcional. El numero de linea del código que causó la excepción.
-
- -

Propiedades

- -
-
{{jsxref("SyntaxError.prototype")}}
-
Permite el agregado de propiedades al objeto SyntaxError.
-
- -

Metodos

- -

El objeto global SyntaxError no contiene metodos propios, sin embargo, hereda algunos metodos debido a la cadena de prototipos.

- -

Instancias de SyntaxError

- -

Propiedades

- -
{{page('/es/docs/Web/JavaScript/Referencia/Objetos_globales/SyntaxError/prototype', 'Propiedades')}}
- -

Metodos

- -
{{page('/es/docs/Web/JavaScript/Referencia/Objetos_globales/SyntaxError/prototype', 'Metodos')}}
- -

Ejemplos

- -

Capturando un SyntaxError

- -
try {
-  eval('hoo bar');
-} catch (e) {
-  console.log(e instanceof SyntaxError); // true
-  console.log(e.message);                // "missing ; before statement"
-  console.log(e.name);                   // "SyntaxError"
-  console.log(e.fileName);               // "Scratchpad/1"
-  console.log(e.lineNumber);             // 1
-  console.log(e.columnNumber);           // 4
-  console.log(e.stack);                  // "@Scratchpad/1:2:3\n"
-}
-
- -

Creando un SyntaxError

- -
try {
-  throw new SyntaxError('Hola', 'unArchivo.js', 10);
-} catch (e) {
-  console.log(e instanceof SyntaxError); // true
-  console.log(e.message);                // "Hola"
-  console.log(e.name);                   // "SyntaxError"
-  console.log(e.fileName);               // "unArchivo.js"
-  console.log(e.lineNumber);             // 10
-  console.log(e.columnNumber);           // 0
-  console.log(e.stack);                  // "@Scratchpad/2:11:9\n"
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES3')}}{{Spec2('ES3')}}Initial definition.
{{SpecName('ES5.1', '#sec-15.11.6.4', 'SyntaxError')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-syntaxerror', 'SyntaxError')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-syntaxerror', 'SyntaxError')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con Navegarores

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

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/syntaxerror/prototype/index.html b/files/es/web/javascript/referencia/objetos_globales/syntaxerror/prototype/index.html deleted file mode 100644 index 2de491bc21..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/syntaxerror/prototype/index.html +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: SyntaxError.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/SyntaxError/prototype -tags: - - Error - - JavaScript - - Property - - Prototype - - SyntaxError -translation_of: Web/JavaScript/Reference/Global_Objects/SyntaxError -translation_of_original: Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype ---- -
{{JSRef}}
- -

La propiedad SyntaxError.prototype representa el prototipo para el constructor {{jsxref("SyntaxError")}}.

- -

Descripción

- -

Todas las instancias de {{jsxref("SyntaxError")}} son heredadas de SyntaxError.prototype. Puedes usar el prototipo para agregar propiedades o metodos a todas las instancias.

- -

Propiedades

- -
-
SyntaxError.prototype.constructor
-
Especifica la funcion que creó una instancia del prototipo.
-
{{jsxref("Error.prototype.message", "SyntaxError.prototype.message")}}
-
Mensaje de error. A pesar de que ECMA-262 especifica que {{jsxref("SyntaxError")}} debe proveer su propia propiedad message , en SpiderMonkey, es heredada de {{jsxref("Error.prototype.message")}}.
-
{{jsxref("Error.prototype.name", "SyntaxError.prototype.name")}}
-
Error name. Inherited from {{jsxref("Error")}}.
-
{{jsxref("Error.prototype.fileName", "SyntaxError.prototype.fileName")}}
-
Ruta al archivo que produjo el error. Heredada de {{jsxref("Error")}}.
-
{{jsxref("Error.prototype.lineNumber", "SyntaxError.prototype.lineNumber")}}
-
Numero de linea en el archivo que produjo el error. Heredada de {{jsxref("Error")}}.
-
{{jsxref("Error.prototype.columnNumber", "SyntaxError.prototype.columnNumber")}}
-
Numero de columna en la linea que produjo el error. Heredada de {{jsxref("Error")}}.
-
{{jsxref("Error.prototype.stack", "SyntaxError.prototype.stack")}}
-
Stack trace. Heredada de {{jsxref("Error")}}.
-
- -

Metodos

- -

A pesar de que el objeto prototipo de {{jsxref("SyntaxError")}} no contiene metodos propios, las instancias de {{jsxref("SyntaxError")}} heredan algunos metodos debido a la cadena de prototipos.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES3')}}{{Spec2('ES3')}}Initial definition.
{{SpecName('ES5.1', '#sec-15.11.7.6', 'NativeError.prototype')}}{{Spec2('ES5.1')}}Defined as NativeError.prototype.
{{SpecName('ES6', '#sec-nativeerror.prototype', 'NativeError.prototype')}}{{Spec2('ES6')}}Defined as NativeError.prototype.
{{SpecName('ESDraft', '#sec-nativeerror.prototype', 'NativeError.prototype')}}{{Spec2('ESDraft')}}Defined as NativeError.prototype.
- -

Compatibilidad con 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}}
-
- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/typedarray/buffer/index.html b/files/es/web/javascript/referencia/objetos_globales/typedarray/buffer/index.html deleted file mode 100644 index 579f8af9bd..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/typedarray/buffer/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: TypedArray.prototype.buffer -slug: Web/JavaScript/Referencia/Objetos_globales/TypedArray/buffer -tags: - - Buffer - - JavaScript - - Propiedad -translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/buffer ---- -
{{JSRef}}
- -

La propiedad de acceso buffer representa el {{jsxref("ArrayBuffer")}} referenciada por un TypedArray en tiempo de construcción.

- -

Sintaxis

- -
typedArray.buffer
- -

Descripción

- -

La propiedad buffer es una propiedad de acceso cuya función set accessor es undefined, significa que tu sólo puedes leer esta propiedad. El valor es establecido cuando TypedArray se construye y no puede ser cambiado. TypedArray es uno de los TypedArray objects.

- -

Ejemplos

- -

Usando la propiedad buffer

- -
var buffer = new ArrayBuffer(8);
-var uint16 = new Uint16Array(buffer);
-uint16.buffer; // ArrayBuffer { byteLength: 8 }
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
{{SpecName('ES6', '#sec-get-%typedarray%.prototype.buffer', 'TypedArray.prototype.buffer')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-get-%typedarray%.prototype.buffer', 'TypedArray.prototype.buffer')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad del navegador

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico7.0{{ CompatGeckoDesktop("2") }}1011.65.1
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico4.0{{CompatVersionUnknown}}{{ CompatGeckoMobile("2") }}1011.64.2
-
- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/typedarray/index.html b/files/es/web/javascript/referencia/objetos_globales/typedarray/index.html deleted file mode 100644 index 644b28c081..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/typedarray/index.html +++ /dev/null @@ -1,317 +0,0 @@ ---- -title: TypedArray -slug: Web/JavaScript/Referencia/Objetos_globales/TypedArray -tags: - - Clase - - Class - - JavaScript - - TypedArray - - TypedArrays -translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray ---- -
{{JSRef}}
- -

Un objeto TypedArray describe una vista similar a un arreglo de un búfer de datos binarios subyacente. No existe una propiedad global denominada TypedArray, ni existe un constructor TypedArray directamente visible. En cambio, hay una serie de diferentes propiedades globales, cuyos valores son constructores de arreglos tipados para tipos de elementos específicos, que se enumeran a continuación. En las siguientes páginas, encontrarás propiedades y métodos comunes que se pueden utilizar con cualquier arreglo tipado que contenga elementos de cualquier tipo.

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

Descripción

- -

ECMAScript 2015 define un constructor TypedArray que sirve como [[Prototype]] de todos los constructores TypedArray. Este constructor no está expuesto directamente: no existe una propiedad global %TypedArray% o TypedArray. Solo es accesible directamente a través de Object.getPrototypeOf(Int8Array) y similares. Todos los constructores de TypedArray heredan propiedades comunes de la función constructora %TypedArray%. Además, todos los prototipos de arreglos con tipo (TypedArray.prototype) tienen %TypedArray%.prototype como su [[Prototype]].

- -

El constructor %TypedArray% por sí solo no es particularmente útil. Llamarlo o usarlo en una expresión new arrojará un {{jsxref("TypeError")}}, excepto cuando se usa durante la creación de objetos en motores JS que admiten subclases. Actualmente no existen tales motores, por lo que %TypedArray% solo es útil para rellenar funciones o propiedades en todos los constructores TypedArray.

- -

Al crear una instancia de TypedArray (p. ej., Int8Array), se crea un arreglo de búfer internamente en la memoria o, si se proporciona un objeto ArrayBuffer como argumento del constructor, entonces se usa en su lugar. La dirección del búfer se guarda como una propiedad interna de la instancia y todos los métodos de %TypedArray%.prototype, es decir, establecer el valor y obtener valor, etc.., operan en esa dirección del arreglo de búfer.

- -

Objetos TypedArray

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TipoIntervalo de valoresTamaño en bytesDescripciónTipo de IDL webTipo C equivalente
{{jsxref("Int8Array")}}-128 a 1271Dos enteros complementarios de 8 bits con signobyteint8_t
{{jsxref("Uint8Array")}}0 a 2551Entero de 8-bit sin signooctetuint8_t
{{jsxref("Uint8ClampedArray")}}0 a 2551Entero de 8 bits sin signo (sujeto)octetuint8_t
{{jsxref("Int16Array")}}-32768 a 327672Dos enteros complementarios de 16 bits con signoshortint16_t
{{jsxref("Uint16Array")}}0 a 655352Entero de 16 bits sin signoShort sin signouint16_t
{{jsxref("Int32Array")}}-2147483648 a 21474836474dos enteros complementarios de 32 bits con signolongint32_t
{{jsxref("Uint32Array")}}0 a 42949672954Enteros de 32 bits sin signolong sin signouint32_t
{{jsxref("Float32Array")}}1.2×10-38 a 3.4×10384Número de coma flotante IEEE de 32 bits (7 dígitos significativos, p. ej., 1.1234567)float sin restriccionesfloat
{{jsxref("Float64Array")}}5.0×10-324 a 1.8×103088Número de coma flotante IEEE de 64 bits (16 dígitos significativos, p. Ej., 1.123...15)doble sin restriccionesdouble
{{jsxref("BigInt64Array")}}-263 a 263-18Dos enteros complementarios de 64 bits con signobigintint64_t (long long con signo)
{{jsxref("BigUint64Array")}}0 a 264-18Entero de 64 bits sin signobigintuint64_t (long long sin signo)
- -

Constructor

- -

No se puede crear una instancia de este objeto directamente. En su lugar, crea una instancia de un arreglo de un tipo particular, tal como {{jsxref("Int8Array")}} o {{jsxref("BigInt64Array")}}. Todos estos objetos tienen una sintaxis común para sus constructores:

- -
new TypedArray();
-new TypedArray(length);
-new TypedArray(typedArray);
-new TypedArray(object);
-new TypedArray(buffer [, byteOffset [, length]]);
-
- -

Donde TypedArray es un constructor para uno de los tipos concretos.

- -

Parámetros

- -
-
length
-
Cuando se llama con un argumento length, se crea un búfer de arreglo interno en la memoria, de tamaño length multiplicado por BYTES_PER_ELEMENT bytes, que contienen ceros.
-
typedArray
-
Cuando se llama con un argumento typedArray, que puede ser un objeto de cualquiera de los tipos de arreglo con tipo (como Int32Array), el typedArray se copia en un nuevo arreglo tipado. Cada valor en typedArray se convierte al tipo correspondiente del constructor antes de ser copiado en el nuevo arreglo. La longitud del nuevo arreglo tipado será la misma que la longitud del argumento typedArray.
-
object
-
Cuando se llama con un argumento object, se crea un nuevo arreglo tipado como si fuera el método TypedArray.from().
-
buffer, byteOffset, length
-
Cuando se llama con un buffer y, opcionalmente, un byteOffset y un length, se crea una nueva vista del arreglo tipado que visualiza el {{jsxref("ArrayBuffer")}} especificado. Los parámetros byteOffset y length especifican el rango de memoria que será expuesto por la vista del arreglo tipado. Si se omiten ambos, se visualiza todo el buffer; si solo se omite length, se visualiza el resto de buffer.
-
- -

Propiedades estáticas

- -
-
{{jsxref("TypedArray.BYTES_PER_ELEMENT")}}
-
Devuelve un valor numérico del tamaño del elemento para los diferentes objetos TypedArray.
-
{{jsxref("TypedArray.name")}}
-
Devuelve el valor de cadena del nombre del constructor (por ejemplo, "Int8Array").
-
{{jsxref("TypedArray.@@species", "get TypedArray[@@species]")}}
-
La función constructora utilizada para crear objetos derivados.
-
{{jsxref("TypedArray.prototype")}}
-
Prototipo para objetos TypedArray.
-
- -

Métodos estáticos

- -
-
{{jsxref("TypedArray.from()")}}
-
Crea un nuevo TypedArray a partir de un objeto iterable o similar a un arreglo. Consulta también {{jsxref("Array.from()")}}.
-
{{jsxref("TypedArray.of()")}}
-
Crea un nuevo TypedArray con un número variable de argumentos. Consulta también {{jsxref("Array.of()")}}.
-
- -

Propiedades de la instancia

- -
-
{{jsxref("TypedArray.prototype.buffer")}}
-
Devuelve el {{jsxref("ArrayBuffer")}} al que hace referencia el arreglo tipado. Corregido en el momento de la construcción y, por lo tanto, de solo lectura.
-
{{jsxref("TypedArray.prototype.byteLength")}}
-
Devuelve la longitud (en bytes) del arreglo tipado. Corregido en el momento de la construcción y, por lo tanto, de solo lectura.
-
{{jsxref("TypedArray.prototype.byteOffset")}}
-
Devuelve el desplazamiento (en bytes) del arreglo tipado desde el inicio de su {{jsxref("ArrayBuffer")}}. Corregido en el momento de la construcción y, por lo tanto, de solo lectura.
-
{{jsxref("TypedArray.prototype.length")}}
-
Devuelve el número de elementos contenidos en el arreglo tipado. Corregido en el momento de la construcción y, por lo tanto, de solo lectura.
-
- -

Métodos de instancia

- -
-
{{jsxref("TypedArray.prototype.copyWithin()")}}
-
Copia una secuencia de elementos de arreglo dentro del arreglo. Consulta también {{jsxref("Array.prototype.copyWithin()")}}.
-
{{jsxref("TypedArray.prototype.entries()")}}
-
Devuelve un nuevo objeto Array Iterator que contiene los pares clave/valor para cada índice del arreglo. Consulta también {{jsxref("Array.prototype.entries()")}}.
-
{{jsxref("TypedArray.prototype.every()")}}
-
Comprueba si todos los elementos del arreglo pasan la prueba proporcionada por una función. Consulta también {{jsxref("Array.prototype.every()")}}.
-
{{jsxref("TypedArray.prototype.fill()")}}
-
Rellena todos los elementos de un arreglo desde un índice inicial hasta un índice final con un valor estático. Consulta también {{jsxref("Array.prototype.fill()")}}.
-
{{jsxref("TypedArray.prototype.filter()")}}
-
Crea un nuevo arreglo con todos los elementos de este arreglo para la cual la función de filtrado proporcionada devuelve true. Consulta también {{jsxref("Array.prototype.filter()")}}.
-
{{jsxref("TypedArray.prototype.find()")}}
-
Devuelve el valor encontrado en el arreglo, si un elemento del arreglo satisface la función de prueba proporcionada, o undefined si no se encuentra. Consulta también {{jsxref("Array.prototype.find()")}}.
-
{{jsxref("TypedArray.prototype.findIndex()")}}
-
Devuelve el índice encontrado en el arreglo, si un elemento del arreglo satisface la función de prueba proporcionada o -1 si no se encuentra. Consulta también {{jsxref("Array.prototype.findIndex()")}}.
-
{{jsxref("TypedArray.prototype.forEach()")}}
-
Llama a una función para cada elemento del arreglo. Consulta también {{jsxref("Array.prototype.forEach()")}}.
-
{{jsxref("TypedArray.prototype.includes()")}}
-
Determina si un arreglo tipado incluye un determinado elemento, devolviendo true o false según corresponda. Consulta también {{jsxref("Array.prototype.includes()")}}.
-
{{jsxref("TypedArray.prototype.indexOf()")}}
-
Devuelve el primer (mínimo) índice de un elemento dentro del arreglo igual al valor especificado, o -1 si no se encuentra ninguno. Consulta también {{jsxref("Array.prototype.indexOf()")}}.
-
{{jsxref("TypedArray.prototype.join()")}}
-
Une todos los elementos de un arreglo en una cadena. Consulta también {{jsxref("Array.prototype.join()")}}.
-
{{jsxref("TypedArray.prototype.keys()")}}
-
Devuelve un nuevo Array Iterator que contiene las claves para cada índice del arreglo. Consulta también {{jsxref("Array.prototype.keys()")}}.
-
{{jsxref("TypedArray.prototype.lastIndexOf()")}}
-
Devuelve el último (mayor) índice de un elemento dentro del arreglo igual al valor especificado, o -1 si no se encuentra ninguno. Consulta también {{jsxref("Array.prototype.lastIndexOf()")}}.
-
{{jsxref("TypedArray.prototype.map()")}}
-
Crea un nuevo arreglo con los resultados de llamar a una función proporcionada en cada elemento de este arreglo. Consulta también {{jsxref("Array.prototype.map()")}}.
-
{{jsxref("TypedArray.prototype.reduce()")}}
-
Aplica una función contra un acumulador y cada valor del arreglo (de izquierda a derecha) para reducirlo a un solo valor. Consulta también {{jsxref("Array.prototype.reduce()")}}.
-
{{jsxref("TypedArray.prototype.reduceRight()")}}
-
Aplica una función contra un acumulador y cada valor del arreglo (de derecha a izquierda) para reducirlo a un solo valor. Consulta también {{jsxref("Array.prototype.reduceRight()")}}.
-
{{jsxref("TypedArray.prototype.reverse()")}}
-
Invierte el orden de los elementos de un arreglo: el primero se convierte en el último y el último en el primero. Consulta también {{jsxref("Array.prototype.reverse()")}}.
-
{{jsxref("TypedArray.prototype.set()")}}
-
Almacena múltiples valores en el arreglo tipado, leyendo valores de entrada de un arreglo especificado.
-
{{jsxref("TypedArray.prototype.slice()")}}
-
Extrae una sección de un arreglo y devuelve un nuevo arreglo. Consulta también {{jsxref("Array.prototype.slice()")}}.
-
{{jsxref("TypedArray.prototype.some()")}}
-
Devuelve true si al menos un elemento de este arreglo satisface la función de prueba proporcionada. Consulta también {{jsxref("Array.prototype.some()")}}.
-
{{jsxref("TypedArray.prototype.sort()")}}
-
Ordena los elementos de un arreglo en su lugar y devuelve el arreglo. Consulta también {{jsxref("Array.prototype.sort()")}}.
-
{{jsxref("TypedArray.prototype.subarray()")}}
-
Devuelve un nuevo TypedArray del índice del elemento inicial y final dado.
-
{{jsxref("TypedArray.prototype.values()")}}
-
Devuelve un nuevo objeto Array Iterator que contiene los valores de cada índice del arreglo. Consulta también {{jsxref("Array.prototype.values()")}}.
-
{{jsxref("TypedArray.prototype.toLocaleString()")}}
-
Devuelve una cadena localizada que representa el arreglo y sus elementos. Consulta también {{jsxref("Array.prototype.toLocaleString()")}}.
-
{{jsxref("TypedArray.prototype.toString()")}}
-
Devuelve una cadena que representa el arreglo y sus elementos. Consulta también {{jsxref("Array.prototype.toString()")}}.
-
{{jsxref("TypedArray.prototype.@@iterator()", "TypedArray.prototype[@@iterator]()")}}
-
Devuelve un nuevo objeto Array Iterator que contiene los valores de cada índice del arreglo.
-
- -

Ejemplos

- -

Se requiere new

- -

A partir de ECMAScript 2015, los constructores TypedArray se deben construir con el operador {{jsxref("Operators/new", "new")}}. Llamar a un constructor TypedArray como una función sin new arrojará un {{jsxref("TypeError")}}.

- -
var dv = Int8Array([1, 2, 3]);
-// TypeError: llamar a un constructor Int8Array incorporado
-// sin new está prohibido
- -
var dv = new Int8Array([1, 2, 3]);
- -

Acceso a la propiedad

- -

Puedes hacer referencia a elementos en el arreglo utilizando la sintaxis de índice de arreglo estándar (es decir, utilizando la notación entre corchetes). Sin embargo, obtener o establecer propiedades indexadas en arreglos tipados no buscará esta propiedad en la cadena de prototipos, incluso cuando los índices estén fuera de límites. Las propiedades indexadas consultarán el {{jsxref("ArrayBuffer")}} y nunca mirarán las propiedades del objeto. Aún puedes usar propiedades con nombre, al igual que con todos los objetos.

- -
// Configuración y obtención usando la sintaxis de arreglo estándar
-var int16 = new Int16Array(2);
-int16[0] = 42;
-[parcial]console.log(0);
-
-// No se consultan las propiedades indexadas en los prototipos (Fx 25)
-Int8Array.prototype[20] = 'foo';
-(new Int8Array(32))[20]; // 0
-// incluso cuando está fuera del límite
-Int8Array.prototype[20] = 'foo';
-(new Int8Array(8))[20]; // undefined
-// o con enteros negativos
-Int8Array.prototype[-1] = 'foo';
-(new Int8Array(8))[-1]; // undefined
-
-// Sin embargo, se permiten propiedades con nombre (Fx 30)
-Int8Array.prototype.foo = 'bar';
-(new Int8Array(32)).foo; // "bar"
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-typedarray-objects', 'TypedArray Objects')}}
- -

Compatibilidad del navegador

- - - -

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

- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/uint8array/index.html b/files/es/web/javascript/referencia/objetos_globales/uint8array/index.html deleted file mode 100644 index 6402e356b0..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/uint8array/index.html +++ /dev/null @@ -1,260 +0,0 @@ ---- -title: Uint8Array -slug: Web/JavaScript/Referencia/Objetos_globales/Uint8Array -tags: - - Arreglo - - JavaScript - - array de enteros -translation_of: Web/JavaScript/Reference/Global_Objects/Uint8Array ---- -
{{JSRef}}
- -

Los Uint8Array representan un array de enteros sin signo de 8 bits. El contenido se inicializa a 0. Una vez establecido, puedes hacer referencia a un elemento usando los métodos del objeto o usando la sintaxis de array estándar (esto es, usando la notación de corchetes).

- -

Sintaxis

- -
new Uint8Array(tamaño);
-new Uint8Array(typedArray);
-new Uint8Array(objeto);
-new Uint8Array(buffer [, byteOffset [, tamaño]]);
- -

Para más información acerca de la sintaxis del constructor y sus parámetros, mire TypedArray.

- -

Propiedades

- -
-
{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Uint8Array.BYTES_PER_ELEMENT")}}
-
Retorna un número con el valor del tamaño del elemento. 1 en el caso del Uint8Array.
-
Uint8Array.length
-
Propiedad estática de tamaño cuyo valor es 3. Para el tamaño actual (número d elementos), mire {{jsxref("TypedArray.prototype.length", "Uint8Array.prototype.length")}}.
-
{{jsxref("TypedArray.name", "Uint8Array.name")}}
-
Devuelve el nombre del constructor en un string. En el caso de Uint8Array devuelve: "Uint8Array".
-
{{jsxref("TypedArray.prototype", "Uint8Array.prototype")}}
-
Prototipo para los objetos TypedArray .
-
- -

Métodos

- -
-
{{jsxref("TypedArray.from", "Uint8Array.from()")}}
-
Crea un nuevo Uint8Array desde un array o un objeto iterable. Véase también {{jsxref("Array.from()")}}.
-
{{jsxref("TypedArray.of", "Uint8Array.of()")}}
-
Crea un  Uint8Array con un número variable de argumentos. Véase también {{jsxref("Array.of()")}}.
-
- -

Uint8Array prototype

- -

Todos los objetos Uint8Array son heredados de {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

- -

Propiedades

- -
-
Uint8Array.prototype.constructor
-
Retorna la función que crea una instancia del prototype. Éste es el constructor por defecto de Uint8Array.
-
{{jsxref("TypedArray.prototype.buffer", "Uint8Array.prototype.buffer")}} {{readonlyInline}}
-
Retorna el {{jsxref("ArrayBuffer")}} con la referencia del Uint8Array. Fijado en el tiempo de construcción y es de sólo lectura.
-
{{jsxref("TypedArray.prototype.byteLength", "Uint8Array.prototype.byteLength")}} {{readonlyInline}}
-
Retorna el tamaño (en bytes) del array Uint8Array. Fijado en el tiempo de construcción y es de sólo lectura.
-
{{jsxref("TypedArray.prototype.byteOffset", "Uint8Array.prototype.byteOffset")}} {{readonlyInline}}
-
Retorna el offset (en bytes) del Uint8Array desde el inicio de su  {{jsxref("ArrayBuffer")}}. Fijado en el tiempo de construcción y es de sólo lectura.
-
{{jsxref("TypedArray.prototype.length", "Uint8Array.prototype.length")}} {{readonlyInline}}
-
Retorna el número de elementos contenidos en el Uint8Array. Fijado en el tiempo de construcción y es de sólo lectura.
-
- -

Métodos

- -
-
{{jsxref("TypedArray.copyWithin", "Uint8Array.prototype.copyWithin()")}}
-
Copia una secuencia de elementos del array dentro del array. Véase también {{jsxref("Array.prototype.copyWithin()")}}.
-
{{jsxref("TypedArray.entries", "Uint8Array.prototype.entries()")}}
-
Retorna un nuevo objeto Array Iterator que contiene los pares de valores para cada índice del array. Véase también {{jsxref("Array.prototype.entries()")}}.
-
{{jsxref("TypedArray.every", "Uint8Array.prototype.every()")}}
-
Prueba si todos los elementos del array cumplen las condiciones de una función. Véase también {{jsxref("Array.prototype.every()")}}.
-
{{jsxref("TypedArray.fill", "Uint8Array.prototype.fill()")}}
-
Llena todos los elementos del array desde el principio hasta el final con un valor dado. Véase también {{jsxref("Array.prototype.fill()")}}.
-
{{jsxref("TypedArray.filter", "Uint8Array.prototype.filter()")}}
-
Crea un nuevo array con todos los elementos del array que satisfacen las condiciones de una función que devuelve verdadero. Véase también {{jsxref("Array.prototype.filter()")}}.
-
{{jsxref("TypedArray.find", "Uint8Array.prototype.find()")}}
-
Devuelve el valor encontrado en el array, si un elemento del array satisface una función dada de prueba o undefined si no es encontrada. Véase también {{jsxref("Array.prototype.find()")}}.
-
{{jsxref("TypedArray.findIndex", "Uint8Array.prototype.findIndex()")}}
-
Devuelve el índice encontrado en el array, si un elemento del array satisface una función dada de prueba o -1 si no es encontrada. Véase también {{jsxref("Array.prototype.findIndex()")}}.
-
{{jsxref("TypedArray.forEach", "Uint8Array.prototype.forEach()")}}
-
Llama a una función para cada elemento del array. Véase también {{jsxref("Array.prototype.forEach()")}}.
-
{{jsxref("TypedArray.includes", "Uint8Array.prototype.includes()")}} {{experimental_inline}}
-
Determina si un array incluye un cierto elemento, retornando truefalse según corresponda. Véase también {{jsxref("Array.prototype.includes()")}}.
-
{{jsxref("TypedArray.indexOf", "Uint8Array.prototype.indexOf()")}}
-
Devuelve el primer (menor) índice de un elemento dentro del array igual al valor especificado, o -1 si no es encontrado. Véase también {{jsxref("Array.prototype.indexOf()")}}.
-
{{jsxref("TypedArray.join", "Uint8Array.prototype.join()")}}
-
Une todos los elementos de un array a una cadena.  Véase también {{jsxref("Array.prototype.join()")}}.
-
{{jsxref("TypedArray.keys", "Uint8Array.prototype.keys()")}}
-
Retorna un nuevo Array Iterator que contiene las claves para cada índice en el array. Véase también {{jsxref("Array.prototype.keys()")}}.
-
{{jsxref("TypedArray.lastIndexOf", "Uint8Array.prototype.lastIndexOf()")}}
-
Devuelve el último (mayor) índice de un elemento dentro del array igual al valor especificado, o -1 si no fue encontrado. Véase también {{jsxref("Array.prototype.lastIndexOf()")}}.
-
{{jsxref("TypedArray.map", "Uint8Array.prototype.map()")}}
-
Crea un nuevo array con los resultados de la llamada a la función indicada aplicados a cada uno de sus elementos. Véase también {{jsxref("Array.prototype.map()")}}.
-
{{jsxref("TypedArray.move", "Uint8Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
-
Primera versión no-estandar de {{jsxref("TypedArray.copyWithin", "Uint8Array.prototype.copyWithin()")}}.
-
{{jsxref("TypedArray.reduce", "Uint8Array.prototype.reduce()")}}
-
-

Aplica una función a un acumulador y a cada valor de un array (de izquierda a derecha) para reducirlo a un único valor. Véase también {{jsxref("Array.prototype.reduce()")}}.

-
-
{{jsxref("TypedArray.reduceRight", "Uint8Array.prototype.reduceRight()")}}
-
Aplica una función a un acumulador y a cada valor de un array (de derecha a izquierda) para reducirlo a un único valor. Véase también {{jsxref("Array.prototype.reduceRight()")}}.
-
{{jsxref("TypedArray.reverse", "Uint8Array.prototype.reverse()")}}
-
Inverte el orden de los elementos de un array, el primero se convierte en el último y el último en el primero. See also {{jsxref("Array.prototype.reverse()")}}.
-
{{jsxref("TypedArray.set", "Uint8Array.prototype.set()")}}
-
Almacena múltiples valores en el array, leyendo los valores de entrada de un array específico.
-
{{jsxref("TypedArray.slice", "Uint8Array.prototype.slice()")}}
-
Extrae una porción de un array y devuelve uno nuevo. Véase también {{jsxref("Array.prototype.slice()")}}.
-
{{jsxref("TypedArray.some", "Uint8Array.prototype.some()")}}
-
Devuelve true si al menos un elemento de este array satisface la función de prueba proporcionada. Véase también {{jsxref("Array.prototype.some()")}}.
-
{{jsxref("TypedArray.sort", "Uint8Array.prototype.sort()")}}
-
Ordena los elementos de un array localmente y devuelve el array. Véase también {{jsxref("Array.prototype.sort()")}}.
-
{{jsxref("TypedArray.subarray", "Uint8Array.prototype.subarray()")}}
-
Retorna un nuevo Uint8Array desde el índice de elementos iniciales y finales proporcionados.
-
{{jsxref("TypedArray.values", "Uint8Array.prototype.values()")}}
-
Retorna un nuevo objeto Array Iterator que contiene los valores para cada índice en el array. Véase también {{jsxref("Array.prototype.values()")}}.
-
{{jsxref("TypedArray.toLocaleString", "Uint8Array.prototype.toLocaleString()")}}
-
Devuelve una cadena localizada que representa el array y sus elementos. Véase también {{jsxref("Array.prototype.toLocaleString()")}}.
-
{{jsxref("TypedArray.toString", "Uint8Array.prototype.toString()")}}
-
Retorna una cadena representando el array sus elementos. Véase también {{jsxref("Array.prototype.toString()")}}.
-
{{jsxref("TypedArray.@@iterator", "Uint8Array.prototype[@@iterator]()")}}
-
Retorna un nuevo objeto Array Iterator que contiene los valores para cada índice en el array.
-
- -

Ejemplos

- -
// Desde una longitud
-var uint8 = new Uint8Array(2);
-uint8[0] = 42;
-console.log(uint8[0]); // 42
-console.log(uint8.length); // 2
-console.log(uint8.BYTES_PER_ELEMENT); // 1
-
-// Desde un array
-var arr = new Uint8Array([21,31]);
-console.log(arr[1]); // 31
-
-// Desde otro TypedArray
-var x = new Uint8Array([21, 31]);
-var y = new Uint8Array(x);
-console.log(y[0]); // 21
-
-// Desde un ArrayBuffer
-var buffer = new ArrayBuffer(8);
-var z = new Uint8Array(buffer, 1, 4);
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Sustituida por ECMAScript 6.
{{SpecName('ES6', '#table-49', 'TypedArray constructors')}}{{Spec2('ES6')}}Definición inicial en un ECMA standard. Se especificó que new es requirerido.
{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad del navegador

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico7.0{{ CompatGeckoDesktop(2) }}1011.65.1
new es requerido{{CompatUnknown}}{{ CompatGeckoDesktop(44) }}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico4.0{{CompatVersionUnknown}}{{ CompatGeckoMobile(2) }}1011.64.2
new es requerido{{CompatUnknown}}{{CompatUnknown}}{{ CompatGeckoMobile(44) }}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Notas de compatibilidad

- -

A partir de ECMAScript 2015 (ES6), los constructors de Uint8Array requiren ser construidos con un operador {{jsxref("Operators/new", "new")}}. Llamar a un contructor de Uint8Array como una función sin new, lanzará un {{jsxref("TypeError")}} de ahora en adelante.

- -
var dv = Uint8Array([1, 2, 3]);
-// TypeError: calling a builtin Uint8Array constructor
-// without new is forbidden
- -
var dv = new Uint8Array([1, 2, 3]);
- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/undefined/index.html b/files/es/web/javascript/referencia/objetos_globales/undefined/index.html deleted file mode 100644 index 1aa7db29b8..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/undefined/index.html +++ /dev/null @@ -1,183 +0,0 @@ ---- -title: undefined -slug: Web/JavaScript/Referencia/Objetos_globales/undefined -tags: - - JavaScript -translation_of: Web/JavaScript/Reference/Global_Objects/undefined ---- -
{{jsSidebar("Objects")}}
- -

Resumen

- -

La propiedad global undefined representa el valor primitivo {{Glossary("Undefined", "undefined")}}. Es uno de los {{Glossary("Primitive", "valores primitivos")}} de JavaScript.

- -

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

- -

Sintaxis

- -
undefined
- -

Descripción

- -

undefined es una propiedad del objeto global, es decir, una variable de alcance global. El valor inicial de undefined es el valor primitivo {{Glossary("Undefined", "undefined")}}.this needs clarification, but that would require explaining primitive values

- -

En navegadores modernos (JavaScript 1.8.5 / Firefox 4+), undefined es una propiedad no-configurable, no-grabable según la especificación ECMAScript 5. Aún cuando este no sea el caso, evite sobreescribirlo.

- -

Una variable a la que no se le ha asignado valor, o no se ha declarado en absoluto (no se declara, no existe) son de tipo undefined. Un método o sentencia también devuelve undefined si la variable que se está evaluando no tiene asignado un valor. Una función devuelve undefined si no se ha {{jsxref("Sentencias/return", "devuelto")}} un valor.

- -
-

Ten en cuenta que si no se ha declarado una variable ni explícita ni implícitamente, no puedes compararla con undefined  ya que obtendrías un ReferenceError pero puedes comparar su tipo con la cadena (String) "undefined". En el ejemplo más abajo se podrá ver cómo conseguir esto usando el operador typeof.

-
- -
-

Aunque es posible usarlo como un {{Glossary("Identifier", "identificador")}} (nombre de variable) en cualquier otro ámbito que no sea el ámbito global (porque undefined no es una {{jsxref("Reserved_Words", "palabra reservada")}}), hacerlo es una mala idea que provocará que tú código sea difícil de mantener y depurar.

- -
//NO HAGAS ESTO
-
-// registra "foo string"
-(function(){ var undefined = 'foo'; console.log(undefined, typeof undefined); })()
-
-// registra "foo string"
-(function(undefined){ console.log(undefined, typeof undefined); })('foo');
-
- -

Ejemplos

- -

Igualdad estricta y undefined

- -

Puedes usar undefined y los operadores de igualdad y desigualdad estricta para determinar si una variable tiene un valor asignado. En el siguiente ejemplo la variable x no está inicializada, y la sentencia if se evalúa como verdadera.

- -
var x;
-if (x === undefined) {
-   // se ejecutan estas instrucciones
-}
-else {
-   // estas instrucciones no se ejecutan
-}
- -
-

Nota: Aquí se debe usar el operador de igualdad estricta en lugar del operador de igualdad estándar, ya que x == undefined también verifica si x es null, mientras que el de igualdad estricta no. null no es equivalente a undefined. Vea {{jsxref("Operadores/Comparison_Operators", "operadores de comparación")}} para más detalles.

-
- -

Typeof operador y undefined

- -

Alternativamente se puede usar {{jsxref("Operadores/typeof","typeof")}}.  Recuerda que este siempre devolverá una cadena de texto con el tipo:

- -
var x;
-if (typeof x === 'undefined') {
-   // se ejecutan estas instrucciones
-}
-
- -

Una razón para usar {{jsxref("Operadores/typeof","typeof")}} es que no devuelve un error si la variable no fue declarada.

- -
// x no fue declarada antes
-if (typeof x === 'undefined') { // devuelve true
-   //se ejecutan estas instrucciones
-}
-
-if (x === undefined) { // lanza un ReferenceError
-
-}
-
- -

Sin embargo, este tipo de técnica debe evitarse. JavaScript es un lenguaje de ámbito estático, por lo que determinar si una variable se encuentra declarada puede ser definido al ver si está declarada en un contexto de inclusión. La única excepción es el ámbito global, pero el ámbito global está vinculado al objeto global, por lo que comprobar la existencia de una variable en el contexto global puede realizarse comprobando la existencia de una propiedad del objeto global (utilizando el operador {{jsxref("Operators/in", "in")}}, por ejemplo).

- -

Operador void y undefined

- -

El operador {{jsxref("Operadores/void", "void")}} es una tercer alternativa.

- -
var x;
-if (x === void 0) {
-   // se ejecutan estas instrucciones
-}
-
-// y no fue declarada antes
-if (y === void 0) {
-   // lanza un ReferenceError (a diferencia de  `typeof`)
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1', '#sec-4.3.9', 'undefined')}}{{Spec2('ES1')}}Definición inicial. Implementado en JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.1.1.3', 'undefined')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-undefined', 'undefined')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-undefined', 'undefined')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad en 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/es/web/javascript/referencia/objetos_globales/unescape/index.html b/files/es/web/javascript/referencia/objetos_globales/unescape/index.html deleted file mode 100644 index 48418ef48a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/unescape/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: unescape() -slug: Web/JavaScript/Referencia/Objetos_globales/unescape -translation_of: Web/JavaScript/Reference/Global_Objects/unescape ---- -
{{jsSidebar("Objects")}}
- -

La función deprecada unescape() calcula un nuevo string  en el cual secuencia de valores hexadecimales son reemplazados con el caracter que representa. La secuencia de calculo deber{ia ser introducida por una función como {{jsxref("escape")}}. Por que unescape está deprecada, usar {{jsxref("decodeURI")}} or {{jsxref("decodeURIComponent")}}.

- -
Note: Do not use unescape to decode URIs, use decodeURI instead.
- -

Syntax

- -
unescape(str)
- -

Parameters

- -
-
str
-
A string to be decoded.
-
- -

Description

- -

The unescape function is a property of the global object.

- -

Examples

- -
unescape("abc123");     // "abc123"
-unescape("%E4%F6%FC");  // "äöü"
-unescape("%u0107");     // "ć"
-
- -

Specifications

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES1', '#sec-15.1.2.5', 'unescape')}}{{Spec2('ES1')}}Initial definition.
{{SpecName('ES5.1', '#sec-B.2.2', 'unescape')}}{{Spec2('ES5.1')}}Defined in the (informative) Compatibility Annex B
{{SpecName('ES6', '#sec-unescape-string', 'unescape')}}{{Spec2('ES6')}}Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers
{{SpecName('ESDraft', '#sec-unescape-string', 'unescape')}}{{Spec2('ESDraft')}}Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers
- -

Browser compatibility

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/urierror/index.html b/files/es/web/javascript/referencia/objetos_globales/urierror/index.html deleted file mode 100644 index 3ba028a2ab..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/urierror/index.html +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: URIError -slug: Web/JavaScript/Referencia/Objetos_globales/URIError -tags: - - Error - - JavaScript - - Reference - - URIError -translation_of: Web/JavaScript/Reference/Global_Objects/URIError ---- -
{{JSRef}}
- -

El objeto URIError  representa un error cuando una función de uso URI global se usó de manera incorrecta.

- -

Syntax

- -
new URIError([message[, fileName[, lineNumber]]])
- -

Parámetros

- -
-
message
-
Opcional. Descripción del error legible para una persona.
-
fileName {{non-standard_inline}}
-
Opcional. El nombre del archivo que contien el código causante de la excepción.
-
lineNumber {{non-standard_inline}}
-
Opcional. El número de línea del código que ha causado la excepción.
-
- -

Description

- -

Se envía URIError  cuando las fuciones de uso del URI global pasan pro un URI con formato incorrecto.

- -

Properties

- -
-
{{jsxref("URIError.prototype")}}
-
Permite agregar propiedades a un objeto URIError
-
- -

Methods

- -

El URIError global no contiene métodos propios, sin embargo, sí hereda algunos métodos a través de la cadena de prototipos.

- -

URIError instancias

- -

Propiedades

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

Métodos

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

Ejemplos

- -

Recoger un URIError

- -
try {
-  decodeURIComponent('%');
-} catch (e) {
-  console.log(e instanceof URIError); // true
-  console.log(e.message);             // "malformed URI sequence"
-  console.log(e.name);                // "URIError"
-  console.log(e.fileName);            // "Scratchpad/1"
-  console.log(e.lineNumber);          // 2
-  console.log(e.columnNumber);        // 2
-  console.log(e.stack);               // "@Scratchpad/2:2:3\n"
-}
-
- -

Creando un URIError

- -
try {
-  throw new URIError('Hello', 'someFile.js', 10);
-} catch (e) {
-  console.log(e instanceof URIError); // true
-  console.log(e.message);             // "Hello"
-  console.log(e.name);                // "URIError"
-  console.log(e.fileName);            // "someFile.js"
-  console.log(e.lineNumber);          // 10
-  console.log(e.columnNumber);        // 0
-  console.log(e.stack);               // "@Scratchpad/2:2:9\n"
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES3', '#sec-15.11.6.6', 'URIError')}}{{Spec2('ES3')}}Initial definition
{{SpecName('ES5.1', '#sec-15.11.6.6', 'URIError')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-urierror', 'URIError')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-urierror', 'URIError')}}{{Spec2('ESDraft')}} 
- -

Browser compatibility

- -
- - -

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

-
- -

See also

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/weakmap/clear/index.html b/files/es/web/javascript/referencia/objetos_globales/weakmap/clear/index.html deleted file mode 100644 index b5c66c7714..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/weakmap/clear/index.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: WeakMap.prototype.clear() -slug: Web/JavaScript/Referencia/Objetos_globales/WeakMap/clear -tags: - - JavaScript - - Obsolete - - Protocols - - WeakMap -translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/clear ---- -
{{JSRef}} {{obsolete_header}}
- -

El método clear() es utilizado para suprimir todos los elementos del objeto WeakMap, sin embargo, ya no es parte de ECMAScript, ni de sus implementaciones.

- -

Sintaxis

- -
wm.clear();
- -

Ejemplos

- -

Utilización del método clear 

- -
var wm = new WeakMap();
-var obj = {};
-
-wm.set(obj, 'foo');
-wm.set(window, 'bar');
-
-wm.has(obj); // true
-wm.has(window); // true
-
-wm.clear();
-
-wm.has(obj)  // false
-wm.has(window)  // false
-
- -

Especificaciones

- -

No es parte de ninguna especificación actual o borrador. Este método fue parte de ECMAScript 6 como un bosquejo hasta la revisión 28 (versión de Octubre 14, 2014), sin embargo ha sido eliminado en versiones posteriores. No es parte de la última versión estándar.

- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.builtins.WeakMap.clear")}}

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/weakmap/delete/index.html b/files/es/web/javascript/referencia/objetos_globales/weakmap/delete/index.html deleted file mode 100644 index 7f4933eb0b..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/weakmap/delete/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: WeakMap.prototype.delete() -slug: Web/JavaScript/Referencia/Objetos_globales/WeakMap/delete -tags: - - ECMAScript6 - - JavaScript - - Prototype - - WeakMap -translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/delete ---- -
{{JSRef}}
- -

El método delete() elimina un elemento específico del objeto WeakMap .

- -

Sintaxis

- -
wm.delete(key);
- -

Parámetros

- -
-
identificador (key)
-
Requerido. El identificador del elemento a eliminar en el objeto WeakMap.
-
- -

Valor de retorno

- -

true si el elemento del objeto WeakMap ha sido eliminado correctamente. Y false si la llave a eliminar no fue encontrada en el objeto WeakMap o bien, si la llave no es un objeto.

- -

Ejemplos

- -

Utilización del método delete 

- -
var wm = new WeakMap();
-wm.set(window, "foo");
-
-wm.delete(window); // Devuelve true. Eliminado correctamente.
-
-wm.has(window);    // Devuelve false. El elemento window ya no es parte de WeakMap.
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES6', '#sec-weakmap.prototype.delete', 'WeakMap.prototype.delete')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-weakmap.prototype.delete', 'WeakMap.prototype.delete')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support36{{CompatGeckoDesktop("6.0")}}11237.1
-
- -
- - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatGeckoMobile("6.0")}}{{CompatNo}}{{CompatNo}}8
-
- -

Notas especificas de Firefox

- - - -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/weakmap/get/index.html b/files/es/web/javascript/referencia/objetos_globales/weakmap/get/index.html deleted file mode 100644 index e60e34f8f1..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/weakmap/get/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: WeakMap.prototype.get() -slug: Web/JavaScript/Referencia/Objetos_globales/WeakMap/get -tags: - - ECMAScript6 - - JavaScript - - Method - - Prototype - - WeakMap -translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/get ---- -
{{JSRef}}
- -

El método get() devuelve un elemento específico del objeto WeakMap.

- -
{{EmbedInteractiveExample("pages/js/weakmap-prototype-get.html")}}
- - - -

Sintaxis

- -
wm.get(key);
- -

Parámetros

- -
-
key
-
Requerido. Es la llave del elemento a retornar desde el objeto WeakMap.
-
- -

Valores devueltos

- -

El elemento asociado con la llave específica en el objeto WeakMap. Si la llave no está presente, devolverá {{jsxref("undefined")}}.

- -

Ejemplos

- -

Usando el método get 

- -
var wm = new WeakMap();
-wm.set(window, 'foo');
-
-wm.get(window); // Devuelve "foo".
-wm.get('baz');  // Devuelve undefined.
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
{{SpecName('ES2015', '#sec-weakmap.prototype.get', 'WeakMap.prototype.get')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-weakmap.prototype.get', 'WeakMap.prototype.get')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.builtins.WeakMap.get")}}

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/weakmap/has/index.html b/files/es/web/javascript/referencia/objetos_globales/weakmap/has/index.html deleted file mode 100644 index dd978ede16..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/weakmap/has/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: WeakMap.prototype.has() -slug: Web/JavaScript/Referencia/Objetos_globales/WeakMap/has -tags: - - ECMAScript6 - - JavaScript - - Method - - Protocols - - WeakMap -translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/has ---- -
{{JSRef}}
- -

El método has() devuelve un boleano indicando ya sea, si el elemento con la llave específica existe o no en el objeto WeakMap.

- -
{{EmbedInteractiveExample("pages/js/weakmap-prototype-has.html")}}
- - - -

Sintaxis

- -
wm.has(key);
- -

Parámetros

- -
-
identificador (key)
-
Requerido. La llave del elemento a comprobar en el objeto WeakMap.
-
- -

Valor devuelto

- -
-
Boolean
-
Devuelve true si el elemento con la llave específica existe en el objeto WeakMap; de no encontrarse, devolverá false.
-
- -

Ejemplos

- -

Utilización del método has 

- -
var wm = new WeakMap();
-wm.set(window, 'foo');
-
-wm.has(window); // Devuelve true
-wm.has('baz');  // Devuelve false
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
{{SpecName('ES2015', '#sec-weakmap.prototype.has', 'WeakMap.prototype.has')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-weakmap.prototype.has', 'WeakMap.prototype.has')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.builtins.WeakMap.has")}}

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/weakmap/index.html b/files/es/web/javascript/referencia/objetos_globales/weakmap/index.html deleted file mode 100644 index 0fed17e5ca..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/weakmap/index.html +++ /dev/null @@ -1,278 +0,0 @@ ---- -title: WeakMap -slug: Web/JavaScript/Referencia/Objetos_globales/WeakMap -tags: - - ECMAScript 2015 - - JavaScript - - WeakMap -translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap ---- -
{{JSRef}}
- -

El objeto WeakMap es una colección de pares clave/valor en la que las claves son objetos y los valores son valores arbitrarios.

- -

Sintaxis

- -
new WeakMap([iterable])
-
- -

Parámetros

- -
-
iterable
-
Iterable es un Array u otro objeto iterable cuyos elementos son pares clave-valor (Arrays de dos elementos). Cada par clave-valor será añadido al nuevo WeakMap. null es tratado como undefined.
-
- -

Descripción

- -

Las claves de los WeakMaps solamente pueden ser del tipo Object. Los {{Glossary("Primitive", "Primitive data types")}} como claves no están permitidos (ej. un {{jsxref("Symbol")}} no pueden ser una clave de WeakMap).

- -

¿Por qué WeakMap?

- -

El programador de JavaScript experimentado se habrá dado cuenta que esta API podría ser implementada en JavaScript con dos arrays (uno para las claves, otro para los valores) compartidos por los cuatro métodos de la API. Dicha implementación habría tenido dos inconvenientes principales: El primero es una búsqueda O(n) (siendo n el número de claves en el mapa). El segundo es un problema de pérdida de memoria. Con mapas escritos manualmente, el array de las claves mantendría referencias a la objetos clave, impidiéndoles ser recolectados. En los WeakMap nativos, las referencias a los objetos clave son mantenidas "débilmente", lo que quiere decir que no impiden la recolección de basura en caso de que no haya otras referencias al objeto.

- -

Dado que las referencias son débiles, las claves de WeakMap no son enumerables (ej: no existe un método que te devuelva la lista de las claves). Si existiera, la lista dependería de la recolección de basura, introduciendo indeterminismo. Si quieres una lista de las claves, se debe usar un  {{jsxref("Map")}} o mantenerla tu mismo.

- -

Propiedades

- -
-
WeakMap.length
-
El valor de la propiedad length es 0.
-
{{jsxref("WeakMap.prototype")}}
-
Representa el prototipo para el nuevo constructor WeakMap. Permite añadir propiedades a todos los objetos WeakMap.
-
- -

Instancias de WeakMap

- -

Todas las instancias de WeakMap heredan de {{jsxref("WeakMap.prototype")}}.

- -

Propiedades

- -

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

- -

Métodos

- -

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

- -

Ejemplos

- -

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); // un valor puede ser cualquier cosa, incluidos objetos o funciones
-wm2.set(o3, undefined);
-wm2.set(wm1, wm2); // claves y valores pueden ser objetos cualesquiera. !Incluso WeakMaps!
-
-wm1.get(o2); // "azerty"
-wm2.get(o2); // undefined, porque no hay valor para o2 en wm2
-wm2.get(o3); // undefined, porque es es el valor del conjunto
-wm1.has(o2); // true
-wm2.has(o2); // false
-wm2.has(o3); // true (incluso si el valor es 'undefined')
-
-wm3.set(o1, 37);
-wm3.get(o1); // 37
-
-wm1.has(o1);   // true
-wm1.delete(o1);
-wm1.has(o1);   // false
-
-
- -

Implementando una clase tipo-WeakMap con un método .clear()

- -

Con propósito expositivo, el siguiente ejemplo usa el nuevo costruct class  de ECMAScript 2015, que actualmente no ha sido implementado de forma amplia.

- -
class ClearableWeakMap {
-  constructor(init) {
-    this._wm = new WeakMap(init)
-  }
-  clear() {
-    this._wm = new WeakMap()
-  }
-  delete(k) {
-    return this._wm.delete(k)
-  }
-  get(k) {
-    return this._wm.get(k)
-  }
-  has(k) {
-    return this._wm.has(k)
-  }
-  set(k, v) {
-    this._wm.set(k, v)
-    return this
-  }
-}
-
- -

Especificaciones

- - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-weakmap-objects', 'WeakMap')}}{{Spec2('ES2015')}}Definición inicial.
- -

Compatibilidad de navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (SpiderMonkey)Internet ExplorerOperaSafari
Soporte básico36{{CompatGeckoDesktop("6.0")}}11{{ CompatOpera(23) }}7.1
new WeakMap(iterable)38{{CompatGeckoDesktop("36")}}{{CompatNo}}{{ CompatOpera(25) }}{{CompatNo}}
clear()36{{CompatGeckoDesktop("20.0")}}11{{ CompatOpera(23) }}7.1
Constructor argument: new WeakMap(null){{CompatVersionUnknown}}{{CompatGeckoDesktop("37")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Monkey-patched set() in Constructor{{CompatVersionUnknown}}{{CompatGeckoDesktop("37")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
WeakMap() without new throws{{CompatVersionUnknown}}{{CompatGeckoDesktop("42")}}11{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidFirefox Mobile (SpiderMonkey)IE MobileOpera MobileSafari Mobile
Soporte básico35{{CompatGeckoMobile("6.0")}}{{CompatNo}}{{CompatNo}}iOS 8
new WeakMap(iterable)38{{CompatGeckoMobile("36")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
clear()35{{CompatGeckoMobile("20.0")}}{{CompatNo}}{{CompatNo}}iOS 8
Constructor argument: new WeakMap(null){{CompatUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("37")}}{{CompatUnknown}}{{CompatUnknown}}
Monkey-patched set() in Constructor{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("37")}}{{CompatUnknown}}{{CompatUnknown}}
WeakMap() without new throws{{CompatUnknown}}{{CompatGeckoMobile("42")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/weakmap/prototype/index.html b/files/es/web/javascript/referencia/objetos_globales/weakmap/prototype/index.html deleted file mode 100644 index 41d501135d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/weakmap/prototype/index.html +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: WeakMap.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/WeakMap/prototype -tags: - - ECMAScript6 - - JavaScript - - Property - - WeakMap -translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap -translation_of_original: Web/JavaScript/Reference/Global_Objects/WeakMap/prototype ---- -
{{JSRef}}
- -

La propiedad WeakMap.prototype representa el prototipo para el constructor {{jsxref("WeakMap")}}.

- -
{{js_property_attributes(0,0,0)}}
- -

Descripción

- -

Las instancias de {{jsxref("WeakMap")}} heredan de {{jsxref("WeakMap.prototype")}}. Se puede usar el objeto prototipo del constructor para añadir propiedades o métodos para todas las instancias de  WeakMap.

- -

WeakMap.prototype por si mismo es solamente un objeto ordinario:

- -
Object.prototype.toString.call(WeakMap.prototype); // "[object Object]"
- -

Propiedades

- -
-
WeakMap.prototype.constructor
-
Retorna la función que creó el prototipo de la instanciaReturns the function that created an instance's prototype. Esta es la función {{jsxref("WeakMap")}} por defecto.
-
- -

Métodos

- -
-
{{jsxref("WeakMap.delete", "WeakMap.prototype.delete(key)")}}
-
Remueve cualquier valor asociado a la clave. Después de esto WeakMap.prototype.has(key) retornará falso.
-
{{jsxref("WeakMap.get", "WeakMap.prototype.get(key)")}}
-
Retorna el valor asociado a la clave, o undefined si no hay ninguno.
-
{{jsxref("WeakMap.has", "WeakMap.prototype.has(key)")}}
-
Retorna un valor booleano indicando si hay un valor asociado a la clave en el objeto the WeakMap object o no.
-
{{jsxref("WeakMap.set", "WeakMap.prototype.set(key, value)")}}
-
Asigna el valor para la clave en el objeto WeakMap. Retorna el objeto WeakMap.
-
{{jsxref("WeakMap.prototype.clear()")}} {{obsolete_inline}}
-
Remueve todas los pares clave/valore del objeto WeakMap. Notese que es posible implementar un objeto parecido al WeakMap que posea un método .clear(), encapsulando el objeto WeakMap que no lo tiene (ver ejemplo en la página {{jsxref("WeakMap")}})
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-weakmap.prototype', 'WeakMap.prototype')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-weakmap.prototype', 'WeakMap.prototype')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico36{{CompatGeckoDesktop("6.0")}}11237.1
Objeto ordinario{{CompatUnknown}}{{CompatGeckoDesktop("40")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("6.0")}}{{CompatNo}}{{CompatNo}}8
Objeto ordinario{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile("40")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/weakmap/set/index.html b/files/es/web/javascript/referencia/objetos_globales/weakmap/set/index.html deleted file mode 100644 index 0dd654e6ef..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/weakmap/set/index.html +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: WeakMap.prototype.set() -slug: Web/JavaScript/Referencia/Objetos_globales/WeakMap/set -tags: - - ECMAScript6 - - JavaScript - - Method - - Protocols - - WeakMap -translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/set ---- -
{{JSRef}}
- -

El método set() añade un nuevo elemento con su key y value específicos al objeto WeakMap.

- -
{{EmbedInteractiveExample("pages/js/weakmap-prototype-set.html")}}
- - - -

Sintaxis

- -
wm.set(key, value);
- -

Parámetros

- -
-
indentificador (key)
-
Requerido. El identificador (objeto) del elemento a añadir al objeto WeakMap.
-
valor (value)
-
Requerido. El valor del elemento a añadir al objeto WeakMap.
-
- -

Valor devuelto

- -

El objeto WeakMap.

- -

Ejemplos

- -

Utilización del método set 

- -
var wm = new WeakMap();
-var obj = {};
-
-// Agregando nuevos elementos a WeakMap
-wm.set(obj, 'foo').set(window, 'bar'); // encadenamiento
-// Actualiza el un elemento en el objeto WeakMap
-wm.set(obj, 'baz');
-
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
{{SpecName('ES2015', '#sec-weakmap.prototype.set', 'WeakMap.prototype.set')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-weakmap.prototype.set', 'WeakMap.prototype.set')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.builtins.WeakMap.set")}}

- -

Notas específicas de Firefox

- - - -

Vea también

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/weakset/index.html b/files/es/web/javascript/referencia/objetos_globales/weakset/index.html deleted file mode 100644 index ab2af60090..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/weakset/index.html +++ /dev/null @@ -1,227 +0,0 @@ ---- -title: WeakSet -slug: Web/JavaScript/Referencia/Objetos_globales/WeakSet -translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet ---- -
{{JSRef}}
- -

El objeto WeakSet  te deja almacenar y mantener objectos debilmente en una colección.

- -

Sintaxis

- -
 new WeakSet([iterable]);
- -

Parametros

- -
-
iterable
-
Si un  objeto interable es pasado, todos sus elementos se agregarán al nuevo WeakSet. null es tratado como undefined.
-
- -

Descripción

- -

 

- -

Los objetos WeakSet son colecciones de objetos. Un objecto en WeakSet solo puede ser agregado una vez; Esto quiere decir que es unico en la coleccion WeakSet.

- -

Las principales diferencias con el objeto {{jsxref("Set")}} son:

- - - -

Properties

- -
-
WeakSet.length
-
El valor de la propiedad length  es 0.
-
{{jsxref("WeakSet.prototype")}}
-
Representa el prototipo para el constructor Set . Permite la adición de propiedades a todos los objetos WeakSet
-
- -

WeakSet instances

- -

Todas las instancias a WeakSet son heredadas de {{jsxref("WeakSet.prototype")}}.

- -

Propiedades

- -

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

- -

Métodos

- -

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

- -

Ejemplos

- -

Usando el objetoWeakSet 

- -
var ws = new WeakSet();
-var obj = {};
-var foo = {};
-
-ws.add(window);
-ws.add(obj);
-
-ws.has(window); // true
-ws.has(foo);    // false, foo no fue agregado al conjunto
-
-ws.delete(window); // elimina window del conjunto
-ws.has(window);    // false, window fue eliminado
-
- -

Especificaciónes

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES2015', '#sec-weakset-objects', 'WeakSet')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-weakset-objects', 'WeakSet')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad de navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(36)}}12{{ CompatGeckoDesktop(34) }}{{CompatNo}}{{ CompatOpera(23) }}{{CompatSafari(9)}}
new WeakSet(iterable)3812{{ CompatGeckoDesktop(34) }}{{CompatNo}}25{{CompatSafari(9)}}
Constructor argument: new WeakSet(null){{CompatVersionUnknown}}12{{CompatGeckoDesktop("37")}}{{CompatNo}}{{CompatUnknown}}{{CompatSafari(9)}}
Monkey-patched add() in Constructor{{CompatVersionUnknown}}12{{CompatGeckoDesktop("37")}}{{CompatNo}}{{CompatUnknown}}{{CompatSafari(9)}}
Obsolete clear() method removed{{CompatChrome(43)}}12{{CompatGeckoDesktop(46)}}{{CompatNo}}{{CompatOpera(30)}}{{CompatSafari(9)}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatVersionUnknown}}{{ CompatGeckoMobile(34) }}{{CompatNo}}{{CompatNo}}9
new WeakMap(iterable){{CompatNo}}{{CompatVersionUnknown}}{{ CompatGeckoMobile(34) }}{{CompatNo}}{{CompatNo}}9
Constructor argument: new WeakSet(null){{CompatUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatUnknown}}9
Monkey-patched add() in Constructor{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatUnknown}}9
Obsolete clear() method removed{{CompatNo}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatNo}}{{CompatUnknown}}9
-
- -

Tambien ver

- - diff --git a/files/es/web/javascript/referencia/objetos_globales/webassembly/index.html b/files/es/web/javascript/referencia/objetos_globales/webassembly/index.html deleted file mode 100644 index 80542d763d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/webassembly/index.html +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: WebAssembly -slug: Web/JavaScript/Referencia/Objetos_globales/WebAssembly -tags: - - API - - Experimental - - JavaScript - - Objeto - - Referencia - - WebAssembly -translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly ---- -
{{JSRef}}
- -

El objeto WebAssembly de JavaScript actua como un namespace para todas las funcionalidades realcionados con WebAssembly.

- -

A diferencia de otros objetos globales, WebAssembly no tiene un constructor (no tiene una función para crear el objeto). Puedes ser comparado con el objeto {{jsxref("Math")}}, que también es un namespace, para funciones y constantes matemáticas, o también con {{jsxref("Intl")}} que es un namespace para internacionalización y otras funciones de idioma.

- -

Descripción

- -

Los usos primarios para el objeto WebAssembly son:

- - - -

Métodos

- -
-
{{jsxref("WebAssembly.instantiate()")}}
-
El API primaria para compilar e instanciar código WebAssembly, ambos regresan un Module y el primero Instance.
-
{{jsxref("WebAssembly.instantiateStreaming()")}}
-
Compila e instancia un módulo WebAssembly directamente desde un flujo de origen subyacente, ambos regresan un Module y el primero Instance.
-
{{jsxref("WebAssembly.compile()")}}
-
Compila un {{jsxref("WebAssembly.Module")}} desde el código binario de un WebAssembly, manteniendo la creación de la instancia como un objeto separado.
-
{{jsxref("WebAssembly.compileStreaming()")}}
-
compila un {{jsxref("WebAssembly.Module")}} directamente desde un flujo de origen subyacente, manteniendo la creación de la instancia como un objeto sepraado.
-
{{jsxref("WebAssembly.validate()")}}
-
Valida un arreglo con tipo de código binario de un WebAssembly, regresando si los bytes son código válido WebAssembly (true) o de lo contrario (false).
-
- -

Constructores

- -
-
{{jsxref("WebAssembly.Module()")}}
-
Crea un nuevo objeto WebAssembly Module.
-
{{jsxref("WebAssembly.Instance()")}}
-
Crear un nuevo objeto WebAssembly Instance.
-
{{jsxref("WebAssembly.Memory()")}}
-
Crear un nuevo objeto WebAssembly Memory.
-
{{jsxref("WebAssembly.Table()")}}
-
Crear un nuevo objeto WebAssembly Table.
-
{{jsxref("WebAssembly.CompileError()")}}
-
Crear un nuevo objeto WebAssembly CompileError.
-
{{jsxref("WebAssembly.LinkError()")}}
-
Crear un nuevo objeto WebAssembly LinkError.
-
{{jsxref("WebAssembly.RuntimeError()")}}
-
Crear un nuevo objeto WebAssembly RuntimeError.
-
- -

Ejemplos

- -

Después de obtener algún bytecode de WebAssembly usando la sentencia fetch, nosotros compilamos e instanciamos el módulo usando la función {{jsxref("WebAssembly.instantiate()")}} , importando una función de JavaScript en el WebAssembly Module en el proceso. Esta premisa resuelve a un objeto (result) que contenga un objeto Module compilado y un objeto Instance . Entonces tenemos una llamada a Exported WebAssembly function que es exportada por Instance.

- -
var importObject = {
-  imports: {
-    imported_func: function(arg) {
-      console.log(arg);
-    }
-  }
-};
-
-fetch('simple.wasm').then(response =>
-  response.arrayBuffer()
-).then(bytes =>
-  WebAssembly.instantiate(bytes, importObject)
-).then(result =>
-  result.instance.exports.exported_func()
-);
- -
-

Nota: Ver index.html en GitHub (view it live also) para un ejemplo que hace uso de la función fetchAndInstantiate().

-
- -

Especificaciones

- - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('WebAssembly JS', '#the-webassembly-object', 'WebAssembly')}}{{Spec2('WebAssembly JS')}}Definición inicial del borrador.
- -

Compatibilidad de Navegadores

- -
- - -

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

-
- -

Ver también

- - diff --git "a/files/es/web/javascript/referencia/operadores/adici\303\263n/index.html" "b/files/es/web/javascript/referencia/operadores/adici\303\263n/index.html" deleted file mode 100644 index 888845158a..0000000000 --- "a/files/es/web/javascript/referencia/operadores/adici\303\263n/index.html" +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Adición (+) -slug: Web/JavaScript/Referencia/Operadores/Adición -translation_of: Web/JavaScript/Reference/Operators/Addition ---- -
{{jsSidebar("Operators")}}
- -

El operador de adición (+) produce la suma de operandos numéricos o la concatenación de (cadenas) string.

- -
{{EmbedInteractiveExample("pages/js/expressions-addition.html")}}
- -
- - - -

Sintaxis

- -
Operator: x + y
-
- -

Ejemplos

- -

Adición numérica

- -
// Número + Número -> adición
-1 + 2 // 3
-
-// Booleano + Número -> adición
-true + 1 // 2
-
-// Booleano + Booleano -> adición
-false + false // 0
-
- -

Concatenación de (cadenas) String

- -
// String + String -> concatenación
-'fut' + 'bol' // "futbol"
-
-// Número + String -> concatenación
-5 + 'oh' // "5oh"
-
-// String + Booleano -> concatenación
-'fut' + false // "futfalse"
- -

Especificación

- - - - - - - - - - -
Specification
{{SpecName('ESDraft', '#sec-addition-operator-plus', 'Addition operator')}}
- -

Compatibilidad de Explorador

- - - -

{{Compat("javascript.operators.addition")}}

- -

También revisa

- - diff --git "a/files/es/web/javascript/referencia/operadores/aritm\303\251ticos/index.html" "b/files/es/web/javascript/referencia/operadores/aritm\303\251ticos/index.html" deleted file mode 100644 index 71968fda85..0000000000 --- "a/files/es/web/javascript/referencia/operadores/aritm\303\251ticos/index.html" +++ /dev/null @@ -1,315 +0,0 @@ ---- -title: Operadores Aritméticos -slug: Web/JavaScript/Referencia/Operadores/Aritméticos -tags: - - JavaScript - - Operador -translation_of: Web/JavaScript/Reference/Operators -translation_of_original: Web/JavaScript/Reference/Operators/Arithmetic_Operators ---- -
{{jsSidebar("Operators")}}
- -

Los operadores Aritméticos toman valores numéricos (ya sean literales o variables) como sus operandos y retornan un valor numérico único. Los operadores aritméticos estándar son adición o suma (+), sustracción o resta (-), multiplicación (*), y división (/).

- -

Estos operadores trabajan al igual que en la mayoría de otros lenguajes de programacion, excepto el operador /, que retorna una división de punto flotante en JavaScript, no una división truncada como en lenguajes tales como C o Java. Por ejemplo:

- -

{{EmbedInteractiveExample("pages/js/expressions-arithmetic.html")}}

- -

Suma o adición (+)

- -

La operación suma se produce mediante la suma de número o strings concatenados.

- -

Sintaxis

- -
Operador: x + y
- -

Ejemplos:

- -
// Número + Número = Adición
-
-1 + 2 // 3
-
-// Bolean + Número = Adición
-
-true + 1 // 2
-
-// Bolean + Bolean // Adición
-
-false + false // 0
-
-// Número + String = Concatenación
-
-5 + 'foo' // "5foo"
-
-// String + Bolean = Concatenación
-
-'foo' + true // "footrue"
-
-// String + String = Concatenación
-
-'foo' + 'bar' // "foobar"
-
- -

Resta o sustracción (-)

- -

La resta se produce cuando se sutraen el resultado de los operadores, produciendo su diferencia.

- -

Sintaxis

- -
Operador: x - y
- -

Ejemplos

- -
5 - 3     // 2
-3 - 5     // -2
-'foo' - 3 // NaN
-
- -

División (/)

- -

El operador división se produce el cociente de la operación donde el operando izquierdo es el dividendo y el operando derecho es el divisor.

- -

Sintaxis

- -
Operador: x / y
- -

Ejemplos

- -
1 / 2      // devuelve 0.5 en JavaScript
-1 / 2      // devuelve 0 en Java
-// (Ninguno de los números es explícitamente un número de punto flotante)
-
-1.0 / 2.0  // devuelve 0.5 en JavaScript y Java
-
-2.0 / 0    // devuelve Infinito en JavaScript
-2.0 / 0.0  // devuelve Infinito
-2.0 / -0.0 // devuelve -Infinito en JavaScript
-
- -

Multiplicación (*)

- -

El operador multiplicación produce el producto de la multiplicación de los operandos.

- -

Sintaxis

- -
Operador: x * y
- -

Ejemplos

- -
2 * 2 // 4
--2 * 2 // -4
-Infinito * 0 // NaN
-Infinito * Infinito // Infinito
-'foo' * 2 // NaN
- -

Resto o Residuo  (%)

- -

El operador resto devuelve el resto que queda cuando un operando se divide por un segundo operando. Siempre toma el signo del dividendo, no el divisor. Utiliza una función de modulo incorporada para producir el resultado, que es el resto entero de dividir var1 por var2 - por ejemplo - var1 modulo var2. Existe una propuesta para obtener un operador de módulo real en una versión futura de ECMAScript, con la diferencia de que el resultado del operador de módulo tomaría el signo del divisor, no el dividendo.

- -

Sintaxis

- -
Operador: var1 % var2
- -

Ejemplos

- -
12 % 5  // 2
--1 % 2  // -1
-1 % -2  // 1
-NaN % 2 // NaN
-1 % 2   // 1
-2 % 3   // 2
--4 % 2  // -0
-5.5 % 2 // 1.5
- -

Exponenciación (**)

- -

El operador de exponenciación devuelve el resultado de elevar el primer operando al segundo operando de potencia. es decir, var1var2, en la declaración anterior, donde var1 y var2 son variables. El operador de exponenciación es asociativo a la derecha. a ** b ** c es igual a a ** (b ** c).

- -

Sintaxis

- -
Operador: var1 ** var2
- -

 

- -

Notas

- -

En la mayoría de los lenguajes como PHP y Python y otros que tienen un operador de exponenciación (**), el operador de exponenciación se define para tener una precedencia más alta que los operadores unarios, como unario + y unario -, pero hay algunas excepciones. Por ejemplo, en Bash, el operador ** se define como de menor precedencia que los operadores unarios. En JavaScript, es imposible escribir una expresión de exponenciación ambigua, es decir, no se puede poner un operador unario (+/-/~/!/delete/void/typeof) inmediatamente antes del número de base.

- -
-2 ** 2;
-// 4 en Bash, -4 en otros idiomas.
-// Esto no es válido en JavaScript, ya que la operación es ambigua.
-
-
--(2 ** 2);
-// -4 en JavaScript y la intención del autor no es ambigua.
- -

Ejemplos

- -
2 ** 3        // 8
-3 ** 2        // 9
-3 ** 2.5      // 15.588457268119896
-10 ** -1      // 0.1
-NaN ** 2      // NaN
-
-2 ** 3 ** 2   // 512
-2 ** (3 ** 2) // 512
-(2 ** 3) ** 2 // 64
- -

Para invertir el signo del resultado de una expresión de exponenciación:

- -
-(2 ** 2) // -4
- -

Para forzar la base de una expresión de exponenciación a ser un número negativo:

- -
(-2) ** 2 // 4
- -
-

Nota: JavaScript también tiene un operador bit a bit ^ (logical XOR)** y ^ son diferentes (por ejemplo: 2 ** 3 === 8 cuando 2 ^ 3 === 1.)

-
- -

 

- -

Incremento (++)

- -

 

- -

El operador de incremento incrementa (agrega uno a) su operando y devuelve un valor.

- - - -

Sintaxis

- -
Operador: x++ o ++x
- -

Ejemplos

- -
// Postfijo
-var x = 3;
-y = x++; // y = 3, x = 4
-
-// Prefijo
-var a = 2;
-b = ++a; // a = 3, b = 3
-
- -

Decremento (--)

- -

El operador de decremento disminuye (resta uno de) su operando y devuelve un valor.

- - - -

Sintaxis

- -
Operador: x-- o --x
- -

Ejemplos

- -
// Postfijo
-var x = 3;
-y = x--; // y = 3, x = 2
-
-// Prefijo
-var a = 2;
-b = --a; // a = 1, b = 1
- -

 

- -

Negación unaria (-)

- -

El operador de negación unaria precede su operando y lo niega.

- -

Sintaxis

- -
Operador: -x
- -

Ejemplos

- -
var x = 3;
-y = -x; // y = -3, x = 3
-
-// el operador de negación unario puede convertir no-números en un número
-var x = "4";
-y = -x; // y = -4
- -

Unario más (+)

- -

El operador unario más precede su operando y evalúa su operando, pero intenta convertirlo en un número, si no lo está. Aunque la negación unaria (-) también puede convertir no números, unario plus es la manera más rápida y preferida de convertir algo en un número, porque no realiza ninguna otra operación en el número. Puede convertir representaciones de cadenas de enteros y flotantes, así como los valores que no sean cadenas true, false y null. Se admiten enteros en formato decimal y hexadecimal ("0x" -prefijado). Los números negativos son compatibles (aunque no para hexadecimal). Si no puede analizar un valor particular, evaluará a NaN.

- -

Sintaxis

- -
Operador: +x
- -

Ejemplos

- -
+3     // 3
-+'3'   // 3
-+true  // 1
-+false // 0
-+null  // 0
-+function(val){  return val } // NaN
- -

 

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial.
{{SpecName('ES5.1', '#sec-11.3')}}{{Spec2('ES5.1')}} -

Definido en varias secciones de la especificación: Operadores aditivos, Operadores multiplicativos, Expresiones Postfijas, Operadores unarios.

-
{{SpecName('ES2015', '#sec-postfix-expressions')}}{{Spec2('ES2015')}} -

Definido en varias secciones de la especificación: Operadores aditivos, Operadores multiplicativos, Expresiones Postfijas, Operadores unarios.

-
{{SpecName('ES2016', '#sec-postfix-expressions')}}{{Spec2('ES2016')}}Operador de exponenciación agregado.
{{SpecName('ES2017', '#sec-postfix-expressions')}}{{Spec2('ES2017')}} 
{{SpecName('ESDraft', '#sec-additive-operators')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -

{{Compat("javascript.operators.arithmetic")}}

- -

Ver también

- - - -

 

diff --git a/files/es/web/javascript/referencia/operadores/asignacion/index.html b/files/es/web/javascript/referencia/operadores/asignacion/index.html deleted file mode 100644 index 1fa4b79ac4..0000000000 --- a/files/es/web/javascript/referencia/operadores/asignacion/index.html +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Asignacion (=) -slug: Web/JavaScript/Referencia/Operadores/Asignacion -tags: - - JS - - JavaScript - - Operador de Asignacion - - Operadores JavaScript - - Referências -translation_of: Web/JavaScript/Reference/Operators/Assignment ---- -
{{jsSidebar("Operators")}}
- -

El operador de asignación (=) se utiliza para asignar un valor a una variable. La operación de asignación evalúa el valor asignado. Es posible encadenar el operador de asignación para asignar un solo valor a múltiples variables

- -
{{EmbedInteractiveExample("pages/js/expressions-assignment.html")}}
- -
- - - -

Sintaxis

- -
Operador: x = y
-
- -

Ejemplos

- -

Asignación

- -
// Asumimos las siguientes variables
-//  x = 5
-//  n = 10
-//  z = 25
-
-x = n     // La variable x contiene el valor 10
-x = n = z // x = n (es decir 10) y z pisa el valor total remplazandolo por 25
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}}
- -

Compatibilidad con Navegadores

- - - -

{{Compat("javascript.operators.assignment")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/operadores/assignment_operators/index.html b/files/es/web/javascript/referencia/operadores/assignment_operators/index.html deleted file mode 100644 index 979eff63f2..0000000000 --- a/files/es/web/javascript/referencia/operadores/assignment_operators/index.html +++ /dev/null @@ -1,462 +0,0 @@ ---- -title: Operadores de asignación -slug: Web/JavaScript/Referencia/Operadores/Assignment_Operators -tags: - - JavaScript - - Operador -translation_of: Web/JavaScript/Reference/Operators#Assignment_operators -translation_of_original: Web/JavaScript/Reference/Operators/Assignment_Operators ---- -
{{jsSidebar("Operators")}}
- -

Un operador de asignacion asigna un valor al operando de la izquierda basado en el valor del operando de la derecha.

- -

Visión general

- -

El operador de asignación basico es el igual (=), el cual asigna el valor del operando derecho al operando izquierdo. Es decir, x = y asigna el valor de y a x. El otro operador de asignacion son usualmente son abreviaciones para operaciones estandar, como se muestra en las siguientes definiciones y ejemplos.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NombresAbreviacionesSignificado
Asignaciónx = yx = y
Asignación de adiciónx += yx = x + y
Asignación de sustracciónx -= yx = x - y
Asignación de multiplicaciónx *= yx = x * y
Asignación de divisiónx /= yx = x / y
Asignación de Restox %= yx = x % y
Asignación de exponenciaciónx **= yx = x ** y
Asignación de desplazamiento a la izquierdax <<= yx = x << y
Asignación de desplazamiento a la derechax >>= yx = x >> y
Asignación sin signo de desplazamiento a la derechax >>>= yx = x >>> y
Asignacion ANDx &= yx = x & y
Asignacion XORx ^= yx = x ^ y
Asignacion ORx |= yx = x | y
- -

Asignación

- -

Operador de asignación simple que asigna un valor a una variable. EL operador de asignación evalua al valor asignado. Encadenando el operador de asignación es posible en orden de asignar un solo valor a multiples variables. Vea el ejemplo.

- -

Sintaxis

- -
Operador: x = y
-
- -

Ejemplos

- -
// Asumiendo las siguientes variables
-//  x = 5
-//  y = 10
-//  z = 25
-
-
-x = y     // x es 10
-x = y = z // x, y, z son todas 25
-
- -

Asignación de Adición

- -

El operador de asignación de suma agrega el valor del operando derecho a la variable y le asigna el resultado a la variable. Los dos tipos de operandos determinan el comportamiento del operador de asignación de adición. Adición o concatenación es posible. Mira el {{jsxref("Operators/Arithmetic_Operators", "operador de adición", "#Addition", 1)}} para más detalles.

- -

Sintaxis

- -
Operador: x += y
-Significado:  x  = x + y
-
- -

Ejemplos

- -
// Asuma las siguientes variables
-//  foo = "foo"
-//  bar = 5
-//  baz = true
-
-
-// Number + Number -> Adición
-bar += 2 // 7
-
-// Boolean + Number -> Adición
-baz += 1 // 2
-
-// Boolean + Boolean -> Adición
-baz += false // 1
-
-// Number + String -> concatenación
-bar += "foo" // "5foo"
-
-// String + Boolean -> concatenación
-foo += false // "foofalse"
-
-// String + String -> concatenación
-foo += "bar" // "foobar"
-
- -

Asignación de Sustracción

- -

El operador de asignación de sustracción sustrae el valor del operador derecho desde la variable y asigna el resultado a la variable. Mira el {{jsxref("Operators/Arithmetic_Operators", "operador de sustracción", "#Subtraction", 1)}} para mas detalles.

- - - -

Sintaxis

- - - -
Operador: x -= y
-Significado:  x  = x - y
-
- -

Ejemplos

- -
// Asumiendo las siguientes variables
-//  bar = 5
-
-bar -= 2     // 3
-bar -= "foo" // NaN
-
- -

Asignación de Multiplicación 

- -

El operador de asignación de multiplicación multiplica la variable por el valor del operando derecho y asigna el resultado a la variable. Vea el  {{jsxref("Operators/Arithmetic_Operators", "Operador de Multiplicación", "#Multiplication", 1)}} para mas detalles.

- -

Sintaxis

- -
Operador: x *= y
-Significado:  x  = x * y
-
- -

Ejemplos

- -
// Asumiendo la siguiente variable
-//  bar = 5
-
-bar *= 2     // 10
-bar *= "foo" // NaN
-
- -

Asignación de división

- -

El operador de asignación de división divide la variable por el valor del operando derecho y asigna el resultado a la variable. Vea el {{jsxref("Operators/Arithmetic_Operators", "operador de división", "#Division", 1)}} para mas detalles.

- -

Sintaxis

- -
Operador: x /= y
-Significado:  x  = x / y
-
- -

Ejemplos

- -
// Asumiendo la siguiente variable
-//  bar = 5
-
-bar /= 2     // 2.5
-bar /= "foo" // NaN
-bar /= 0     // Infinity
-
- -

Asignación  de resto

- -

El operador de asignación de resto divide la variable por el valor del operador derecho y asigna el resto a la variable. Vea el {{jsxref("Operators/Arithmetic_Operators", "Operador de resto", "#Remainder", 1)}} para mas detelles.

- -

Sintaxis

- -
Operador: x %= y
-Significado:  x  = x % y
-
- -

Ejemplos

- -
// Asumiendo la siguiente variable
-//  bar = 5
-
-bar %= 2     // 1
-bar %= "foo" // NaN
-bar %= 0     // NaN
-
- -

Asignación de exponenciación

- -

El operador de asignación de exponente evalua el resultado de elevar primero el operando a la potencia del segundo operando. Vea el {{jsxref("Operators/Bitwise_Operators", "operador de exponenciación", "#Left_shift", 1)}}para mas detalles

- -

Sintaxis

- -
Operador: x **= y
-Significado:  x  = x ** y
-
- -

Ejemplos

- -
// Asumiendo la siguiente variable
-//  bar = 5
-
-bar **= 2     // 25
-bar **= "foo" // NaN
- -

Asignación de desplazamiento a la izquierda

- -

El operador de asignación de desplazamiento a la izquierda mueve una cantidad especifica de bits a la izquierda y asigna el resultado a la variable. Vea el {{jsxref("Operators/Bitwise_Operators", "operador de desplazamiento a la izquierda", "#Left_shift", 1)}} para mas detalles.

- -

Sintaxis

- -
Operador: x <<= y
-Significado:  x   = x << y
-
- -

Ejemplos

- -
var bar = 5; //  (00000000000000000000000000000101)
-bar <<= 2; // 20 (00000000000000000000000000010100)
-
- -

Asignación de desplazamiento a la derecha

- -

El operador de asignación de desplazamiento a la derecha mueve una cantidad especifica de bits a la derecha y asigna el resultado a la variable. Vea el {{jsxref("Operators/Bitwise_Operators", "operador de desplazamiento a la derecha", "#Right_shift", 1)}} para mas detalles.

- -

Sintaxis

- -
Operador: x >>= y
-Significado:  x   = x >> y
-
- -

Ejemplos

- -
var bar = 5; //   (00000000000000000000000000000101)
-bar >>= 2;   // 1 (00000000000000000000000000000001)
-
-var bar -5; //    (-00000000000000000000000000000101)
-bar >>= 2;  // -2 (-00000000000000000000000000000010)
-
- -

Asignación sin signo de desplazamiento a la derecha

- -

El operador de asignación sin signo de desplazamiento a la derecha mueve una cantidad especifica de bits a la derecha y asigna el resultado a la variable. Vea el {{jsxref("Operators/Bitwise_Operators", "operador sin signo de desplazamiento a la derecha", "#Unsigned_right_shift", 1)}} para mas detalles.

- -

Sintaxis

- -
Operador: x >>>= y
-Significado:  x    = x >>> y
-
- -

Ejemplo

- -
var bar = 5; //   (00000000000000000000000000000101)
-bar >>>= 2;  // 1 (00000000000000000000000000000001)
-
-var bar = -5; // (-00000000000000000000000000000101)
-bar >>>= 2; // 1073741822 (00111111111111111111111111111110)
- -

Asignación AND

- -

El operador de asignacion AND usa la representación binaria de ambos operandos, hace una operacion AND en ellos y asigna el resultado a la variable. Vea el {{jsxref("Operators/Bitwise_Operators", "operador AND", "#Bitwise_AND", 1)}} para mas detalles.

- -

Sintaxis

- -
Operador: x &= y
-Significado:  x  = x & y
-
- -

Ejemplo

- -
var bar = 5;
-// 5:     00000000000000000000000000000101
-// 2:     00000000000000000000000000000010
-bar &= 2; // 0
-
- -

Asignación XOR

- -

El operador de asignacion XOR usa la representación binaria de ambos operandos, hace una operacion XOR en ellos y asigna el resultado a la variable. Vea el {{jsxref("Operators/Bitwise_Operators", "operador XOR", "#Bitwise_XOR", 1)}} para mas detalles

- -

Sintaxis

- -
Operador: x ^= y
-Significado:  x  = x ^ y
-
- -

Ejemplo

- -
var bar = 5;
-bar ^= 2; // 7
-// 5: 00000000000000000000000000000101
-// 2: 00000000000000000000000000000010
-// -----------------------------------
-// 7: 00000000000000000000000000000111
-
- -

Asignación OR

- -

El operador de asignacion OR usa la representación binaria de ambos operandos, hace una operacion OR en ellos y asigna el resultado a la variable. Vea el {{jsxref("Operators/Bitwise_Operators", "operador OR", "#Bitwise_XOR", 1)}} para mas detalles

- -

Sintaxis

- -
Operador: x |= y
-Significado:  x  = x | y
-
- -

Ejemplo

- -
var bar = 5;
-bar |= 2; // 7
-// 5: 00000000000000000000000000000101
-// 2: 00000000000000000000000000000010
-// -----------------------------------
-// 7: 00000000000000000000000000000111
-
- -

Ejemplos

- -

Operador izquierdo con otros operadores de asignación

- -

En situaciones inusuales, el operador de asignacion (e.g x += y) no es identico al significado de la expresión (aca x = x + y). Cuando el operando izquierdo de un mismo operador de asignación contiene un operador de asignaciónm el operando izquierdo es evaluado una vez. por ejemplo:

- -
a[i++] += 5         // i es evaluado una vez
-a[i++] = a[i++] + 5 // i es evaluado dos veces
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ESDraft', '#sec-assignment-operators', 'Operadores de asignación')}}{{Spec2('ESDraft')}}
{{SpecName('ES6', '#sec-assignment-operators', 'Operadores de asignación')}}{{Spec2('ES6')}}
{{SpecName('ES5.1', '#sec-11.13', 'Operadores de asignación')}}{{Spec2('ES5.1')}}
{{SpecName('ES1', '#sec-11.13', 'Operadores de asignación')}}{{Spec2('ES1')}} -

Definición inicial

-
- -

Compatibilidad de Navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte basico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte basico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Vea tambien

- - diff --git a/files/es/web/javascript/referencia/operadores/async_function/index.html b/files/es/web/javascript/referencia/operadores/async_function/index.html deleted file mode 100644 index 12e76e6ce5..0000000000 --- a/files/es/web/javascript/referencia/operadores/async_function/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: Expresión de función asíncrona -slug: Web/JavaScript/Referencia/Operadores/async_function -tags: - - Expresión Primaria - - JavaScript - - Operador - - función -translation_of: Web/JavaScript/Reference/Operators/async_function ---- -
{{jsSidebar("Operators")}}
- -

La palabra clave async function puede ser utilizada para definir funciones async dento de expresiones.

- -

También se pueden definir funciones asíncronas utilizando un enunciado de función asíncrona.

- -

Sintaxis

- -
async function [nombre]([param1[, param2[, ..., paramN]]]) {
-   enunciados
-}
- -

A partir de ES2015 (ES6), también se pueden emplear funciones flecha.

- -

Parámetros

- -
-
name
-
El nombre de la función. Puede ser omitida, en cuy caso la función es anónima. El nombre es sólo local al cuerpo de la función The name is only local to the function body.
-
paramN
-
El nombre de un argumento a ser pasado a la función.
-
statements
-
Los enunciados que componen el cuerpo de la función.
-
- -

Descripción

- -

Una expresión async function es miuy similar, y casi tiene la misma sintaxis que, una {{jsxref('Statements/async_function', 'async function statement')}}. La principal diferencia entre una expresión async function y un enunciado async function es el nombre de la función, que puede ser omitido en una expresión async function para crear funciones anonymous. Una expresión async function puede ser utilizada como un {{Glossary("IIFE")}} (Expresión de función inmediatamente invocada, Immediately Invoked Function Expression) que se ejecuta tan rápido como es definida. Ver el capítulo sobre funciones para tener más información.

- -

Ejemplos

- -

Ejemplo sencillo

- -
function resuelve2SegundosDespues(x) {
-  return new Promise(resolve => {
-    setTimeout(() => {
-      resolve(x);
-    }, 2000);
-  });
-};
-
-
-const agregar= async function(x) { // Expresión de una función asíncrona asignada a una variable
-  let a = await resuelve2SegundosDespues(20);
-  let b = await resuelve2SegundosDespues(30);
-  return x + a + b;
-};
-
-agregar(10).then(v => {
-  console.log(v);  // imprime 60 después de 4 segundos.
-});
-
-
-(async function(x) { // expresión de una función asíncrona utilizada como una IIFE
-  let p_a = resuelve2SegundosDespues(20);
-  let p_b = resuelve2SegundosDespues(30);
-  return x + await p_a + await p_b;
-})(10).then(v => {
-  console.log(v);  // imprime 60 después de 2 segundos.
-});
-
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-async-function-definitions', 'async function')}}
- -

Compatibilidad de los navegadores

- -
- - -

{{Compat("javascript.operators.async_function_expression")}}

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/operadores/await/index.html b/files/es/web/javascript/referencia/operadores/await/index.html deleted file mode 100644 index d1a84251f1..0000000000 --- a/files/es/web/javascript/referencia/operadores/await/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: await -slug: Web/JavaScript/Referencia/Operadores/await -translation_of: Web/JavaScript/Reference/Operators/await ---- -
{{jsSidebar("Operators")}}
- -
El operador await es usado para esperar a una {{jsxref("Promise")}}. Sólo puede ser usado dentro de una función {{jsxref("Statements/async_function", "async function")}}.
- -

Sintaxis

- -
[rv] = await expression;
- -
-
expression
-
Una {{jsxref("Promise")}} o cualquier otro valor por el cual haya que esperar.
-
rv
-
-

Regresa el valor terminado de la promesa o solamente un valor si no es unaPromise.

-
-
- -

Descripción

- -

La expresión await provoca que la ejecución de una función async sea pausada hasta que una Promise sea terminada o rechazada, y regresa a la ejecución de la función async después del término. Al regreso de la ejecución, el valor de la expresión await es la regresada por una promesa terminada.

- -

Si la Promise es rechazada, el valor de la expresión await tendrá el valor de rechazo.

- -

Si el valor de la expresión seguida del operador await  no es una promesa, será convertido a una resolved Promise.

- -

Ejemplos

- -

Si una Promise se pasa a una expresión await, espera a que la Promise se resuelva y devuelve el valor resuelto.

- -
function resolveAfter2Seconds(x) {
-  return new Promise(resolve => {
-    setTimeout(() => {
-      resolve(x);
-    }, 2000);
-  });
-}
-
-async function f1() {
-  var x = await resolveAfter2Seconds(10);
-  console.log(x); // 10
-}
-f1();
-
- -

Si el valor no es una Promise, convierte el valor a una Promise resuelta, y espera por dicho valor.

- -
async function f2() {
-  var y = await 20;
-  console.log(y); // 20
-}
-f2();
- -

Si la Promise es rechazada, se lanza una excepción con dicho el valor.

- -
async function f3() {
-  try {
-    var z = await Promise.reject(30);
-  } catch(e) {
-    console.log(e); // 30
-  }
-}
-f3();
- -

Especificaciones

- - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-async-function-definitions', 'async functions')}}{{Spec2('ESDraft')}}Initial definition in ES2017.
- -

Compatibilidad con navegadores

- -
- - -

{{Compat("javascript.operators.await")}}

-
- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/operadores/bitwise_operators/index.html b/files/es/web/javascript/referencia/operadores/bitwise_operators/index.html deleted file mode 100644 index c4276c1c95..0000000000 --- a/files/es/web/javascript/referencia/operadores/bitwise_operators/index.html +++ /dev/null @@ -1,722 +0,0 @@ ---- -title: Operadores a nivel de bit -slug: Web/JavaScript/Referencia/Operadores/Bitwise_Operators -tags: - - JavaScript - - Operador -translation_of: Web/JavaScript/Reference/Operators -translation_of_original: Web/JavaScript/Reference/Operators/Bitwise_Operators ---- -
{{jsSidebar("Operators")}}
- -

Los operadores a nivel de bit tratan sus operandos como una secuencia de 32 bits (unos y ceros) en lugar de números decimales, hexadecimales u octales.  Por ejemplo, el número decimal nueve tiene una representación binaria de 1001. Los operadores a nivel de bit realizan las operaciones en esas representaciones binarias, pero los valores devueltos son los valores numéricos estándar de JavaScript.

- -

La siguiente tabla resume los operadores a nivel de bit de JavaScript:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
OperadorUsoDescripción
AND binarioa & bDevuelve un uno en cada posición en la que ambos operandos sea uno.
OR binario a | bDevuelve un uno en cada posición en la que uno o ambos operandos sea uno.
Bitwise XORa ^ bDevuelve un uno en cada posición en la que los bits correspondientes en cada uno de los operandos, pero no en ambos, es uno. 
Bitwise NOT~ aInvierte los bits del operando.
Left shifta << bDesplaza en representación binaria b (< 32) bits a la izquierda, desplazando en ceros desde la derecha.
Sign-propagating right shifta >> bDesplaza en representación binaria b (< 32) bits a la derecha, descartando los bits desplazados fuera.
Zero-fill right shifta >>> bDesplaza en representación binaria b (< 32) bits a la derecha, desplazando en ceros desde la izquierda.
- -

Enteros con signo de 32 bits

- -

Los operandos de todas las operaciones bitwise son convertidos a enteros con signo de 32 bits en complemento a dos. Complemento a dos significa que el equivalente negativo de un número (por ejemplo, 5 y -5) es igual a todos los bits del número invertido (un NOT del número, también conocido como el compelemento a uno del número) más uno. Por ejemplo, a continuación se codifica el entero 314:

- -
00000000000000000000000100111010
-
- -

A continuación se codifica ~314 como complemento a uno de 314:

- -
11111111111111111111111011000101
-
- -

Por último, se codifica -314 como complemento a dos de 314:

- -
11111111111111111111111011000110
-
- -

El complemento a dos garantiza que el bit más a la izquierda es 0 cuando el número es positivo, y 1 cuando el número es negativo. Por esto es llamado bit de signo.

- -

El número 0 es el entero compuesto íntegramente por bits en 0.

- -
0 (base 10) = 00000000000000000000000000000000 (base 2)
-
-
- -

El número -1 es el entero compuesto íntegramente por bits de 1.

- -
-1 (base 10) = 11111111111111111111111111111111 (base 2)
-
- -

El número -2147483648 (representación hexadecimal: -0x80000000) es el entero compuesto íntegramente por bits de 0 excepto el de más a la izquierda.

- -
-2147483648 (base 10) = 10000000000000000000000000000000 (base 2)
-
- -

El número 2147483647 (representación hexadecimal: 0x7fffffff) es el entero compuesto íntegramente por bits de 1 excepto el de más a la izquierda. 

- -
2147483647 (base 10) = 01111111111111111111111111111111 (base 2)
-
- -

Los números -2147483648 and 2147483647 son el mínimo y el máximo entero que se pueden representar con signo de 32 bits.

- -

Operadores lógicos a nivel de bit

- -

Conceptualmente, los operadores lógicos bit a bit funcionan de la siguiente manera:

- - - -

& (Bitwise AND o AND a nivel de bits)

- -

Corresponde al operador lógico & o "Y". Ejecuta la operación AND en cada par de bits, a AND b es 1 sólo si tanto a como b son 1. La tabla de verdad del operador AND es:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
aba AND b
000
010
100
111
- -
     9 (base 10) = 00000000000000000000000000001001 (base 2)
-    14 (base 10) = 00000000000000000000000000001110 (base 2)
-                   --------------------------------
-14 & 9 (base 10) = 00000000000000000000000000001000 (base 2) = 8 (base 10)
-
- -

El resultado de hacer un AND de cualquier número x con 0 es 0, mientras que el de hacer un AND de cualquier número x con -1 da como resultado x. 

- -

| (Bitwise OR o  OR a nivel de bits)

- -

Realiza la operación OR en cada par de bits. a OR b devuelve 1 si a o b son 1. La tabla de verdad para la operación OR es la siguiente:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
aba OR b
000
011
101
111
- -
     9 (base 10) = 00000000000000000000000000001001 (base 2)
-    14 (base 10) = 00000000000000000000000000001110 (base 2)
-                   --------------------------------
-14 | 9 (base 10) = 00000000000000000000000000001111 (base 2) = 15 (base 10)
-
- -

Ejecutar la operación OR sobre cualquier número x y 0 devuelve x. Ejecutar OR sobre cualquier número X y -1 devuelve -1.

- -

^ (Bitwise XOR o XOR a nivel de bits)

- -

Realiza la operación XOR en cada par de bits. a OR b devuelve 1 si a o b son diferentes. La tabla de verdad para la operación OR es la siguiente:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
aba XOR b
000
011
101
110
- -
     9 (base 10) = 00000000000000000000000000001001 (base 2)
-    14 (base 10) = 00000000000000000000000000001110 (base 2)
-                   --------------------------------
-14 ^ 9 (base 10) = 00000000000000000000000000000111 (base 2) = 7 (base 10)
-
- -

Ejecutar la operación XOR sobre cualquier número x y 0 devuelve x. Ejecutar la operación XOR sobre cualquier número x y -1 devuelve ~x

- -

~ (Bitwise NOT o Negación a nivel de bits)

- -

Realiza la operación NOT a cada bit. NOT devuelve el valor invertido ( conocido como complementario). La tabla de verdad para la operación NOT es la siguiente:

- - - - - - - - - - - - - - - - -
aNOT a
01
10
- -

 

- -
 9 (base 10) = 00000000000000000000000000001001 (base 2)
-               --------------------------------
-~9 (base 10) = 11111111111111111111111111110110 (base 2) = -10 (base 10)
-
- -

 

- -

Ejecutar la operación NOT sobre cualquier número x devuelve -(x+1). Por ejemplo -5 devuelve 4.

- -

Ejemplo con indexOf:

- -
var str = 'rawr';
-var searchFor = 'a';
-
-// esta es un forma alternativa de escribir (-1*str.indexOf('a') <= 0)
-if (~str.indexOf(searchFor)) {
-  // searchFor esta en el string
-} else {
-  // searchFor no esta en el string
-}
-
-// aquí verás los valores que retorna (~str.indexOf(searchFor))
-// r == -1
-// a == -2
-// w == -3
-
- -

Operadores de desplazamiento a nivel de bit

- -

Los operadores de desplazamiento toman dos operandos: el primero es la cantidad a ser desplazados, y el segundo especifica el número de posiciones bits que el primer operando debe ser desplazado. El sentido del operador de desplazamiento es determinado por el operador utilizado.

- -

Shift operators u operadores de desplazamiento, convierten sus operandos a enteros de 32-bit en orden big-endian y retorna el resultado del mismo tipo que el operando izquierdo. El operador derecho debe ser menor que 32, de lo contrario solo se usaran los ultimos cinco bits mas bajos.

- -

<< (Desplazamiento a la izquierda)

- -

Este operador desplaza el primer operando el número especificado de bits a la izquierda. Los bits en exceso desplazados hacia la izquierda se descartan. Los bits cero se desplazan desde la derecha.

- -

Por ejemplo, 9 << 2 devuelve 36:

- -
     9 (base 10): 00000000000000000000000000001001 (base 2)
-                  --------------------------------
-9 << 2 (base 10): 00000000000000000000000000100100 (base 2) = 36 (base 10)
-
- -

Desplazar a la izquierda cualquier número x por y bits da por resultado x * 2^y.

- -

>> (Desplazamiento a la derecha con propagación de signo o Desplazamiento aritmético a la derecha)

- -

Este operador desplaza el primer operando la cantidad de bits especificada a la derecha. Los bits en exceso desplazados a la derecha se descartan. Las copias del bit del extremo izquierdo se desplazan desde la izquierda. Como el nuevo bit más a la izquierda tiene el mismo valor que el bit anterior más a la izquierda, el bit de signo (el bit más a la izquierda) no cambia. De ahí el nombre "propagación de signo".

- -

Por ejemplo, 9 >> 2 devuelve 2:

- -
     9 (base 10): 00000000000000000000000000001001 (base 2)
-                  --------------------------------
-9 >> 2 (base 10): 00000000000000000000000000000010 (base 2) = 2 (base 10)
-
- -

Igualmente, -9 >> 2 devuelve-3, porque se mantiene el signo:

- -
     -9 (base 10): 11111111111111111111111111110111 (base 2)
-                   --------------------------------
--9 >> 2 (base 10): 11111111111111111111111111111101 (base 2) = -3 (base 10)
-
- -

>>> (Desplazamiento a la derecha con relleno de ceros o Desplazamiento lógico )

- -

Este operador desplaza el primer operando la cantidad de bits especificada a la derecha. Los bits en exceso desplazados a la derecha se descartan. Ceros son despalzadas o introducidos desde la izquierda. El bit de signo aútomaticamente se convierte 0, así que el resultado siempre es pósitivo. 

- -


- Para números no negativos, el desplazamiento lógico y arítmetico dan el mismo resultado. Por ejemplo, 9 >>> 2 da 2, al igual que 9 >> 2:

- -
      9 (base 10): 00000000000000000000000000001001 (base 2)
-                   --------------------------------
-9 >>> 2 (base 10): 00000000000000000000000000000010 (base 2) = 2 (base 10)
-
- -

Sin embargo, no es el caso para números negativos. Por ejemplo, -9 >>> 2 da 1073741821, que es diferente de  -9 >> 2 (que da -3):

- -
      -9 (base 10): 11111111111111111111111111110111 (base 2)
-                    --------------------------------
--9 >>> 2 (base 10): 00111111111111111111111111111101 (base 2) = 1073741821 (base 10)
-
- -

Ejemplos

- -

Banderas y máscaras de bits

- -

Los operadores lógicos a nivel de bits se utilizan a menudo para crear, manipular y leer secuencias de indicadores, que son como variables binarias. Se podrían usar variables en lugar de estas secuencias, pero las banderas binarias toman mucho menos memoria (por un factor de 32).

- -

Supongamos que hay 4 banderas:

- - - -

Estas banderas están representadas por una secuencia de bits: DCBA. Cuando se establece un indicador, tiene un valor de 1. Cuando se elimina un indicador, tiene un valor de 0. Suponga que los indicadores de una variable tienen el valor binario 0101:

- -
var flags = 5;   // binary 0101
-
- -

Este valor indica:

- - - -

Dado que los operadores bitwise son de 32 bits, 0101 es en realidad 0000000000000000000000000000000101, pero los ceros anteriores pueden ignorarse ya que no contienen información significativa.

- -

Una máscara de bits es una secuencia de bits que puede manipular y / o leer banderas. Normalmente, se define una máscara de bits "primitiva" para cada bandera:

- -
var FLAG_A = 1; // 0001
-var FLAG_B = 2; // 0010
-var FLAG_C = 4; // 0100
-var FLAG_D = 8; // 1000
-
- -

Se pueden crear nuevas máscaras de bits utilizando los operadores lógicos a nivel de bits en estas máscaras de bits primitivas. Por ejemplo, la máscara de bits 1011 se puede crear mediante ORing FLAG_A, FLAG_B y FLAG_D:

- -
var mask = FLAG_A | FLAG_B | FLAG_D; // 0001 | 0010 | 1000 => 1011
-
- -

Los valores de los indicadores individuales se pueden extraer mediante AND con una máscara de bits, donde cada bit con el valor de uno "extraerá" el indicador correspondiente. La máscara de bits enmascara las marcas no relevantes mediante AND con ceros (de ahí el término "bitmask"). Por ejemplo, la máscara de bits 0101 se puede usar para ver si el indicador C está establecido:

- -
// if we own a cat
-if (flags & FLAG_C) { // 0101 & 0100 => 0100 => true
-   // do stuff
-}
-
- -

Una máscara de bits con varios indicadores establecidos actúa como un "either/or". Por ejemplo, los siguientes dos son equivalentes:

- -
// if we own a bat or we own a cat
-// (0101 & 0010) || (0101 & 0100) => 0000 || 0100 => true
-if ((flags & FLAG_B) || (flags & FLAG_C)) {
-   // do stuff
-}
-
- -
// if we own a bat or cat
-var mask = FLAG_B | FLAG_C; // 0010 | 0100 => 0110
-if (flags & mask) { // 0101 & 0110 => 0100 => true
-   // do stuff
-}
-
- -

Los indicadores se pueden establecer mediante ORing con una máscara de bits, donde cada bit con el valor uno establecerá el indicador correspondiente, si ese indicador no está ya establecido. Por ejemplo, la máscara de bits 1100 se puede utilizar para establecer los indicadores C y D:

- -
// yes, we own a cat and a duck
-var mask = FLAG_C | FLAG_D; // 0100 | 1000 => 1100
-flags |= mask;   // 0101 | 1100 => 1101
-
- -

Los indicadores se pueden borrar ANDing con una máscara de bits, donde cada bit con el valor cero borrará el indicador correspondiente, si aún no se ha borrado. Esta máscara de bits se puede crear NOTing las máscaras de bits primitivas. Por ejemplo, la máscara de bits 1010 se puede utilizar para borrar los indicadores A y C:

- -
// no, we don't have an ant problem or own a cat
-var mask = ~(FLAG_A | FLAG_C); // ~0101 => 1010
-flags &= mask;   // 1101 & 1010 => 1000
-
- -

La máscara también podría haberse creado con ~ FLAG_A & ~ FLAG_C (ley de De Morgan):

- -
// no, we don't have an ant problem, and we don't own a cat
-var mask = ~FLAG_A & ~FLAG_C;
-flags &= mask;   // 1101 & 1010 => 1000
-
- -

Los indicadores se pueden alternar mediante XORing con una máscara de bits, donde cada bit con el valor uno cambiará el indicador correspondiente. Por ejemplo, la máscara de bits 0110 se puede utilizar para alternar los indicadores B y C:

- -
// if we didn't have a bat, we have one now,
-// and if we did have one, bye-bye bat
-// same thing for cats
-var mask = FLAG_B | FLAG_C;
-flags = flags ^ mask;   // 1100 ^ 0110 => 1010
-
- -

Finalmente, todas las banderas se pueden voltear con el operador NOT:

- -
// entering parallel universe...
-flags = ~flags;    // ~1010 => 0101
-
- -

Fragmentos de conversión

- -

Convert a binary String to a decimal Number:

- -
var sBinString = "1011";
-var nMyNumber = parseInt(sBinString, 2);
-alert(nMyNumber); // prints 11, i.e. 1011
-
- -

 

- -

Convierte una cadena binaria a un número decimal:

- -

 

- -
var nMyNumber = 11;
-var sBinString = nMyNumber.toString(2);
-alert(sBinString); // prints 1011, i.e. 11
-
- -

Automatiza la creación de una máscara.

- -

Si tiene que crear muchas máscaras a partir de algunos valores booleanos, puede automatizar el proceso:

- -
function createMask () {
-  var nMask = 0, nFlag = 0, nLen = arguments.length > 32 ? 32 : arguments.length;
-  for (nFlag; nFlag < nLen; nMask |= arguments[nFlag] << nFlag++);
-  return nMask;
-}
-var mask1 = createMask(true, true, false, true); // 11, i.e.: 1011
-var mask2 = createMask(false, false, true); // 4, i.e.: 0100
-var mask3 = createMask(true); // 1, i.e.: 0001
-// etc.
-
-alert(mask1); // prints 11, i.e.: 1011
-
- -

Algoritmo inverso: una matriz de valores booleanos de una máscara

- -

Si desea crear una matriz de valores booleanos a partir de una máscara, puede usar este código:

- -
function arrayFromMask (nMask) {
-  // nMask must be between -2147483648 and 2147483647
-  if (nMask > 0x7fffffff || nMask < -0x80000000) {
-    throw new TypeError("arrayFromMask - out of range");
-  }
-  for (var nShifted = nMask, aFromMask = []; nShifted;
-       aFromMask.push(Boolean(nShifted & 1)), nShifted >>>= 1);
-  return aFromMask;
-}
-
-var array1 = arrayFromMask(11);
-var array2 = arrayFromMask(4);
-var array3 = arrayFromMask(1);
-
-alert("[" + array1.join(", ") + "]");
-// prints "[true, true, false, true]", i.e.: 11, i.e.: 1011
-
- -

Puedes probar ambos algoritmos al mismo tiempo ...

- -
var nTest = 19; // our custom mask
-var nResult = createMask.apply(this, arrayFromMask(nTest));
-
-alert(nResult); // 19
-
- -

Solo para fines didácticos (ya que existe el método Number.toString (2)), mostramos cómo es posible modificar el algoritmo arrayFromMask para crear una cadena que contenga la representación binaria de un número, en lugar de una matriz de booleanos:

- -
function createBinaryString (nMask) {
-  // nMask must be between -2147483648 and 2147483647
-  for (var nFlag = 0, nShifted = nMask, sMask = ""; nFlag < 32;
-       nFlag++, sMask += String(nShifted >>> 31), nShifted <<= 1);
-  return sMask;
-}
-
-var string1 = createBinaryString(11);
-var string2 = createBinaryString(4);
-var string3 = createBinaryString(1);
-
-alert(string1);
-// prints 00000000000000000000000000001011, i.e. 11
-
- -

Specifications

- - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Definicion inicial
{{SpecName('ES5.1', '#sec-11.7')}}{{Spec2('ES5.1')}}Definido en varias secciones de la especificación: operador NOT a nivel de bit, operadores de cambio a nivel de bit, operadores a nivel de bit binarios
{{SpecName('ES6', '#sec-bitwise-shift-operators')}}{{Spec2('ES6')}}Definido en varias secciones de la especificación: operador NOT a nivel de bit, operadores de cambio a nivel de bit, operadores a nivel de bit binarios
- -

Compatibilidad del navegador

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Bitwise NOT (~){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Bitwise AND (&){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Bitwise OR (|){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Bitwise XOR (^){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Left shift (<<){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Right shift (>>){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Unsigned right shift (>>>){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Bitwise NOT (~){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Bitwise AND (&){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Bitwise OR (|){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Bitwise XOR (^){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Left shift (<<){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Right shift (>>){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Unsigned right shift (>>>){{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/operadores/class/index.html b/files/es/web/javascript/referencia/operadores/class/index.html deleted file mode 100644 index e654359035..0000000000 --- a/files/es/web/javascript/referencia/operadores/class/index.html +++ /dev/null @@ -1,157 +0,0 @@ ---- -title: expresión class -slug: Web/JavaScript/Referencia/Operadores/class -tags: - - Classes - - ECMAScript6 - - Expression - - JavaScript - - Operator - - Reference -translation_of: Web/JavaScript/Reference/Operators/class ---- -
{{jsSidebar("Operators")}}
- -

La expresión class es una forma de definir una clase en ECMAScript 2015 (ES6). Similar a las funciones, las expresiones de clase pueden ser nombradas o no. Si se nombran, el nombre de la clase es local sólo en el cuerpo de la clase. Las clases en JavaScript utilizan herencia basada en prototipos.

- -

Sintaxis

- -
var MyClass = class [className] [extends] {
-  // class body
-};
- -

Descripción

- -

Una expresión de clase tiene una sintaxis similar a la declaración de una clase. Sin embargo, con las expresiones de clases, está permitido omitir el nombre de la clase ("identificador de enlace"), cosa que no se puede hacer con las declaraciones de clases. Además, las expresiones de clases permiten redefinir/redeclarar clases y no lanzar ningún tipo de error como las declaraciones de clases. La propiedad constructor es opcional. Y el typeof de las clases generadas con esta palabra clave siempre será "function".

- -

Tal y como en la declaración de clases, el cuerpo de la expresión de clase se ejecuta en modo estricto.

- -
'use strict';
-var Foo = class {}; // la propiedad constructor es opcional
-var Foo = class {}; // Se permite repetir declaraciones
-
-typeof Foo; // devuelve "function"
-typeof class {}; // devuelve "function"
-
-Foo instanceof Object; // true
-Foo instanceof Function; // true
-class Foo {}; // Lanza TypeError, no permite volver a declararla
-
- -

Ejemplo

- -

Una clase sencilla

- -

Esta es una sencilla expresión de clase anónima a la que se puede hacer referencia utilizando la variable "Foo".

- -
var Foo = class {
-  constructor() {}
-  bar() {
-    return "Hello World!";
-  }
-};
-
-var instance = new Foo();
-instance.bar(); // "Hello World!"
-Foo.name; // "Foo"
-
- -

Expresiones de clase con nombre

- -

Si se quiere hacer referencia a la clase actual dentro del cuerpo de la clase, se puede crear una expresión de clase con nombre. Este nombre sólo será visible en el mismo contexto de la expresión de clase.

- -
var Foo = class NamedFoo {
-  constructor() {}
-  whoIsThere() {
-    return NamedFoo.name;
-  }
-}
-var bar = new Foo();
-bar.whoIsThere(); // "NamedFoo"
-NamedFoo.name; // ReferenceError: NamedFoo no está definido
-Foo.name; // "NamedFoo"
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad en navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome(42.0)}}{{CompatGeckoDesktop(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome para Android
Soporte básico{{CompatNo}}{{CompatChrome(42.0)}}{{CompatGeckoMobile(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(42.0)}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/operadores/comparacion/index.html b/files/es/web/javascript/referencia/operadores/comparacion/index.html deleted file mode 100644 index c60efcaada..0000000000 --- a/files/es/web/javascript/referencia/operadores/comparacion/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Comparación (==) -slug: Web/JavaScript/Referencia/Operadores/Comparacion -tags: - - JS - - JavaScript - - Operador de comparacion - - Operadores - - Referências -translation_of: Web/JavaScript/Reference/Operators/Equality ---- -
{{jsSidebar("Operators")}}
- -

El operador de comparacion  (==) comprueba si sus dos operandos son iguales y devuelve un resultado booleano. A diferencia del operador de igualdad estricta (===), es que este convierte y compara operandos que son de diferentes tipos.

- -
{{EmbedInteractiveExample("pages/js/expressions-equality.html")}}
- - - -

Sintaxis

- -
x == y
-
- -

Descripción

- -

Los operadores de igualdad (==y !=) Utilizan el algoritmo de comparación de igualdad abstracta para comparar dos operandos. Esto se puede resumir a grandes rasgos como:

- - - -

La diferencia más notable entre este operador y el operador de igualdad estricta (===) es que el operador de igualdad estricta no realiza la conversión de tipos. 

- -

Ejemplos

- -

Comparación sin conversión de tipo

- -
1 == 1;              // true
-"Hola" == "Hola";  // true
- -

Comparación con conversión de tipos

- -
"1" ==  1;            // true
-1 == "1";             // true
-0 == false;           // true
-0 == null;            // false
-0 == undefined;       // false
-0 == !!null;          // true, Operador Logico NOT
-0 == !!undefined;     // true, Operador Logico NOT
-null == undefined;    // true
-
-const number1 = new Number(3);
-const number2 = new Number(3);
-number1 == 3;         // true
-number1 == number2;   // false
- -

Comparación de objetos

- -
const object1 = {"key": "value"}
-const object2 = {"key": "value"};
-
-object1 == object2 // false
-object2 == object2 // true
- -

Comparar String y objetos String

- -

Tenga en cuenta que las cadenas construidas con new String() son objetos. Si compara uno de estos con un String literal, el objeto String se convertirá en un String literal y se comparará el contenido. Sin embargo, si ambos operandos son objetos de tipo String, entonces se comparan como objetos y deben hacer referencia al mismo objeto para que la comparación sea exitosa:

- -
const string1 = "Hola";
-const string2 = String("Hola");
-const string3 = new String("Hola");
-const string4 = new String("Hola");
-
-console.log(string1 == string2); // true
-console.log(string1 == string3); // true
-console.log(string2 == string3); // true
-console.log(string3 == string4); // false
-console.log(string4 == string4); // true
- -

Comparación de fechas y cadenas

- -
const d = new Date('December 17, 1995 03:24:00');
-const s = d.toString(); // Por ejemplo: "Sun Dec 17 1995 03:24:00 GMT-0800 (Hora estándar del Pacífico)"
-console.log(d == s);    //true
- -

Especificaciones

- - - - - - - - - - - - -
Especificaciones
{{SpecName('ESDraft', '#sec-equality-operators', 'Equality operators')}}
- -

Compatibilidad con Navegadores

- - - -

{{Compat("javascript.operators.equality")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/operadores/comparison_operators/index.html b/files/es/web/javascript/referencia/operadores/comparison_operators/index.html deleted file mode 100644 index 8685790d2c..0000000000 --- a/files/es/web/javascript/referencia/operadores/comparison_operators/index.html +++ /dev/null @@ -1,262 +0,0 @@ ---- -title: Operadores de Comparación -slug: Web/JavaScript/Referencia/Operadores/Comparison_Operators -tags: - - JavaScript - - Operador - - Referencia -translation_of: Web/JavaScript/Reference/Operators -translation_of_original: Web/JavaScript/Reference/Operators/Comparison_Operators ---- -
{{jsSidebar("Operators")}}
- -

JavaScript tiene comparaciones estrictas y de conversión de tipos. Una comparación estricta (por ejemplo, ===) solo es verdadera si los operandos son del mismo tipo y los contenidos coinciden. La comparación abstracta más comúnmente utilizada (por ejemplo, ==) convierte los operandos al mismo tipo antes de hacer la comparación. Para las comparaciones abstractas relacionales (p. Ej., <=), Los operandos primero se convierten en primitivos, y luego en el mismo tipo, antes de la comparación.

- -

Las cadenas se comparan en base al orden lexicográfico estándar, utilizando valores Unicode.

- -
console.log(1 == 1)
-// Esperamos True
-
-console.log("1" == 1 )
-// Esperamos true
-
-console.log( 1 === 1)
-// Esperamos true
-
-console.log( "1" === 1)
-// Esperamos false
-
- -

Características de las comparaciones:

- - - -

Operadores de igualdad

- -

Igualdad (==)

- -

El operador de igualdad convierte los operandos si no son del mismo tipo, luego aplica una comparación estricta. Si ambos operandos son objetos, entonces JavaScript compara las referencias internas que son iguales cuando los operandos se refieren al mismo objeto en la memoria.

- -

Sintaxis

- -
x == y
-
- -

Ejemplos

- -
1    ==  1         // true
-'1'  ==  1         // true
-1    == '1'        // true
-0    == false      // true
-0    == null       // false
-var object1 = {'key': 'value'}, object2 = {'key': 'value'};
-object1 == object2 // false
-0    == undefined  // false
-null == undefined  // true
-
- -

Desigualdad (!=)

- -

El operador de desigualdad devuelve verdadero si los operandos no son iguales. Si los dos operandos no son del mismo tipo, JavaScript intenta convertir los operandos a un tipo apropiado para la comparación. Si ambos operandos son objetos, entonces JavaScript compara las referencias internas que no son iguales cuando los operandos se refieren a diferentes objetos en la memoria.

- -

Sintaxis

- -
x != y
- -

Ejemplos

- -
1 !=   2     // true
-1 !=  '1'    // false
-1 !=  "1"    // false
-1 !=  true   // false
-0 !=  false  // false
-
- -

Identidad / igualdad estricta (===)

- -

El operador de identidad devuelve verdadero si los operandos son estrictamente iguales (ver arriba) sin conversión de tipo.

- -

Sintaxis

- -
x === y
- -

Ejemplos

- -
3 === 3   // true
-3 === '3' // false
-var object1 = {'key': 'value'}, object2 = {'key': 'value'};
-object1 === object2 // false
- - - -

Sin identidad / desigualdad estricta (!==)

- -

El operador sin identidad devuelve verdadero si los operandos no son iguales y / o no del mismo tipo.

- -

Sintaxis

- -
x !== y
- -

Ejemplos

- -
3 !== '3' // true
-4 !== 3   // true
-
- -

Operadores relacionales

- -

Cada uno de estos operadores llamará a la función valueOf() en cada operando antes de realizar una comparación.

- -

Operador mayor que (>)

- -

El operador mayor que, devuelve verdadero si el operando izquierdo es mayor que el operando derecho.

- -

Sintaxis

- -
x > y
- -

Ejemplos

- -
4 > 3 // true
-
- -

Operador mayor o igual (>=)

- -

El operador mayor o igual que, devuelve verdadero si el operando izquierdo es mayor o igual que el operando derecho.

- -

Sintaxis

- -
 x >= y
- -

Ejemplos

- -
4 >= 3 // true
-3 >= 3 // true
-
- -

Operador menor que (<)

- -

El operador menor que devuelve verdadero si el operando de la izquierda es menor que el operando de la derecha.

- -

Sintaxis

- -
 x < y
- -

Ejemplos

- -
3 < 4 // true
-
- -

Operador menor o igual (<=)

- -

El operador menor o igual devuelve verdadero si el operando izquierdo es menor o igual que el operando derecho.

- -

Sintaxis

- -
 x <= y
- -

Ejemplos

- -
3 <= 4 // true
-
- -

Usando los operadores de igualdad

- -

Los operadores de igualdad estándar (== y !=) utilizan el Algoritmo de Comparación de Igualdad Abstracta para comparar dos operandos. Si los operandos son de tipos diferentes, intentará convertirlos al mismo tipo antes de hacer la comparación, por ejemplo, en la expresión 5 == '5', la cadena de la derecha se convierte a {{jsxref("Number")}} antes de realizar la comparación.

- -

Los operadores de igualdad estricta (=== y !==) usan el Algoritmo de Comparación de Igualdad Estricta y están destinados a realizar comparaciones de igualdad en operandos del mismo tipo. Si los operandos son de tipos diferentes, el resultado siempre es false, entonces 5 !== '5'.

- -

Utilice operadores de igualdad estrictos si los operandos deben ser de un tipo específico así como de valor o si el tipo exacto de los operandos es importante. De lo contrario, utilice los operadores de igualdad estándar, que le permiten comparar la identidad de dos operandos, incluso si no son del mismo tipo.

- -

Cuando la conversión de tipo está involucrada en la comparación (es decir, comparación no estricta), JavaScript convierte los tipos {{jsxref("String")}}, {{jsxref("Number")}}, {{jsxref("Boolean")}} o {{jsxref("Object")}} operandos de la siguiente manera:

- - - -
Nota: Los objetos de cadena son Tipo Objeto, no String! Los objetos de cadena rara vez se utilizan, por lo que los siguientes resultados pueden ser sorprendentes:
- -
// true, ya que ambos operandos son de tipo String (es decir, primitivas de cadena):
-'foo' === 'foo'
-
-var a = new String('foo');
-var b = new String('foo');
-
-// false como a y b son tipo Objeto y referencia a diferentes objetos
-a == b
-
-// false como a y b son tipo Objeto y referencia a diferentes objetos
-a === b
-
-// true como a y 'foo' son de tipo diferente y, el Objeto (a)
-// se convierte en cadena 'foo' antes de la comparación
-a == 'foo'
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial. Implementado en JavaScript 1.0
{{SpecName('ES3')}}{{Spec2('ES3')}} -

Agrega ===!== operadores. Implementado en JavaScript 1.3

-
{{SpecName('ES5.1', '#sec-11.8')}}{{Spec2('ES5.1')}} -

Definido en varias secciones de la especificación: Operadores Relacionales, Operadores de Igualdad

-
{{SpecName('ES6', '#sec-relational-operators')}}{{Spec2('ES6')}} -

Definido en varias secciones de la especificación: Operadores Relacionales, Operadores de Igualdad

-
{{SpecName('ESDraft', '#sec-relational-operators')}}{{Spec2('ESDraft')}} -

Definido en varias secciones de la especificación: Operadores Relacionales, Operadores de Igualdad

-
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.operators.comparison")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/operadores/conditional_operator/index.html b/files/es/web/javascript/referencia/operadores/conditional_operator/index.html deleted file mode 100644 index 6b48295902..0000000000 --- a/files/es/web/javascript/referencia/operadores/conditional_operator/index.html +++ /dev/null @@ -1,171 +0,0 @@ ---- -title: Operador condicional (ternario) -slug: Web/JavaScript/Referencia/Operadores/Conditional_Operator -tags: - - JavaScript - - Operador -translation_of: Web/JavaScript/Reference/Operators/Conditional_Operator ---- -
{{jsSidebar("Operators")}}
- -
El operador condicional (ternario) es el único operador en JavaScript que tiene tres operandos. Este operador se usa con frecuencia como atajo para la instrucción if.
- -
 
- -

Sintaxis

- -
condición ? expr1 : expr2 
- -

Parámetros

- -
-
condición
-
Una expresión que se evalúa como true o false.
-
-
expr1, expr2
-
-
Expresión con valores de algún tipo.
-
-

Descripción

-
-
- -

Si la condición es true, el operador retorna el valor de la expr1; de lo contrario,  devuelve el valor de expr2. Por ejemplo, para mostrar un mensaje diferente en función del valor de la variable isMember, se puede usar esta declaración:

- -
"La Cuota es de:  " + (isMember ? "$2.00" : "$10.00")
-
- -

También puedes asignar variables dependiendo del resultado de la condición ternaria:

- -
var elvisLives = Math.PI > 4 ? "Sip" : "Nop";
- -

También es posible realizar evaluaciones ternarias múltiples (Nota: El operador condicional es asociativo):

- -
var firstCheck = false,
-    secondCheck = false,
-    access = firstCheck ? "Acceso Denegado" : secondCheck ? "Acceso Denegado" : "Acceso Permitido";
-
-console.log( access ); // muestra "Acceso Permitido"
- -

También puede usar operaciones ternarias en espacio vacío con el propósito de realizar diferentes operaciones:

- -
var stop = false, age = 16;
-
-age > 18 ? location.assign("continue.html") : stop = true;
-
- -

También puede realizar más de una operación por caso, separándolas con una coma:

- -
var stop = false, age = 23;
-
-age > 18 ? (
-    alert("OK, puedes continuar."),
-    location.assign("continue.html")
-) : (
-    stop = true,
-    alert("Disculpa, eres menor de edad!")
-);
-
- -

También puede realizar más de una operación durante la asignación de un valor. En este caso, el último valor separado por una coma del paréntesis será el valor asignado.

- -
var age = 16;
-
-var url = age > 18 ? (
-    alert("OK, puedes continuar."),
-    // alert devuelve "undefined", pero será ignorado porque
-    // no es el último valor separado por comas del paréntesis
-    "continue.html" // el valor a ser asignado si age > 18
-) : (
-    alert("Eres menor de edad!"),
-    alert("Disculpa :-("),
-    // etc. etc.
-    "stop.html" // el valor a ser asignado si !(age > 18)
-);
-
-location.assign(url); // "stop.html"
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-conditional-operator', 'Conditional Operator')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-11.12', 'The conditional operator')}}{{Spec2('ES5.1')}} 
{{SpecName('ES1', '#sec-11.12', 'The conditional operator')}}{{Spec2('ES1')}}Definición inicial implementada en JavaScript 1.0.
- -

Compatibilidad de navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/operadores/decremento/index.html b/files/es/web/javascript/referencia/operadores/decremento/index.html deleted file mode 100644 index 01fa5f0ee2..0000000000 --- a/files/es/web/javascript/referencia/operadores/decremento/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Decremento(--) -slug: Web/JavaScript/Referencia/Operadores/Decremento -tags: - - Decremento - - JavaScript - - JavaScript basico - - Operadores -translation_of: Web/JavaScript/Reference/Operators/Decrement ---- -
{{jsSidebar("Operators")}}
- -

El operador de decremento (--) disminuye (o resta de a uno) su operando y retorna un valor.

- -
{{EmbedInteractiveExample("pages/js/expressions-decrement.html")}}
- -
- - - -

Sintaxis

- -
Operadores: x-- o --x
-
- -

Descripción

- -

Si usamos la forma de sufijo, operador después del operando (por ejemplo, x--), el operador de disminución disminuye y devuelve el valor antes de disminuir.

- -

Si se usamos la forma de prefijo, operador antes del operando (por ejemplo, --x), el operador de disminución disminuye y devuelve el valor después de disminuir.

- -

Ejemplos

- -

Usando Sufijo 

- -
let x = 3;
-y = x--;
-
-// y = 3
-// x = 2
-
- -

Usando Prefijo

- -
let a = 2;
-b = --a;
-
-// a = 1
-// b = 1
-
- -

Especificaciones

- - - - - - - - - - -
Especificaciones
{{SpecName('ESDraft', '#sec-postfix-decrement-operator', 'Decrement operator')}}
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.operators.decrement")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/operadores/delete/index.html b/files/es/web/javascript/referencia/operadores/delete/index.html deleted file mode 100644 index 99ec3e73dd..0000000000 --- a/files/es/web/javascript/referencia/operadores/delete/index.html +++ /dev/null @@ -1,242 +0,0 @@ ---- -title: operador delete -slug: Web/JavaScript/Referencia/Operadores/delete -translation_of: Web/JavaScript/Reference/Operators/delete ---- -
-
{{jsSidebar("Operators")}}
-
- -

Resumen

- -

El operador delete  elimina una propiedad de un objeto.

- -

Sintaxis

- -
delete expresión 
- -

donde la expresión debe evaluar una referencia de la propiedad, por ejemplo:

- -
delete objeto.propiedad
-delete objeto['propiedad']
-
- -

Parámetros

- -
-
objeto
-
El nombre de un objeto, o una expresión que evalua a un objeto.
-
propiedad
-
La propiedad a eliminar.
-
- -

Retorno

- -

En modo estricto arroja una excepción si la propiedad no es configurable (retorna false en modo no estricto). Retorna true en cualquier otro caso.

- -

Descripción

- -

Al contrario de lo que se podría pensar, el operador delete no tiene nada que ver con liberar memoria (sólo lo hace de manera indirecta eliminando referencias. Más detalles en la página de gestión de memoria).

- -

Si la operación delete funciona correctamente, eliminará la propiedad del objeto por completo. Sin embargo, si existe otra propiedad con el mismo nombre en la cadena del prototype del objeto, éste heredará la propiedad del prototype.

- -

delete sólo es efectivo en propiedades de objetos. No tiene ningún efecto en variables o en nombres de funciones.
- Aunque a veces son mal identificados como variables globales, las asignaciones que no especifican al objeto (ejemplo: x = 5), son en realidad propiedades que se asignan al objeto global.

- -

delete no puede eliminar ciertas propiedades de los objetos predefinidos (como Object, Array, Math etc). Estos están descritos en ECMAScript 5 y más tarde como no configurables.

- -

Temporal dead zone

- -

The "temporal dead zone" (TDZ), specified in ECMAScript 6 for const and let declarations, also applies to the delete operator. Thus, code like the following will throw a {{jsxref("ReferenceError")}}.

- -
function foo() {
-  delete x;
-  let x;
-}
-
-function bar() {
-  delete y;
-  const y;
-}
- -

Ejemplos

- -
x = 42;         // crea la propiedad x en el objeto global
-var y = 43;     // crea la propiedad y en el objeto global, y la marca como no configurable
-myobj = {
-  h: 4,
-  k: 5
-};
-
-// x es una propiedad del objeto global y puede ser eliminada
-delete x;       // retorna true
-
-// y no es configurable, por lo tanto no puede ser eliminada
-delete y;       // retorna false
-
-// delete no afecta a ciertas propiedades predefinidas
-delete Math.PI; // retorna false
-
-// las propiedades definidas por el usuario pueden eliminarse
-delete myobj.h; // retorna true
-
-// myobj es una propiedad del objeto global, no una variable,
-// por lo tanto puede eliminarse
-delete myobj;   // retorna true
-
-function f() {
-  var z = 44;
-
-  // delete no afecta a nombres de variables locales
-  delete z;     // retorna false
-}
-
- -

Si el objeto hereda una propiedad de un prototype, y no tiene la propiedad en sí, la propiedad no puede ser eliminada por referencia al objeto. Aun así, puedes eliminarla directamente en el prototype.

- -

If the object inherits a property from a prototype, and doesn't have the property itself, the property can't be deleted by referencing the object. You can, however, delete it directly on the prototype.

- -
function Foo(){}
-Foo.prototype.bar = 42;
-var foo = new Foo();
-
-// retorna true, pero sin ningún efecto,
-// ya que bar es una propiedad heredada
-delete foo.bar;
-
-// logs 42, propiedad aún heredada
-console.log(foo.bar);
-
-// elimina la propiedad en el prototype
-delete Foo.prototype.bar;
-
-// logs "undefined", propiedad no heredada
-console.log(foo.bar);           
- -

Eliminando elementos de un array

- -

Cuando eliminas un elemento de un array, la longitud del array no se ve afectada. Esta se mantiene incluso si eliminas el último elemento del array.

- -

Cuando el operador delete elimina un elemento de un array, este elemento ya no está en el array. En el siguiente ejemplo, trees[3] es eliminado mediante delete.

- -
var trees = ["redwood","bay","cedar","oak","maple"];
-delete trees[3];
-if (3 in trees) {
-    // esto no se ejecuta
-}
- -

Si quieres que exista un elemento de un array pero que tengo un valor no definido, utiliza el valor undefined en vez del operador delete. En el siguiente ejemplo, trees[3] es asignado con el valor undefined, pero el elemento del array aún existe:

- -
var trees = ["redwood","bay","cedar","oak","maple"];
-trees[3] = undefined;
-if (3 in trees) {
-    // esto se ejecuta
-}
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
ECMAScript 1st Edition.StandardDefinición inicial. Implementado en JavaScript 1.2
{{SpecName('ES5.1', '#sec-11.4.1', 'The delete Operator')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-delete-operator', 'The delete Operator')}}{{Spec2('ES6')}} 
- -

Compatibilidad de navegador

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Temporal dead zone{{CompatUnknown}}{{CompatGeckoDesktop(36)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{ CompatVersionUnknown() }}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Temporal dead zone{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile(36)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Cross-browser issues

- -

Although ECMAScript makes iteration order of objects implementation-dependent, it may appear that all major browsers support an iteration order based on the earliest added property coming first (at least for properties not on the prototype). However, in the case of Internet Explorer, when one uses delete on a property, some confusing behavior results, preventing other browsers from using simple objects like object literals as ordered associative arrays. In Explorer, while the property value is indeed set to undefined, if one later adds back a property with the same name, the property will be iterated in its old position--not at the end of the iteration sequence as one might expect after having deleted the property and then added it back.

- -

So, if you want to simulate an ordered associative array in a cross-browser environment, you are forced to either use two separate arrays (one for the keys and the other for the values), or build an array of single-property objects, etc.

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/operadores/destructuring_assignment/index.html b/files/es/web/javascript/referencia/operadores/destructuring_assignment/index.html deleted file mode 100644 index b56e3d3b52..0000000000 --- a/files/es/web/javascript/referencia/operadores/destructuring_assignment/index.html +++ /dev/null @@ -1,442 +0,0 @@ ---- -title: La desestructuración -slug: Web/JavaScript/Referencia/Operadores/Destructuring_assignment -tags: - - Característica del lenguaje - - Desestructuración - - Desestructurar arreglos y objetos anidados - - ECMAScript 2015 - - ES6 - - JavaScript - - Objetos anidados y desestructuración de array - - Operador -translation_of: Web/JavaScript/Reference/Operators/Destructuring_assignment ---- -
{{jsSidebar("Operators", "Operadores")}}
- -

La sintaxis de desestructuración es una expresión de JavaScript que permite desempacar valores de arreglos o propiedades de objetos en distintas variables.

- -
{{EmbedInteractiveExample("pages/js/expressions-destructuringassignment.html", "taller")}}
- - - -

Sintaxis

- -
let a, b, rest;
-[a, b] = [10, 20];
-console.log(a); // 10
-console.log(b); // 20
-
-[a, b, ...rest] = [10, 20, 30, 40, 50];
-console.log(a); // 10
-console.log(b); // 20
-console.log(rest); // [30, 40, 50]
-
-({ a, b } = { a: 10, b: 20 });
-console.log(a); // 10
-console.log(b); // 20
-
-
-// Propuesta de etapa 4 (terminada)
-({a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40});
-console.log(a); // 10
-console.log(b); // 20
-console.log(rest); // {c: 30, d: 40}
-
- -

Descripción

- -

Las expresiones de objetos y arreglos literales proporcionan una manera fácil de crear paquetes de datos ad hoc.

- -
const x = [1, 2, 3, 4, 5];
- -

La desestructuración utiliza una sintaxis similar, pero en el lado izquierdo de la asignación para definir qué valores desempacar de la variable origen.

- -
const x = [1, 2, 3, 4, 5];
-const [y, z] = x;
-console.log(y); // 1
-console.log(z); // 2
-
- -

Esta capacidad es similar a las características presentes en lenguajes como Perl y Python.

- -

Ejemplos

- -

Desestructuración de arreglos

- -

Asignación básica de variables

- -
const foo = ['one', 'two', 'three'];
-
-const [red, yellow, green] = foo;
-console.log(red); // "one"
-console.log(yellow); // "two"
-console.log(green); // "three"
-
- -

Asignación separada de la declaración

- -

A una variable se le puede asignar su valor mediante una desestructuración separada de la declaración de la variable.

- -
let a, b;
-
-[a, b] = [1, 2];
-console.log(a); // 1
-console.log(b); // 2
-
- -

Valores predeterminados

- -

A una variable se le puede asignar un valor predeterminado, en el caso de que el valor desempacado del arreglo sea undefined.

- -
let a, b;
-
-[a=5, b=7] = [1];
-console.log(a); // 1
-console.log(b); // 7
-
- -

Intercambio de variables

- -

Los valores de dos variables se pueden intercambiar en una expresión de desestructuración.

- -

Sin desestructurar la asignación, intercambiar dos valores requiere una variable temporal (o, en algunos lenguajes de bajo nivel, el algoritmo del truco XOR-swap).

- -
let a = 1;
-let b = 3;
-
-[a, b] = [b, a];
-console.log(a); // 3
-console.log(b); // 1
-
-const arr = [1,2,3];
-[arr[2], arr[1]] = [arr[1], arr[2]];
-console.log(arr); // [1,3,2]
-
-
- -

Analizar un arreglo devuelto por una función

- -

Siempre ha sido posible devolver un arreglo desde una función. La desestructuración puede hacer que trabajar con un valor de retorno de arreglo sea más conciso.

- -

En este ejemplo, f() devuelve los valores [1, 2] como su salida, que se puede procesar en una sola línea con desestructuración.

- -
function f() {
-  return [1, 2];
-}
-
-let a, b;
-[a, b] = f();
-console.log(a); // 1
-console.log(b); // 2
-
- -

Ignorar algunos valores devueltos

- -

Puedes ignorar los valores de retorno que no te interesan:

- -
function f() {
-  return [1, 2, 3];
-}
-
-const [a, , b] = f();
-console.log(a); // 1
-console.log(b); // 3
-
-const [c] = f();
-console.log(c); // 1
-
- -

También puedes ignorar todos los valores devueltos:

- -
[,,] = f();
-
- -

Asignar el resto de un arreglo a una variable

- -

Al desestructurar un arreglo, puedes desempacar y asignar la parte restante a una variable usando el patrón resto:

- -
const [a, ...b] = [1, 2, 3];
-console.log(a); // 1
-console.log(b); // [2, 3]
- -

Ten en cuenta que se lanzará un {{jsxref("SyntaxError")}} si se usa una coma final en el lado derecho con un elemento resto:

- -
const [a, ...b,] = [1, 2, 3];
-
-// SyntaxError: el elemento rest no puede tener una coma al final
-// Siempre considera usar el operador rest como último elemento
-
- -

Desempacar valores coincidentes con una expresión regular

- -

Cuando el método de expresión regular {{jsxref("Global_Objects/RegExp/exec", "exec()", "", 1)}} encuentra una coincidencia, devuelve un arreglo que contiene primero toda la parte coincidente de la cadena y luego las partes de la cadena que coinciden con cada grupo entre paréntesis en la expresión regular. La desestructuración te permite desempacar fácilmente las partes de este arreglo, ignorando la coincidencia completa si no es necesaria.

- -
function parseProtocol(url) {
-  const parsedURL = /^(\w+)\:\/\/([^\/]+)\/(.*)$/.exec(url);
-  if (!parsedURL) {
-    return false;
-  }
-  console.log(parsedURL);
-  // ["https://developer.mozilla.org/es/Web/JavaScript",
-      "https", "developer.mozilla.org", "es/Web/JavaScript"]
-
-  const [, protocol, fullhost, fullpath] = parsedURL;
-  return protocol;
-}
-
-console.log(parseProtocol('https://developer.mozilla.org/es/Web/JavaScript'));
-// "https"
-
- -

Desestructuración de objetos

- -

Asignación básica

- -
const user = {
-    id: 42,
-    is_verified: true
-};
-
-const {id, is_verified} = user;
-
-console.log(id); // 42
-console.log(is_verified); // true
-
- -

Asignación sin declaración

- -

A una variable se le puede asignar su valor con desestructuración separada de su declaración.

- -
let a, b;
-
-({a, b} = {a: 1, b: 2});
- -
-

Notas: los paréntesis (...) alrededor de la declaración de asignación son obligatorios cuando se usa la desestructuración de un objeto literal sin una declaración.

- -

{a, b} = {a: 1, b: 2} no es una sintaxis independiente válida, debido a que {a, b} en el lado izquierdo se considera un bloque y no un objeto literal.

- -

Sin embargo, ({a, b} = {a: 1, b: 2}) es válido, al igual que const {a, b} = {a: 1, b: 2}

- -

tu expresión ( ... ) debe estar precedida por un punto y coma o se puede usar para ejecutar una función en la línea anterior.

-
- -

Asignar a nuevos nombres de variable

- -

Una propiedad se puede desempacar de un objeto y asignar a una variable con un nombre diferente al de la propiedad del objeto.

- -
const o = {p: 42, q: true};
-const {p: foo, q: bar} = o;
-
-console.log(foo); // 42
-console.log(bar); // true
- -

Aquí, por ejemplo, const {p: foo} = o toma del objeto o la propiedad llamada p y la asigna a una variable local llamada foo.

- -

Valores predeterminados

- -

A una variable se le puede asignar un valor predeterminado, en el caso de que el valor desempacado del objeto sea undefined.

- -
const {a = 10, b = 5} = {a: 3};
-
-console.log(a); // 3
-console.log(b); // 5
- -

Asignar nombres a nuevas variables y proporcionar valores predeterminados

- -

Una propiedad puede ser ambas

- - - -
const {a: aa = 10, b: bb = 5} = {a: 3};
-
-console.log(aa); // 3
-console.log(bb); // 5
-
- -

Desempacar campos de objetos pasados como parámetro de función

- -
const user = {
-  id: 42,
-  displayName: 'jdoe',
-  fullName: {
-    firstName: 'John',
-    lastName: 'Doe'
-  }
-};
-
-function userId({id}) {
-  return id;
-}
-
-function whois({displayName, fullName: {firstName: name}}) {
-  return `${displayName} es ${name}`;
-}
-
-console.log(userId(user)); // 42
-console.log(whois(user));  // "jdoe es John"
- -

Esto desempaca el id, displayName y firstName del objeto user y los imprime.

- -

Establecer el valor predeterminado de un parámetro de función

- -
function drawChart({size = 'big', coords = {x: 0, y: 0}, radius = 25} = {}) {
-  console.log(size, coords, radius);
-  // haz un dibujo de gráfico
-}
-
-drawChart({
-  coords: {x: 18, y: 30},
-  radius: 30
-});
- -
-

En la firma de la función para drawChart anterior, el lado izquierdo desestructurado se asigna a un objeto literal vacío en el lado derecho: {size = 'big', coords = {x: 0, y: 0}, radius = 25} = {}. También podrías haber escrito la función sin la asignación del lado derecho. Sin embargo, si omites la asignación del lado derecho, la función buscará al menos un argumento para ser proporcionado cuando se invoca, mientras que en su forma actual, simplemente puedes llamar a drawChart() sin proporcionar ningún parámetro. El diseño actual es útil si deseas poder llamar a la función sin proporcionar ningún parámetro, el otro puede ser útil cuando deseas asegurarte de que se pase un objeto a la función.

-
- -

Desestructuración de arreglos y objetos anidados

- -
const metadata = {
-  title: 'Scratchpad',
-  translations: [
-    {
-      locale: 'de',
-      localization_tags: [],
-      last_edit: '2020-08-29T08:43:37',
-      url: '/de/docs/Tools/Scratchpad',
-      title: 'JavaScript-Umgebung'
-    }
-  ],
-  url: '/es/docs/Tools/Scratchpad'
-};
-
-let {
-  title: englishTitle, // renombrar
-  translations: [
-    {
-       title: localeTitle, // renombrar
-    },
-  ],
-} = metadata;
-
-console.log(englishTitle); // "Scratchpad"
-console.log(localeTitle);  // "JavaScript-Umgebung"
- -

Iteración "for...of" y desestructuración

- -
const people = [
-  {
-    name: 'Mike Smith',
-    family: {
-      mother: 'Jane Smith',
-      father: 'Harry Smith',
-      sister: 'Samantha Smith'
-    },
-    age: 35
-  },
-  {
-    name: 'Tom Jones',
-    family: {
-      mother: 'Norah Jones',
-      father: 'Richard Jones',
-      brother: 'Howard Jones'
-    },
-    age: 25
-  }
-];
-
-for (const {name: n, family: {father: f}} of people) {
-  console.log('Nombre: ' + n + ', Padre: ' + f);
-}
-
-// "Nombre: Mike Smith, Padre: Harry Smith"
-// "Nombre: Tom Jones, Padre: Richard Jones"
-
- -

Nombres de propiedades de objetos calculados y desestructuración

- -

Los nombres de propiedad calculados, como en un {{jsxref("Operators/Object_initializer", "Objeto literal", "#Computed_property_names", 1)}}, se pueden usar con la desestructuración.

- -
let key = 'z';
-let {[key]: foo} = {z: 'bar'};
-
-console.log(foo); // "bar"
-
- -

Rest en la desestructuración de objetos

- -

La propuesta Propiedades rest/propagación para ECMAScript (etapa 4) agrega la sintaxis {{jsxref("Functions/rest_parameters", "rest", "", 1)}} para desestructurar. Las propiedades de rest recopilan las claves de propiedades enumerables restantes que aún no han sido seleccionadas por el patrón de desestructuración.

- -
let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40}
-a; // 10
-b; // 20
-rest; // { c: 30, d: 40 }
- -

Identificador de JavaScript no válido como nombre de propiedad

- -

La desestructuración se puede utilizar con nombres de propiedad que no son {{Glossary("Identifier", "identificadores")}} válidos en JavaScript proporcionando un identificador alternativo que sea válido.

- -
const foo = { 'fizz-buzz': true };
-const { 'fizz-buzz': fizzBuzz } = foo;
-
-console.log(fizzBuzz); // "true"
-
- -

Desestructuración combinada de arreglos y objetos

- -

La desestructuración de arreglos y objetos se puede combinar. Supongamos que deseas manipular el tercer elemento del siguiente arreglo props, y luego deseas la propiedad name en el objeto, puedes hacer lo siguiente:

- -
const props = [
-  { id: 1, name: 'Fizz'},
-  { id: 2, name: 'Buzz'},
-  { id: 3, name: 'FizzBuzz'}
-];
-
-const [,, { name }] = props;
-
-console.log(name); // "FizzBuzz"
-
- -

Se busca la cadena de prototipos al desestructurar el objeto.

- -

Al deconstruir un objeto, si no se accede a una propiedad en sí misma, continuará buscando a lo largo de la cadena de prototipos.

- -
let obj = {self: '123'};
-obj.__proto__.prot = '456';
-const {self, prot} = obj;
-// self "123"
-// prot "456" (Acceso a la cadena de prototipos)
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-destructuring-assignment', 'Desestructuración de asignación')}}
- -

Compatibilidad del navegador

- -
- - -

{{Compat("javascript.operators.destructuring")}}

-
- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/operadores/division/index.html b/files/es/web/javascript/referencia/operadores/division/index.html deleted file mode 100644 index d29816e37a..0000000000 --- a/files/es/web/javascript/referencia/operadores/division/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Division (/) -slug: Web/JavaScript/Referencia/Operadores/Division -tags: - - JS - - JavaScript - - Operador de Division - - Operadores - - Referências -translation_of: Web/JavaScript/Reference/Operators/Division ---- -
{{jsSidebar("Operators")}}
- -

El operador de división (/) produce el cociente de sus operandos donde el operando izquierdo es el dividendo y el operando derecho es el divisor.

- -
{{EmbedInteractiveExample("pages/js/expressions-division.html")}}
- -
- - - -

Sintaxis

- -
Operador: x / y
-
- -

Ejemplos

- -

Division basica

- -
1 / 2              // 0.5
-
-Math.floor(3 / 2) // 1
-
-1.0 / 2.0         // 0.5
-
- -

Division por cero

- -
2.0 / 0     // Retorna Infinity
-
-2.0 / 0.0   // Retorna Infinity, Dado que 0.0 === 0
-
-2.0 / -0.0  // Retorna -Infinity
- -

Especificaciones

- - - - - - - - - - -
Specification
{{SpecName('ESDraft', '#sec-multiplicative-operators', 'Division operator')}}
- -

Compatibilidad con Navegadores

- - - -

{{Compat("javascript.operators.division")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/operadores/encadenamiento_opcional/index.html b/files/es/web/javascript/referencia/operadores/encadenamiento_opcional/index.html deleted file mode 100644 index 06ccb5a999..0000000000 --- a/files/es/web/javascript/referencia/operadores/encadenamiento_opcional/index.html +++ /dev/null @@ -1,187 +0,0 @@ ---- -title: Encadenamiento opcional -slug: Web/JavaScript/Referencia/Operadores/Encadenamiento_opcional -translation_of: Web/JavaScript/Reference/Operators/Optional_chaining ---- -
{{JSSidebar("Operators")}}
- -

El operador de encadenamiento opcional ?. permite leer el valor de una propiedad ubicada dentro de una cadena de objetos conectados sin tener que validar expresamente que cada referencia en la cadena sea válida. El operador ?. funciona de manera similar a el operador de encadenamiento ., excepto que en lugar de causar un error si una referencia es casi-nula ({{JSxRef("null")}} o {{JSxRef("undefined")}}), la expresión hace una evaluación de circuito corto con un valor de retorno de undefined. Cuando se usa con llamadas a funciones, devuelve undefined si la función dada no existe.

- -

Esto da como resultado expresiones más cortas y simples cuando se accede a propiedades encadenadas dónde existe la posibilidad de que falte una referencia. También puede ser útil al explorar el contenido de un objeto cuando no hay una garantía conocida de qué propiedades se requieren.

- -
{{EmbedInteractiveExample("pages/js/expressions-optionalchainingoperator.html", "taller")}}
- - - -

Sintaxis

- -
obj?.prop
-obj?.[expr]
-arr?.[index]
-func?.(args)
-
- -

Descripción

- -

El operador de encadenamiento opcional proporciona una forma de simplificar el acceso a los valores a través de objetos conectados cuando es posible que una referencia o función sea undefinednull.

- -

Por ejemplo, considere un objeto obj que tiene una estructura anidada. Sin encadenamiento opcional, buscar una subpropiedad profundamente anidada requiere validar las referencias intermedias, como:

- -
let nestedProp = obj.first && obj.first.second;
-
- -

Se confirma que el valor de obj.first no es null (y no es undefined) antes de acceder al valor de obj.first.second. Esto evita el error que ocurriría si simplemente accediera a obj.first.second directamente sin probar obj.first.

- -

Sin embargo, con el operador de encadenamiento opcional (?.), No tiene que probar explícitamente, ni realizar una evaluación de circuito corto basada en el estado de obj.first antes de intentar acceder a obj.first.second:

- -
let nestedProp = obj.first?.second;
-
- -

Al usar el operador ?. en lugar de solo el ., JavaScript sabe verificar implícitamente para asegurarse de que obj.first no es nullundefined antes de intentar acceder  obj.first.second. Si obj.first es nullundefined, la expresión hace una evaluación de circuito corto automáticamente y retorna undefined.

- -

Esto es equivalente a lo siguiente, excepto que la variable temporal es de hecho no creada:

- -
let temp = obj.first;
-let nestedProp = ((temp === null || temp === undefined) ? undefined : temp.second);
-
- -

Encadenamiento opcional con llamadas a funciones

- -

Puede usar el encadenamiento opcional cuando intente llamar a un método que puede no existir. Esto puede ser útil, por ejemplo, cuando se usa una API en la que un método podría no estar disponible, ya sea debido a la antigüedad de la implementación o debido a una característica que no está disponible en el dispositivo del usuario.

- -

El uso de encadenamiento opcional con llamadas a funciones hace que la expresión regrese automáticamente undefined en lugar de lanzar una excepción si no se encuentra el método:

- -
let result = someInterface.customMethod?.();
- -
-

Nota: Si hay una propiedad con ese nombre y que no es una función, usar ?. aún levantará una excepción {{JSxRef("TypeError")}} (x.y is not a function).

-
- -

Manejo de callbacks opcionales o manejadores de eventos

- -

Si utiliza callbacks o métodos de recuperación de un objeto con una asignación de desestructuración, es posible que tenga valores inexistentes que no puede llamar como funciones a menos que haya probado su existencia. Usando ?., Puede evitar esta prueba adicional:

- -
// Escrito a partir de ES2019
-function doSomething(onContent, onError) {
-  try {
-    // ... hacer algo con los datos
-  }
-  catch (err) {
-    if (onError) { // Probando si onError realmente existe
-      onError(err.message);
-    }
-  }
-}
-
- -
// Usando encadenamiento opcional con llamado de funciones
-function doSomething(onContent, onError) {
-  try {
-   // ... hacer algo con los datos
-  }
-  catch (err) {
-    onError?.(err.message); // Sin excepción si onError esta undefined
-  }
-}
-
- -

Encadenamiento opcional con expresiones

- -

También puede usar el operador de encadenamiento opcional al acceder a propiedades con una expresión usando la notación de corchetes:

- -
let nestedProp = obj?.['prop' + 'Name'];
-
- -

El encadenamiento opcional no es válido al lado izquierdo de una asignación

- -
let object = {};
-object?.property = 1; // Uncaught SyntaxError: Invalid left-hand side in assignment
- -

Acceso a elementos de un arreglo con encadenamiento opcional

- -
let arrayItem = arr?.[42];
- -

Ejemplos

- -

Ejemplo básico

- -

Este ejemplo busca el valor de la propiedad name para el miembro bar en un mapa cuando no existe dicho miembro. El resultado es por lo tanto es undefined.

- -
let myMap = new Map();
-myMap.set("foo", {name: "baz", desc: "inga"});
-
-let nameBar = myMap.get("bar")?.name;
- -

Evaluación de circuito corto

- -

Cuando se usa el encadenamiento opcional con expresiones, si el operando izquierdo es null o undefined, la expresión no se evaluará. Por ejemplo:

- -
let potentiallyNullObj = null;
-let x = 0;
-let prop = potentiallyNullObj?.[x++];
-
-console.log(x); // 0 como x no se incrementó
-
- -

Apilando el operador de encadenamiento opcional

- -

Con estructuras anidadas, es posible usar encadenamiento opcional varias veces:

- -
let customer = {
-  name: "Carl",
-  details: {
-    age: 82,
-    location: "Paradise Falls" // "detailed address" es desconocida
-  }
-};
-let customerCity = customer.details?.address?.city;
-
-// … esto también funciona con la función opcional de encadenamiento
-let duration = vacations.trip?.getTime?.();
-
- -

Combinando con el operador de fusión nulo

- -

El {{JSxRef("Operators/Nullish_Coalescing_Operator", "operador de fusión nulo", '', 1)}} se puede usar después del encadenamiento opcional para generar un valor predeterminado cuando no se encontró ninguno:

- -
let customer = {
-  name: "Carl",
-  details: { age: 82 }
-};
-const customerCity = customer?.city ?? "Unknown city";
-console.log(customerCity); // Unknown city
- -

Especificaciones

- - - - - - - - - - - - -
Specification
{{SpecName('ESDraft', '#prod-OptionalExpression', 'optional expression')}}
- -

Compatibilidad de navegadores

- -
- - -

{{Compat("javascript.operators.optional_chaining")}}

-
- -

Progreso de implementación

- -

La siguiente tabla proporciona un estado de implementación diaria para esta característica, porque esta característica aún no ha alcanzado la estabilidad entre navegadores. Los datos se generan ejecutando las pruebas de características relevantes en Test262, el conjunto de pruebas estándar de JavaScript, en la compilación nocturna o la última versión del motor de JavaScript de cada navegador.

- -
{{EmbedTest262ReportResultsTable("optional-chaining")}}
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/operadores/function/index.html b/files/es/web/javascript/referencia/operadores/function/index.html deleted file mode 100644 index d5739239b2..0000000000 --- a/files/es/web/javascript/referencia/operadores/function/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: function -slug: Web/JavaScript/Referencia/Operadores/function -tags: - - Function - - JavaScript - - Operator - - Primary Expressions -translation_of: Web/JavaScript/Reference/Operators/function ---- -
{{jsSidebar("Operators")}}
- -

Resumen

- -

El operador function define una función dentro de una expresión.

- -

Sintaxis

- -
function [name]([param1, param2, ..., paramN]) {
-   statements
-}
-
- -

Parámetros

- -
-
name
-
El nombre de la función. Puede ser omitido, en cuyo caso la función es anonymous. El nombre sólo es local para el cuerpo de la función.
-
- -
-
paramN
-
El nombre de un argumento que será pasado a la función. Una función puede tener hasta 255 argumentos.
-
- -
-
statements
-
Las declaraciones que conforman el cuerpo de la función.
-
- -

Descripción

- -

La expresión de una función es muy similar y tiene casi la misma sintaxis que la declaración de una función (véase {{jsxref("Sentencias/function", "function")}} para más detalles). Véase Funciones para ver más información sobre las diferencias  entre declaraciones de funciones y expresiones de funciones.

- -

Ejemplos

- -

El siguiente ejemplo define una función sin nombre y se le asigna a la variable x. La función devuelve como resultado el cuadrado de su argumento:

- -
var x = function(y) {
-   return y * y;
-};
-
- -

Expresión de función nombrada

- -

Si quiere referirse a la función actual dentro del cuerpo de la función, debe crear una expresión de función nombrada. Luego, este nombre será local solo para el cuerpo de la función (alcance). Esto también evita usar la propiedad no estándar {{jsxref("Funciones/arguments/callee", "arguments.callee")}}.

- -
var math = {
-  'factorial': function factorial(n) {
-    if (n <= 1)
-      return 1;
-    return n * factorial(n - 1);
-  }
-};
-
- -

Consulte también

- - diff --git a/files/es/web/javascript/referencia/operadores/function_star_/index.html b/files/es/web/javascript/referencia/operadores/function_star_/index.html deleted file mode 100644 index 9c38872b7e..0000000000 --- a/files/es/web/javascript/referencia/operadores/function_star_/index.html +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: expresión function* -slug: Web/JavaScript/Referencia/Operadores/function* -tags: - - ECMAScript 2015 - - Expresión Primaria - - Function - - Iterator - - JavaScript - - Operator -translation_of: Web/JavaScript/Reference/Operators/function* ---- -
{{jsSidebar("Operators")}}
- -

La palabra clave function* puede ser utilizada para definir una función generadora en una expresión.

- -
{{EmbedInteractiveExample("pages/js/expressions-functionasteriskexpression.html")}}
- - - -

Sintaxis

- -
function* [nombre]([param1[, param2[, ..., paramN]]]) {
-   sentencias
-}
- -

Parámetros

- -
-
nombre
-
Nombre de la función. Puede ser omitido, en cuyo caso la funcipón es anínima. El nombre sólo es local al cuerpo de la función.
-
paramN
-
Nombre de un parámetro a ser pasado a la función. Una función puede tener hasta 255 argumentos.
-
sentencias
-
Sentencias que componen el cuerpo de la función.
-
- -

Descripción

- -

Una expresión function* es muy similar y tiene casi la misma sintaxis que una {{jsxref('Statements/function*', 'function* statement')}}. La principal diferencia entre una expresión function* y una sentencia function* es el nombre de la función, que en expresiones function* puede ser omitido para creaar funciones generadoras anónimas. Para más información vea también el capítulo acerca de funciones.

- -

Ejemplos

- -

El siguiente ejemplo define una función generadora sin nombre y la asigna a x. La función produce el cuadrado de su argumento:

- -
var x = function*(y) {
-   yield y * y;
-};
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#', 'function*')}}{{Spec2('ES2015')}}Definición Inicial.
{{SpecName('ESDraft', '#', 'function*')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.operators.function_star")}}

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/operadores/grouping/index.html b/files/es/web/javascript/referencia/operadores/grouping/index.html deleted file mode 100644 index ec78e8518f..0000000000 --- a/files/es/web/javascript/referencia/operadores/grouping/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Operador de agrupación -slug: Web/JavaScript/Referencia/Operadores/Grouping -tags: - - Expresiones primarias - - JavaScript - - Operador -translation_of: Web/JavaScript/Reference/Operators/Grouping ---- -
{{jsSidebar("Operators")}}
- -

El operador de agrupación ( ) controla la precedencia de las expresiones a evaluar.

- -

Sintaxis

- -
 ( )
- -

Descripción

- -

El operador de agrupación consiste en un par de paréntesis alrededor de la expresión (o sub-expresión) que sobrescribe el comportamiento por defecto de la precedencia de operadores, lo que causa que expresiones con menor precedencia puedan ser evaluadas antes que expresiones con una mayor precedencia.

- -

Ejemplos

- -

Sobrescribir la precedencia de operadores aritméticos por defecto para que se evalúe primero la adición y luego la multiplicación.

- -
var a = 1;
-var b = 2;
-var c = 3;
-
-// precedencia por defecto
-a + b * c     // 7
-// es evaluada por defecto como:
-a + (b * c)   // 7
-
-// ahora se sobrescribe la precedencia
-// para que la adición se evalúe antes que la multiplicación
-(a + b) * c   // 9
-
-// que es equivalente a:
-a * c + b * c // 9
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
ECMAScript 1st Edition.EstándarDefinición inicial. Implementado en JavaScript 1.0
{{SpecName('ES5.1', '#sec-11.1.6', 'The Grouping Operator')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-grouping-operator', 'The Grouping Operator')}}{{Spec2('ES6')}} 
- -

Compatibilidad en navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Temas relacionados

- - diff --git a/files/es/web/javascript/referencia/operadores/in/index.html b/files/es/web/javascript/referencia/operadores/in/index.html deleted file mode 100644 index 051056a25f..0000000000 --- a/files/es/web/javascript/referencia/operadores/in/index.html +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: in -slug: Web/JavaScript/Referencia/Operadores/in -tags: - - JavaScript - - Operator - - Relational Operators -translation_of: Web/JavaScript/Reference/Operators/in ---- -
{{jsSidebar("Operators")}}
- -
El operador in devuelve true si la propiedad especificada está en el objeto especificado o su prototipo.
- -

Sintaxis

- -
prop in object
- -

Parámetros

- -
-
prop
-
Una cadena o expresión númerica que representa el nombre de una propiedad o el índice de un array (lo que no sea un símbolo se forzará a string).
-
- -
-
object
-
El objeto (o su cadena de prototipo) sobre el que comprobar si contiene la propiedad con el nombre especificado.
-
- -

Descripción

- -

Los siguientes ejemplos muestran algunos de los usos del operador in.

- -
// Arrays
-var arboles = new Array("secoya", "pino", "cedro", "roble", "arce");
-0 in arboles        // devuelve true
-3 in arboles        // devuelve true
-6 in arboles        // devuelve false
-"pino" in arboles   // devuelve false (debe especificar el número de índice,
-                    // no el valor del índice)
-"length" in arboles // devuelve true (length es una propiedad de Array)
-
-// Objetos predefinidos
-"PI" in Math        // devuelve true
-
-// Objetos personalizados
-var micoche = {marca: "Honda", modelo: "Accord", año: 1998};
-"marca" in micoche  // devuelve true
-"modelo" in micoche // devuelve true
-
- -

Debe especificar un objeto en el lado derecho del operador in. Por ejemplo, puede especificar una cadena creada con el constructor String , pero no puede especificar una cadena literal.

- -
var color1 = new String("verde");
-"length" in color1 // devuelve true
-
-var color2 = "coral";
-"length" in color2 // genera un error (color2 no es un objeto String)
-
- -

Usando in con propiedades eliminadas o no definidas

- -

Si se elimina una propiedad con el operador {{jsxref("Operadores/delete", "delete")}}, el operador in devuelve false para esa propiedad.

- -
var micoche= {marca: "Honda", modelo: "Accord", año: 1998};
-delete micoche.marca;
-"marca" in micoche;  // devuelve false
-
-var arboles = new Array("secoya", "pino", "cedro", "roble", "arce");
-delete arboles[3];
-3 in arboles; // devuelve false
-
- -

Si se cambia una propiedad a {{jsxref("Objetos_globales/undefined", "undefined")}} pero no se elimina, el operador in devuelve true para esa propiedad.

- -
var micoche = {marca: "Honda", modelo: "Accord", año: 1998};
-micoche.marca = undefined;
-"marca" in micoche;  // devuelve true
-
- -
var arboles = new Array("secayo", "pino", "cedro", "roble", "arce");
-arboles[3] = undefined;
-3 in arboles; // devuelve true
-
- -

Propiedades heredadas

- -

El operador in devuelve true para propiedades en la cadena del prototipo.

- -
"toString" in {}; // devuelve true
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ESDraft', '#sec-relational-operators', 'Relational Operators')}}{{Spec2('ESDraft')}} 
{{SpecName('ES2015', '#sec-relational-operators', 'Relational Operators')}}{{Spec2('ES2015')}} 
{{SpecName('ES5.1', '#sec-11.8.7', 'The in Operator')}}{{Spec2('ES5.1')}} 
{{SpecName('ES3', '#sec-11.8.7', 'The in Operator')}}{{Spec2('ES3')}}Definición inicial. Implementado en JavaScript 1.4.
- -

Compatibilidad en navegadores

- - - -

{{Compat("javascript.operators.in")}}

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/operadores/index.html b/files/es/web/javascript/referencia/operadores/index.html deleted file mode 100644 index dca4964faa..0000000000 --- a/files/es/web/javascript/referencia/operadores/index.html +++ /dev/null @@ -1,280 +0,0 @@ ---- -title: Expresiones y operadores -slug: Web/JavaScript/Referencia/Operadores -tags: - - Descripción - - JavaScript - - Operadores - - Operators - - Referencia -translation_of: Web/JavaScript/Reference/Operators ---- -
{{jsSidebar("Operators", "Operadores")}}
- -

Este capítulo documenta todos los operadores, expresiones y palabras clave del lenguaje JavaScript.

- -

Expresiones y operadores por categoría

- -

Para obtener una lista alfabética, consulta la barra lateral de la izquierda.

- -

Expresiones primarias

- -

Palabras clave básicas y expresiones generales en JavaScript.

- -
-
{{jsxref("Operators/this", "this")}}
-
La palabra clave this se refiere a una propiedad especial de un contexto de ejecución.
-
{{jsxref("Operators/function", "function")}}
-
La palabra clave function define una expresión de función.
-
{{jsxref("Operators/class", "class")}}
-
La palabra clave class define una expresión de clase.
-
{{jsxref("Operators/function", "function")}}
-
La palabra clave function* define una expresión de función generadora.
-
{{jsxref("Operators/yield", "yield")}}
-
Pausar y reanudar una función generadora.
-
{{jsxref("Operators/yield*", "yield*")}}
-
Delegar a otra función generadora u objeto iterable.
-
{{jsxref("Operators/async_function", "async function")}}
-
La async function define una expresión de función asíncrona.
-
{{jsxref("Operators/await", "await")}}
-
Pausa y reanuda una función asíncrona y espera la resolución/rechazo de la promesa.
-
{{jsxref("Global_Objects/Array", "[]")}}
-
Iniciador de arreglo/sintaxis literal.
-
{{jsxref("Operators/Object_initializer", "{}")}}
-
Iniciador de objeto/sintaxis literal.
-
{{jsxref("Global_Objects/RegExp", "/ab+c/i")}}
-
Sintaxis de expresión regular literal.
-
{{jsxref("Operators/Grouping", "( )")}}
-
Operador de agrupación.
-
- -

Expresiones del lado izquierdo

- -

Los valores de la izquierda son el destino de una asignación.

- -
-
{{jsxref("Operators/Property_accessors", "Propiedad accessors", "", 1)}}
-
Los operadores miembro proporcionan acceso a una propiedad o método de un objeto
- (object.property y object["property"]).
-
{{jsxref("Operators/new", "new")}}
-
El operador new crea una instancia auxiliado por un constructor.
-
{{jsxref("Operators/new%2Etarget", "new.target")}}
-
En los constructores, new.target se refiere al constructor que fue invocado por {{jsxref("Operators/new", "new")}}.
-
{{jsxref("Operators/super", "super")}}
-
La palabra clave super llama al constructor padre.
-
{{jsxref("Operators/Spread_syntax", "...obj")}}
-
La sintaxis de extensión permite expandir una expresión en lugares donde se esperan múltiples argumentos (para llamadas a funciones) o múltiples elementos (para arreglos literales).
-
- -

Incremento y decremento

- -

Operadores de incremento sufijo/prefijo y decremento sufijo/prefijo.

- -
-
{{jsxref("Operators/Increment", "A++")}}
-
Operador de incremento sufijo.
-
{{jsxref("Operators/Decrement", "A--")}}
-
Operador de incremento sufijo.
-
{{jsxref("Operators/Increment", "A++")}}
-
Operador de incremento prefijo.
-
{{jsxref("Operators/Decrement", "--A")}}
-
Operador de decremento prefijo.
-
- -

Operadores unarios

- -

Una operación unaria es una operación con un solo operando.

- -
-
{{jsxref("Operators/delete", "delete")}}
-
El operador delete elimina una propiedad de un objeto.
-
{{jsxref("Operators/void", "void")}}
-
El operador void descarta el valor de retorno de una expresión.
-
{{jsxref("Operators/typeof", "typeof")}}
-
El operador typeof determina el tipo de un objeto dado.
-
{{jsxref("Operators/Unary_plus", "+")}}
-
El operador unario más convierte su operando al tipo Number.
-
{{jsxref("Operators/Unary_negation", "-")}}
-
El operador unario de negación convierte su operando al tipo Number y luego lo niega.
-
{{jsxref("Operators/Bitwise_NOT", "~")}}
-
Operador NOT bit a bit.
-
{{jsxref("Operators/Logical_NOT", "!")}}
-
Operador NOT lógico.
-
- -

Operadores aritméticos

- -

Los operadores aritméticos toman valores numéricos (ya sean literales o variables) como sus operandos y devuelven un solo valor numérico.

- -
-
{{jsxref("Operators/Addition", "+")}}
-
Operador de adición o suma.
-
{{jsxref("Operators/Subtraction", "-")}}
-
Operador de sustracción o resta.
-
{{jsxref("Operators/Division", "/")}}
-
Operador de división.
-
{{jsxref("Operators/Multiplication", "*")}}
-
Operador de multiplicación.
-
{{jsxref("Operators/Remainder", "%")}}
-
Operador de residuo.
-
{{jsxref("Operators/Exponentiation", "**")}}
-
Operador de exponenciación.
-
- -

Operadores relacionales

- -

Un operador de comparación compara sus operandos y devuelve un valor Boolean basado en si la comparación es verdadera o no.

- -
-
{{jsxref("Operators/in", "in")}}
-
El operador in determina si un objeto tiene una determinada propiedad.
-
{{jsxref("Operators/instanceof", "instanceof")}}
-
El operador instanceof determina si un objeto es una instancia de otro objeto.
-
{{jsxref("Operators/Less_than", "<")}}
-
Operador menor que.
-
{{jsxref("Operators/Greater_than", ">")}}
-
Operador mayor que.
-
{{jsxref("Operators/Less_than_or_equal", "<=")}}
-
Operador menor o igual a.
-
{{jsxref("Operators/Greater_than_or_equal", ">=")}}
-
Operador mayor o igual a.
-
- -
-

Nota: => no es un operador, sino la notación para {{jsxref("Functions/Arrow_functions", "Funciones de flecha")}}.

-
- -

Operadores de igualdad

- -

El resultado de evaluar un operador de igualdad siempre es de tipo Boolean basado en si la comparación es verdadera.

- -
-
{{jsxref("Operators/Equality", "==")}}
-
Operador de igualdad.
-
{{jsxref("Operators/Inequality", "!=")}}
-
Operador de desigualdad.
-
{{jsxref("Operators/Strict_equality", "===")}}
-
Operador de igualdad estricta.
-
{{jsxref("Operators/Strict_inequality", "!==")}}
-
Operador de desigualdad estricta.
-
- -

Operadores de desplazamiento de bits

- -

Operaciones para cambiar todos los bits del operando.

- -
-
{{jsxref("Operators/Left_shift", "<<")}}
-
Operador de desplazamiento bit a bit a la izquierda.
-
{{jsxref("Operators/Right_shift", ">>")}}
-
Operador de desplazamiento bit a bit a la derecha.
-
{{jsxref("Operators/Unsigned_right_shift", ">>>")}}
-
Operador de desplazamiento bit a bit a la derecha sin signo.
-
- -

Operadores binarios bit a bit

- -

Los operadores bit a bit tratan a sus operandos como un conjunto de 32 bits (ceros y unos) y devuelven valores numéricos estándar de JavaScript.

- -
-
{{jsxref("Operators/Bitwise_AND", "&")}}
-
AND bit a bit.
-
{{jsxref("Operators/Bitwise_OR", "|")}}
-
OR bit a bit.
-
{{jsxref("Operators/Bitwise_XOR", "^")}}
-
XOR bit a bit.
-
- -

Operadores lógicos binarios

- -

Los operadores lógicos se utilizan normalmente con valores booleanos (lógicos); cuando lo son, devuelven un valor booleano.

- -
-
{{jsxref("Operators/Logical_AND", "&&")}}
-
AND lógico.
-
{{jsxref("Operators/Logical_OR", "||")}}
-
OR lógico.
-
- -

Operador condicional (ternario)

- -
-
{{jsxref("Operators/Conditional_Operator", "(condition ? ifTrue : ifFalse)")}}
-
-

El operador condicional devuelve uno de dos valores según el valor lógico de la condición.

-
-
- -

Operadores de asignación

- -

Un operador de asignación asigna un valor a su operando izquierdo basándose en el valor de su operando derecho.

- -
-
{{jsxref("Operators/Assignment", "=")}}
-
Operador de asignación.
-
{{jsxref("Operators/Multiplication_assignment", "*=")}}
-
Asignación de multiplicación.
-
{{jsxref("Operators/Division_assignment", "/=")}}
-
Asignación de división.
-
{{jsxref("Operators/Remainder_assignment", "%=")}}
-
Asignación de residuo.
-
{{jsxref("Operators/Addition_assignment", "+=")}}
-
Asignación de suma.
-
{{jsxref("Operators/Subtraction_assignment", "-=")}}
-
Asignación de sustracción
-
{{jsxref("Operators/Left_shift_assignment", "<<=")}}
-
Asignación de desplazamiento a la izquierda.
-
{{jsxref("Operators/Right_shift_assignment", ">>=")}}
-
Asignación de desplazamiento a la derecha.
-
{{jsxref("Operators/Unsigned_right_shift_assignment", ">>>=")}}
-
Asignación de desplazamiento a la derecha sin signo.
-
{{jsxref("Operators/Bitwise_AND_assignment", "&=")}}
-
Asignación de AND bit a bit.
-
{{jsxref("Operators/Bitwise_XOR_assignment", "^=")}}
-
Asignación de XOR bit a bit.
-
{{jsxref("Operators/Bitwise_OR_assignment", "|=")}}
-
Asignación de OR bit a bit.
-
{{jsxref("Operators/Logical_AND_assignment", "&&=")}}
-
Asignación de AND lógico.
-
{{jsxref("Operators/Logical_OR_assignment", "||=")}}
-
Asignación de OR lógico.
-
{{jsxref("Operators/Logical_nullish_assignment", "??=")}}
-
Asignación de anulación lógica.
-
{{jsxref("Operators/Destructuring_assignment", "[a, b] = [1, 2]")}}
- {{jsxref("Operators/Destructuring_assignment", "{a, b} = {a:1, b:2}")}}
-
-

La desestructuración te permite asignar las propiedades de un arreglo u objeto a variables utilizando una sintaxis que se parece a los arreglos u objetos literales.

-
-
- -

Operador coma

- -
-
{{jsxref("Operators/Comma_Operator", ",")}}
-
El operador coma permite evaluar múltiples expresiones en una sola declaración y devuelve el resultado de la última expresión.
-
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-ecmascript-language-expressions', 'ECMAScript Language: Expressions')}}
- -

Compatibilidad del navegador

- - - -

{{Compat("javascript.operators")}}

- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/operadores/instanceof/index.html b/files/es/web/javascript/referencia/operadores/instanceof/index.html deleted file mode 100644 index 3b9a45162d..0000000000 --- a/files/es/web/javascript/referencia/operadores/instanceof/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: instanceof -slug: Web/JavaScript/Referencia/Operadores/instanceof -tags: - - JavaScript - - Operator - - Relational Operators -translation_of: Web/JavaScript/Reference/Operators/instanceof ---- -
{{jsSidebar("Operators")}}
- -

Resumen

- -

El operador instanceof verifica si un objeto en su cadena de prototipos contiene la propiedad prototype de un constructor.

- -

Sintaxis

- -
objeto instanceof constructor
- -

Parámetros

- -
-
objeto
-
Objeto a verificar.
-
- -
-
constructor
-
Función contra la que se hará la verificación.
-
- -

Descripción

- -

Utilice instanceof cuando necesite confirmar el tipo de un objeto en tiempo de ejecución. Por ejemplo, cuando controle excepciones, puede recurrir a diferentes códigos de manipulación de excepciones dependiendo del tipo de excepción tomada.

- -

Debe especificar un objeto en el lado derecho del operador instanceof. Por ejemplo, puede especificar una cadena creada con el constructor String, pero no puede especificar un literal de cadena.

- -
color1=new String("verde")
-color1 instanceof String // devuelve verdadero (true)
-color2="coral"
-color2 instanceof String // devuelve falso (color2 no es un objeto String)
-
- -

Ejemplos

- -

También vea los ejemplos de {{jsxref("Sentencias/throw", "throw")}}.

- -

Ejemplo: Determinando si elDia es un objeto Date

- -

El siguiente código utiliza instanceof para determinar si elDia es un objeto Date. Debido a que elDia es un objeto Date, las instrucciones de la sentencia if se ejecutan.

- -
elDia = new Date(1995, 12, 17)
-if (elDia instanceof Date) {
-   // instrucciones a ejecutar
-}
-
- -

Ejemplo: Demostrando que String y Date son del tipo Object

- -

El siguiente código utiliza instanceof para demostrar que los objetos String y Date son también del tipo Object (éstos se derivan de Object).

- -
miCadena = new String()
-miFecha = new Date()
-
-miCadena instanceof String // devuelve true
-miCadena instanceof Object // devuelve true
-miCadena instanceof Date   // devuelve false
-
-miFecha instanceof Date     // devuelve true
-miFecha instanceof Object   // devuelve true
-miFecha instanceof String   // devuelve false
-
- -

Ejemplo: Demostrando que miCoche es del tipo Coche y del tipo Object

- -

El siguiente código crea un objeto del tipo Coche y una instancia de ese tipo de objeto, miCoche. El operador instanceof demuestra que el objeto miCoche es del tipo Coche y del tipo Object.

- -
function Coche(fabricante, modelo, ejercicio) {
-   this.fabricante = fabricante
-   this.modelo = modelo
-   this.ejercicio= ejercicio
-}
-miCoche = new Coche("Honda", "Accord", 1998)
-a = miCoche instanceof Coche // devuelve verdadero (true)
-b = miCoche instanceof Object // devuelve verdadero (true)
-
- -
 
diff --git a/files/es/web/javascript/referencia/operadores/miembros/index.html b/files/es/web/javascript/referencia/operadores/miembros/index.html deleted file mode 100644 index 565a8b7f92..0000000000 --- a/files/es/web/javascript/referencia/operadores/miembros/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Miembros -slug: Web/JavaScript/Referencia/Operadores/Miembros -tags: - - JavaScript - - Operator -translation_of: Web/JavaScript/Reference/Operators/Property_Accessors ---- -
{{jsSidebar("Operators")}}
- -

Resumen

- -

Los operadores de miembros proporcionan acceso a las propiedades y métodos de un objeto.

- -

Un objeto es en realidad un arreglo asociativo (por ejemplo map ,dictionary ,hash ,lookup table ). Las claves en este arreglo son los nombres de las propiedades y los métodos (propiedades que hacen referencia a funciones). Hay dos modos de acceder a estas propiedades: notación por punto y notación por corchete (es decir, operador de subscripción).

- -

Nota: La especificación ECMAScript etiqueta estos operadores como "property accessors" en vez de "operadores de miembro" (member operators).

- -

Notación por punto

- -
get = objeto.propiedad;
-objeto.propiedad = set;
-
- -

propiedad debe ser un identificador válido de JavaScript, esto es, una secuencia alfanumérica de caracteres, incluyendo también el guión bajo ("_") y el signo dolar ("$"), que no puede comenzar por un número. Por ejemplo, objeto.$1 es válido, mientras que objeto.1 no lo es.

- -

Ejemplo:

- -
document.createElement('pre');
-
- -

Aquí, el método llamado "createElement" se recupera de document y se le llama.

- -

Notación por corchetes

- -
get = objeto[nombre_propiedad];
-objeto[nombre_propiedad] = set;
-
- -

nombre_propiedad es una cadena. La cadena no tiene que ser un identificador válido; puede tener cualquier valor, por ejemplo "1foo", "!bar!", o incluso " " (un espacio).

- -

Ejemplo:

- -
document['createElement']('pre');
-
- -

Esto hace exactamente lo mismo que el ejemplo anterior.

- -

Nombres de propiedades

- -

Los nombres de propiedades deben ser cadenas. Esto significa que no pueden usarse objetos distintos a cadenas como claves en un objeto. Cualquier objeto que no sea una cadena, incluyendo números, se convierte al tipo cadena a través de su método {{jsxref("Object.toString")}}.

- -

Ejemplos:

- -
var objeto = {};
-objeto['1'] = 'valor';
-alert(objeto[1]);
-
- -

Ésto tendrá como resultado "valor", ya que 1 se convertirá por tipo a '1'.

- -
var foo = {propiedad_unica: 1}, bar = {propiedad_unica: 2}, objeto = {};
-objeto[foo] = 'valor';
-alert(objeto[bar]);
-
- -

Ésto también tiene como resultado "valor", ya que tanto foo como bar se convierten a la misma cadena. En el motor de JavaScript SpiderMonkey, esta cadena sería "{{ mediawiki.external('objeto Object') }}".

- -

Enlace a métodos

- -

Un método no está enlazado al objeto del que es método. Específicamente, this no está establecido en un método, es decir, this no se refiere necesariamente a un objeto conteniendo el método. this, en cambio, se "pasa" mediante la llamada de función.

- -

Vea enlace a métodos.

- -

Nota sobre eval

- -

Los principiantes en JavaScript a menudo tienen el error de usar {{jsxref("eval")}} cuando la notación por corchetes puede usarse a cambio. Por ejemplo, la siguiente sintaxis se ve a menudo en muchos scripts.

- -
x = eval('document.nombre_formulario.' + cadenaControlFormulario + '.value');
-
- -

eval es lenta y se debería evitar en la medida de lo posible. Es mejor usar la notación por corchetes a cambio:

- -
x = document.nombre_formulario[cadenaControlFormulario].value;
-
diff --git a/files/es/web/javascript/referencia/operadores/new.target/index.html b/files/es/web/javascript/referencia/operadores/new.target/index.html deleted file mode 100644 index 0faa0f0878..0000000000 --- a/files/es/web/javascript/referencia/operadores/new.target/index.html +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: new.target -slug: Web/JavaScript/Referencia/Operadores/new.target -tags: - - Clases - - ECMAScript6 - - JavaScript - - Referencia -translation_of: Web/JavaScript/Reference/Operators/new.target ---- -
{{JSSidebar("Operators")}}
- -

La propiedad new.target te permite detectar si una función o constructor fue llamado usando el operador new. En constructores y funciones instanciadas con el operador new, new.target devuelve una referencia al constructor o función. En llamadas a funciones normales, new.target es {{jsxref("undefined")}}.

- -

Sintaxis

- -
new.target
- -

Descripción

- -

La sintaxis new.target consiste en el keyword "new", un punto, y el nombre de propiedad "target". Normalmente "new." sirve como contexto para el acceso a la propiedad, pero aquí, "new." no es realmente un objeto. En llamadas a constructores, sin embargo, new.target hace referencia al constructor invocado por new por lo que "new." se convierte en un contexto virtual.

- -

La propiedad new.target es una meta propiedad que está disponible para todas las funciones. En funciones flecha, new.target se refiere al new.target de la función que la contiene.

- -

Ejemplos

- -

new.target en llamadas a funciones

- -

En llamadas a funciones normales (en contraposición a llamadas a constructores), new.target es {{jsxref("undefined")}}. Esto te permite detectar si la función fue llamada con new como constructor.

- -
function Foo() {
-  if (!new.target) throw 'Foo() debe ser llamado con new';
-  console.log('Foo instanciado con new');
-}
-
-Foo(); // Lanza "Foo() debe ser llamado con new"
-new Foo(); // escribe en el log "Foo instanciado con new"
-
- -

new.target en constructores

- -

En constructores de clase, new.target hace referencia al constructor que fue directamente invocado por new. Este también es el caso si el constructor está en una clase padre y fue delegado desdes el constructor hijo.

- -
class A {
-  constructor() {
-    console.log(new.target.name);
-  }
-}
-
-class B extends A { constructor() { super(); } }
-
-var a = new A(); // escribe en el log "A"
-var b = new B(); // escribe en el log "B"
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstatusComentario
{{SpecName('ES2015', '#sec-built-in-function-objects', 'Built-in Function Objects')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-built-in-function-objects', 'Built-in Function Objects')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad en navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(46.0)}}{{CompatGeckoDesktop(41)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}{{CompatChrome(46.0)}}{{CompatGeckoMobile(41)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatChrome(46.0)}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/operadores/new/index.html b/files/es/web/javascript/referencia/operadores/new/index.html deleted file mode 100644 index 4635b12402..0000000000 --- a/files/es/web/javascript/referencia/operadores/new/index.html +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: Operador new -slug: Web/JavaScript/Referencia/Operadores/new -tags: - - Expresiones del lado izquierdo - - JavaScript - - Left-hand-side expressions - - Operador - - Operator - - Referencia -translation_of: Web/JavaScript/Reference/Operators/new ---- -
{{jsSidebar("Operators", "Operadores")}}
- -

El operador new permite a los desarrolladores crear una instancia de un tipo de objeto definido por el usuario o de uno de los tipos de objeto integrados que tiene un función constructora.

- -
{{EmbedInteractiveExample("pages/js/expressions-newoperator.html")}}
- -

Sintaxis

- -
new constructor[([arguments])]
- -

Parámetros

- -
-
constructor
-
Una clase o función que especifica el tipo de instancia del objeto.
-
- -
-
arguments
-
Una lista de valores con los que se llamará al constructor.
-
- -

Descripción

- -

La palabra clave new hace lo siguiente:

- -
    -
  1. Crea un objeto JavaScript simple y en blanco;
  2. -
  3. Vincula (establece el constructor de) este objeto a otro objeto;
  4. -
  5. Pasa el objeto recién creado del Paso 1 como el contexto this;
  6. -
  7. Devuelve this si la función no devuelve un objeto.
  8. -
- -

La creación de un objeto definido por el usuario requiere dos pasos:

- -
    -
  1. Defina el tipo de objeto escribiendo una función.
  2. -
  3. Crea una instancia del objeto con new.
  4. -
- -

Para definir un tipo de objeto, crea una función para el tipo de objeto que especifique su nombre y propiedades. Un objeto puede tener una propiedad que en sí misma es otro objeto. Ve los siguientes ejemplos.

- -

Cuando se ejecuta el código new Foo(...), sucede lo siguiente:

- -
    -
  1. Se crea un nuevo objeto, heredado de Foo.prototype.
  2. -
  3. La función constructora Foo se llama con los argumentos especificados y con {{JSxRef("Operators/this", "this")}} vinculado al objeto recién creado. new Foo es equivalente a new Foo(), es decir, si no se especifica una lista de argumentos, Foo se llama sin argumentos.
  4. -
  5. El objeto (no nulo, false, 3.1415 u otros tipos primitivos) devuelto por la función constructora se convierte en el resultado de toda la expresión new. Si la función constructora no devuelve explícitamente un objeto, en su lugar se utiliza el objeto creado en el paso 1. (Normalmente, los constructores no devuelven un valor, pero pueden elegir hacerlo si quieren redefinir el proceso normal de creación de objetos).
  6. -
- -

Siempre puedes agregar una propiedad a un objeto definido previamente. Por ejemplo, la instrucción car1.color = "black" agrega una propiedad color a car1 y le asigna un valor de "black". Sin embargo, esto no afecta a ningún otro objeto. Para agregar la nueva propiedad a todos los objetos del mismo tipo, debes agregar la propiedad a la definición del tipo de objeto Car.

- -

Puedes agregar una propiedad compartida a un tipo de objeto definido previamente mediante la propiedad {{JSxRef("Global_Objects/Function/prototype", "Function.prototype")}}. Esto define una propiedad que comparten todos los objetos creados con esa función, en lugar de solo una instancia del tipo de objeto. El siguiente código agrega una propiedad de color con el valor "color original" a todos los objetos de tipo Car, y luego redefine ese valor con la cadena "black" solo en la instancia car1 del objeto. Para obtener más información, consulta {{JSxRef("Global_Objects/Function/prototype", "prototype")}}.

- -
function Car() {}
-car1 = new Car();
-car2 = new Car();
-
-console.log(car1.color);    // undefined
-
-Car.prototype.color = 'color original';
-console.log(car1.color);    // 'color original'
-
-car1.color = 'black';
-console.log(car1.color);    // 'black'
-
-console.log(Object.getPrototypeOf(car1).color); // 'color original'
-console.log(Object.getPrototypeOf(car2).color); // 'color original'
-console.log(car1.color);   // 'black'
-console.log(car2.color);   // 'color original'
-
- -
-

Si no escribiste el operador new, la función constructor se invocará como cualquier función normal, sin crear un objeto. En este caso, el valor de this también es diferente.

-
- -

Ejemplos

- -

Tipo de objeto e instancia de objeto

- -

Supongamos que deseas crear un tipo de objeto para cars. Quieres que este tipo de objeto se llame Car, y quieres que tenga propiedades para marca, modelo y año (make, model y year en inglés respectivamente). Para ello, podrías escribir la siguiente función:

- -
function Car(make, model, year) {
-  this.make = make;
-  this.model = model;
-  this.year = year;
-}
-
- -

Ahora puedes crear un objeto llamado myCar de la siguiente manera:

- -
var myCar = new Car('Eagle', 'Talon TSi', 1993);
-
- -

Esta declaración crea myCar y le asigna los valores especificados para sus propiedades. Entonces el valor de myCar.make es la cadena "Eagle", myCar.year es el entero 1993, y así sucesivamente.

- -

Puedes crear cualquier número de objetos car mediante llamadas a new. Por ejemplo:

- -
var kensCar = new Car('Nissan', '300ZX', 1992);
-
- -

Propiedad del objeto que en sí mismo es otro objeto

- -

Supongamos que defines un objeto llamado Person de la siguiente manera:

- -
function Person(name, age, sex) {
-  this.name = name;
-  this.age = age;
-  this.sex = sex;
-}
-
- -

Y luego creas una instancia de dos nuevos objetos Person de la siguiente manera:

- -
var rand = new Person('Rand McNally', 33, 'M');
-var ken = new Person('Ken Jones', 39, 'M');
-
- -

Luego, puedes reescribir la definición de Car para incluir una propiedad para owner (propietario en español) que tome un objeto Person, de la siguiente manera:

- -
function Car(make, model, year, owner) {
-  this.make = make;
-  this.model = model;
-  this.year = year;
-  this.owner = owner;
-}
-
- -

Para crear instancias de los nuevos objetos, utiliza lo siguiente:

- -
var car1 = new Car('Eagle', 'Talon TSi', 1993, rand);
-var car2 = new Car('Nissan', '300ZX', 1992, ken);
-
- -

En lugar de pasar una cadena literal o un valor entero al crear los nuevos objetos, las declaraciones anteriores pasan los objetos rand y ken como parámetros para los propietarios. Para conocer el nombre del propietario de car2, puedes acceder a la siguiente propiedad:

- -
car2.owner.name
-
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-new-operator', 'El operador new')}}
- -

Compatibilidad del navegador

- - - -

{{Compat("javascript.operators.new")}}

- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/operadores/operador_coma/index.html b/files/es/web/javascript/referencia/operadores/operador_coma/index.html deleted file mode 100644 index a62701b3e1..0000000000 --- a/files/es/web/javascript/referencia/operadores/operador_coma/index.html +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: Operador Coma -slug: Web/JavaScript/Referencia/Operadores/operador_coma -tags: - - JavaScript -translation_of: Web/JavaScript/Reference/Operators/Comma_Operator ---- -
{{jsSidebar("Operators")}}
- -

El operador coma evalua cada uno de sus operandos (de izquierda a derecha) y retorna el valor del último operando.

- -

Sintaxis

- -
expr1, expr2, expr3...
- -

Parámetros

- -
-
expr1, expr2, expr3...
-
Cualquier expresión.
-
- -

Descripción

- -

Puede usar el operador coma cuando deseé mútiples expresiones en una localización que requiere una sola expresión. El uso más común de este operador es proveer múltiples parámetros en un búcle for

- -

Ejemplo

- -

Si a es un array de dos dimensiones con 10 elementos en un lado, el siguiente código usa el operador coma para incrementar dos variables a la vez. Note que la coma en la sentencia var no es el operador coma, porque no existe adentro de una expresión.Más bien, es un carácter especial en sentencias var para combinar a múltiples de ellas en una sola. Sin embargo, esa coma se comporta casi igual que el operador coma. El código imprime los valores de los elementos diagonales en el array:

- -
for (var i = 0, j = 9; i <= 9; i++, j--)
-  document.writeln("a[" + i + "][" + j + "] = " + a[i][j]);
- -

Procesar y luego retornar:

- -

Otro ejemplo de lo que se puede hacer con el operador coma es procesar antes de retornar. Como se mencionó, solo el último elemento será retornado pero todos los otros también van a ser evaluados. Así, se puede hacer:

- -
function myFunc () {
-  var x = 0;
-
-  return (x += 1, x); // the same as return ++x;
-}
- -

Específicaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ESDraft', '#sec-comma-operator', 'Comma operator')}}{{Spec2('ESDraft')}} 
{{SpecName('ES6', '#sec-comma-operator', 'Comma operator')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-11.14', 'Comma operator')}}{{Spec2('ES5.1')}} 
{{SpecName('ES1', '#sec-11.14', 'Comma operator')}}{{Spec2('ES1')}}Definición inicial
- -

Compatibilidad en navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}3.0{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git "a/files/es/web/javascript/referencia/operadores/operadores_l\303\263gicos/index.html" "b/files/es/web/javascript/referencia/operadores/operadores_l\303\263gicos/index.html" deleted file mode 100644 index 4c9cb860a9..0000000000 --- "a/files/es/web/javascript/referencia/operadores/operadores_l\303\263gicos/index.html" +++ /dev/null @@ -1,296 +0,0 @@ ---- -title: Operadores lógicos -slug: Web/JavaScript/Referencia/Operadores/Operadores_lógicos -translation_of: Web/JavaScript/Reference/Operators -translation_of_original: Web/JavaScript/Reference/Operators/Logical_Operators ---- -
{{jsSidebar("Operadores_lógicos")}}
- -

Los operadores lógicos se usan típicamente con valores {{jsxref("Boolean")}}. En tal caso, regresan un valor Boolean. Sin embargo, los operadores && y || regresan en realidad el valor de uno de los operandos especificados, por lo que si estos operadores se usan con valores no Boolean, posiblemente regresen un valor no Boolean.

- -

Descripción

- -

Los operadores lógicos se describen en la tabla siguiente:

- - - - - - - - - - - - - - - - - - - - - - - - -
OperadorUsoDescripción
AND (&&) lógicoexpr1 && expr2 -

Regresa expr1 si tal puede convertirse a false; de lo contrario, regresa expr2. De esta forma, cuando se usa con valores Boolean, && regresa true si ambos operandos son verdaderos; de lo contrario regresa false.

-
OR (||) lógicoexpr1 || expr2 -

Regresa expr1 si tal puede convertirse a true; de lo contrario, regresa expr2. De esta forma, cuando se usa con valores Boolean, || regresa true si cualquier operando es verdadero; pero si ambos son falsos, regresa "false".

-
NOT (!) lógico!expr -

Regresa false si su único operando puede convertirse a true; de lo contrario, regresa true.

-
- -

Algunos ejemplos de expresiones que pueden convertirse a false son aquellas que evalúan a null, 0, un string vacío (""), o undefined.

- -

A pesar de que los operadores && y ||  pueden ser usados con operandos que no son valores Boolean, aún pueden ser considerados como operadores Boolean porque sus valores de regreso siempre pueden convertirse a valores Boolean.

- -

Evaluación contra "corto circuitos"

- -

Ya que las expresiones lógicas son evaluadas de izquierda a derecha, se prueban con una evaluación contra posibles "cortos circuitos" usando las siguientes normas:

- - - -

Las reglas de lógica garantizan que estas evaluaciones siempre son correctas. Se debe notar que la parte de "cualquier valor" en las expresiones anteriores no se evalúa, para que tal acción no afecte de ninguna forma. Además, es de notar que la parte de "cualquier valor" en las expresiones anteriores debe ser cualquier expresión lógica (lo que se indica con los paréntesis).

- -

Por ejemplo, las siguientes dos expresiones son equivalentes.

- -
function shortCircuitEvaluation() {
-  doSomething() || doSomethingElse()
-}
-
-function equivalentEvaluation() {
-  var flag = doSomething();
-  if (!flag) {
-    doSomethingElse();
-  }
-}
-
- -

Sin embargo, las siguientes expresiones no son equivalentes debido a la precedencia de operadores, y con tal ejemplo se enfatiza la importancia de que la parte derecha sea una única expresión (agrupada en paréntesis si es necesario).

- -
false && true  || true      // regresa true
-false && (true || true)     // regresa false
- -

AND (&&) lógico

- -

El siguiente código muestra ejemplos del operador && (AND lógico).

- -
a1 = true  && true      // t && t regresa true
-a2 = true  && false     // t && f regresa false
-a3 = false && true      // f && t regresa false
-a4 = false && (3 == 4)  // f && f regresa false
-a5 = "Cat" && "Dog"     // t && t regresa "Dog"
-a6 = false && "Cat"     // f && t regresa false
-a7 = "Cat" && false     // t && f regresa false
-
- -

OR (||) lógico

- -

El siguiente código muestra ejemplos del operador || (OR lógico).

- -
o1 = true  || true       // t || t regresa true
-o2 = false || true       // f || t regresa true
-o3 = true  || false      // t || f regresa true
-o4 = false || (3 == 4)   // f || f regresa false
-o5 = "Cat" || "Dog"      // t || t regresa "Cat"
-o6 = false || "Cat"      // f || t regresa "Cat"
-o7 = "Cat" || false      // t || f regresa "Cat"
-
- -

Logical NOT (!)

- -

El siguiente código muestra ejemplos del operador ! (NOT lógico).

- -
n1 = !true              // !t regresa false
-n2 = !false             // !f regresa true
-n3 = !"Cat"             // !t regresa false
-
- -

Reglas de conversión

- -

Convertir de AND a OR

- -

la siguiente operación que involucra Booleans:

- -
bCondition1 && bCondition2
- -

siempre es igual a:

- -
!(!bCondition1 || !bCondition2)
- -

Convertir de OR a AND

- -

la siguiente operación que involucra Booleans:

- -
bCondition1 || bCondition2
- -

siempre es igual a:

- -
!(!bCondition1 && !bCondition2)
- -

Convertir entre operadores NOT

- -

la siguiente operación que involucra Booleans:

- -
!!bCondition
- -

siempre es igual a:

- -
bCondition
- -

Eliminando paréntesis anidados

- -

Ya que las expresiones lógicas son evaluadas de izquierda a derecha, siempre es posible eliminar paréntesis en una expresión compleja, si se siguen ciertas reglas.

- -

Eliminando operadores AND anidados

- -

La siguiente operación compleja que involucra Booleans:

- -
bCondition1 || (bCondition2 && bCondition3)
- -

siempre es igual a:

- -
bCondition1 || bCondition2 && bCondition3
- -

Eliminando operadores OR anidados

- -

La siguiente operación compleja que involucra Booleans:

- -
bCondition1 && (bCondition2 || bCondition3)
- -

siempre es igual a:

- -
!(!bCondition1 || !bCondition2 && !bCondition3)
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
{{SpecName('ES1')}}{{Spec2('ES1')}}Definición inicial.
{{SpecName('ES5.1', '#sec-11.11')}}{{Spec2('ES5.1')}} -

Definido en varias secciones de la especificación: Logical NOT Operator, Binary Logical Operators

-
{{SpecName('ES6', '#sec-binary-logical-operators')}}{{Spec2('ES6')}}Definido en varias secciones de la especificación: Logical NOT Operator, Binary Logical Operators
{{SpecName('ESDraft', '#sec-binary-logical-operators')}}{{Spec2('ESDraft')}}Definido en varias secciones de la especificación: Logical NOT Operator, Binary Logical Operators
- -

Compatibilidad entre navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
AND (&&) lógico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
OR (||) lógico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
NOT (!) lógico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
AND (&&) lógico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
OR (||) lógico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
NOT (!) lógico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/operadores/operator_precedence/index.html b/files/es/web/javascript/referencia/operadores/operator_precedence/index.html deleted file mode 100644 index 2ff0464afd..0000000000 --- a/files/es/web/javascript/referencia/operadores/operator_precedence/index.html +++ /dev/null @@ -1,297 +0,0 @@ ---- -title: Precedencia de operadores -slug: Web/JavaScript/Referencia/Operadores/Operator_Precedence -tags: - - JavaScript - - Operator - - operator details - - operator precedence -translation_of: Web/JavaScript/Reference/Operators/Operator_Precedence ---- -
{{jsSidebar("Operators")}}
- -

Sumario

- -

La precedencia de operadores determina el orden en el cual los operadores son evaluados. Los operadores con mayor precedencia son evaluados primero.

- -

Ejemplo:

- -
3 + 4 * 5 // retorna 23
-
- -

El operador de multiplicación ("*") tiene una precedencia mas alta que el operador de suma ("+") y por eso sera evaluado primero.

- -

Asociatividad

- -

La asociatividad determina el orden en el cual los operadores con el mismo nivel de precedencia son procesados. Por ejemplo:

- -
a OP b OP c
-
- -

La asociatividad de izquierda a derecha significa que esa expresión es procesada como (a OP b) OP c, mientras que la asociatividad de derecha a izquierda significa que es procesada como a OP (b OP c). Los operadores de asignación tienen asociatividad de derecha a izquierda, por lo que puedes escribir:

- -
a = b = 5;
-
- -

para asignar 5 a las dos variables. Esto es porque el operador de asignación retorna el valor que asignó. Primero b es inicializada a 5. Despues a es inicializada al valor de b.

- -

Tabla

- -

La siguiente tabla esta ordenada de la precedencia más alta (0) a la más baja (18).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PrecedenciaTipo de operadorAsociatividadOperador
0groupingn/a()
1memberleft-to-right.
[]
newn/anew()
2function callleft-to-right()
newright-to-leftnew
3incrementn/a++
decrementn/a--
4logical-notright-to-left!
bitwise notright-to-left~
unary +right-to-left+
unary negationright-to-left-
typeofright-to-lefttypeof
voidright-to-leftvoid
deleteright-to-leftdelete
5multiplicationleft-to-right*
divisionleft-to-right/
modulusleft-to-right%
6additionleft-to-right+
subtractionleft-to-right-
7bitwise shiftleft-to-right<<
>>
>>>
8relationalleft-to-right<
<=
>
>=
inleft-to-rightin
instanceofleft-to-rightinstanceof
9equalityleft-to-right==
!=
===
!==
10bitwise-andleft-to-right&
11bitwise-xorleft-to-right^
12bitwise-orleft-to-right|
13logical-andleft-to-right&&
14logical-orleft-to-right||
15conditionalright-to-left?:
16assignmentright-to-left=
+=
-=
*=
/=
%=
<<=
>>=
>>>=
&=
^=
|=
17yieldright-to-leftyield
18commaleft-to-right,
- -

diff --git a/files/es/web/javascript/referencia/operadores/pipeline_operator/index.html b/files/es/web/javascript/referencia/operadores/pipeline_operator/index.html deleted file mode 100644 index cb671264cc..0000000000 --- a/files/es/web/javascript/referencia/operadores/pipeline_operator/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Operador Pipeline -slug: Web/JavaScript/Referencia/Operadores/Pipeline_operator -tags: - - Encadenamiento - - Experimental - - JavaScript - - Operador - - Pipeline -translation_of: Web/JavaScript/Reference/Operators/Pipeline_operator ---- -
{{jsSidebar("Operators")}} {{SeeCompatTable}}
- -

El operador experimental pipeline |> (actualmente en su fase1) conduce el valor de una expresión dentro de una función. Esto permite la creación de llamadas de función en cadena de un modo más legible. El resultado es una simplificación sintáctica en la cual la llamada a una función con un único parámetro puede ser escrita del siguiente modo:

- -
let url = "%21" |> decodeURI;
- -

La llamada equivalente en sintaxis tradicional tiene este aspecto:

- -
let url = decodeURI("%21");
-
- -

Sintaxis

- -
expression |> function
-
- -

El valor especificado en la expression se pasa dentro de la  function como su único parámetro.

- -

Ejemplos

- -

Encadenando llamadas  a funciones

- -

El operador pipeline puede mejorar la legibilidad cuando se encadenan varias funciones entre si.

- -
const double = (n) => n * 2;
-const increment = (n) => n + 1;
-
-// sin operador pipeline
-double(increment(double(double(5)))); // 42
-
-// con operador pipeline
-5 |> double |> double |> increment |> double; // 42
-
- -

Especificaciones

- - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
Borrador del operador PipelineFase 1Todavía no forma parte de la especificación ECMAScript
- -

Compatibilidad con navegadores

- -
- - -

{{Compat("javascript.operators.pipeline")}}

-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/operadores/resto/index.html b/files/es/web/javascript/referencia/operadores/resto/index.html deleted file mode 100644 index 1a6a7c56da..0000000000 --- a/files/es/web/javascript/referencia/operadores/resto/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Resto (%) -slug: Web/JavaScript/Referencia/Operadores/Resto -translation_of: Web/JavaScript/Reference/Operators/Remainder ---- -
{{jsSidebar("Operators")}}
- -

El operador resto (%) devuelve el resto de la división entre dos operandos. Siempre toma el signo del dividendo.

- -
{{EmbedInteractiveExample("pages/js/expressions-remainder.html")}}
- -
- - - -

Tener en cuenta que en la mayoría de los lenguajes de programación, el operador de resto es ‘%’, pero en otros (como Python, Perl) es el operador módulo. Ambos son iguales para valores positivos, pero cuando el divisor y el dividendo son de signos distintos, se obtienen distintos resultados. Para obtener el módulo en JavaScript, en lugar de a % n, usa ((a % n ) + n ) % n.

- -

Sintaxis

- -
Operador: var1 % var2
-
- -

Ejemplos

- -

Resto con dividendo positivo

- -
 12 % 5  //  2
- 1 % -2 //  1
- 1 % 2  //  1
- 2 % 3  //  2
-5.5 % 2 // 1.5
-
- -

Resto con dividendo negativo

- -
-12 % 5 // -2
--1 % 2  // -1
--4 % 2  // -0
- -

Resto con NaN

- -
NaN % 2 // NaN
- -

Resto con Infinity

- -
Infinity % 2 // NaN
-Infinity % 0 // NaN
-Infinity % Infinity // NaN
-
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-multiplicative-operators', 'Remainder operator')}}
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.operators.remainder")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/operadores/sintaxis_spread/index.html b/files/es/web/javascript/referencia/operadores/sintaxis_spread/index.html deleted file mode 100644 index 5a17cd05a2..0000000000 --- a/files/es/web/javascript/referencia/operadores/sintaxis_spread/index.html +++ /dev/null @@ -1,242 +0,0 @@ ---- -title: Sintáxis Spread -slug: Web/JavaScript/Referencia/Operadores/Sintaxis_Spread -tags: - - ECMAScript6 - - Iteradores - - JavaScript -translation_of: Web/JavaScript/Reference/Operators/Spread_syntax ---- -
{{jsSidebar("Operators")}}
- -
La sintaxis extendida o spread syntax permite a un elemento iterable tal como un arreglo o cadena ser expandido en lugares donde cero o más argumentos (para llamadas de  función) o elementos (para Array literales) son esperados, o a un objeto ser expandido en lugares donde cero o más pares de valores clave (para literales Tipo Objeto) son esperados.
- -
{{EmbedInteractiveExample("pages/js/expressions-spreadsyntax.html")}}
- -
- - - -

Sintaxis

- -

Para llamadas de funciones:

- -
myFunction(...iterableObj);
-
- -

Para arreglos literales o cadenas de caracteres:

- -
[...iterableObj, '4', 'five', 6];
- -

Para objetos literales (nuevo en ECMAScript 2018):

- -
let objClone = { ...obj };
- -

Ejemplos

- -

Spread en llamadas de función

- -

Reemplaza "apply"

- -

Es frecuente usar {{jsxref( "Function.prototype.apply")}} en casos donde quieres usar los elementos de un arreglo como argumentos de una función.

- -
function myFunction(x, y, z) { }
-var args = [0, 1, 2];
-myFunction.apply(null, args);
- -

Con la sintaxis expandida (spread syntax), el código anterior puede ser escrito como:

- -
function myFunction(x, y, z) { }
-var args = [0, 1, 2];
-myFunction(...args);
- -

Cualquier argumento en la lista de argumentos puede usar la sintáxis expandida y esto puede ser usado varias veces.

- -
function myFunction(v, w, x, y, z) { }
-var args = [0, 1];
-myFunction(-1, ...args, 2, ...[3]);
- -

"Apply" para "new"

- -

Cuando se llama un constructor con new, no es posible usar directamente un arreglo y apply (apply hace un [[Call]] y no un [[Construct]]). Sin embargo, un arreglo puede ser fácilmente usado con un new gracias a la sintáxis expandida:

- -
var dateFields = [1970, 0, 1];  // 1 Jan 1970
-var d = new Date(...dateFields);
-
- -

Para usar new con un arreglo de parámetros sin la sintáxis expandida, podrías tener que hacerlo indirectamente a través de una aplicación parcial:

- -
function applyAndNew(constructor, args) {
-   function partial () {
-      return constructor.apply(this, args);
-   };
-   if (typeof constructor.prototype === "object") {
-      partial.prototype = Object.create(constructor.prototype);
-   }
-   return partial;
-}
-
-
-function myConstructor () {
-   console.log("arguments.length: " + arguments.length);
-   console.log(arguments);
-   this.prop1="val1";
-   this.prop2="val2";
-};
-
-var myArguments = ["hi", "how", "are", "you", "mr", null];
-var myConstructorWithArguments = applyAndNew(myConstructor, myArguments);
-
-console.log(new myConstructorWithArguments);
-// (internal log of myConstructor):           arguments.length: 6
-// (internal log of myConstructor):           ["hi", "how", "are", "you", "mr", null]
-// (log of "new myConstructorWithArguments"): {prop1: "val1", prop2: "val2"}
- -

Expandir Array literales

- -

Un literal Array más poderoso

- -

Sin sintaxis expandida (spread syntax), para crear un nuevo arreglo usando un arreglo existente como parte de él,no es suficiente la sintaxis de Array literal y en su lugar se debe usar código imperativo con una combinación de push, splice, concat, etc. Con la sintaxis expandida, esto se vuelve mucho mas práctico:

- -
var parts = ['shoulders', 'knees'];
-var lyrics = ['head', ...parts, 'and', 'toes'];
-// ["head", "shoulders", "knees", "and", "toes"]
-
- -

Así como para expandir listas de argumentos, ... puede ser usado en cualquier parte dentro del Array literal, y múltiples veces.

- -

Copiar un arreglo

- -
var arr = [1, 2, 3];
-var arr2 = [...arr]; // like arr.slice()
-arr2.push(4);
-
-// arr2 becomes [1, 2, 3, 4]
-// arr remains unaffected
-
- -

Nota: La sintaxis expandida efectivamente va a un nivel de profundidad mientras copia un arreglo. Por lo tanto, esto no permite copiar arreglos multidimensionales como se muestra en los siguientes ejemplos (es lo mismo con {{jsxref("Object.assign()")}} y sintaxis spread).

- -
var a = [[1], [2], [3]];
-var b = [...a];
-b.shift().shift(); // 1
-// Now array a is affected as well: [[], [2], [3]]
-
- -

Una forma mejor para concatenar arreglos

- -

{{jsxref("Array.concat")}} es usada a menudo para concatenar un arreglo al final de un arreglo ya existente. Sin la sintaxis spread se realiza:

- -
var arr1 = [0, 1, 2];
-var arr2 = [3, 4, 5];
-// Append all items from arr2 onto arr1
-arr1 = arr1.concat(arr2);
- -

Con la sintaxis spread se transforma en:

- -
var arr1 = [0, 1, 2];
-var arr2 = [3, 4, 5];
-arr1 = [...arr1, ...arr2];
-
- -

{{jsxref("Array.unshift")}} es a menudo usada para insertar un arreglo de valores al inicio de un arreglo existente. Sin la sintáxis spread, esto es hecho como:

- -
var arr1 = [0, 1, 2];
-var arr2 = [3, 4, 5];
-// Prepend all items from arr2 onto arr1
-Array.prototype.unshift.apply(arr1, arr2) // arr1 is now [3, 4, 5, 0, 1, 2]
- -

Con la sintaxis spread se convierte en [Observa, sin embargo, que esto crea un nuevo arreglo arr1.  Diferente a {{jsxref("Array.unshift")}}, esto no modifica el arreglo original en sitio arr1]:

- -
var arr1 = [0, 1, 2];
-var arr2 = [3, 4, 5];
-arr1 = [...arr2, ...arr1]; // arr1 is now [3, 4, 5, 0, 1, 2]
-
- -

Spread en literales tipo Objeto

- -

La propuesta Propiedades Rest/Spread para ECMAScript (etapa 4) agrega propiedades spread a los literales Tipo Objeto. Esto copia sus propiedades enumerables desde un objeto provisto dentro de un nuevo objeto.

- -

Shallow-cloning (excluyendo prototype) o la combinación de objetos es ahora posible usando una sintaxis más corta que {{jsxref("Object.assign()")}}.

- -
var obj1 = { foo: 'bar', x: 42 };
-var obj2 = { foo: 'baz', y: 13 };
-
-var clonedObj = { ...obj1 };
-// Object { foo: "bar", x: 42 }
-
-var mergedObj = { ...obj1, ...obj2 };
-// Object { foo: "baz", x: 42, y: 13 }
- -

Observa que {{jsxref("Object.assign()")}} desencadena setters mientras que la sintaxis spread no lo hace.

- -

Observa que tú no puedes reemplazar o replicar la función {{jsxref("Object.assign()")}}:

- -
var obj1 = { foo: 'bar', x: 42 };
-var obj2 = { foo: 'baz', y: 13 };
-const merge = ( ...objects ) => ( { ...objects } );
-
-var mergedObj = merge ( obj1, obj2);
-// Object { 0: { foo: 'bar', x: 42 }, 1: { foo: 'baz', y: 13 } }
-
-var mergedObj = merge ( {}, obj1, obj2);
-// Object { 0: {}, 1: { foo: 'bar', x: 42 }, 2: { foo: 'baz', y: 13 } }
- -

En el ejemplo de arriba, el operador spread no trabaja como uno podría esperar: este dispersa un arreglo de argumentos en el literal Tipo Objeto, debido al parámetro rest.

- -

Sólo para iterables

- -

La sintaxis Spread (otra que en el caso de las propiedades spread) puede ser aplicada sólo a los objetos iterables:

- -
var obj = {'key1': 'value1'};
-var array = [...obj]; // TypeError: obj is not iterable
-
- -

Spread con muchos valores

- -

Cuando se usa la sintaxis spread para llamados de funciones, tenga en cuenta la posibilidad de exceder el límite de longitud de argumentos del motor de JavaScript. Vea apply() para más detalles.

- -

Sintaxis Rest (parámetros)

- -

La sintaxis Rest luce exactamente como la sintaxis spread, pero esto es usado por la desestructuración de arreglos y objetos. De cierta forma, la sintaxis rest es la opuesta a la sintaxis spread: spread 'expande' un arreglo en sus elementos, mientras rest agrupa múltiples elementos y los 'condensa' en un único elemento. Consulta parámetros rest.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES2015', '#sec-array-initializer')}}{{Spec2('ES2015')}}Definido en varias secciones de la especificación: Array Initializer, Argument Lists
{{SpecName('ESDraft', '#sec-array-initializer')}}{{Spec2('ESDraft')}}Sin cambios.
{{SpecName('ESDraft', '#sec-object-initializer')}}{{Spec2('ESDraft')}}Definido en Object Initializer
- -

Compatibilidad del navegador

- - - -

{{Compat("javascript.operators.spread")}}

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/operadores/spread_operator/index.html b/files/es/web/javascript/referencia/operadores/spread_operator/index.html deleted file mode 100644 index 050a2026f6..0000000000 --- a/files/es/web/javascript/referencia/operadores/spread_operator/index.html +++ /dev/null @@ -1,220 +0,0 @@ ---- -title: Operador de propagación -slug: Web/JavaScript/Referencia/Operadores/Spread_operator -tags: - - Experimental - - Expérimental(2) - - JavaScript - - Operador -translation_of: Web/JavaScript/Reference/Operators/Spread_syntax -translation_of_original: Web/JavaScript/Reference/Operators/Spread_operator ---- -
{{jsSidebar("Operators")}}
- -

El operador de propagación spread operator permite que una expresión sea expandida en situaciones donde se esperan múltiples argumentos (llamadas a funciones) o múltiples elementos (arrays literales).

- -

Sintaxis

- -

Llamadas a funciones:

- -
f(...iterableObj);
-
- -

Arrays literales:

- -
[...iterableObj, 4, 5, 6]
- -

Desestructuración destructuring:

- -
[a, b, ...iterableObj] = [1, 2, 3, 4, 5];
- -

Ejemplos

- -

Un mejor método apply

- -

Ejemplo: Es común usar {{jsxref( "Function.prototype.apply")}} en casos donde se require un array como contenedor de los argumentos que se enviarán a una llamada de función:

- -
function f(x, y, z) { }
-var args = [0, 1, 2];
-f.apply(null, args);
- -

Con el operador spread de ES6, el ejemplo anterior se puede rescribir como:

- -
function f(x, y, z) { }
-var args = [0, 1, 2];
-f(...args);
- -

Cualquier argumento en la lista de argumentos puede usar la sintaxis de propagación spread, donde además puede ser usada varias veces.

- -
function f(v, w, x, y, z) { }
-var args = [0, 1];
-f(-1, ...args, 2, ...[3]);
- -

Un array literal mas poderoso

- -

Ejemplo: La sintaxis de un array literal que existe hoy en día no es suficiente si se requiere agregar los elementos de un array dentro de otro array existente. Actualmente se debe escribir código imperativo usando una combinación de métodos como push, splice, concat, etc. Con la sintaxis de propagación spread esta tarea resulta mucho mas concisa:

- -
var parts = ['shoulder', 'knees'];
-var lyrics = ['head', ...parts, 'and', 'toes'];
- -

Al igual que con una lista de argumentos, en este caso también puede ser usado en cualquier ubicación dentro del array literal, además de poderse incluir una o varias veces.

- -

Combinación del método apply y el operador new

- -

Ejemplo: En ES5 no es posible combinar new y apply (en ES5  el método apply crea un [[Call]] y no un [[Construct]]). En ES6 la sintaxis de propagación spread soporta esto de forma natural:

- -
var dateFields = readDateFields(database);
-var d = new Date(...dateFields);
- -

Un método push mejorado

- -

Ejemplo: {{jsxref("Global_Objects/Array/push", "push")}} suele usarse para agregar los elementos de un array al final de otro array existente. En ES5 esta tarea puede ser realizada de la siguiente manera:

- -
var arr1 = [0, 1, 2];
-var arr2 = [3, 4, 5];
-// Agregar todos los elementos de arr2 a arr1
-Array.prototype.push.apply(arr1, arr2);
- -

Usando el operador de propagación spread de ES6, este sería el resultado:

- -
var arr1 = [0, 1, 2];
-var arr2 = [3, 4, 5];
-arr1.push(...arr2);
- -

Solo funciona para iterables

- -
var obj = {"key1":"value1"};
-function myFunction(x) {
-    console.log(x); // undefined
-}
-myFunction(...obj);
-var args = [...obj];
-console.log(args, args.length) //[] 0
- -

Operador Rest

- -

El operador Rest es exactamente igual a la sintaxis del operador de propagación, y se utiliza para desestructurar arrays y objetos. En cierto modo, Rest es lo contrario de spread. Spread 'expande' un array en sus elementos, y Rest recoge múltiples elementos y los 'condensa' en uno solo.

- -

Especificaciones

- - - - - - - - - - - - - - - - -
EspecificaciónEstadoCommentario
-

{{SpecName('ES6', '#sec-array-initializer', 'Array Initializer')}}
- {{SpecName('ES6', '#sec-argument-lists', 'Argument Lists')}}

-
{{Spec2('ES6')}} -
    -
  • 12.2.4 Array Initializer
  • -
  • 12.3.6 Argument Lists
  • -
-
- -

Compatibilidad en navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Operación de spread en arrays literales{{CompatNo}}
- v8 issue 3018
{{ CompatGeckoDesktop("16") }}
- {{ CompatGeckoDesktop("36") }} (Symbol.iterator)
{{CompatNo}}{{CompatNo}}7.1
Operación de spread en llamadas a funciones{{CompatNo}}{{ CompatGeckoDesktop("27") }}
- {{ CompatGeckoDesktop("36") }} (Symbol.iterator)
{{CompatNo}}{{CompatNo}}7.1
Operación de spread en desestructuración
- destructuring
{{CompatUnknown}}{{ CompatGeckoDesktop("34") }}
- {{ CompatGeckoDesktop("36") }} (Symbol.iterator)
{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticasAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Operación de spread en arrays literales{{CompatNo}}{{ CompatGeckoMobile("16") }}
- {{ CompatGeckoMobile("36") }} (Symbol.iterator)
{{CompatNo}}{{CompatNo}}iOS 8
Operación de spread en llamadas a funciones{{CompatNo}}{{ CompatGeckoMobile("27") }}
- {{ CompatGeckoMobile("36") }} (Symbol.iterator)
{{CompatNo}}{{CompatNo}}iOS 8
Operación de spread en desestructuración
- destructuring
{{CompatUnknown}}{{ CompatGeckoDesktop("34") }}
- {{ CompatGeckoMobile("36") }} (Symbol.iterator)
{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Temas relacionados

- - diff --git a/files/es/web/javascript/referencia/operadores/strict_equality/index.html b/files/es/web/javascript/referencia/operadores/strict_equality/index.html deleted file mode 100644 index 0d09b1de71..0000000000 --- a/files/es/web/javascript/referencia/operadores/strict_equality/index.html +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Igualdad Estricta (===) -slug: Web/JavaScript/Referencia/Operadores/Strict_equality -translation_of: Web/JavaScript/Reference/Operators/Strict_equality ---- -
{{jsSidebar("Operators")}}
- -

El operador de estricta igualdad (===) revisa si dos operandos son iguales y produce un resultado Booleano. A diferencia del operador de igualdad regular (==), el operador de estricta igualdad siempre considera que los operandos de distinto tipo de valor son diferentes y nunca similares.

- -
{{EmbedInteractiveExample("pages/js/expressions-strict-equality.html")}}
- - - -

Sintaxis

- -
x === y
- -

Descripción

- -

Los operadores de estricta igualdad (=== y !==) usan el Algoritmo Estricto Comparativo de Igualdad  para comparar dos operandos:

- - - -

La diferencia más notable entre este operador y el operador de igualdad regular (==) es que si los operandos son de distinto tipo de valor, el operador == intenta convertir los valores a un mismo tipo de dato antes de compararlos.

- -

Ejemplos

- -

Comparando operandos del mismo tipo

- -
console.log("hello" === "hello");   // true
-console.log("hello" === "hola");    // false
-
-console.log(3 === 3);               // true
-console.log(3 === 4);               // false
-
-console.log(true === true);         // true
-console.log(true === false);        // false
-
-console.log(null === null);         // true
- -

Comparando operandos de distinto tipo

- -
console.log("3" === 3);           // false
-
-console.log(true === 1);          // false
-
-console.log(null === undefined);  // false
- -

Comparando objetos

- -
const object1 = {
-  name: "hello"
-}
-
-const object2 = {
-  name: "hello"
-}
-
-console.log(object1 === object2);  // false
-console.log(object1 === object1);  // true
- -

Especificaciones

- - - - - - - - - - - - -
Specification
{{SpecName('ESDraft', '#sec-equality-operators', 'Equality operators')}}
- -

Compatibilidad entre exploradores

- - - -

{{Compat("javascript.operators.strict_equality")}}

- -

También revisa

- - diff --git a/files/es/web/javascript/referencia/operadores/super/index.html b/files/es/web/javascript/referencia/operadores/super/index.html deleted file mode 100644 index ff2ac5ae0e..0000000000 --- a/files/es/web/javascript/referencia/operadores/super/index.html +++ /dev/null @@ -1,178 +0,0 @@ ---- -title: super -slug: Web/JavaScript/Referencia/Operadores/super -tags: - - Clases - - ECMAScript 2015 - - JavaScript - - Operador -translation_of: Web/JavaScript/Reference/Operators/super ---- -
{{jsSidebar("Operators")}}
- -

La palabra clave super es usada para acceder y llamar funciones del padre de un objeto.

- -

Las expresiones super.prop y super[expr] son válidas en cualquier definición de método tanto para clases como para objetos literales.

- -

Sintaxis

- -
// llama al método constructor del objeto padre.
-super([arguments]);
-
-// llama cualquier otro método del objeto padre.
-super.functionOnParent([arguments]);
-
- -

Descripción

- -

Cuando es usado en un constructor, la palabra clave super aparece  sola lo cual invoca el constructor del objeto padre. En este caso debe usarse antes de que la palabra clave this sea usada. La palabra clave super también puede utilizarse para llamar otras funciones del objeto padre.

- -

Ejemplo

- -

Usando super en clases

- -

Este fragmento de código se toma del ejemplo de clases (demo en vivo). Aquí se llama a super() para evitar la duplicación de las partes del constructor que son comunes entre Rectangle y Square.

- -
class Rectangle {
-  constructor(height, width) {
-    this.name = 'Rectangle';
-    this.height = height;
-    this.width = width;
-  }
-  sayName() {
-    console.log('Hi, I am a ', this.name + '.');
-  }
-  get area() {
-    return this.height * this.width;
-  }
-  set area(value) {
-    this.height = this.width = Math.sqrt(value);
-  }
-}
-
-class Square extends Rectangle {
-  constructor(length) {
-    this.height; // ReferenceError, super necesita ser llamado primero!
-
-    // Aquí, llama al constructor de la clase padre con las longitudes
-    // previstas para el ancho y la altura de Rectangle
-    super(length, length);
-
-    // Nota: En las clases derivadas, se debe llamar a super() antes de
-    // poder usar 'this'. Salir de esto provocará un error de referencia.
-    this.name = 'Square';
-  }
-}
- -

Super-llamando a métodos estáticos

- -

También puede llamar a super en métodos estáticos.

- -
class Rectangle {
-  constructor() {}
-  static logNbSides() {
-    return 'I have 4 sides';
-  }
-}
-
-class Square extends Rectangle {
-  constructor() {}
-  static logDescription() {
-    return super.logNbSides() + ' which are all equal';
-  }
-}
-Square.logDescription(); // 'Tengo 4 lados que son todos iguales'
-
- -

Eliminar propiedades super generará un error

- -

No puede usar el operador de eliminación y super.prop o super[expr] para eliminar la propiedad de una clase principal, lanzará {{jsxref("ReferenceError")}}.

- -
class Base {
-  constructor() {}
-  foo() {}
-}
-class Derived extends Base {
-  constructor() {}
-  delete() {
-    delete super.foo; // esto es malo
-  }
-}
-
-new Derived().delete(); // ReferenceError: eliminación no válida que implica 'super'. 
- -

super.prop no puede sobrescribir las propiedades no modificables

- -

Al definir propiedades que no se pueden escribir, p. Ej. {{jsxref("Object.defineProperty")}}, super no puede sobrescribir el valor de la propiedad.

- -
class X {
-  constructor() {
-    Object.defineProperty(this, 'prop', {
-      configurable: true,
-      writable: false,
-      value: 1
-    });
-  }
-  f() {
-    super.prop = 2;
-  }
-}
-
-var x = new X();
-x.f(); // TypeError: "prop" es de solo lectura
-console.log(x.prop); // 1
-
- -

Usando super.prop en objetos literales

- -

Super también se puede usar en el inicializador de objetos / notación literal. En este ejemplo, dos objetos definen un método. En el segundo objeto, super llama al primer método del objeto. Esto funciona con la ayuda de {{jsxref("Object.setPrototypeOf()")}} con el que podemos establecer el prototipo de obj2 en obj1, de modo que super pueda encontrar el method1 en obj1.

- -
var obj1 = {
-  method1() {
-    console.log('method 1');
-  }
-}
-
-var obj2 = {
-  method2() {
-   super.method1();
-  }
-}
-
-Object.setPrototypeOf(obj2, obj1);
-obj2.method2(); // logs "method 1"
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES2015', '#sec-super-keyword', 'super')}}{{Spec2('ES2015')}}Definición inicial.
{{SpecName('ESDraft', '#sec-super-keyword', 'super')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.operators.super")}}

- -

Ver también

- - diff --git "a/files/es/web/javascript/referencia/operadores/sustracci\303\263n/index.html" "b/files/es/web/javascript/referencia/operadores/sustracci\303\263n/index.html" deleted file mode 100644 index 21bfd3a1ac..0000000000 --- "a/files/es/web/javascript/referencia/operadores/sustracci\303\263n/index.html" +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Sustracción (-) -slug: Web/JavaScript/Referencia/Operadores/Sustracción -tags: - - JavaScript -translation_of: Web/JavaScript/Reference/Operators/Subtraction ---- -
{{jsSidebar("Operators")}}
- -

El operador de sustracción (-) sustrae dos operandos, produciendo su diferencia.

- -
{{EmbedInteractiveExample("pages/js/expressions-subtraction.html")}}
- -
- - - -

Sintaxis

- -
Operator: x - y
-
- -

Ejemplos

- -

Sustracción con números

- -
5 - 3     // 2
-3 - 5     // -2
- -

Sustracción de no numéricos

- -
'foo' - 3 // NaN
- -

Especificaciones

- - - - - - - - - - -
Specification
{{SpecName('ESDraft', '#sec-subtraction-operator-minus', 'Subtraction operator')}}
- -

Compatibilidad entre exploradores

- - - -

{{Compat("javascript.operators.subtraction")}}

- -

También revisa

- - diff --git a/files/es/web/javascript/referencia/operadores/this/index.html b/files/es/web/javascript/referencia/operadores/this/index.html deleted file mode 100644 index 74ed62bb60..0000000000 --- a/files/es/web/javascript/referencia/operadores/this/index.html +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: this -slug: Web/JavaScript/Referencia/Operadores/this -translation_of: Web/JavaScript/Reference/Operators/this ---- -
{{jsSidebar("Operators")}}
- -

Introducción

- -

La palabra clave this de una función se comporta un poco diferente en Javascript en comparación con otros lenguajes. Además tiene algunas diferencias entre el modo estricto y el modo no estricto.

- -

En general, el valor de this está determinado por cómo se invoca a la función. No puede ser establecida mediante una asignación en tiempo de ejecución, y puede ser diferente cada vez que la función es invocada. ES5 introdujo el método {{jsxref("Function.bind()", "bind()")}} para establecer el valor de la función this independientemente de como es llamada, y ES2015 introdujo las funciones flecha que no proporcionan su propio "binding" de this (se mantiene el valor de this del contexto léxico que envuelve a la función)

- -

{{EmbedInteractiveExample("pages/js/expressions-this.html")}}

- -

Sintaxis

- -
this
- -

Valor

- -

El objeto contexto de JavaScript en el cual se está ejecutando el código actual.

- -

Contexto global

- -

En el contexto de ejecución global (fuera de cualquier función), this se refiere al objeto global, ya sea en modo estricto o no.

- -
console.log(this.document === document); // true
-
-// En los navegadores web, el objeto window también es un objeto global:
-console.log(this === window); // true
-
-this.a = 37;
-console.log(window.a); // 37
-
- -
-

Nota: Puedes obtener el objeto global usando la propieda global globalThis, no importa el contexto donde se ejecute esta propiedad, siempre hará referencia al objeto global. 

-
- -

Contexto de la función

- -

Dentro de una función, el valor de this depende de cómo la función es llamada.

- -

Llamada simple

- -
function f1(){
-  return this;
-}
-
-f1() === window; // objeto global
-
- -
En este caso, el valor de this no está establecido por la llamada. Dado que el código no está en modo estricto, el valor de this debe ser siempre un objeto por lo que por defecto es el objeto global.
- -
- -
-
function f2(){
-  "use strict"; // consultar modo estricto
-  return this;
-}
-
-f2() === undefined;
-
- -
En modo estricto, el valor de this se mantiene en lo que está establecida al entrar en el contexto de ejecución. Si no está definido, permanece undefined. También se puede ajustar a cualquier valor, tales como null o 42 o "Yo no soy this".
- -
- -
-

Nota: En el segundo ejemplo, this debería ser {{jsxref("undefined")}}, porque f2 fue llamado sin proporcionar ninguna base (ej. window.f2()). Esta característica no fue implementada en algunos navegadores cuando se comenzó a dar soporte al modo estricto. Como resultado, retorna incorrectamente el objeto window.

-
- -
Como un método de un objeto
- -

Cuando una función es llamada como un método de un objeto, el this cambia por el metodo del objeto llamado.

- -

En el siguiente ejemplo, cuando o.f() es invocado, dentro de la función this es ligado al objeto o.

- -
var o = {
-  prop: 37,
-  f: function() {
-    return this.prop;
-  }
-};
-
-console.log(o.f()); // logs 37
-
- -

Note que el comportamiento no es del todo afectado por cómo o dónde la función fue definida. En el ejemplo anterior, nosotros definimos la función en línea como el elemento f durante la definición de o.  Sin embargo, podriamos haber definido con la misma facilidad la primera función y luego  adjuntarlo a o.f. Hacerlo da como resultado el mismo comportamiento.

- -
var o = {prop: 37};
-
-function independent() {
-  return this.prop;
-}
-
-o.f = independent;
-
-console.log(o.f()); // logs 37
-
- -

Esto demuestra que sólo importa que la función fue invocada del elemento f de o.

- -

Asimismo, el enlace this sólo se ve afectado por la referencia del miembro más inmediata. En el siguiente ejemplo, cuando invocamos a la función, lo llamamos como metodo g del objeto o.b. Esta vez durante la ejecución, this dentro de la función se referirá a o.b. El hecho de que el objeto es en sí mismo un elemento de o no tiene ninguna consecuencia, la referencia más inmediata es todo lo que importa.

- -
o.b = {g: independent, prop: 42};
-console.log(o.b.g()); // logs 42
-
- -

... en la cadena de prototipo

- -

El mismo concepto es válido para los métodos definidos en alguna parte de la cadena de prototipo del objeto. Si el método esta sobre una cadena de prototipo del objeto, this se referirá al objeto donde está el método de donde fue llamado. Como si ese método estuviera dentro del objeto. 

- -
var o = {f:function(){ return this.a + this.b; }};
-var p = Object.create(o);
-p.a = 1;
-p.b = 4;
-
-console.log(p.f()); // 5
-
- -

En este ejemplo, el objeto asignado a la variable p no tiene su propia propiedad f, esto lo hereda de su prototipo. Pero no importa que la búsqueda de f eventualmente encuentre un elemento con ese nombre en o; la búsqueda comenzó como una referencia a p.f, asi this dentro de la funcion toma el valor del objeto referido como p. Es decir, desde que f es llamado como método de p, su this refiere a p. Esto es una interesante característica de la herencia de prototipo de JavaScript.

- -

... o como un getter o setter

- -

Nuevamente, el mismo concepto es válido cuando una función es invocada de un getter o un setter. Una función usado como getter o setter tiene su enlace this al objeto desde el cual la propiedad esta siendo establecida u obtenida.

- -
function modulus(){
-  return Math.sqrt(this.re * this.re + this.im * this.im);
-}
-
-var o = {
-  re: 1,
-  im: -1,
-  get phase(){
-    return Math.atan2(this.im, this.re);
-  }
-};
-
-Object.defineProperty(o, 'modulus', {get: modulus, enumerable:true, configurable:true});
-
-console.log(o.phase, o.modulus); // logs -0.78 1.4142
-
- -

Como un constructor

- -

Cuando una función es usada como un constructor (con la palabra clave {{jsxref("Operadores/new", "new")}}), su this es enlazado al nuevo objeto en construcción, a menos que la ejecución de los resultados del constructor en el motor JavaScript encuentren una instrucción de retorno donde el valor de retorno sea un objeto.

- -
/*
- * Los constructores trabajan algo asi:
- *
- * function MyConstructor(){
- *   // El cuerpo del código de la función actual va aquí.  Crear las propiedades en |this| como
- *   // se desee mediante la asignación a los mismos.  E.g.,
- *   this.fum = "nom";
- *   // etcetera...
- *
- *   // Si la función tiene una sentencia de retorno este retorna un objeto,
- *   // este objeto será el resultado de la expresión |new|.  Por otro lado, el
- *   // resultado de la expresión es el objeto actualmente enlazado a |this|
- *   // (i.e., el caso más común suele verse).
- * }
- */
-
-function C(){
-  this.a = 37;
-}
-
-var o = new C();
-console.log(o.a); // logs 37
-
-
-function C2(){
-  this.a = 37;
-  return {a:38};
-}
-
-o = new C2();
-console.log(o.a); // logs 38
-
- -

En el último ejemplo (C2), debido a que un objeto fue devuelto durante la construcción, el nuevo objeto que fue enlazado a this simplemente se descarta.( Esto esencialmente hace de la declaración "this.a = 37;" codigo muerto. No esta exactamente muerto,porque es ejecutado pero se puede eliminar sin efectos externos.)

- -

call y apply

- -

Cuando una función usa la plabra clave this en su cuerpo, su valor puede ser enlazado a un objeto particular durante la ejecución del método {{jsxref("Function.call()", "call()")}} or {{jsxref("Function.apply()", "apply()")}} que todas las funciones hereden de  Function.prototype.

- -
function add(c, d){
-  return this.a + this.b + c + d;
-}
-
-var o = {a:1, b:3};
-
-// El primer parámetro es el objeto a usar como 'this', parámetros posteriores se pasan como argumentos
-// en la llamada a la función
-add.call(o, 5, 7); // 1 + 3 + 5 + 7 = 16
-
-//El primer parámetro es el objeto a usar como 'this''this', la segunda es una matriz cuyos elementos
-//  se utilizan como argumentos en la llamada a la función
-add.apply(o, [10, 20]); // 1 + 3 + 10 + 20 = 34
-
- -

Funciones enlazadas

- -

ECMAScript 5 introduce {{jsxref("Function.prototype.bind()")}}. Llamando a f.bind(someObject) crea una nueva función con el mismo cuerpo y alcance de f, pero donde this se produce en la función original, en la nueva función esto esta permanentemente ligado al primer argumento de bind, independientemente de cómo la función está siendo utilizada.

- -
function f(){
-  return this.a;
-}
-
-var g = f.bind({a:"azerty"});
-console.log(g()); // azerty
-
-var o = {a:37, f:f, g:g};
-console.log(o.f(), o.g()); // 37, azerty
-
- -

Como un controlador de eventos DOM

- -

Cuando una función es usada como un controlador de eventos, su this es cambiado desde el elemento del evento disparado (algunos navegadores no siguen esta convención para los listeners agregados dinámicamente con otros métodos addEventListener).

- -
// Cuando se llama como un listener, convierte en azul el elemento
-// relacionado
-function bluify(e){
-  console.log(this === e.currentTarget); // Siempre true
-  console.log(this === e.target);        // true cuando currentTarget y target son el mismo objeto
-  this.style.backgroundColor = '#A5D9F3';
-}
-
-// Consigue una lista de cada elemento en un documento
-var elements = document.getElementsByTagName('*');
-
-// Añade bluify como un click listener asi cuando se hace click sobre el elemento,
-// este cambia a azul
-for(var i=0 ; i<elements.length ; i++){
-  elements[i].addEventListener('click', bluify, false);
-}
diff --git a/files/es/web/javascript/referencia/operadores/typeof/index.html b/files/es/web/javascript/referencia/operadores/typeof/index.html deleted file mode 100644 index 088791f228..0000000000 --- a/files/es/web/javascript/referencia/operadores/typeof/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: typeof -slug: Web/JavaScript/Referencia/Operadores/typeof -tags: - - JavaScript - - Operator - - Unary -translation_of: Web/JavaScript/Reference/Operators/typeof ---- -
{{jsSidebar("Operators")}}
- -

Resumen

- -

El operador typeof se usa en cualquiera de los siguientes modos:

- -
    -
  1. typeof operando
  2. -
  3. typeof (operando)
  4. -
- -

El operador typeof devuelve una cadena que indica el tipo del operando sin evaluarlo. operando es la cadena, variable, palabra clave u objeto para el que se devolverá su tipo. Los paréntesis son opcionales.

- -

Suponga que define las siguientes variables:

- -
var miFuncion = new Function("5+2")
-var forma = "redonda"
-var tamano = 1
-var hoy = new Date()
-
- -

El operador typeof devuelve los siguientes resultados para estas variables

- -
typeof miFuncion === 'function'
-typeof forma === 'string'
-typeof tamano === 'number'
-typeof hoy === 'object'
-typeof noExiste === 'undefined'
-
- -

Para las palabras clave true y null, el operador typeof devuelve los siguientes resultados:

- -
typeof true === 'boolean'
-typeof null === 'object'
-
- -

Para un número o una cadena, el operador typeof devuelve los siguientes resultados:

- -
typeof 62 === 'number'
-typeof 'Hola mundo' === 'string'
-
- -

Para valores de propiedades, el operador typeof devuelve el tipo del valor que contiene la propiedad:

- -
typeof document.lastModified === 'string'
-typeof window.length === 'number'
-typeof Math.LN2 === 'number'
-
- -

Para métodos y funciones, el operador typeof devuelve los resultados siguientes:

- -
typeof blur === 'function'
-typeof eval === 'function'
-typeof parseInt === 'function'
-typeof shape.split === 'function'
-
- -

Para objetos predefinidos, el operador typeof devuelve los siguientes resultados:

- -
typeof Date === 'function'
-typeof Function === 'function'
-typeof Math === 'object'
-typeof Object === 'function'
-typeof String === 'function'
-
- -

 

diff --git a/files/es/web/javascript/referencia/operadores/void/index.html b/files/es/web/javascript/referencia/operadores/void/index.html deleted file mode 100644 index 0bf8048b21..0000000000 --- a/files/es/web/javascript/referencia/operadores/void/index.html +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: void -slug: Web/JavaScript/Referencia/Operadores/void -tags: - - JavaScript - - Operator - - Unary -translation_of: Web/JavaScript/Reference/Operators/void ---- -
{{jsSidebar("Operators")}}
- -

Resumen

- -

El operador void se usa en cualquiera de los siguientes modos:

- -
    -
  1. void (expresion )
  2. -
  3. void expresion
  4. -
- -

El operador void especifica una expresión que se evalúa sin devolver un valor. expresion es una expresión JavaScript para evaluar. El paréntesis rodeando la expresión es opcional, pero usarlos es una buena práctica al programar.

- -

Puede usar el operador void para especificar una expresión como un enlace de hipertexto. La expresión se evalúa pero no se carga en lugar del documento actual.

- -

El siguiente código crea un enlace de hipertexto que no hace nada cuando el usuario hace click en él. Cuando el usuario hace click en el enlace, void(0) se evalúa como 0, pero eso no tiene ningún efecto en JavaScript.

- -
<a href="javascript:void(0)">Haga click aquí para no hacer nada</a>
-
- -

El siguiente código crea un enlace de hipertexto que envía un formulario cuando el usuario hace click en él.

- -
<a href="javascript:void(document.forms["miFormulario"].submit())">
-Haga click aquí para enviar</a>
-
- -
diff --git a/files/es/web/javascript/referencia/operadores/yield/index.html b/files/es/web/javascript/referencia/operadores/yield/index.html deleted file mode 100644 index 7237b6d689..0000000000 --- a/files/es/web/javascript/referencia/operadores/yield/index.html +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: yield -slug: Web/JavaScript/Referencia/Operadores/yield -tags: - - Característica del lenguaje - - ECMAScript 2015 - - Generadores - - Iterador - - JavaScript - - Operador -translation_of: Web/JavaScript/Reference/Operators/yield ---- -
{{jsSidebar("Operadores")}}
- -

La palabra clave yield se usa para pausar y reanudar una función generadora ({{jsxref("Statements/function*", "function*")}} o {{jsxref("Statements/Legacy_generator_function", "función generadora heredada")}}).

- -
{{EmbedInteractiveExample("pages/js/expressions-yield.html", "taller")}}
- - - -

Sintaxis

- -
[rv] = yield [expression]
- -
-
expression {{optional_inline}}
-
Define el valor que se devolverá desde la función generadora a través del {{jsxref("Iteration_protocols", "protocolo iterador", "#El_protocolo_iterador")}}. Si se omite, devuelve undefined en su lugar.
-
rv {{optional_inline}}
-
-

Recupera el valor opcional pasado al método next() del generador para reanudar su ejecución.

-
-
- -

Descripción

- -

La palabra clave yield detiene la ejecución de la función del generador y el valor de la expresión que sigue a la palabra clave yield se devuelve al llamador del generador. Se puede considerar como una versión basada en un generador de la palabra clave return.

- -

yield solo se puede llamar directamente desde la función generadora que la contiene. No se puede llamar desde funciones anidadas o retrollamadas.

- -

La palabra clave yield hace que la llamada al método next() del generador devuelva un objeto IteratorResult con dos propiedades: value y done. La propiedad value es el resultado de evaluar la expresión yield, y done es false, lo cual indica que la función generadora no se ha completado completamente.

- -

Una vez en pausa en una expresión yield, la ejecución del código del generador permanece en pausa hasta que se llama al método next() del generador. Cada vez que se llama al método next() del generador, el generador reanuda la ejecución y se ejecuta hasta que alcanza uno de los siguientes:

- - - -

Si se pasa un valor opcional al método next() del generador, ese valor se convierte en el valor devuelto por la operación yield actual del generador.

- -

Entre la ruta del código del generador, sus operadores yield y la capacidad de especificar un nuevo valor inicial pasándolo a {{jsxref("Generator.prototype.next()")}}, los generadores ofrecen enorme poder y control.

- -
-

Desafortunadamente, next() es asimétrico, pero eso no se puede evitar: siempre envía un valor al yield actualmente suspendido, pero devuelve el operando del siguiente yield.

-
- -

Ejemplos

- -

Usar yield

- -

El siguiente código es la declaración de una función generadora de ejemplo.

- -
function* countAppleSales () {
-  let saleList = [3, 7, 5]
-  for (let i = 0; i < saleList.length; i++) {
-    yield saleList[i]
-  }
-}
- -

Una vez que se define una función generadora, se puede usar construyendo un iterador como el siguiente.

- -
let appleStore = countAppleSales()  // Generator { }
-console.log(appleStore.next())      // { value: 3, done: false }
-console.log(appleStore.next())      // { value: 7, done: false }
-console.log(appleStore.next())      // { value: 5, done: false }
-console.log(appleStore.next())      // { value: undefined, done: true }
- -

También puedes enviar un valor con next(value) al generador. 'step' se evalúa como un valor de retorno en esta sintaxis [rv] = yield [expression]

- -
function* counter(value) {
- let step;
-
- while (true) {
-   step = yield ++value;
-
-   if (step) {
-     value += step;
-   }
- }
-}
-
-const generatorFunc = counter(0);
-console.log(generatorFunc.next().value);   // 1
-console.log(generatorFunc.next().value);   // 2
-console.log(generatorFunc.next().value);   // 3
-console.log(generatorFunc.next(10).value); // 14
-console.log(generatorFunc.next().value);   // 15
-console.log(generatorFunc.next(10).value); // 26
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#prod-YieldExpression', 'Yield')}}
- -

Compatibilidad del navegador

- - - -

{{Compat("javascript.operators.yield")}}

- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/operadores/yield_star_/index.html b/files/es/web/javascript/referencia/operadores/yield_star_/index.html deleted file mode 100644 index e2167b8c41..0000000000 --- a/files/es/web/javascript/referencia/operadores/yield_star_/index.html +++ /dev/null @@ -1,199 +0,0 @@ ---- -title: yield* -slug: Web/JavaScript/Referencia/Operadores/yield* -tags: - - ECMAScript6 - - JavaScript -translation_of: Web/JavaScript/Reference/Operators/yield* ---- -
{{jsSidebar("Operators")}}
- -

La expresión yield* es usada para delegar a otro {{jsxref("Statements/function*", "generator")}} u objeto iterable.

- -

Sintaxis

- -
 yield* [[expression]];
- -
-
expression
-
La expresión que retorna un objeto iterable
-
- -

Descripción

- -

La expresión yield* itera sobre el operador realizando yield de cada valor retornado por este.

- -

El valor de la expresion yield* es el valor retornado por el iterador en si mismo cuando es finalizado (ej., cuando done es true).

- -

Ejemplos

- -

Delegando a otro generator

- -

En el siguiente código, los valores declarados con yield en g1() son devueltos por las llamadas a next() al igual que en g2().

- -
function* g1() {
-  yield 2;
-  yield 3;
-  yield 4;
-}
-
-function* g2() {
-  yield 1;
-  yield* g1();
-  yield 5;
-}
-
-var iterator = g2();
-
-console.log(iterator.next()); // { value: 1, done: false }
-console.log(iterator.next()); // { value: 2, done: false }
-console.log(iterator.next()); // { value: 3, done: false }
-console.log(iterator.next()); // { value: 4, done: false }
-console.log(iterator.next()); // { value: 5, done: false }
-console.log(iterator.next()); // { value: undefined, done: true }
-
- -

Otros objetos iterables

- -

Además de los objetos generator, yield* también se puede usar yield sobre otros tipos de iterables, ej. arrays, strings u objetos arguments.

- -
function* g3() {
-  yield* [1, 2];
-  yield* "34";
-  yield* Array.from(arguments);
-}
-
-var iterator = g3(5, 6);
-
-console.log(iterator.next()); // { value: 1, done: false }
-console.log(iterator.next()); // { value: 2, done: false }
-console.log(iterator.next()); // { value: "3", done: false }
-console.log(iterator.next()); // { value: "4", done: false }
-console.log(iterator.next()); // { value: 5, done: false }
-console.log(iterator.next()); // { value: 6, done: false }
-console.log(iterator.next()); // { value: undefined, done: true }
-
- -

El valor de la expresión yield*

- -

yield* es una expresión, no una declaración, por lo que se evalua como un valor.

- -
function* g4() {
-  yield* [1, 2, 3];
-  return "foo";
-}
-
-var result;
-
-function* g5() {
-  result = yield* g4();
-}
-
-var iterator = g5();
-
-console.log(iterator.next()); // { value: 1, done: false }
-console.log(iterator.next()); // { value: 2, done: false }
-console.log(iterator.next()); // { value: 3, done: false }
-console.log(iterator.next()); // { value: undefined, done: true },
-                              // g4() returned { value: "foo", done: true } at this point
-
-console.log(result);          // "foo"
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
{{SpecName('ES6', '#', 'Yield')}}{{Spec2('ES6')}}Definición inical.
{{SpecName('ESDraft', '#', 'Yield')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Soporte básico {{CompatVersionUnknown}}{{CompatGeckoDesktop("27.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatGeckoMobile("27.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -

Notas específicas de Firefox

- - - -

Ver también

- - diff --git a/files/es/web/javascript/referencia/palabras_reservadas/index.html b/files/es/web/javascript/referencia/palabras_reservadas/index.html deleted file mode 100644 index 14010f37e3..0000000000 --- a/files/es/web/javascript/referencia/palabras_reservadas/index.html +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Palabras Reservadas -slug: Web/JavaScript/Referencia/Palabras_Reservadas -tags: - - JavaScript - - palabras reservadas -translation_of: Web/JavaScript/Reference/Lexical_grammar#Keywords -translation_of_original: Web/JavaScript/Reference/Reserved_Words ---- -

 

- -

Las siguientes son palabras reservadas y no pueden ser utilizadas como variables, funciones, métodos o identificadores de objetos. Las siguientes son reservadas como palabras claves existentes por la especificación ECMAScript:

- -

Reserved keywords as of ECMAScript 6

- -
- -
- -

Las siguientes estan reservadas como palabras futuras por la especificación ECMAScript:

- - - -

Las siguientes estan reservadas como palabras futuras cuando se encuentre el modo correcto para su estructura de codigo:

- -
- -
- -

Futuras Palabras Reservadas en estandares antiguos

- -

Las siguientes estan reservadas como palabras futuras por la antigua especificación ECMAScript (ECMAScript 1 hasta 3).

- -
- -
- -

Adicionalmente, los literales "null", "true", y "false" estan reservadas en ECMAScript para usos normales.

diff --git a/files/es/web/javascript/referencia/sentencias/block/index.html b/files/es/web/javascript/referencia/sentencias/block/index.html deleted file mode 100644 index 36b2054d60..0000000000 --- a/files/es/web/javascript/referencia/sentencias/block/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: block -slug: Web/JavaScript/Referencia/Sentencias/block -tags: - - JavaScript - - Referencia - - Referência(2) - - Statement -translation_of: Web/JavaScript/Reference/Statements/block ---- -
{{jsSidebar("Statements")}}
- -

Resumen

- -

Una sentencia block se utiliza para agrupar cero o más sentencias. Este grupo block se delimita por un par de llaves.

- -

Sintaxis

- -
{ sentencia_1; sentencia_2; ... sentencia_n; }
-
- -
-
sentencia_1, sentencia_2, sentencia_n
-
Sentencias agrupadas dentro de una sentencia block.
-
- -

Descripción

- -

Esta sentencia se utiliza comúnmente para controlar sentencias de flujo (es decir if, for, while). Por ejemplo:

- -
while (x < 10) {
-   x++;
-}
-
- -

Las variables declaradas con var no tienen alcance de bloque(block scope). Las variables introducidas dentro de un grupo block tienen el alcance de la función que lo contiene o del script, y los efectos de su asignación persisten más allá del grupo block en sí mismo. En otras palabras, las sentencias block no incluyen ningún alcance. Aunque los grupos block "en solitario" (standalone) son una sintaxis válida, usted no querrá utilizar grupos block en solitario en JavaScript, ya que ellos no hacen lo que parecen, si piensa que funcionan de manera similar a los bloques en C o Java. Por ejemplo:

- -
var x = 1;
-{
-   var x = 2;
-}
-alert(x); // resultado 2
-
- -

Este obtiene el resultado 2 ya que la sentencia var x dentro del grupo block tiene el mismo alcance que la sentencia var x antes del mismo. En C o Java, el código equivalente tendría como resultado 1.

- -

Con let const

- -

Por el contrario, las variables declaradas con let y const tienen alcance de bloque.

- -
let x = 1;
-{
-  let x = 2;
-}
-console.log(x); // logs 1
-
- -

El alcance x = 2 es limitado solamente al bloque en el que está definido.

- -

Lo mismo para  const:

- -
const c = 1;
-{
-  const c = 2;
-}
-console.log(c); // logs 1 y no lanza SyntaxError...
-
- -

Tenga en cuenta que la variable  const c = 2 con alcance de bloque, no lanza un  SyntaxError: El identificador 'c' ya ha sido declarado. Esto es porque se puede declarar de forma única dentro del bloque, sin interferir con la otra que tiene un  alcance global.

- -

Con function

- -

La declaración de una función también tiene un alcance limitado dentro del bloque donde se produce la declaración:

- -
nacion('frances');  // TypeError: nacion no es una función
-{
-  function nacion(nacionalidad) {
-   console.log('Yo soy ' + nacionalidad);
-  }
-nacion('español'); // correcto. logs Yo soy español
-}
- -

 

- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/sentencias/break/index.html b/files/es/web/javascript/referencia/sentencias/break/index.html deleted file mode 100644 index aff2a58733..0000000000 --- a/files/es/web/javascript/referencia/sentencias/break/index.html +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: break -slug: Web/JavaScript/Referencia/Sentencias/break -tags: - - JavaScript - - Statement -translation_of: Web/JavaScript/Reference/Statements/break ---- -
- {{jsSidebar("Statements")}}
-

Resumen

-

Termina el bucle actual, sentecia switch o label y transfiere el control del programa a la siguiente sentencia a la sentecia de terminación de éstos elementos.

-

Sintaxis

-
break [etiqueta];
-
-
- etiqueta
-
- Identificador asociado con la etiqueta de la sentencia.
-
-

Descripción

-

La sentencia break incluye una etiqueta opcional que permite al programa salir de una sentencia etiquetada. La sentencia break necesita estar anidada dentro de la sentencia etiquetada. La sentencia etiquetada puede ser cualquier tipo de sentencia; no tiene que ser una sentencia de bucle.

-

Ejemplos

-

Ejemplo: Usando break

-

La siguiente función tiene una sentencia que termina el bucle {{jsxref("Sentencias/while", "while")}} cuando i es 3, y entonces devuelve el valor 3 * x.

-
function comprobarBreak(x) {
-   var i = 0;
-   while (i < 6) {
-      if (i == 3)
-         break;
-      i++;
-   }
-   return i * x;
-}
-
-

Vea También

- diff --git a/files/es/web/javascript/referencia/sentencias/class/index.html b/files/es/web/javascript/referencia/sentencias/class/index.html deleted file mode 100644 index c37b9ba43b..0000000000 --- a/files/es/web/javascript/referencia/sentencias/class/index.html +++ /dev/null @@ -1,148 +0,0 @@ ---- -title: class -slug: Web/JavaScript/Referencia/Sentencias/class -translation_of: Web/JavaScript/Reference/Statements/class ---- -
{{jsSidebar("Statements")}}
- -

La declaración class crea una nueva clase con el nombre proporcionado utilizando la herencia basada en prototipos

- -
-

También se puede definir una clase usando una {{jsxref("Operators/class", "expresión de clase", "", 1)}}. Pero a diferencia de las expresiones de clases, la declaración de clases no permite que una clase existente sea declarada de nuevo y en caso de hacerse, lanzará un error de tipo.

-
- -

Sintaxis

- -
class name [extends] {
-  // Contenido de la clase
-}
-
- -

Descripción

- -

De la misma manera que con las expresiones de clase, el contenido de una clase se ejecuta en modo estricto.

- -

Las declaraciones de clases no están {{Glossary("Hoisting", "izadas")}} (al contrario que las declaraciones de funciones).

- -

Ejemplos

- -

Declaración sencilla de una clase

- -

En el siguiente ejemplo, primero definimos la clase Polygon, luego extendemos de ella para crear la clase Square. Notar que super(), utilizado en el constructor, sólo puede ser llamado dentro del constructor y debe ser llamado antes de que la palabra clave this pueda ser usada.

- -
class Polygon {
-  constructor(height, width) {
-    this.name = 'Polygon';
-    this.height = height;
-    this.width = width;
-  }
-}
-
-class Square extends Polygon {
-  constructor(length) {
-    super(length, length);
-    this.name = 'Square';
-  }
-}
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
{{SpecName('ES6', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad en navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome(42.0)}}{{CompatGeckoDesktop(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Array subclassing{{CompatChrome(43.0)}}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome para Android
Soporte básico{{CompatNo}}{{CompatChrome(42.0)}}{{CompatGeckoMobile(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(42.0)}}
Array subclassing{{CompatNo}}{{CompatChrome(43.0)}}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(43.0)}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/sentencias/const/index.html b/files/es/web/javascript/referencia/sentencias/const/index.html deleted file mode 100644 index c55350fbd4..0000000000 --- a/files/es/web/javascript/referencia/sentencias/const/index.html +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: const -slug: Web/JavaScript/Referencia/Sentencias/const -tags: - - ECMAScript6 - - Experimental - - Expérimental(2) - - JavaScript - - Statement -translation_of: Web/JavaScript/Reference/Statements/const ---- -
{{jsSidebar("Statements")}}
- -

Resumen

- -

Las variables constantes presentan un ámbito de bloque (block scope) tal y como lo hacen las variables definidas usando la instrucción let, con la particularidad de que el valor de una constante no puede cambiarse a través de la reasignación. Las constantes no se pueden redeclarar.

- -
-

La redeclaración de la misma variable bajo un mismo ámbito léxico terminaría en un error de tipo SyntaxError. Esto también es extensible si usamos var dentro del ámbito léxico. Esto nos salvaguarda de redeclarar una variable accidentalmente y que no era posible  solo con var.

-
- -

Sintaxis

- -
const varname1 = value1 [, varname2 = value2 [, varname3 = value3 [, ... [, varnameN = valueN]]]];
- -
-
varnameN
-
Nombre de la constante. Puede ser un identificador legal.
-
- -
-
valueN
-
Valor de la constante. Puede ser cualquier expresión legal.
-
- -

Descripción

- -

Esta declaración crea una constante cuyo alcance puede ser global o local para el bloque en el que se declara. Es necesario inicializar la constante, es decir, se debe especificar su valor en la misma sentencia en la que se declara, lo que tiene sentido, dado que no se puede cambiar posteriormente.

- -

La declaración de una constante crea una referencia de sólo lectura. No significa que el valor que tiene sea inmutable, sino que el identificador de variable no puede ser reasignado, por lo tanto, en el caso de que la asignación a la constante sea un objeto, el objeto sí que puede ser alterado.

- -

Una constante no puede compartir su nombre con una función o variable en el mismo ámbito.

- -

Todas las consideraciones acerca de la " zona muerta temporal " se aplican tanto a letyconst.

- -
-

const es fue una extensión especifica de Mozilla, no es era soportado en IE, pero tiene tenia soporte parcial por Opera desde la versión 9.0 y por Safari.

-
- -

Ejemplos

- -

El siguiente ejemplo produce una salida "a es 7."

- -
const a = 7;
-document.writeln("a es " + a + ".");
-
- -

Las siguientes instrucciones demuestra como se comporta const

- -
-

Las instrucciones deberán ser ordenadas correctamente para conseguir la salida esperada a los ejemplos

-
- -
// NOTA: Las constantes pueden ser declaradas en mayusculas o minusculaas,
-//pero por convencion para distinguirlas del resto de variables se escribe todo en mayusculas
-
-// definimos MY_FAV como constante y le damos un valor de 7
-const MY_FAV = 7;
-
-// lanzara un error: Unkeught TypeError: Asignación a variable constante.
-MY_FAV = 20;
-
-// imprimira 7
-console.log('my favorite number is: ' + MY_FAV);
-
-// lanzara un error: SyntaxError: tratando de redeclarar una constante. El identificador 'MY_FAV' ya ha sido declarado
-const MY_FAV = 20;
-
-// el nombre MY_FAV esta reservado para la constante anterior, también fallara y lanzara un SyntaxError por la redeclaración
-var MY_FAV = 20;
-
-// el nombre MY_FAV esta reservado para la variable anterior, esto también lanzara un SyntaxError por la redeclaración
-let MY_FAV = 20;
-
-// es importante tener en cuenta como funciona el alcance de bloque
-if (MY_FAV === 7) {
-    // esto esta bien y crea una variable MY_FAV de alcance/ambito de bloque
-    // (funciona igual de bien con let para declarar un alcance de bloque/ambito de variable no-constante)
-    const MY_FAV = 20;
-
-    // MY_FAV ahora es 20
-    console.log('my favorite number is ' + MY_FAV);
-
-    // aquín también lanzara un SyntaxError por la redeclaración
-    var MY_FAV = 20;
-}
-
-// MY_FAV todavia es 7
-console.log('my favorite number is ' + MY_FAV);
-
-// lanza error, falta el inicializador en la declaracion de const
-const FOO;
-
-// const tambien funciona en objetos
-const MY_OBJECT = {'key': 'value'};
-
-// Intentando sobrescribir el objeto nos lanza un error
-MY_OBJECT = {'OTHER_KEY': 'value'};
-
-// Sin embargo, los object keys no estan protegidas,
-// por lo que la siguiente sentencia se ejecutara sin problema
-MY_OBJECT.key = 'otherValue'; // Use Object.freeze() para hacer un objeto inmutable
-
-// Lo mismo se aplica a los arrays
-const MY_ARRAY = [];
-// es posible empujar elementos en el array
-MY_ARRAY.push('A'); // ["A"]
-// Sin embargo, asignar un nuevo array a la variable lanza error
-MY_ARRAY = ['B']
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/sentencias/continue/index.html b/files/es/web/javascript/referencia/sentencias/continue/index.html deleted file mode 100644 index 5371b4cdd7..0000000000 --- a/files/es/web/javascript/referencia/sentencias/continue/index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: continue -slug: Web/JavaScript/Referencia/Sentencias/continue -tags: - - JavaScript - - Statement -translation_of: Web/JavaScript/Reference/Statements/continue ---- -
- {{jsSidebar("Statements")}}
-

Resumen

-

Termina la ejecución de las sentencias de la iteración actual del bucle actual o la etiqueta y continua la ejecución del bucle con la próxima iteración.

-

Sintaxis

-
continue [ etiqueta ];
-
-
- label
-
- Identificador asociado con la etiqueta de la sentencia.
-
-

Descripción

-

En contraste con la sentencia {{jsxref("Sentencias/break", "break")}}, continue no termina la ejecución del bucle por completo; en cambio,

- - -

La sentencia continue puede incluir una etiqueta opcional que permite al programa saltar a la siguiente iteración del bucle etiquetado en vez del bucle actual. En este caso, la sentencia continue necesita estar anidada dentro de esta sentecia etiquetada.

-

Ejemplos

-

Ejemplo: Usando continue con while

-

El siguiente ejemplo muestra un bucle {{jsxref("Sentencias/while", "while")}} que tiene una sentencia continue que se ejecuta cuando el valor de i es 3. Así, n toma los valores 1, 3, 7 y 12.

-
i = 0;
-n = 0;
-while (i < 5) {
-   i++;
-   if (i == 3)
-      continue;
-   n += i;
-}
-
-

Ejemplo: Usando continue con una etiqueta

-

En el siguiente ejemplo, una sentencia etiquetada checkiandj contiene una sentencia etiquetada checkj. Si se encuentra continue, el programa continua hasta encima de la sentencia checkj. Cada vez que se encuentra continue, checkj se reitera hasta que su condición devuelve false. Cuando se devuelve false, el recordatorio de la sentencia checkiandj se completa.

-

Si continue tuviese una etiqueta checkiandj, el programa continuaría hasta encima de la sentencia checkiandj.

-
checkiandj:
-while (i < 4) {
-   document.write(i + "<br>");
-   i += 1;
-
-   checkj:
-   while (j > 4) {
-      document.write(j + "<br>");
-      j -= 1;
-      if ((j % 2) == 0)
-         continue checkj;
-      document.write(j + " is odd.<br>");
-   }
-   document.write("i = " + i + "<br>");
-   document.write("j = " + j + "<br>");
-}
-
-

Vea También

- diff --git a/files/es/web/javascript/referencia/sentencias/debugger/index.html b/files/es/web/javascript/referencia/sentencias/debugger/index.html deleted file mode 100644 index bb36e356c0..0000000000 --- a/files/es/web/javascript/referencia/sentencias/debugger/index.html +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: debugger -slug: Web/JavaScript/Referencia/Sentencias/debugger -tags: - - JavaScript - - Sentencia -translation_of: Web/JavaScript/Reference/Statements/debugger ---- -
{{jsSidebar("Statements")}}
- -

La sentencia debugger invoca cualquier funcionalidad de depuración disponible, tiene la misma función que un breakpoint. Si la funcionalidad de depuración no está disponible, esta sentencia no tiene efecto alguno.

- -

Sintaxis

- -
debugger;
- -

Ejemplos

- -

El siguiente ejemplo muestra un bloque de código donde ha sido insertada una sentencia debugger, para invocar el depurador (si existe) cuando la función es ejecutada.

- -
function codigoPotencialmenteDefectuoso() {
-    debugger;
-    // realizar paso a paso o examinar código que contiene
-    // potenciales errores
-}
- -

Cuando el depurador es invocado, la ejecución se detiene en la sentencia debugger. Es como un punto de interrupción en el script.

- -

Paused at a debugger statement.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-debugger-statement', 'Debugger statement')}}{{Spec2('ESDraft')}} 
{{SpecName('ES6', '#sec-debugger-statement', 'Debugger statement')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-12.15', 'Debugger statement')}}{{Spec2('ES5.1')}}Definición inicial
{{SpecName('ES3', '#sec-7.5.3', 'Debugger statement')}}{{Spec2('ES3')}} 
{{SpecName('ES1', '#sec-7.4.3', 'Debugger statement')}}{{Spec2('ES1')}}Solo mencionada como palabra reservada
- -

Compatibilidad con navegadores

- -

{{CompatibilityTable}}

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

Vea también

- - diff --git a/files/es/web/javascript/referencia/sentencias/default/index.html b/files/es/web/javascript/referencia/sentencias/default/index.html deleted file mode 100644 index a25a5a5369..0000000000 --- a/files/es/web/javascript/referencia/sentencias/default/index.html +++ /dev/null @@ -1,121 +0,0 @@ ---- -title: default -slug: Web/JavaScript/Referencia/Sentencias/default -tags: - - JavaScript - - Palabra clave -translation_of: Web/JavaScript/Reference/Statements/switch -translation_of_original: Web/JavaScript/Reference/Statements/default ---- -
{{jsSidebar("Sentencias")}}
- -

La palabra clave default, en JavaScript puede ser usada en dos situaciones: dentro una sentencia {{jsxref("Sentencias/switch", "switch")}}, o con un sentencia{{jsxref("Sentencias/export", "export")}}.

- -
{{EmbedInteractiveExample("pages/js/statement-default.html")}}
- - - -

Sintaxis

- -

Dentro de una sentencia {{jsxref("Sentencias/switch", "switch")}}:

- -
switch (expresion) {
-  case valor1:
-    //Declaración ejecutada cuando el resultado de la expresion conincida con valor1
-    [break;]
-  default:
-    //Declaración ejecutada cuando ninguno de los valores conincida con algun valor de la expresion
-    [break;]
-}
- -

Con una sentencia {{jsxref("Sentencias/export", "export")}}:

- -
export default nameN 
- -

Descripción

- -

Para mas detalles vea las paginas:

- - - -

Ejemplos

- -

Usando default en una sentencia switch

- -

En el siguiente ejemplo, si se evalua expr  como "Naranjas" o "Manzanas", el programa coincide los valores en cada caso: "Naranjas" o "Manzanas", y ejecuta la declaración correspondiente. La palabra clave default ayudara en algun otro caso y ejecuta la declaración asociada.

- -
switch (expr) {
-  case 'Naranjas':
-    console.log('Las Naranjas cuestan $0.59 el kilogramo.');
-    break;
-  case 'Manzanas':
-    console.log('Las Manzanas cuestan $0.32 el kilogramo.');
-    break;
-  default:
-    console.log('Lo esntimos, no tenemos ' + expr + '.');
-}
- -

Usando default con export

- -

Si queres exportar un solo valor o necesitas reservar un valor para un modulo, puedes usar una exportación por defecto:

- -
// modulo "mi-modulo.js"
-let cube = function cube(x) {
-  return x * x * x;
-};
-export default cube;
- -

Entonces, en otro script, sera sencillo de importar el valor del modulo:

- -
// modulo "otro-modulo.js"
-import cubeArea from 'mi-modulo';  //default export nos da la libertad de decir import cubeArea, en lugar de import cube from 'my-module'
-console.log(cubeArea(3)); // 27
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES6', '#sec-switch-statement', 'switch statement')}}{{Spec2('ES6')}} 
{{SpecName('ES6', '#sec-exports', 'Exports')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-switch-statement', 'switch statement')}}{{Spec2('ESDraft')}} 
{{SpecName('ESDraft', '#sec-exports', 'Exports')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad con navegadores

- - - -

{{Compat("javascript.statements.default")}}

- -

Vea tambien

- - diff --git a/files/es/web/javascript/referencia/sentencias/do...while/index.html b/files/es/web/javascript/referencia/sentencias/do...while/index.html deleted file mode 100644 index 628c1458cd..0000000000 --- a/files/es/web/javascript/referencia/sentencias/do...while/index.html +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: do...while -slug: Web/JavaScript/Referencia/Sentencias/do...while -tags: - - JavaScript - - Statement -translation_of: Web/JavaScript/Reference/Statements/do...while ---- -
{{jsSidebar("Statements")}}
- -

La sentencia (hacer mientras) crea un bucle que ejecuta una sentencia especificada, hasta que la condición de comprobación se evalúa como falsa. La condición se evalúa después de ejecutar la sentencia, dando como resultado que la sentencia especificada se ejecute al menos una vez.

- -
{{EmbedInteractiveExample("pages/js/statement-dowhile.html")}}
- -

Sintaxis

- -
do
-   sentencia
-while (condición);
-
- -
-
sentencia
-
Una sentencia que se ejecuta al menos una vez y es reejecutada cada vez que la condición se evalúa a verdadera. Para ejecutar múltiples sentencias dentro de un bucle, utilice la sentencia {{jsxref("Statements/block", "block")}} ({ ... }) para agrupar aquellas sentencias.
-
- -
-
condición
-
Una expresión se evalúa después de cada pase del bucle. Si condición se evalúa como verdadera, la sentencia se re-ejecuta. Cuando condición se evalúa como falsa, el control pasa a la siguiente sentencia hacer mientras.
-
- -

Ejemplos

- -

Usando hacer mientras

- -

En el siguiente ejemplo, el bucle hacer mientras itera al menos una vez y se reitera hasta que i ya no sea menor que 5.

- -
do {
-   i += 1;
-   document.write(i);
-} while (i < 5);
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/sentencias/empty/index.html b/files/es/web/javascript/referencia/sentencias/empty/index.html deleted file mode 100644 index 627fd889c7..0000000000 --- a/files/es/web/javascript/referencia/sentencias/empty/index.html +++ /dev/null @@ -1,141 +0,0 @@ ---- -title: empty -slug: Web/JavaScript/Referencia/Sentencias/Empty -tags: - - JavaScript - - Sentencia - - Vacía -translation_of: Web/JavaScript/Reference/Statements/Empty ---- -
{{jsSidebar("Statements")}}
- -

Un empty statement o sentencia vacía es usada para no proveer una sentencia, incluso si la sintaxis JavaScript esperase una.

- -

Sintaxis

- -
;
-
- -

Descripción

- -

La sentencia vacía es un punto y coma (;) que indica que no se ejecutará ninguna sentencia, incluso si la sintaxis JavaScript requiere una. El comportamiento opuesto, donde se desean ejecutar varias sentencias pero JavaScript solo permite una sola, es posible usando una sentencia de bloque; la cual combina varias declaraciones en una.

- -

Ejemplos

- -

La sentencia vacía es comúnmente usada en bucles. Por ejemplo, un bucle for sin bloque de sentencias:

- -
var arr = [1, 2, 3];
-
-// Asignar el valor 0 a todos los elementos del array
-for (i = 0; i < arr.length; arr[i++] = 0) /* sentencia vacía */ ;
-
-console.log(arr);
-// [0, 0, 0]
-
- -

Nota: Es una buena práctica comentar el uso intencional de la sentencia vacía, ya que no es fácilmente distinguible de un punto y coma normal. Un ejemplo de uso probablemente no intencional:

- -
if (condicion);  // Esta condición no ejerce ningún control!
-   borrarTodo()  // Por lo cual esta sentencia será ejecutada siempre!!!
-
- -

Otro ejemplo de uso:

- -
var a = 1, b = 1;
-if((a == 0) || (b = 0)); // Asigna a 'b' el valor cero si 'a' no es cero.
-console.log(b); // 0
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ESDraft', '#sec-empty-statement', 'Empty statement')}}{{Spec2('ESDraft')}} 
{{SpecName('ES6', '#sec-empty-statement', 'Empty statement')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-12.3', 'Empty statement')}}{{Spec2('ES5.1')}} 
{{SpecName('ES3', '#sec-12.3', 'Empty statement')}}{{Spec2('ES3')}} 
{{SpecName('ES1', '#sec-12.3', 'Empty statement')}}{{Spec2('ES1')}}Definición inicial.
- -

Compatibilidad en 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}}
-
- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/sentencias/export/index.html b/files/es/web/javascript/referencia/sentencias/export/index.html deleted file mode 100644 index 6016afd0ba..0000000000 --- a/files/es/web/javascript/referencia/sentencias/export/index.html +++ /dev/null @@ -1,175 +0,0 @@ ---- -title: export -slug: Web/JavaScript/Referencia/Sentencias/export -tags: - - ECMAScript 2015 - - JavaScript - - Módulos - - Sentencia - - export -translation_of: Web/JavaScript/Reference/Statements/export ---- -
{{jsSidebar("Statements")}}
- -

La declaración export se utiliza al crear módulos de JavaScript para exportar funciones, objetos o tipos de dato primitivos del módulo para que puedan ser utilizados por otros programas con la sentencia {{jsxref("Statements/import", "import")}}.

- -

Los módulos exportados están en {{jsxref("Strict_mode","strict mode")}} tanto si se declaran así como si no. La sentencia export no puede ser utilizada en scripts embebidos.

- -

Sintaxis

- -
export { name1, name2, …, nameN };
-export { variable1 as name1, variable2 as name2, …, nameN };
-export let name1, name2, …, nameN; // también var
-export let name1 = …, name2 = …, …, nameN; // también var, const
-export function FunctionName(){...}
-export class ClassName {...}
-
-export default expression;
-export default function (…) { … } // también class, function*
-export default function name1(…) { … } // también class, function*
-export { name1 as default, … };
-
-export * from …;
-export { name1, name2, …, nameN } from …;
-export { import1 as name1, import2 as name2, …, nameN } from …;
-export { default } from …;
-
- -
-
nameN
-
Identificador a ser exportado (es posible importarlo a través de {{jsxref("Statements/import", "import")}} en otro script).
-
- -

Descripción

- -

Existen dos tipos diferentes de exportación , nombrada y por defecto. Se pueden tener varias exportaciones nombradas por módulo pero sólo una exportación por defecto. Cada tipo corresponde a una de las sintaxis siguientes:

- - - -

Los export con nombre son útiles cuando se necesitan exportar múltiples valores. Durante el import, es obligatorio usar el mismo nombre que el correspondiente objeto.

- -

Pero un export por defecto puede ser importado con cualquier nombre, por ejemplo:

- -
export default k = 12; // en el archivo test.js
-
-import m from './test' // notese que tenemos la libertad de usar import m en lugar de import k, porque k era el export por defecto
-
-console.log(m); // escribirá 12
- -

Sólo puede haber un export por defecto.

- -

La siguiente sintaxis no exporta un export por defecto del módulo importado:

- -
export * from …;
- -

Si necesita exportar por defecto, escriba lo siguiente en su lugar:

- -
import mod from 'mod';
-export default mod;
- -

Ejemplos

- -

Usando exports con nombre

- -

En el módulo, podremos usar el siguiente código:

- -
// module "my-module.js"
-function cube(x) {
-  return x * x * x;
-}
-const foo = Math.PI + Math.SQRT2;
-var graph = {
-    options:{
-        color:'white',
-        thickness:'2px'
-    },
-    draw: function(){
-        console.log('From graph draw function');
-    }
-}
-export { cube, foo, graph };
- -

De esta forma, en otro script, podemos tener:

- -
//You should use this script in html with the type module ,
-//eg ''<script type="module" src="demo.js"></script>",
-//open the page in a httpserver,otherwise there will be a CORS policy error.
-//script demo.js
-
-import { cube, foo, graph } from 'my-module';
-graph.options = {
-    color:'blue',
-    thickness:'3px'
-};
-graph.draw();
-console.log(cube(3)); // 27
-console.log(foo);    // 4.555806215962888
-
- -

Usando el export por defecto

- -

Si queremos exportar un sólo valor o tener uno por defecto para nuestro módulo, podemos usar un export por defecto:

- -
// module "my-module.js"
-export default function cube(x) {
-  return x * x * x;
-}
-
- -

De esta forma la importación de un export default será sumamemte sencilla:

- -
import cube from 'my-module';
-console.log(cube(3)); // 27
- -

Tenga en cuenta que no es posible usar var, let o const con export default.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-exports', 'Exports')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-exports', 'Exports')}}{{Spec2('ESDraft')}} 
- -

Compatiblidad en navegadores

- -

{{Compat("javascript.statements.export")}}

- -

Vea también

- - - -

 

diff --git a/files/es/web/javascript/referencia/sentencias/for-await...of/index.html b/files/es/web/javascript/referencia/sentencias/for-await...of/index.html deleted file mode 100644 index 49349d7199..0000000000 --- a/files/es/web/javascript/referencia/sentencias/for-await...of/index.html +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: for await...of -slug: Web/JavaScript/Referencia/Sentencias/for-await...of -tags: - - Iteración - - JavaScript - - Referencia - - Sentencia - - asincrónico - - await - - iterar -translation_of: Web/JavaScript/Reference/Statements/for-await...of ---- -
{{jsSidebar("Statements")}}
- -

La sentencia for await...of crea un bucle iterando tanto sobre objetos iterables asincrónicos como sincrónicos, incluyendo: built-in {{jsxref("String")}}, {{jsxref("Array")}}, objetos Array-like (por ej., {{jsxref("Functions/arguments", "arguments")}} o {{domxref("NodeList")}}), {{jsxref("TypedArray")}}, {{jsxref("Map")}}, {{jsxref("Set")}}, y async/sync iterables definidos por el usuario. Invoca un hook de iteración personalizada con sentencias a ser ejecutadas por el valor de cada propiedad diferente del objeto.

- - - -

Sintaxis

- -
for await (variable of iterable) {
-  sentencia
-}
-
- -
-
variable
-
En cada iteración, el valor de una propiedad diferente es asignado a variable. variable puede ser declarada con const, let, o var.
-
iterable
-
Objeto sobre cuyas propiedades se itera.
-
- -

Iterando sobre iterables asincrónicos

- -

También puedes iterar sobre un objeto que explícitamente implementa el protocolo async iterable:

- -
var asyncIterable = {
-  [Symbol.asyncIterator]() {
-    return {
-      i: 0,
-      next() {
-        if (this.i < 3) {
-          return Promise.resolve({ value: this.i++, done: false });
-        }
-
-        return Promise.resolve({ done: true });
-      }
-    };
-  }
-};
-
-(async function() {
-   for await (let num of asyncIterable) {
-     console.log(num);
-   }
-})();
-
-// 0
-// 1
-// 2
-
- -

Iterando sobre funciones generadoras asincrónicas

- -

Debido a que las funciones generadoras asincrónicas implementan el protocolo async iterator, las mismas pueden ser iteradas utilizando for await... of

- -
async function* asyncGenerator() {
-  var i = 0;
-  while (i < 3) {
-    yield i++;
-  }
-}
-
-(async function() {
-  for await (let num of asyncGenerator()) {
-    console.log(num);
-  }
-})();
-// 0
-// 1
-// 2
- -

Para un ejemplo más concreto de iteración sobre una función generadora utilizando for await... of, considera iterar sobre datos provistos por una API. Este ejemplo primero crea un iterador asincrónico para un stream de datos, luego lo utiliza para obtener el tamaño de la respuesta desde la API.

- -
async function* streamAsyncIterator(stream) {
-  const reader = stream.getReader();
-  try {
-    while (true) {
-      const { done, value } = await reader.read();
-      if (done) {
-        return;
-      }
-      yield value;
-    }
-  } finally {
-    reader.releaseLock();
-  }
-}
-// Obtiene datos desde url y calcula el tamaño de la respuesta utilizando la función generadora asincrónica.
-async function getResponseSize(url) {
-  const response = await fetch(url);
-  // Almacenará el tamaño de la respuesta en bytes.
-  let responseSize = 0;
-  // El buble for-await-of. Itera asincrónicamente sobre cada parte de la respuesta.
-  for await (const chunk of streamAsyncIterator(response.body)) {
-    // Incrementando el tamaño total.
-    responseSize += chunk.length;
-  }
-
-  console.log(`Tamaño de la respuesta: ${responseSize} bytes`);
-  // salida esperada: "Tamaño de la respuesta: 1071472"
-  return responseSize;
-}
-getResponseSize('https://jsonplaceholder.typicode.com/photos');
- -

Especificaciones

- - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
{{SpecName('ESDraft', '#sec-for-in-and-for-of-statements', 'ECMAScript Language: The for-in, for-of, and for-await-of Statements')}}{{Spec2('ESDraft')}}
- -

Compatibilidad de Navegadores

- - - -

{{Compat("javascript.statements.for_await_of")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/sentencias/for...in/index.html b/files/es/web/javascript/referencia/sentencias/for...in/index.html deleted file mode 100644 index 0680d69dea..0000000000 --- a/files/es/web/javascript/referencia/sentencias/for...in/index.html +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: for...in -slug: Web/JavaScript/Referencia/Sentencias/for...in -tags: - - Característica del lenguaje - - Declaración - - JavaScript -translation_of: Web/JavaScript/Reference/Statements/for...in ---- -
{{jsSidebar("Statements")}}
- -

La instrucción {{JSxRef("Sentencias/for...in", "for-in")}} itera sobre todas las {{JSxRef("../Enumerability_and_ownership_of_properties", "propiedades enumerables")}} de un objeto que está codificado por cadenas (ignorando los codificados por {{JSxRef("Objetos_globales/Symbol", "Símbolos")}}, incluidas las propiedades enumerables heredadas.

- -
{{EmbedInteractiveExample("pages/js/statement-forin.html")}}
- - - -

Sintaxis

- -
for (variable in objeto)
-  instrucción
- -
-
variable
-
Asigna un nombre de propiedad diferente a la variable en cada iteración.
-
objeto
-
Objeto cuyas propiedades enumerables que no son símbolos se iteran.
-
- -

Descripción

- -

Un bucle for...in solo itera sobre propiedades enumerables que no son símbolo. Los objetos creados a partir de constructores integrados como Array y Object han heredado propiedades no enumerables de Object.prototype y String.prototype, como el método {{JSxRef("String.indexOf", "indexOf()")}} de {{JSxRef("String")}} o el método {{JSxRef("Object.toString", "toString()")}} de {{JSxRef("Object")}}. El bucle iterará sobre todas las propiedades enumerables del objeto en sí y aquellas que el objeto hereda de su cadena de prototipos (las propiedades de los prototipos más cercanos tienen prioridad sobre las de los prototipos más alejados del objeto en su cadena de prototipos).

- -

Propiedades deleted, added o modified

- -

Un bucle for...in itera sobre las propiedades de un objeto en un orden arbitrario (consulta el operador {{JSxRef("Operadores/delete", "delete")}} para obtener más información sobre por qué no puede depender del aparente orden de la iteración, al menos en una configuración entre navegadores).

- -

Si una propiedad se modifica en una iteración y luego se visita en un momento posterior, su valor en el bucle es su valor en ese momento posterior. Una propiedad que se elimina antes de haber sido visitada no se visitará más tarde. Las propiedades agregadas al objeto sobre el que se está produciendo la iteración se pueden visitar u omitir de la iteración.

- -

En general, es mejor no agregar, modificar o eliminar propiedades del objeto durante la iteración, aparte de la propiedad que se está visitando actualmente. No hay garantía de si se visitará una propiedad agregada, si se visitará una propiedad modificada (distinta de la actual) antes o después de que se modifique, o si se visitará una propiedad eliminada antes de eliminarla.

- -

Iteración en arreglos y for...in

- -
-

Nota: for...in no se debe usar para iterar sobre un {{JSxRef("Array")}} donde el orden del índice es importante.

-
- -

Los índices del arreglo son solo propiedades enumerables con nombres enteros y, por lo demás, son idénticos a las propiedades generales del objeto. No hay garantía de que for...in devuelva los índices en un orden en particular. La instrucción de bucle for...in devolverá todas las propiedades enumerables, incluidas aquellas con nombres no enteros y aquellas que se heredan.

- -

Debido a que el orden de iteración depende de la implementación, es posible que la iteración sobre un arreglo no visite los elementos en un orden coherente. Por lo tanto, es mejor usar un bucle {{JSxRef("Sentencias/for", "for")}} con un índice numérico (o {{JSxRef("Array.prototype.forEach()")}} o el bucle {{JSxRef("Sentencias/for...of", "for...of")}}) cuando se itera sobre arreglos donde el orden de acceso es importante.

- -

Iterar solo sobre propiedades directas

- -

Si solo deseas considerar las propiedades adjuntas al objeto en sí mismo, y no sus prototipos, usa {{JSxRef("Object.getOwnPropertyNames", "getOwnPropertyNames()")}} o realiza una {{JSxRef("Object.prototype.hasOwnProperty", "hasOwnProperty()")}} verificación ({{jsxref("Object.prototype.propertyIsEnumerable", "propertyIsEnumerable()")}} también se puede utilizar). Alternativamente, si sabes que no habrá ninguna interferencia de código externo, puedes extender los prototipos incorporados con un método de verificación.

- -

¿Por qué usar for...in?

- -

Dado que for...in está construido para iterar propiedades de objeto, no se recomienda su uso con arreglos y opciones como Array.prototype.forEach() y existe for...of, ¿cuál podría ser el uso de for...in?

- -

Es posible que se utilice de forma más práctica con fines de depuración, ya que es una forma fácil de comprobar las propiedades de un objeto (mediante la salida a la consola o de otro modo). Aunque los arreglos suelen ser más prácticos para almacenar datos, en situaciones en las que se prefiere un par clave-valor para trabajar con datos (con propiedades que actúan como la "clave"), puede haber casos en los que desees comprobar si alguna de esas claves cumple un valor particular.

- -

Ejemplos

- -

Utilizar for...in

- -

El siguiente bucle for...in itera sobre todas las propiedades enumerables que no son símbolos del objeto y registra una cadena de los nombres de propiedad y sus valores.

- -
var obj = {a: 1, b: 2, c: 3};
-
-for (const prop in obj) {
-  console.log(`obj.${prop} = ${obj[prop]}`);
-}
-
-// Produce:
-// "obj.a = 1"
-// "obj.b = 2"
-// "obj.c = 3"
- -

Iterar propiedades directas

- -

La siguiente función ilustra el uso de {{JSxRef("Object.prototype.hasOwnProperty", "hasOwnProperty()")}} — las propiedades heredadas no se muestran.

- -
var triangle = {a: 1, b: 2, c: 3};
-
-function ColoredTriangle() {
-  this.color = 'red';
-}
-
-ColoredTriangle.prototype = triangle;
-
-var obj = new ColoredTriangle();
-
-for (const prop in obj) {
-  if (obj.hasOwnProperty(prop)) {
-    console.log(`obj.${prop} = ${obj[prop]}`);
-  }
-}
-
-// Produce:
-// "obj.color = red"
-
- -

Especificaciones

- - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-for-in-and-for-of-statements', 'declaración for...in')}}
- -

Compatibilidad del navegador

- - - -

{{Compat("javascript.statements.for_in")}}

- -

Compatibilidad: expresiones iniciadoras en modo estricto

- -

Antes de Firefox 40, era posible utilizar una expresión iniciadora (i=0) en un bucle for...in:

- -
var obj = {a: 1, b: 2, c: 3};
-for (var i = 0 in obj) {
-  console.log(obj[i]);
-}
-// 1
-// 2
-// 3
-
- -

Este comportamiento no estándar ahora se ignora en la versión 40 y posteriores, y presentará un {{JSxRef("SyntaxError")}} ("{{JSxRef("errors/Invalid_for-in_initializer", "iniciador for...in no válido", "las declaraciones de encabezado del bucle for-in posiblemente no tengan iniciadores")}} en {{JSxRef("Strict_mode", "modo estricto")}} ({{bug(748550)}} y {{bug(1164741)}}").

- -

Otros motores como v8 (Chrome), Chakra (IE/Edge) y JSC (WebKit/Safari) están investigando si eliminar también el comportamiento no estándar.

- -

Ve también

- - diff --git a/files/es/web/javascript/referencia/sentencias/for...of/index.html b/files/es/web/javascript/referencia/sentencias/for...of/index.html deleted file mode 100644 index 572308b41a..0000000000 --- a/files/es/web/javascript/referencia/sentencias/for...of/index.html +++ /dev/null @@ -1,319 +0,0 @@ ---- -title: for...of -slug: Web/JavaScript/Referencia/Sentencias/for...of -tags: - - ECMAScript6 - - JavaScript - - Referencia - - Sentencia -translation_of: Web/JavaScript/Reference/Statements/for...of ---- -
-
{{jsSidebar("Statements")}}
- -

La sentencia sentencia for...of ejecuta un bloque de código para cada elemento de un objeto iterable, como lo son: {{jsxref("String")}}, {{jsxref("Array")}}, objetos similares a array (por ejemplo, {{jsxref("Functions/arguments", "arguments")}} or NodeList), {{jsxref("TypedArray")}}, {{jsxref("Map")}}, {{jsxref("Set")}} e iterables definidos por el usuario.

-
- -

Sintaxis

- -
for (variable of iterable) {
-  statement
-}
-
- -
-
variable
-
En cada iteración el elemento (propiedad enumerable) correspondiente es asignado a variable
-
iterable
-
Objeto cuyas propiedades enumerables son iteradas. 
-
- -

Ejemplos

- -

Iterando un {{jsxref("Array")}}

- -
let iterable = [10, 20, 30];
-
-for (let value of iterable) {
-  value += 1;
-  console.log(value);
-}
-// 11
-// 21
-// 31
-
- -

Es posible usar const en lugar de let si no se va a modificar la variable dentro del bloque.

- -
let iterable = [10, 20, 30];
-
-for (const value of iterable) {
-  console.log(value);
-}
-// 10
-// 20
-// 30
- -

Iterando un {{jsxref("String")}}

- -
let iterable = "boo";
-
-for (let value of iterable) {
-  console.log(value);
-}
-// "b"
-// "o"
-// "o"
- -

Iterando un {{jsxref("TypedArray")}}

- -
let iterable = new Uint8Array([0x00, 0xff]);
-
-for (let value of iterable) {
-  console.log(value);
-}
-// 0
-// 255
- -

Iterando un {{jsxref("Map")}}

- -
let iterable = new Map([["a", 1], ["b", 2], ["c", 3]]);
-
-for (let entry of iterable) {
-  console.log(entry);
-}
-// ['a', 1]
-// ['b', 2]
-// ['c', 3]
-
-for (let [key, value] of iterable) {
-  console.log(value);
-}
-// 1
-// 2
-// 3
- -

Iterando un {{jsxref("Set")}}

- -
let iterable = new Set([1, 1, 2, 2, 3, 3]);
-
-for (let value of iterable) {
-  console.log(value);
-}
-// 1
-// 2
-// 3
- -

Iterando un objeto arguments

- -
(function() {
-  for (let argument of arguments) {
-    console.log(argument);
-  }
-})(1, 2, 3);
-
-// 1
-// 2
-// 3
- -

Iterando una colección del DOM

- -

Iterando colecciones del DOM como un {{domxref("NodeList")}}: el siguiente ejemplo añade la clase "read" a los párrafos (<p>) que son descendientes directos de un (<article>):

- -
// Nota: Esto solo funcionará en plataformas que tengan
-// implementado NodeList.prototype[Symbol.iterator]
-let articleParagraphs = document.querySelectorAll("article > p");
-
-for (let paragraph of articleParagraphs) {
-  paragraph.classList.add("read");
-}
- -

Clausurando iteraciones

- -

En los bucles for...of, se puede causar que la iteración termine de un modo brusco usando: breakcontinue[4]throw or return[5]. En estos casos la iteración se cierra.

- -
function* foo(){
-  yield 1;
-  yield 2;
-  yield 3;
-};
-
-for (let o of foo()) {
-  console.log(o);
-  break; // closes iterator, triggers return
-}
- -

Iterando generadores

- -

También es posible iterar las nuevas funciones generator:

- -
function* fibonacci() { // una función generador
-  let [prev, curr] = [0, 1];
-  while (true) {
-    [prev, curr] = [curr, prev + curr];
-    yield curr;
-  }
-}
-
-for (let n of fibonacci()) {
-  console.log(n);
-  // interrumpir la secuencia en 1000
-  if (n >= 1000) {
-    break;
-  }
-}
- -
-

No se deben reutilizar los generadores

- -

Los generadores no deben ser reutilizados, incluso si el bucle for...of se ha terminado antes de tiempo con la sentencia break. Una vez abandonado el bucle, el generador está cerrado y tratar de iterar sobre él de nuevo no dará más resultados. Firefox no ha implementado aún este comportamiento y el generador puede ser reutilizado en contra de lo escrito en el estándar ES6 (13.7.5.13, step 5m), pero esto cambiará una vez que el bug {{Bug(1147371)}} haya sido corregido.

-
- -
var gen = (function *(){
-  yield 1;
-  yield 2;
-  yield 3;
-})();
-for (let o of gen) {
-  console.log(o);
-  break;  // Finaliza la iteración
-}
-
-// El generador no debe ser reutilizado, lo siguiente no tiene sentido
-for (let o of gen) {
-  console.log(o); // Nunca será llamado
-}
- -

Iterando otros objetos iterables

- -

Es posible, además, iterar un objeto que explicitamente implemente el protocolo iterable:

- -
var iterable = {
-  [Symbol.iterator]() {
-    return {
-      i: 0,
-      next() {
-        if (this.i < 3) {
-          return { value: this.i++, done: false };
-        }
-        return { value: undefined, done: true };
-      }
-    };
-  }
-};
-
-for (var value of iterable) {
-  console.log(value);
-}
-// 0
-// 1
-// 2
- -

Diferencia entre for...of y for...in

- -

El bucle for...in iterará sobre todas las propiedades de un objeto. Más tecnicamente, iterará sobre cualquier propiedad en el objeto que haya sido internamente definida con su propiedad [[Enumerable]] configurada como true

- -

La sintaxis de  for...of es específica para las colecciones, y no para todos los objetos. Esta Iterará sobre cualquiera de los elementos de una colección que tengan la propiedad [Symbol.iterator].

- -

El siguiente ejemplo muestra las diferencias entre un bucle for...of y un bucle for...in

- -
let arr = [3, 5, 7];
-arr.foo = "hola";
-
-for (let i in arr) {
-   console.log(i); // logs "0", "1", "2", "foo"
-}
-
-for (let i of arr) {
-   console.log(i); // logs "3", "5", "7"
-}
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoCometario
{{SpecName('ES6', '#sec-for-in-and-for-of-statements', 'for...of statement')}}{{Spec2('ES6')}}Definición inicial.
{{SpecName('ESDraft', '#sec-for-in-and-for-of-statements', 'for...of statement')}}{{Spec2('ESDraft')}}
- -

Compatibilidad de navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)EdgeOperaSafari
Soporte básico{{CompatChrome(38)}} [1]
- {{CompatChrome(51)}} [3]
{{CompatGeckoDesktop("13")}} [2] [4]12257.1
-
- -
- - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico5.1{{CompatChrome(38)}} [1]{{CompatGeckoMobile("13")}} [2]{{CompatNo}}{{CompatUnknown}}8
-
- -

[1] Desde Chrome 29 a Chrome 37 esta funcionalidad estuvo disponible al activar la opción chrome://flags/#enable-javascript-harmony: “JavaScript experimental”.

- -

[2] Antes de Firefox 51, el uso de for...of usando {{jsxref("const")}} resultaba en un {{jsxref("SyntaxError")}} ("missing = in const declaration"). El problema ha sido resuelto ({{bug(1101653)}}).

- -

[3] Chrome 51 añadió soporte para iterar objetos.

- -

[4] Firefox aún permite el uso de un generador después de haber interrumpido el bucle {{Bug(1147371)}}. Como se vio más arriba, no se deben reutilizar los generadores.

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/sentencias/for/index.html b/files/es/web/javascript/referencia/sentencias/for/index.html deleted file mode 100644 index 875236ba2b..0000000000 --- a/files/es/web/javascript/referencia/sentencias/for/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: for -slug: Web/JavaScript/Referencia/Sentencias/for -tags: - - JavaScript - - Statement -translation_of: Web/JavaScript/Reference/Statements/for ---- -
- {{jsSidebar("Statements")}}
-

Resumen

-

Crea un bucle que consiste en tres expresiones opcionales, encerradas en paréntesis y separadas por puntos y comas, seguidas de una sentencia ejecutada en un bucle.

-

Sintaxis

-
for ([expresion-inicial]; [condicion]; [expresion-final])sentencia
-
-
-
- expresion-inicial
-
- Una expresión (incluyendo las expresiones de asignación) o la declaración de variable. Típicamente se utiliza para usarse como variable contador. Esta expresión puede opcionalmente declarar nuevas variables con la palabra clave var. Estas variables no son locales del bucle, es decir, están en el mismo alcance en el que está el bucle for. El resultado de esta expresión es descartado.
-
-
-
- condicion
-
- Una expresión para ser evaluada antes de cada iteración del bucle. Si esta expresión se evalúa como verdadera, se ejecuta sentencia. Esta comprobación condicional es opcional. Si se omite, la condición siempre se evalúa como verdadera. Si la expresión se evalúa como falsa, la ejecución salta a la primera expresión que sigue al constructor de for.
-
-
-
- expresion-final
-
- Una expresión para ser evaluada al final de cada iteración del bucle. Esto ocurre antes de la siguiente evaluación de la condicion. Generalmente se usa para actualizar o incrementar la variable contador.
-
-
-
- sentencia
-
- Una sentencia que se ejecuta mientras la condición se evalúa como verdadera. Para ejecutar múltiples sentencias dentro del bucle, utilice una sentencia {{jsxref("Sentencias/block", "block")}} ({ ... }) para agrupar aquellas sentecias.
-
-

Ejemplos

-

Ejemplo: Usando for

-

La siguiente sentencia for comienza mediante la declaración de la variable i y se inicializa a 0. Comprueba que i es menor que nueve, realiza las dos sentencias con éxito e incrementa i en 1 después de cada pase del bucle.

-
for (var i = 0; i < 9; i++) {
-   n += i;
-   mifuncion(n);
-}
-
-

Vea También

- diff --git a/files/es/web/javascript/referencia/sentencias/funcion_asincrona/index.html b/files/es/web/javascript/referencia/sentencias/funcion_asincrona/index.html deleted file mode 100644 index 573c10fad8..0000000000 --- a/files/es/web/javascript/referencia/sentencias/funcion_asincrona/index.html +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: Función async -slug: Web/JavaScript/Referencia/Sentencias/funcion_asincrona -tags: - - Declaración - - Ejemplo - - JavaScript - - función -translation_of: Web/JavaScript/Reference/Statements/async_function ---- -
-
{{jsSidebar("Statements")}}
- -

La declaración de función async define una función asíncrona, la cual devuelve un objeto {{jsxref("Global_Objects/AsyncFunction","AsyncFunction")}}.

- -
-

Es posible definir también funciones asíncronas a través de una {{jsxref("Operators/async_function", "expresión de función async", "", 1)}}.

-
-
- -
{{EmbedInteractiveExample("pages/js/statement-async.html", "taller")}}
- - - -

Sintaxis

- -
async function name([param[, param[, ... param]]]) {
-   statements
-}
-
- -

Parámetros

- -
-
name
-
El nombre de la función.
-
- -
-
param
-
El nombre de un argumento que se debe pasar a la función.
-
- -
-
statements
-
Las declaraciones que conforman el cuerpo de la función.
-
- -

Valor de retorno

- -

Un objeto {{jsxref("Global_Objects/AsyncFunction","AsyncFunction")}}, que representa una función asíncrona que ejecuta el código contenido dentro de la función.

- -

Descripción

- -

Cuando se llama a una función async, esta devuelve un elemento {{jsxref("Promise")}}. Cuando la función async devuelve un valor, Promise se resolverá con el valor devuelto. Si la función async genera una excepción o algún valor, Promise se rechazará con el valor generado.

- -

Una función async puede contener una expresión {{jsxref("Operators/await", "await")}}, la cual pausa la ejecución de la función asíncrona y espera la resolución de la Promise pasada y, a continuación, reanuda la ejecución de la función async y devuelve el valor resuelto.

- -
-

La finalidad de las funciones async/await es simplificar el comportamiento del uso síncrono de promesas y realizar algún comportamiento específico en un grupo de Promises. Del mismo modo que las Promises son semejantes a las devoluciones de llamadas estructuradas, async/await se asemejan a una combinación de generadores y promesas.

-
- -

Ejemplos

- -

Ejemplo sencillo

- -
function resolveAfter2Seconds(x) {
-  return new Promise(resolve => {
-    setTimeout(() => {
-      resolve(x);
-    }, 2000);
-  });
-}
-
-
-async function add1(x) {
-  const a = await resolveAfter2Seconds(20);
-  const b = await resolveAfter2Seconds(30);
-  return x + a + b;
-}
-
-add1(10).then(v => {
-  console.log(v);  // prints 60 after 4 seconds.
-});
-
-
-async function add2(x) {
-  const p_a = resolveAfter2Seconds(20);
-  const p_b = resolveAfter2Seconds(30);
-  return x + await p_a + await p_b;
-}
-
-add2(10).then(v => {
-  console.log(v);  // prints 60 after 2 seconds.
-});
-
- -
-

No se deben confundir await y Promise.all

- -

En add1, la ejecución se suspende durante dos segundos correspondientes al primer operador await, y luego durante otros dos segundos correspondientes al segundo await. El segundo temporizador no se crea hasta que el primero no se haya disparado ya. En add2, ambos temporizadores se crean y, acto seguido, ambos reciben await. Esto provoca la resolución en dos segundos y no cuatro, ya que los temporizadores se ejecutaron de manera simultánea. Sin embargo, ambas llamadas await aún pueden ejecutarse en series, no en paralelo: esto no constituye ninguna aplicación automática de Promise.all. Si se desea aplicar await a dos o más promesas en paralelo, es preciso utilizar Promise.all.

-
- -

Reescritura de una cadena de promesas con una función async

- -

Una API que devuelva una {{jsxref("Promise")}} tendrá como resultado una cadena de promesas, y dividirá la función en muchas partes. Estudie este código:

- -
function getProcessedData(url) {
-  return downloadData(url) // returns a promise
-    .catch(e => {
-      return downloadFallbackData(url)  // returns a promise
-    })
-    .then(v => {
-      return processDataInWorker(v); // returns a promise
-    });
-}
-
- -

Es posible reescribirlo utilizando un solo operador async de esta manera:

- -
async function getProcessedData(url) {
-  let v;
-  try {
-    v = await downloadData(url);
-  } catch(e) {
-    v = await downloadFallbackData(url);
-  }
-  return processDataInWorker(v);
-}
-
- -

Observe que, en el ejemplo anterior, no hay ninguna instrucción await dentro de la instrucción return, porque el valor de retorno de una async function queda implícitamente dentro de un {{jsxref("Promise.resolve")}}.

- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ESDraft', '#sec-async-function-definitions', 'Función async')}}{{Spec2('ESDraft')}}Definición inicial en ES2017.
{{SpecName('ES8', '#sec-async-function-definitions', 'Función async')}}{{Spec2('ES8')}} 
- -

Compatibilidad entre navegadores

- -
- - -

{{Compat("javascript.statements.async_function")}}

-
- -

Véase también

- - diff --git a/files/es/web/javascript/referencia/sentencias/function/index.html b/files/es/web/javascript/referencia/sentencias/function/index.html deleted file mode 100644 index 36b02935d9..0000000000 --- a/files/es/web/javascript/referencia/sentencias/function/index.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: function -slug: Web/JavaScript/Referencia/Sentencias/function -tags: - - JavaScript - - Statement -translation_of: Web/JavaScript/Reference/Statements/function ---- -
- {{jsSidebar("Statements")}}
-

Resumen

-

Declara una función con los parámetros especificados.

-

Puede también definir funciones usando el constructor {{jsxref("Function")}} y el {{jsxref("Operadors/function", "function")}} (expresión function).

-

Sintaxis

-
function nombre([parametro1] [,parametro2] [..., parametroN]) {sentencias}
-
-
-
- nombre
-
- El nombre de la función.
-
-
-
- parametroN
-
- El nombre de un argumento que se pasa a la función. Una función puede tener hasta 255 argumentos.
-
-
-
- sentencias
-
- Las sentencias que comprenden el cuerpo de la función.
-
-

Descripción

-

Para devolver un valor, la función debe tener una sentencia {{jsxref("Sentencias/return", "return")}} que especifica el valor a devolver.

-

Una función creada con la sentencia function es un objeto Function y tiene todas las propiedades, métodos, y comportamiento de los objetos Function. Vea {{jsxref("Function")}} para información detallada sobre funciones.

-

Una función puede también ser declarada dentro de una expresión. En este caso la función es normalmente anónima. Vea {{jsxref("Operadores/function", "function expression")}} para más información acerca de function (expresión function).

-

Las funciones pueden declararse condicionalmente. Es decir, una definición de una función puede estar anidada dentro de una sentecia if. Técnicamente, tales declaraciones no son en realidad declaraciones de funciones; son expresiones function (expresiones de función).

-

Ejemplo

-

Ejemplo: Usando function

-

El siguiente código declara una función que devuelve la cantidad total de ventas, cuando se da el número de unidades vendidas de productos a, b, y c.

-
function calcular_ventas(unidades_a, unidades_b, unidades_c) {
-   return unidades_a*79 + unidades_b * 129 + unidades_c * 699;
-}
-
-

Vea También

- diff --git a/files/es/web/javascript/referencia/sentencias/function_star_/index.html b/files/es/web/javascript/referencia/sentencias/function_star_/index.html deleted file mode 100644 index 79ff51b7f2..0000000000 --- a/files/es/web/javascript/referencia/sentencias/function_star_/index.html +++ /dev/null @@ -1,224 +0,0 @@ ---- -title: function* -slug: Web/JavaScript/Referencia/Sentencias/function* -tags: - - Declaración - - Experimental - - Expérimental(2) - - Iterador - - función -translation_of: Web/JavaScript/Reference/Statements/function* ---- -
{{jsSidebar("Statements")}}
- -

La declaración function* (la palabra clave function seguida de un asterisco) define una función generadora, que devuelve un objeto {{jsxref("Global_Objects/Generator","Generator")}}.

- -
-

También puedes definir funciones generadoras usando el constructor {{jsxref("GeneratorFunction")}} y una {{jsxref("Operators/function*", "function* expression")}}.

-
- -

Sintaxis

- -
function* nombre([param[, param[, ... param]]]) {
-   instrucciones
-}
-
- -
-
nombre
-
El nombre de la función.
-
- -
-
param
-
El nombre de los argumentos que se le van a pasar a la función. Una función puede tener hasta 255 argumentos.
-
- -
-
instrucciones
-
Las instrucciones que componen el cuerpo de la función.
-
- -

Descripción

- -

Los generadores son funciones de las que se puede salir y volver a entrar. Su contexto (asociación de variables) será conservado entre las reentradas.

- -

La llamada a una función generadora no ejecuta su cuerpo inmediatamente; se devuelve un objeto iterador para la función en su lugar. Cuando el metodo next() del iterador es llamado , el cuerpo de la función generadora es ejecutado hasta la primera expresión {{jsxref("Operators/yield", "yield")}}, la cual especifica el valor que será retornado por el iterador o con, {{jsxref("Operators/yield*", "yield*")}}, delega a otra función generadora. El método next() retorna un objeto con una propiedad value que contiene el valor bajo el operador yield y una propiedad done que indica, con un booleano, si la función generadora ha hecho yield al último valor.

- -

Ejemplos

- -

Ejemplo simple

- -
function* idMaker(){
-  var index = 0;
-  while(index < 3)
-    yield index++;
-}
-
-var gen = idMaker();
-
-console.log(gen.next().value); // 0
-console.log(gen.next().value); // 1
-console.log(gen.next().value); // 2
-console.log(gen.next().value); // undefined
-// ...
- -

Ejemplo con yield*

- -
function* anotherGenerator(i) {
-  yield i + 1;
-  yield i + 2;
-  yield i + 3;
-}
-
-function* generator(i){
-  yield i;
-  yield* anotherGenerator(i);
-  yield i + 10;
-}
-
-var gen = generator(10);
-
-console.log(gen.next().value); // 10
-console.log(gen.next().value); // 11
-console.log(gen.next().value); // 12
-console.log(gen.next().value); // 13
-console.log(gen.next().value); // 20
-
- -

Especificaciones

- - - - - - - - - - - - - - - - -
EspecificacionesStatusComentarios
{{SpecName('ES2015', '#', 'function*')}}{{Spec2('ES2015')}}Initial definition.
- -

Compatibilidad con navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Soporte básico{{CompatChrome(39.0)}}{{CompatGeckoDesktop("26.0")}}{{CompatNo}}26{{CompatNo}}
yield*{{CompatVersionUnknown}}{{CompatGeckoDesktop("27.0")}}{{CompatNo}}26{{CompatNo}}
IteratorResult object instead of throwing{{CompatVersionUnknown}}{{CompatGeckoDesktop("29.0")}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatVersionUnknown}}{{CompatChrome(39.0)}}{{CompatGeckoMobile("26.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
yield*{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("27.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
IteratorResult object instead of throwing{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("29.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

Notas específicas de Firefox

- -

Generadores e iteradores en versiones de Firefox anteriores a 26

- -

Las versiones anteriores de FireFox implementan así mismo una versión anterior de la propuesta de generadores. En la versión anterior, los generadores eran definidos utilizando la declaración function de una manera regular (Sin asterisco).  Véase Legacy generator function para mayor información.

- -

IteratorResult object returned instead of throwing

- -

Starting with Gecko 29 {{geckoRelease(29)}}, the completed generator function no longer throws a {{jsxref("TypeError")}} "generator has already finished". Instead, it returns an IteratorResult object like { value: undefined, done: true } ({{bug(958951)}}).

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/sentencias/if...else/index.html b/files/es/web/javascript/referencia/sentencias/if...else/index.html deleted file mode 100644 index 3bac571218..0000000000 --- a/files/es/web/javascript/referencia/sentencias/if...else/index.html +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: if...else -slug: Web/JavaScript/Referencia/Sentencias/if...else -tags: - - JavaScript - - Statement -translation_of: Web/JavaScript/Reference/Statements/if...else ---- -
{{jsSidebar("Statements")}}
- -

Resumen

- -

Ejecuta una sentencia si una condición específicada es evaluada como verdadera. Si la condición es evaluada como falsa, otra sentencia puede ser ejecutada.

- -

Sintaxis

- -
if (condición) sentencia1 [else sentencia2]
-
- -
-
condición
-
Una expresión que puede ser evaluada como verdadera o falsa.
-
- -
-
sentencia1
-
Sentencia que se ejecutará si condición es evaluada como verdadera. Puede ser cualquier sentencia, incluyendo otras sentenccias if anidadas. Para ejecutar múltiples sentencias, use una sentencia {{jsxref("Sentencias/block", "block")}} ({ ... }) para agruparlas.
-
- -
-
sentencia2
-
Sentencia que se ejecutará si condición se evalúa como falsa, y exista una cláusula else. Puede ser cualquier sentencia, incluyendo sentencias block y otras sentencias if anidadas.
-
- -

Descripción

- -

Multiples sentencias if...else pueden ser anidadas para crear una cláusula else if:

- -
if (condición1)
-   sentencia1
-else if (condición2)
-   sentencia2
-else if (condición3)
-   sentencia3
-...
-else
-   sentenciaN
-
- -

Para entender como esto funciona, así es como se vería si el anidamiento hubiera sido indentado correctamente:

- -
if (condición1)
-   sentencia1
-else
-   if (condición2)
-      sentencia2
-   else
-      if (condición3)
-        ...
-
- -

Para ejecutar varias sentencias en una cláusula, use una sentencia block ({ ... }) para agruparlas. Generalmente, es una buena práctica usar siempre sentencias block, especialmente en código que incluya sentencias if anidadas:

- -
if (condición) {
-   sentencia1
-} else {
-   sentencia2
-}
-
- -

No confundir los valores primitivos true y false con los valores true y false del objeto {{jsxref("Boolean")}}. Cualquier valor diferente de undefined, null, 0, -0, NaN, o la cadena vacía (""), y cualquier objecto, incluso un objeto Boolean cuyo valor es false, se evalúa como verdadero en una sentencia condicional. Por ejemplo:

- -
var b = new Boolean(false);
-if (b) // Esta condición se evalúa como verdadera
-
- -

Ejemplos

- -

Ejemplo: Uso de if...else

- -
if (cipher_char == from_char) {
-   result = result + to_char;
-   x++;
-} else
-   result = result + clear_char;
-
- -

Ejemplo: Asignación en una expresión condicional

- -

Es aconsejable no usar asignaciones simples en una expresión condicional, porque la asignación puede ser confundida con igualdad (operador relacional) cuando se lee el código. Por ejemplo, no use el siguiente código:

- -
if (x = y) {
-   /* sentencia */
-}
-
- -

Si realmente necesita una asignación dentro de una exprsión condicional, una práctica común es poner paréntesis adicionales alrededor del la asignación, por ejemplo:

- -
if ((x = y)) {
-   /* sentencia */
-}
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/sentencias/import.meta/index.html b/files/es/web/javascript/referencia/sentencias/import.meta/index.html deleted file mode 100644 index 8c09e97475..0000000000 --- a/files/es/web/javascript/referencia/sentencias/import.meta/index.html +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: import.meta -slug: Web/JavaScript/Referencia/Sentencias/import.meta -translation_of: Web/JavaScript/Reference/Statements/import.meta ---- -
{{JSSidebar("Statements")}}
- -

El objeto import.meta expone el contenido especifico de la metadata al módulo JavaScript. Este contiene informacion sobre el módulo, como por ejemplo, la URL del mismo.

- -

Syntax

- -
import.meta
- -

Descripción

- -

La sintasis consiste de la palabra clave  {{JSxRef("Statements/import","import")}},un punto, y un identificador meta. Normalmente, la parte a la izquierda del punto es el objeto sobre el cual la accion es realizada, pero aqui import no es realmente un objeto.

- -

El objeto import.meta es creado por la implementacion ECMAScript , con un prototipo {{JSxRef("null")}} . El objeto es extensible y sus propiedades son grabables, editables y enumerables.

- -

Ejemplos

- -

Usando import.meta

- -

Dado un módulo my-module.js

- -
<script type="module" src="my-module.js"></script>
-
- -

puedes acceder a la meta información  sobre el módulo usando el objeto import.meta.

- -
console.log(import.meta); // { url: "file:///home/user/my-module.js" }
- -

Este retorna un objeto con una propiedad  url  indicando la URL base del módulo.Esta será la URL de la que el script fue obtenido, por scripts externos, o  la URL base del documento que contiene el documento, por scripts inline.

- -

Nota que este incluirá parametros de la consulta y/o el hash (ej: seguido del ? or #).

- -

Por ejemplo, con el siguiente HTML:

- -
<script type="module">
-import './index.mjs?someURLInfo=5';
-</script>
- -

..El siguiente archivo JavaScript registrará el parámetro someURLInfo:

- -
// index.mjs
-new URL(import.meta.url).searchParams.get('someURLInfo'); // 5
- -

Lo mismo aplica cuando un archivo importa otro:

- -
// index.mjs
-import './index2.mjs?someURLInfo=5';
-
-// index2.mjs
-new URL(import.meta.url).searchParams.get('someURLInfo'); // 5
- -

Nota que mientras Node.js pasa en la consulta los parámetros (o el hash ) como en el último ejemplo, a partir de Node 14.1.0, una URL con parametros en la consulta fallará  cuando se  carguen en el formato node --experimental-modules index.mjs?someURLInfo=5 (es tratado como un archivo en lugar de una URL en este contexto).

- -

Tal argumento específico del archivo podria ser complementario al  usado en toda la aplicacion  location.href (con consultas strings o hash añadidas despues de la ruta HTML) (o en Node.js, mediante process.argv).

- -

Especificaciones

- - - - - - - - - - - - - -
Especificaciones
import.meta proposal
{{SpecName("HTML WHATWG", "webappapis.html#hostgetimportmetaproperties", "import.meta")}}
- -

Browser compatibility

- - - -

{{Compat("javascript.statements.import_meta")}}

- -

Implementation Progress

- -

La siguiente tabla provee el estatus de implementación diaria para esta caracteristica, porque esta caracteristica aun no ha alcanzado la estabilidad entre navegadores. La información es generada corriendo los test relevantes de la caracteristica en Test262, la suite estandar de test de JavaScript, en el build nocturno,  o en el último release de cada  motor de los browser de JavaScript.

- -
{{EmbedTest262ReportResultsTable("import.meta")}}
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/sentencias/import/index.html b/files/es/web/javascript/referencia/sentencias/import/index.html deleted file mode 100644 index 7d2c261d0e..0000000000 --- a/files/es/web/javascript/referencia/sentencias/import/index.html +++ /dev/null @@ -1,177 +0,0 @@ ---- -title: import -slug: Web/JavaScript/Referencia/Sentencias/import -tags: - - ECMAScript 2015 - - JavaScript - - Módulos - - Sentencia - - import -translation_of: Web/JavaScript/Reference/Statements/import ---- -
{{jsSidebar("Sentencias")}}
- -

La sentencia import se usa para importar funciones que han sido exportadas desde un módulo externo.

- -
-

Por el momento, esta característica sólo está comenzando a ser implementada de forma nativa en los navegadores. Está implementada en muchos transpiladores, tales como Typescript y Babel, y en empaquetadores como Rollup y Webpack.

-
- -

Sintaxis

- -
import defaultExport from "module-name";
-import * as name from "module-name";
-import { export } from "module-name";
-import { export as alias } from "module-name";
-import { export1 , export2 } from "module-name";
-import { export1 , export2 as alias2 , [...] } from "module-name";
-import defaultExport, { export [ , [...] ] } from "module-name";
-import defaultExport, * as name from "module-name";
-import "module-name";
- -
-
defaultExport
-
Nombre que se referirá al export por defecto del módulo.
-
module-name
-
El módulo desde el que importar. Normalmente es una ruta relativa o absoluta al archivo .js que contiene el módulo, excluyendo la extensión .js. Algunos empaquetadores pueden permitir o requerir el uso de la extensión; comprueba tu entorno. Sólo se permiten Strings con comillas simples o dobles.
-
name
-
Nombre del objeto del módulo que se utilizará como nombre de dominio al hacer referencia a los imports.
-
export, exportN
-
- -
-
Nombre de los exports a ser importados.
-
alias, aliasN
-
Nombre del objeto que recibirá la propiedad importada.
-
- -

Descripción

- -

El parámetro name es el nombre del objeto que recibirá los miembros exportados. El parámetro member especifica miembros individuales, mientras el parámetro name importa todos ellos. name puede también ser una función si el módulo exporta un sólo parámetro por defecto en lugar de una serie de miembros. Abajo hay ejemplos que explican la sintaxis.

- -

Importa el contenido de todo un módulo.

- -

Esto inserta myModule en el ámbito actual, que contiene todos los elementos exportados en el archivo ubicado en  /modules/my-module.js.

- -
import * as myModule from '/modules/my-module.js';
- -

Aquí, para acceder a los miembros exportados habrá que usar el alias del módulo ("myModule" en este caso) como namespace. Por ejemplo, si el módulo importado arriba incluye un miembre exportado llamado doAllTheAmazingThings(), habría que invocarlo de la siguiente manera:

- -
myModule.doAllTheAmazingThings();
- -

Importa un solo miembro de un módulo.

- -

Dado un objeto o valor llamado myExport que ha sido exportado del módulo my-module ya sea implícitamente (porque todo el módulo ha sido exportado) o explícitamente (usando la sentencia {{jsxref("Sentencias/export", "export")}} ), esto inserta myExport en el ámbito actual.

- -
import {myExport} from '/modules/my-module.js';
- -

Importa multiples miembros de un módulo.

- -

Esto inserta foo y bar en el ámbito actual.

- -
import {foo, bar} from "my-module.js";
- -

Importa un miembre con un alias mas conveniente

- -

Se puede renombrar un miembro exportado cuando se importa. Por ejemplo, esto inserta shortName en el ámbito actual.

- -
import {reallyReallyLongModuleExportName as shortName}
-  from '/modules/my-module.js';
- -

Renombra multiples miembros durante la importación

- -

Importa múltiples miembros exportados de un módulo con un alias conveniente.

- -
import {
-  reallyReallyLongModuleExportName as shortName,
-  anotherLongModuleName as short
-} from '/modules/my-module.js';
- -

Importa un módulo entero para efectos secundarios sólamente

- -

Importa un módulo entero para efectos secundarios sólamente, sin importar ningun elemento. Esto ejecuta el código global del módulo, pero no importa ningún valor.

- -
import '/modules/my-module.js';
- -

Importación de elementos por defecto

- -

Es posible tener una exportación por defecto (tanto si se trata de un objeto, función, clase, etc.). Recíprocamente, es posible usa la instrucción import para importar esos elementos establecidos como por defecto.

- -

La versión más sencilla de importar un elemento por defecto es:

- -
import myDefault from '/modules/my-module.js';
- -

También es posible usar la sintaxis por defecto con lo que hemos visto anteriormente (importación de espacios de nombres o importaciones con nombre. En esos casos, la importación por defecto se deberá realizar en primer lugar. Por ejemplo:

- -
import myDefault, * as myModule from '/modules/my-module.js';
-// myModule used as a namespace
- -

o

- -
import myDefault, {foo, bar} from '/modules/my-module.js';
-// specific, named imports
- -

Ejemplos

- -

Importar un archivo secundario para asistir en un procesamiento de una petición JSON AJAX.

- -

El módulo: file.js

- -
function getJSON(url, callback) {
-  let xhr = new XMLHttpRequest();
-  xhr.onload = function () {
-    callback(this.responseText)
-  };
-  xhr.open('GET', url, true);
-  xhr.send();
-}
-
-export function getUsefulContents(url, callback) {
-  getJSON(url, data => callback(JSON.parse(data)));
-}
- -

El programa principal: main.js

- -
import { getUsefulContents } from '/modules/file.js';
-
-getUsefulContents('http://www.example.com',
-    data => { doSomethingUseful(data); });
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - -
EspecificaciónEstadoComentario
{{SpecName('ES6', '#sec-imports', 'Imports')}}{{Spec2('ES6')}}Definición inical
{{SpecName('ESDraft', '#sec-imports', 'Imports')}}{{Spec2('ESDraft')}} 
- -

Compatibilidad entre navegadores

- - - -

{{Compat("javascript.statements.import")}}

- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/sentencias/index.html b/files/es/web/javascript/referencia/sentencias/index.html deleted file mode 100644 index bbf0ce42e8..0000000000 --- a/files/es/web/javascript/referencia/sentencias/index.html +++ /dev/null @@ -1,141 +0,0 @@ ---- -title: Sentencias -slug: Web/JavaScript/Referencia/Sentencias -tags: - - JavaScript - - Referencia - - sentencias -translation_of: Web/JavaScript/Reference/Statements ---- -
{{jsSidebar("Statements")}}
- -

Las aplicaciones JavaScript se componen de sentencias con una sintaxis propia. Una sentencia puede estar formada por múltiples líneas. Puede haber varias sentencias en una sola línea si separamos cada una de las sentencias por un punto y coma. No es una palabra clave, sino un grupo de palabras clave.

- -

Sentencias y declaraciones por categoría

- -

Puedes encontrarlas por orden alfabético en la columna de la izquierda .

- -

Control de flujo

- -
-
{{jsxref("Sentencias/block", "Block")}}
-
Un bloque de sentencias se utiliza para agrupar cero o mas sentencias. El bloque se delimita por un par de llaves.
-
{{jsxref("Sentencias/break", "break")}}
-
Finaliza la sentencia actual loop, switch, o label y transfiere el control del programa a la siguiente sentencia de la sentencia finalizada.
-
{{jsxref("Sentencias/continue", "continue")}}
-
Finaliza la ejecucion de las sentencias dentro de la iteracion actual del actual bucle,  y continua la ejecucion del bucle con la siguiente iteracion.
-
{{jsxref("Sentencias/Empty", "Empty")}}
-
Una sentencia vacía se utiliza para proveer una "no sentencia", aunque la sintaxis de JavaScript esperaba una.
-
{{jsxref("Sentencias/if...else", "if...else")}}
-
Ejecuta una sentencia si una condición especificada es true. Si la condición es false, otra sentencia puede ser ejecutada.
-
{{jsxref("Sentencias/switch", "switch")}}
-
Evalua una expresión, igualando el valor de la expresión a una clausula case y ejecuta las sentencias asociadas con dicho case.
-
{{jsxref("Sentencias/throw", "throw")}}
-
Lanza una excepción definida por el usuario.
-
{{jsxref("Sentencias/try...catch", "try...catch")}}
-
Marca un bloque de sentencias para ser probadas (try) y especifica una respuesta, en caso de que se lance una excepción.
-
- -

Declaraciones

- -
-
{{jsxref("Sentencias/var", "var")}}
-
Declara una variable, opcionalmente inicializándola a un valor.
-
{{jsxref("Sentencias/let", "let")}}
-
Declara una variable local de ambito de bloque, opcionalmente inicializándola a un valor.
-
{{jsxref("Sentencias/const", "const")}}
-
Declara una constante de solo lectura.
-
- -

Funciones

- -
-
{{jsxref("Sentencias/function", "function")}}
-
Declara una función con los parámetros especificados.
-
{{jsxref("Sentencias/function*", "function*")}}
-
Los generadores de funciones permiten escribir {{jsxref("Iteration_protocols", "iteradores")}} con mas facilidad.
-
{{experimental_inline}} {{jsxref("Statements/async_function", "async function")}}
-
Declara una función asíncrona con los parámetros especificados.
-
{{jsxref("Statements/return", "return")}}
-
Especifica el valor a ser retornado por una función.
-
{{jsxref("Statements/class", "class")}}
-
Declara una clase.
-
- -

Iteraciones

- -
-
{{jsxref("Sentencias/do...while", "do...while")}}
-
Crea un bucle que ejecuta una instrucción especificada hasta que la condición de prueba se evalúa como falsa. La condición se evalúa después de ejecutar la instrucción, lo que da como resultado que la instrucción especificada se ejecute al menos una vez.
-
{{jsxref("Sentencias/for", "for")}}
-
Creates a loop that consists of three optional expressions, enclosed in parentheses and separated by semicolons, followed by a statement executed in the loop.
-
{{deprecated_inline()}} {{non-standard_inline()}}{{jsxref("Sentencias/for_each...in", "for each...in")}}
-
Itera una variable especificada sobre todos los valores de las propiedades del objeto. Para cada propiedad distinta, se ejecuta una instrucción especificada.
-
{{jsxref("Sentencias/for...in", "for...in")}}
-
Itera sobre las propiedades enumerables de un objeto, en orden albitrario. Para cada propiedad distinta, las instrucciones pueden ser ejecutadas.
-
{{jsxref("Sentencias/for...of", "for...of")}}
-
Iterates over iterable objects (including {{jsxref("Array", "array")}}, array-like objects, iterators and generators), invoking a custom iteration hook with statements to be executed for the value of each distinct property.
-
{{jsxref("Sentencias/while", "while")}}
-
Crea un bucle que ejecuta la instrucción especificada siempre que la condición de prueba se evalúe como verdadera. La condición se evalúa antes de ejecutar la instrucción.
-
- -

Otros

- -
-
{{jsxref("Sentencias/debugger", "debugger")}}
-
Invoca cualquier funcionalidad de depuración disponible. Si no hay funcionalidad de depuración disponible, esta isntrucción no tiene efecto.
-
{{jsxref("Sentencias/export", "export")}}
-
Usada para permitir a un script firmada proveer propiedades, funciones y objetos a otros scripts firmada o sin firmar. Esta antigua funcionalidad de Netscape ha sido removida y será redefinida por los modulos de ECMAScript 6
-
{{jsxref("Sentencias/import", "import")}}
-
Usada para permitir a un escript importar propiedades, funciones y objetos desde otro script firmado que ha exportado su información. Esta antigua funcionalidad de Netscape ha sido removida y será redefinida por los modulos de ECMAScript 6.
-
{{jsxref("Sentencias/label", "label")}}
-
Provee una instrucción con un identificador que puedes referir usando una instrucción break o continue .
-
- -
-
{{deprecated_inline()}} {{jsxref("Sentencias/with", "with")}}
-
Extiende la cadena de alcance para una instrucción.
-
- -

Especificaciones

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EspecificaciónStatusComentario
{{SpecName('ES1', '#sec-12', 'Statements')}}{{Spec2('ES1')}}Definición inicial
{{SpecName('ES3', '#sec-12', 'Statements')}}{{Spec2('ES3')}}
{{SpecName('ES5.1', '#sec-12', 'Statements')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-ecmascript-language-statements-and-declarations', 'ECMAScript Language: Statements and Declarations')}}{{Spec2('ES6')}}Nuevo: function*, let, for...of, yield, class
{{SpecName('ESDraft', '#sec-ecmascript-language-statements-and-declarations', 'ECMAScript Language: Statements and Declarations')}}{{Spec2('ESDraft')}}
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/sentencias/label/index.html b/files/es/web/javascript/referencia/sentencias/label/index.html deleted file mode 100644 index 03f3108e0e..0000000000 --- a/files/es/web/javascript/referencia/sentencias/label/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: label -slug: Web/JavaScript/Referencia/Sentencias/label -tags: - - JavaScript - - Statement -translation_of: Web/JavaScript/Reference/Statements/label ---- -
- {{jsSidebar("Statements")}}
-

Resumen

-

Proporciona una sentencia con un identificador al que se puede referir al usar las sentencias {{jsxref("Sentencias/break", "break")}} o {{jsxref("Sentencias/continue", "continue")}}.

-

Por ejemplo, puede usar una etiqueta para identificar un bucle, y entonces usar las sentencias break o continue para indicar si un programa debería interrumpir el bucle o continuar su ejecución.

-

Sintaxis

-
etiqueta :sentencia
-
-
-
- etiqueta
-
- Cualquier identificador JavaScript que no sea una palabra reservada.
-
-
-
- sentencia
-
- Sentencias. break puede ser usado con cualquier sentencia etiquetada, y continue puede usarse con bucles etiquetados de sentencias.
-
-

Ejemplos

-

Para un ejemplo de una sentencia label usando break, vea break. Para un ejemplo de una sentencia label usando continue, vea continue.

-

Vea También

- diff --git a/files/es/web/javascript/referencia/sentencias/let/index.html b/files/es/web/javascript/referencia/sentencias/let/index.html deleted file mode 100644 index 8c450b37d4..0000000000 --- a/files/es/web/javascript/referencia/sentencias/let/index.html +++ /dev/null @@ -1,393 +0,0 @@ ---- -title: let -slug: Web/JavaScript/Referencia/Sentencias/let -tags: - - Característica del lenguaje - - Declaración de variable - - ECMAScript 2015 - - JavaScript - - Variables - - let - - sentencias -translation_of: Web/JavaScript/Reference/Statements/let ---- -
{{jsSidebar("Statements")}}
- -

La instrucción let declara una variable de alcance local con ámbito de bloque(block scope), la cual, opcionalmente, puede ser inicializada con algún valor.

- -
-

La palabra reservada let en Mozilla Firefox 44 y anteriores, está solo disponible para bloques de código en HTML que esten envueltos en una etiqueta <script type="application/javascript;version=1.7"> (o de una version mayor). Las etiquetas XUL tienen acceso a esas características sin necesidad de dicho bloque.  Es necesario tomar en cuenta que esta es una característica no estándar que ya se ha hecho actualmente estándar, esto pero puede crear conflictos con otros navegadores, ya que fue una característica no estándar.

-
- -

Sintaxis

- -
let var1 [= valor1] [, var2 [= valor2]] [, ..., varN [= valorN]];
- -

Parámetros

- -
-
var1, var2, …, varN
-
Los nombres de la variable o las variables a declarar. Cada una de ellas debe ser un identificador legal de JavaScript
-
value1, value2, …, valueN
-
Por cada una de las variables declaradas puedes, opcionalmente, especificar su valor inicial como una expresión legal JavaScript.
-
- -

Descripción

- -

let te permite declarar variables limitando su alcance (scope) al bloque, declaración, o expresión donde se está usando.a diferencia de la palabra clave var la cual define una variable global o local en una función sin importar el ámbito del bloque. La otra diferencia entre var y let es que este último se inicializa a un valor sólo cuando un analizador lo evalúa (ver abajo).

- -

Al igual que const, let no crea propiedades del objeto se declara globalmente (en el alcance más alto).

- -

Alcance (scope) a nivel de bloque con let

- -

Usar la palabra reservada let para definir variables dentro de un bloque.

- -
if (x > y) {
-  let gamma = 12.7 + y;
-  i = gamma * x;
-}
-
- -

Es posible usar definiciones let para asociar código en extensiones con un pseudo-espacio-de-nombre (pseudo-namespace). (Ver Mejores prácticas de seguridad en extensiones.)

- -
let Cc = Components.classes, Ci = Components.interfaces;
-
- -

let puede ser útil para escribir código más limpio cuando usamos funciones internas.

- -
var list = document.getElementById("list");
-
-for (var i = 1; i <= 5; i++) {
-  var item = document.createElement("LI");
-  item.appendChild(document.createTextNode("Item " + i));
-
-  let j = i;
-  item.onclick = function (ev) {
-    console.log("Item " + j + " is clicked.");
-  };
-  list.appendChild(item);
-}
-
- -

El ejemplo anterior trabaja como se espera porque las cinco instancias de la función (anónima) interna hacen referencia a cinco diferentes instancias de la variable j. Nótese que esto no funcionaría como se espera si reemplazamos let con var o si removemos la variable j y simplemente usamos la variable i dentro de la función interna.

- -

Reglas de alcance

- -

Variables declaradas por let tienen por alcance el bloque en el que se han definido, así mismo, como en cualquier bloque interno. De esta manera, let trabaja muy parecido a var. La más notable diferencia es que el alcance de una variable var es la función contenedora:

- -
function varTest() {
-  var x = 31;
-  if (true) {
-    var x = 71;  // ¡misma variable!
-    console.log(x);  // 71
-  }
-  console.log(x);  // 71
-}
-
-function letTest() {
-  let x = 31;
-  if (true) {
-    let x = 71;  // variable diferente
-    console.log(x);  // 71
-  }
-  console.log(x);  // 31
-}
-// llamamos a las funciones
-varTest();
-letTest();
-
- -

En el nivel superior de un programa y funciones, let , a diferencia de var, no crea una propiedad en el objeto global, por ejemplo:

- -
var x = 'global';
-let y = 'global';
-console.log(this.x); // "global"
-console.log(this.y); // undefined
-
- -

La salida de este código desplegaría "global" una vez.

- -

Zona muerta temporal y errores con let

- -

La redeclaración de la misma variable bajo un mismo ámbito léxico terminaría en un error de tipo SyntaxError. Esto también es extensible si usamos var dentro del ámbito léxico. Esto nos salvaguarda de redeclarar una variable accidentalmente y que no era posible  solo con var.

- -
if (x) {
-  let foo;
-  let foo; // Terminamos con un SyntaxError.
-}
-if (x) {
-  let foo;
-  var foo; // Terminamos con un SyntaxError.
-}
-
- -

En ECMAScript 2015, let no eleva la variable a la parte superior del bloque. Si se hace una referencia a la variable declarada con let (let foo) antes de su declaración, terminaríamos con un error de tipo ReferenceError (al contrario de la variable declarada con var, que tendrá el valor undefined), esto porque la variables vive en una "zona muerta temporal" desde el inicio del bloque hasta que la declaración ha sido procesada.

- -
function do_something() {
-  console.log(bar); // undefined
-  console.log(foo); // ReferenceError: foo no está definido
-  var bar = 1;
-  let foo = 2;
-}
- -

Es posible encontrar errores en bloques de control switch debido a que solamente existe un block subyacente.

- -
switch (x) {
-  case 0:
-    let foo;
-    break;
-
-  case 1:
-    let foo; // Terminamos con un error de tipo SyntaxError.
-             // esto debido a la redeclaracion
-    break;
-}
- -

Otro ejemplo de zona muerta temporal combinada con ámbito léxico

- -

Debido al alcance léxico, el identificador num dentro de la expresión (num + 55) se evalúa como num del bloque if, y no como la variable num con el valor 33 que esta por encima

- -

En esa misma línea, el num del bloque if ya se ha creado en el ámbito léxico, pero aún no ha alcanzado (y terminado) su inicialización (que es parte de la propia declaración): todavía está en la zona muerta temporal.

- -
function prueba(){
-   var num = 33;
-   if (true) {
-      let num = (num + 55);//ReferenceError: no se puede acceder a la declaración léxica `num'antes de la inicialización 
-   }
-}
-prueba();
-
- -

Ejemplos

- -

let vs var

- -

Cuando usamos let dentro de un bloque, podemos limitar el alcance de la variable a dicho bloque. Notemos la diferencia con var, cuyo alcance reside dentro de la función donde ha sido declarada la variable.

- -
var a = 5;
-var b = 10;
-
-if (a === 5) {
-  let a = 4; // El alcance es dentro del bloque if
-  var b = 1; // El alcance es global
-
-  console.log(a);  // 4
-  console.log(b);  // 1
-}
-
-console.log(a); // 5
-console.log(b); // 1
- -

let en bucles

- -

Es posible usar la palabra reservada let para enlazar variables con alcance local dentro del alcance de un bucle en lugar de usar una variable global (definida usando var) para dicho propósito.

- -
for (let i = 0; i<10; i++) {
-  console.log(i); // 0, 1, 2, 3, 4 ... 9
-}
-
-console.log(i); // ReferenceError: i is not defined
-
- -

Extensiones let no-estandar

- -

Bloques let

- -
-

La sintaxis del bloque y expresion let es no-estandar y sera deshechado en un futuro. ¡No deben ser usados! ver error 1023609 y error 1167029 para mas detalles.

-
- -

Un bloque let provee una manera de asociar valores con variables dentro del alcance de un bloque sin afectar el valor de variables con nombre similar fuera del bloque.

- -

Sintaxis

- -
let (var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]]) {declaración};
- -

Descripción

- -

El bloque let provee alcance local para las variables. Funciona enlazando cero o más variables en el alcance léxico de un solo bloque de código; de otra manera, es exactamente lo mismo que una declaración de bloque. Hay que notar particularmente que el alcance de una variable declarada dentro de un bloque let usando var es equivalente a declarar esa variable fuera del bloque let; dicha variable aún tiene alcance dentro de la función. Al usar la sintaxis de bloque let, los paréntesis siguientes a let son requeridos. Una falla al incluir dichos paréntesis resultará en un error de sintaxis.

- -

Ejemplo

- -
var x = 5;
-var y = 0;
-
-let (x = x+10, y = 12) {
-  console.log(x+y); // 27
-}
-
-console.log(x + y); // 5
-
- -

Las reglas para el bloque de código son las mismas que para cualquier otro bloque de código en JavaScript. Es posible tener sus propias variables locales usando declaraciones let en dicho bloque.

- -

Reglas de alcance

- -

El alcance de las variables definidas usando let es el mismo bloque let, así como cualquier bloque interno contenido dentro de el bloque, a menos que esos bloques internos definan variables con el mismo nombre.

- -

expresiones let

- -
-

Soporte de expresiones let ha sido removido en Gecko 41 ({{bug(1023609)}}).

-
- -

Una expresion let permite establecer variables con alcance dentro de una expresión.

- -

Sintaxis

- -
let (var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]]) expression;
- -

Ejemplo

- -

Podemos usar let para establecer variables que tienen como alcance solo una expresión:

- -
var a = 5;
-let(a = 6) console.log(a); // 6
-console.log(a); // 5
- -

Reglas de alcance

- -

Dada la expresión let siguiente:

- -
let (decls) expr
-
- -

Existe un bloque implícito creado alrededor de expr.

- -

Especificaciones

- - - - - - - - - - - - - - -
EspecificaciónEstadoComentarios
{{SpecName('ES2015', '#sec-let-and-const-declarations', 'Let and Const Declarations')}}{{Spec2('ES2015')}}Definición initial. No especifica expresiones ni declaraciones let.
- -

Compatibilidad en navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico -

{{CompatChrome(41.0)}}

-
{{ CompatGeckoDesktop("1.8.1") }} [1]1117{{CompatUnknown}}
Zona muerta temporal{{CompatUnknown}}{{ CompatGeckoDesktop("35") }} [1]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Expresión let {{non-standard_inline}}{{CompatNo}}{{ CompatGeckoDesktop("1.8.1") }}-{{ CompatGeckoDesktop("40") }} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
Bloque let {{non-standard_inline}}{{CompatNo}}{{ CompatGeckoDesktop("1.8.1") }} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracterísticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatUnknown}} -

{{CompatChrome(41.0)}}

-
{{ CompatGeckoMobile("1.8.1") }} [1]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Zona muerta temporal{{CompatUnknown}}{{CompatUnknown}}{{ CompatGeckoMobile("35") }} [1]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Expresión let {{non-standard_inline}}{{CompatNo}}{{CompatNo}}{{ CompatGeckoMobile("1.8.1") }}-{{ CompatGeckoMobile("40") }}[1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
Bloque let {{non-standard_inline}}{{CompatNo}}{{CompatNo}}{{ CompatGeckoMobile("1.8.1") }} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

Notas específicas a Firefox

- - - -

Ver también

- - diff --git a/files/es/web/javascript/referencia/sentencias/return/index.html b/files/es/web/javascript/referencia/sentencias/return/index.html deleted file mode 100644 index 6497e97632..0000000000 --- a/files/es/web/javascript/referencia/sentencias/return/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: return -slug: Web/JavaScript/Referencia/Sentencias/return -tags: - - JavaScript - - Statement -translation_of: Web/JavaScript/Reference/Statements/return ---- -
{{jsSidebar("Statements")}}
- -

Resumen

- -

La sentencia return finaliza la ejecución de la función y especifica un valor para ser devuelto a quien llama a la función.

- -

Sintaxis

- -
return [[ expresion ]];
- -
-
expresion
-
La expresión a retornar. Si se omite, undefined es retornado en su lugar.
-
- -

Description

- -

Cuando una instrucción de retorno se llama en una función, se detiene la ejecución de esta. Si se especifica un valor dado, este se devuelve a quien llama a la función. Si se omite la expresión, undefined se devuelve en su lugar. Todas las siguientes sentencias de retorno rompen la ejecución de la función:

- -
return;
-return true;
-return false;
-return x;
-return x + y / 3;
- -


- La inserción automática Punto y coma

- -

La instrucción de retorno se ve afectada por la inserción automática de punto y coma (ASI). No se permite el terminador de línea entre la palabra clave de retorno y la expresión.

- -
return
-a + b;
- -
-
- -


- se transforma por ASI en:

- -
return;
-a + b;
- -


- La consola le advertirá "código inalcanzable después de la declaración de retorno".

- -
-

A partir de Gecko 40 {{geckoRelease(40)}}, una advertencia es mostrada en la consola si se encuentra código inalcanzable despues de una instrucción return.

-
- -

Ejemplos

- -

Ejemplo: Usando return

- -

La siguiente función devuelve el cuadrado de su argumento, x, donde x es un número.

- -
function cuadrado(x) {
-   return x * x;
-}
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/sentencias/switch/index.html b/files/es/web/javascript/referencia/sentencias/switch/index.html deleted file mode 100644 index c550477f2c..0000000000 --- a/files/es/web/javascript/referencia/sentencias/switch/index.html +++ /dev/null @@ -1,245 +0,0 @@ ---- -title: switch -slug: Web/JavaScript/Referencia/Sentencias/switch -translation_of: Web/JavaScript/Reference/Statements/switch ---- -
{{jsSidebar("Statements")}}
- -

La declaración switch evalúa una expresión, comparando el valor de esa expresión con una instancia case, y ejecuta declaraciones asociadas a ese case, así como las declaraciones en los case que siguen.

- -

Syntaxis

- -
switch (expresión) {
-  case valor1:
-    //Declaraciones ejecutadas cuando el resultado de expresión coincide con el valor1
-    [break;]
-  case valor2:
-    //Declaraciones ejecutadas cuando el resultado de expresión coincide con el valor2
-    [break;]
-  ...
-  case valorN:
-    //Declaraciones ejecutadas cuando el resultado de expresión coincide con valorN
-    [break;]
-  default:
-    //Declaraciones ejecutadas cuando ninguno de los valores coincide con el valor de la expresión
-    [break;]
-}
- -
-
expresión
-
Es una expresión que es comparada con el valor de cada instancia case.
-
case valorN
-
Una instancia case valorN es usada para ser comparada con la expresión. Si la expresión coincide con el valorN, las declaraciones dentro de la instancia case se ejecutan hasta que se encuentre el final de la declaración switch o hasta encontrar una interrupción break.
-
- -
-
default
-
Una instancia default, cuando es declarada, es ejecutada si el valor de la expresión no coincide con cualquiera de las otras instancias case valorN.
-
- -

Descripción

- -

Si ocurre una coincidencia, el programa ejecuta las declaraciones asociadas correspondientes. Si la expresión coincide con múltiples entradas, la primera será la seleccionada, incluso si las mayúsculas son tenidas en cuenta.

- -

El programa primero busca la primer instacia case cuya expresión se evalúa con el mismo valor de la expresión de entrada (usando comparación estricta, ===) y luego transfiere el control a esa cláusula, ejecutando las declaraciones asociadas. Si no se encuentra una cláusula de case coincidente, el programa busca la cláusula default opcional, y si se encuentra, transfiere el control a esa instancia, ejecutando las declaraciones asociadas. Si no se encuentra una instancia default  el programa continúa la ejecución en la instrucción siguiente al final del switch. Por convención, la instancia default es la última cláusula, pero no tiene que ser así.

- -

La declaración break es opcional y está asociada con cada etiqueta de case y asegura que el programa salga del switch una vez que se ejecute la instrucción coincidente y continúe la ejecución en la instrucción siguiente. Si se omite el  break  el programa continúa la ejecución en la siguiente instrucción en la declaración de switch .

- -

Ejemplos

- -

Usando switch

- -

En el siguiente ejemplo, si expresión se resuelve a "Platanos", el algoritmo compara el valor con el case "Platanos" y ejecuta la declaración asociada. Cuando se encuentra un break, el programa sale del condicional switch y ejecuta la declaración que lo procede. Si se omite el break, el case "Cerezas" también es ejecutado.

- -
switch (expr) {
-  case 'Naranjas':
-    console.log('El kilogramo de naranjas cuesta $0.59.');
-    break;
-  case 'Manzanas':
-    console.log('El kilogramo de manzanas cuesta $0.32.');
-    break;
-  case 'Platanos':
-    console.log('El kilogramo de platanos cuesta $0.48.');
-    break;
-  case 'Cerezas':
-    console.log('El kilogramo de cerezas cuesta $3.00.');
-    break;
-  case 'Mangos':
-  case 'Papayas':
-    console.log('El kilogramo de mangos y papayas cuesta $2.79.');
-    break;
-  default:
-    console.log('Lo lamentamos, por el momento no disponemos de ' + expr + '.');
-}
-
-console.log("¿Hay algo más que te quisiera consultar?");
- -

¿Qué pasa si olvido un break?

- -

Si olvidas un break, el script se ejecutará desde donde se cumple la condición y ejecutará el siguiente case independientemente si esta condición se cumple o no. Ver el siguiente ejemplo:

- -
var foo = 0;
-switch (foo) {
-  case -1:
-    console.log('1 negativo');
-    break;
-  case 0: // foo es 0, por lo tanto se cumple la condición y se ejecutara el siguiente bloque
-    console.log(0)
-    // NOTA: el "break" olvidado debería estar aquí
-  case 1: // No hay sentencia "break" en el 'case 0:', por lo tanto este caso también será ejecutado
-    console.log(1);
-    break; // Al encontrar un "break", no será ejecutado el 'case 2:'
-  case 2:
-    console.log(2);
-    break;
-  default:
-    console.log('default');
-}
-
- -

¿Puedo usar un <default> entre condiciones?

- -

Sí, ¡es posible! JavaScript retornará a la instancia default en caso de no encontrar una coincidencia:

- -
var foo = 5;
-switch (foo) {
-  case 2:
-    console.log(2);
-    break; // al encontrar este 'break' no se continuará con el siguiente 'default:'
-  default:
-    console.log('default')
-    // fall-through
-  case 1:
-    console.log('1');
-}
- -

Al estar el case 1: a continuación de default, y al no haber un break de por medio, veremos que la declaración del case 1: será ejecutada, apareciendo el resultado 1 en el log de consola.

- -

Metodos para casos con múltiple criterio

- -

La fuente de esta técnica esta aquí:

- -

Switch statement multiple cases in JavaScript (Stack Overflow)

- -

Operación única con múltiples casos

- -

Este método toma ventaja del hecho de que, si no hay un break debajo de una declaración case, continuará la ejecución hasta el siguiente case, ignorando si en dicho caso se cumple o no el criterio indicado. Comprobar en la sección ¿Qué pasa si olvido un break?

- -

Este es un ejemplo de operación única con sentencia switch secuencial, donde cuatro valores diferentes se comportan exactamente de la misma manera:

- -
var Animal = 'Jirafa';
-switch (Animal) {
-  case 'Vaca':
-  case 'Jirafa':
-  case 'Perro':
-  case 'Cerdo':
-    console.log('Este animal subirá al Arca de Noé.');
-    break;
-  case 'Dinosaurio':
-  default:
-    console.log('Este animal no lo hará.');
-}
- -

Operaciones encadenadas con múltiples casos

- -

Este es un ejemplo de una sentencia switch secuencial con múltiples operaciones, donde, dependiendo del valor entero dado, se pueden recibir diferentes resultados. Esto demuestra que el algoritmo correrá en el orden en que se coloquen las declaraciones case, y que no tiene que ser numéricamente secuencial. En JavaScript, también es posible combinar definiciones con valores "string" dentro de estas declaraciones case.

- -
var foo = 1;
-var output = 'Salida: ';
-switch (foo) {
-  case 10:
-    output += '¿Y ';
-  case 1:
-    output += 'Cuál ';
-    output += 'Es ';
-  case 2:
-    output += 'Tu ';
-  case 3:
-    output += 'Nombre';
-  case 4:
-    output += '?';
-    console.log(output);
-    break;
-  case 5:
-    output += '!';
-    console.log(output);
-    break;
-  default:
-    console.log('Por favor, selecciona un valor del 1 al 6.');
-}
- -

La salida (output) de este ejemplo:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ValueLog text
foo es NaN o no es 1, 2, 3, 4, 5 ni 10Por favor, selecciona un valor del 1 al 6.
10Salida: ¿Y Cuál Es Tu Nombre?
1Salida: Cuál Es Tu Nombre?
2Salida: Tu Nombre?
3Salida: Nombre?
4Salida: ?
5Salida: !
- -

Variables centradas en bloques sin un estamento de switch

- -

Con ECMAScript 2015 (ES6) 

- -

Compatibilidad en Navegadores

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/referencia/sentencias/throw/index.html b/files/es/web/javascript/referencia/sentencias/throw/index.html deleted file mode 100644 index d3e52f83ac..0000000000 --- a/files/es/web/javascript/referencia/sentencias/throw/index.html +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: throw -slug: Web/JavaScript/Referencia/Sentencias/throw -tags: - - JavaScript - - Statement -translation_of: Web/JavaScript/Reference/Statements/throw ---- -
{{jsSidebar("Statements")}}
- -

Resumen

- -

Lanza una excepcion definida por el usuario.

- -

Sintaxis

- -
throw expresion;
- -
-
expresion
-
Expresión a lanzar.
-
- -

Descripción

- -

Utilice la sentencia throw para lanzar una excepción. Cuando lanza una excepción, expresion especifica el valor de la excepción. Cada uno de los siguientes ejemplos lanza una excepción:

- -
throw "Error2"; // genera una excepción con un valor cadena
-throw 42; // genera una excepción con un valor 42
-throw true; // genera una excepción con un valor true
- -

Ejemplos

- -

Ejemplo: Lanzar un objeto

- -

Puede especificar un objeto cuando lanza una excepción. Puede entonces referenciar las propiedades del objeto en el bloque catch. El siguiente ejemplo crea un objeto miExcepcionUsuario del tipo ExceptionUsuario y la utiliza usándola en una sentencia throw.

- -
function ExceptionUsuario(mensaje) {
-   this.mensaje = mensaje;
-   this.nombre = "ExceptionUsuario";
-}
-
-function getNombreMes(mes) {
-   mes = mes - 1; // Ajustar el número de mes al índice del arreglo (1 = Ene, 12 = Dic)
-   var meses = new Array("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul",
-      "Ago", "Sep", "Oct", "Nov", "Dic");
-   if (meses[mes] != null) {
-      return meses[mes];
-   } else {
-      miExcepcionUsuario = new ExceptionUsuario("NumeroMesNoValido");
-      throw miExcepcionUsuario;
-   }
-}
-
-try {
-   // sentencias para try
-   nombreMes = getNombreMes(miMes);
-} catch (excepcion) {
-   nombreMes = "desconocido";
-   registrarMisErrores(excepcion.mensaje, excepcion.nombre); // pasa el objeto exception al manejador de errores
-}
-
- -

Ejemplo: Otro ejemplo sobre lanzar un objeto

- -

El siguiente ejemplo comprueba una cadena de entrada para un código postal de EE.UU. Si el código postal utiliza un formato no válido, la sentencia throw lanza una excepción creando un objeto de tipo ExcepcionFormatoCodigoPostal.

- -
/*
- * Creates a ZipCode object.
- *
- * Accepted formats for a zip code are:
- *    12345
- *    12345-6789
- *    123456789
- *    12345 6789
- *
- * If the argument passed to the ZipCode constructor does not
- * conform to one of these patterns, an exception is thrown.
- */
-
-function ZipCode(zip) {
-   zip = new String(zip);
-   pattern = /[0-9]{5}([- ]?[0-9]{4})?/;
-   if (pattern.test(zip)) {
-      // zip code value will be the first match in the string
-      this.value = zip.match(pattern)[0];
-      this.valueOf = function() {
-         return this.value
-      };
-      this.toString = function() {
-         return String(this.value)
-      };
-   } else {
-      throw new ExcepcionFormatoCodigoPostal(zip);
-   }
-}
-
-function ExcepcionFormatoCodigoPostal(valor) {
-   this.valor = valor;
-   this.mensaje = "no conforme con el formato esperado de código postal";
-   this.toString = function() {
-      return this.valor + this.mensaje
-   };
-}
-
-/*
- * Esto podría estar en un script que valida los datos de una dirección de EE.UU.
- */
-
-var CODIGOPOSTAL_NOVALIDO = -1;
-var CODIGOPOSTAL_DESCONOCIDO_ERROR = -2;
-
-function verificarCodigoPostal(codigo) {
-   try {
-      codigo = new CodigoPostal(codigo);
-   } catch (excepcion) {
-      if (excepcion instanceof ExcepcionFormatoCodigoPostal) {
-         return CODIGOPOSTAL_NOVALIDO;
-      } else {
-         return CODIGOPOSTAL_DESCONOCIDO_ERROR;
-      }
-   }
-   return codigo;
-}
-
-a = verificarCodigoPostal(95060);         // devuelve 95060
-b = verificarCodigoPostal(9560;)          // devuelve -1
-c = verificarCodigoPostal("a");           // devuelve -1
-d = verificarCodigoPostal("95060");       // devuelve 95060
-e = verificarCodigoPostal("95060 1234");  // devuelve 95060 1234
-
- -

Ejemplo: Relanzar una excepción

- -

Puede usar throw para volver a lanzar una excepción después de cogerla. El siguiente ejemplo coge una excepción con un valor numérico y la vuelve a lanzar si el valor es superior a 50. La excepción relanzada propaga hacia arriba la función adjunta o a un nivel superior para que el usuario pueda verla.

- -
try {
-   throw n; // lanza una excepción con un valor numérico
-} catch (excepcion) {
-   if (excepcion <= 50) {
-      // sentencias para manejar la excepción 1-50
-   } else {
-      // no se puede manejar esta excepción, así que se vuelve a lanzar
-      throw excepcion;
-   }
-}
-
- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/sentencias/try...catch/index.html b/files/es/web/javascript/referencia/sentencias/try...catch/index.html deleted file mode 100644 index d429db6163..0000000000 --- a/files/es/web/javascript/referencia/sentencias/try...catch/index.html +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: try...catch -slug: Web/JavaScript/Referencia/Sentencias/try...catch -tags: - - Error - - Excepción - - JavaScript - - Statement -translation_of: Web/JavaScript/Reference/Statements/try...catch ---- -
{{jsSidebar("Statements")}}
- -

La declaración try...catch señala un bloque de instrucciones a intentar (try), y especifica una respuesta si se produce una excepción (catch).

- -
{{EmbedInteractiveExample("pages/js/statement-trycatch.html")}}
- -

Sintaxis

- -
try {
-   try_statements
-}
-[catch (exception_var_1 if condition_1) { // non-standard
-   catch_statements_1
-}]
-...
-[catch (exception_var_2) {
-   catch_statements_2
-}]
-[finally {
-   finally_statements
-}]
-
- -
-
try_statements
-
Las sentencias que serán ejecutadas.
-
- -
-
catch_statements_1, catch_statements_2
-
Sentencias que se ejecutan si una excepción es lanzada en el bloque try.
-
- -
-
exception_var_1, exception_var_2
-
Identificador que contiene un objeto de excepcion asociado a la cláusula catch.
-
- -
-
condition_1
-
Una expresión condicional.
-
- -
-
finally_statements
-
Sentencias que se ejecutan después de que se completa la declaración try . Estas sentencias se ejecutan independientemente de si una excepcion fue lanzada o capturada.
-
- -

Descripción

- -

La sentencia try consiste en un bloque try que contiene una o más sentencias. Las llaves {} se deben utilizar siempre, incluso para una bloques de una sola sentencia. Al menos un bloque catch o un bloque finally debe estar presente. Esto nos da tres formas posibles para la sentencia try:

- -
    -
  1. try...catch
  2. -
  3. try...finally
  4. -
  5. try...catch...finally
  6. -
- -

Un bloque catch contiene sentencias que especifican que hacer si una excepción es lanzada en el bloque try. Si cualquier sentencia dentro del bloque try (o en una funcion llamada desde dentro del bloque try) lanza una excepción, el control cambia inmediatamente al bloque catch . Si no se lanza ninguna excepcion en el bloque try, el bloque catch se omite.

- -

La bloque finally se ejecuta despues del bloque try y el/los bloque(s) catch hayan finalizado su ejecución. Éste bloque siempre se ejecuta, independientemente de si una excepción fue lanzada o capturada.

- -

Puede anidar una o más sentencias try. Si una sentencia try interna no tiene una bloque catch, se ejecuta el bloque catch de la sentencia try que la encierra.

- -

Usted también puede usar la declaración try para manejar excepciones de JavaScript. Consulte la Guía de JavaScript para obtener mayor información sobre excepciones de JavaScript.
-  

- -

Bloque catch incondicional

- -

Cuando solo se utiliza un bloque catch, el bloque catch es ejecutado cuando cualquier excepción es lanzada. Por ejemplo, cuando la excepción ocurre en el siguiente código, el control se transfiere a la cláusula catch.

- -
try {
-   throw "myException"; // genera una excepción
-}
-catch (e) {
-   // sentencias para manejar cualquier excepción
-   logMyErrors(e); // pasa el objeto de la excepción al manejador de errores
-}
-
- -

El bloque catch especifíca un identificador ( e en el ejemplo anterior) que contiene el valor de la excepción. Este valor está solo disponible en el {{Glossary("Scope", "scope")}} de el bloque catch

- -

Bloques catch condicionales

- -

Tambien se pueden crear "bloques catch condicionales", combinando bloques try...catch con estructuras  if...else if...else como estas:

- -
try {
-    myroutine();  // puede lanzar tres tipos de excepciones
-} catch (e) {
-    if (e instanceof TypeError) {
-        // sentencias para manejar excepciones TypeError
-    } else if (e instanceof RangeError) {
-        // sentencias para manejar excepciones RangeError
-    } else if (e instanceof EvalError) {
-        // sentencias para manejar excepciones EvalError
-    } else {
-       // sentencias para manejar cualquier excepción no especificada
-       logMyErrors(e); // pasa el objeto de la excepción al manejador de errores
-}
- -

El identificador de excepciones

- -

Cuando una excepción es lanzada en el bloque try, exception_var (por ejemplo, la e en catch (e)) guarda el valor de la excepción. Se puede usar éste identificador para obtener información acerca de la excepción que fue lanzada. Este valor está solo disponible en el {{Glossary("Scope", "scope")}} de el bloque catch.

- -
function isValidJSON(text) {
-  try {
-    JSON.parse(text);
-    return true;
-  } catch {
-    return false;
-  }
-}
- -

La cláusula finally

- -

La cláusula finally contiene sentencias a ejecutarse después de que las cláusulas try y catch se ejecuten, pero antes de las sentencias que le siguen al bloque try..catch..finally. Note que la cláusula finally se ejecuta sin importar si una excepción es o no lanzada. Si una excepción es lanzada, las instrucciones en la cláusula finally se ejecutan incluso si ninguna cláusula catch maneja la excepción.

- -

Usted puede usar la cláusula finally para hacer que su script falle plácidamente cuando una excepción ocurra; por ejemplo, para hacer una limpieza general, usted puede necesitar liberar un recurso que su script haya retenido.

- -

Puede parecer extraño tener una cláusula relacionada a una excepción que se ejecuta sin importar si hay una excepción o no, pero esta concepción en realidad sirve a un propósito. El punto importante no es que la cláusula finally siempre se ejecuta, si no más bien que el codigo ordinario que le sigue a try..catch no.

- -

Por ejemplo, si otra excepción ocurre dentro de un bloque catch de una declaración try, cualquier codigo restante en el mismo bloque exterior try que encierra ese try..catch (o en el flujo principal, si no es un bloque try exterior) , no será ejecutado, dado que el control es inmediatamente transferido al bloque catch del try exterior (o el generador de error interno, si no es en un bloque try).

- -

Por lo tanto, cualquier rutina de limpieza hecha en esa sección encerrada (o la principal) antes de que exista, será saltada. Sin embargo, si la declaración try tiene un bloque finally, entonces el código de ese bloque finally será ejecutado primero para permitir tal limpieza, y ENTONCES el bloque catch de la otra declaración try (o el generador de error) tomará el control para manejar la segunda excepción.

- -

Ahora, si esa rutina de limpieza debiera ser hecha ya sea que el código del try..catch tenga éxito o no, entonces si el bloque finally se ejecutase solo después de una excepción, el mismo código de limpieza tendría que estar presente dentro y fuera del bloque finally, y por lo tanto no hay razón para no tener el bloque finally solo, y dejarlo ejecutarse sin importar si hay excepciones o no.

- -

El siguiente ejemplo abre un archivo y despues ejecuta sentencias que usan el archivo (JavaScript del lado del servidor permite acceder a archivos). Si una excepción es lanzada mientras el archivo está abierto, la cláusula finally cierra el archivo antes de que el script falle. El código en finally también se ejecuta después de un retorno explícito de los bloques try o catch.

- -
openMyFile()
-try {
-   // retiene un recurso
-   writeMyFile(theData);
-}
-finally {
-   closeMyFile(); // siempre cierra el recurso
-}
-
- -

Ejemplos

- -

Bloques try anidados

- -

Primero, veamos que pasa con esto:

- -
try {
-  try {
-    throw new Error('oops');
-  }
-  finally {
-    console.log('finally');
-  }
-}
-catch (ex) {
-  console.error('outer', ex.message);
-}
-
-// Output:
-// "finally"
-// "outer" "oops"
- -

Ahora, si nosotros ya capturamos la excepción en una declaración try interna agregando un bloque catch.

- -
try {
-  try {
-    throw new Error('oops');
-  }
-  catch (ex) {
-    console.error('inner', ex.message);
-  }
-  finally {
-    console.log('finally');
-  }
-}
-catch (ex) {
-  console.error('outer', ex.message);
-}
-
-// Output:
-// "inner" "oops"
-// "finally"
- -

Y ahora vamos a relanzar el error.

- -
try {
-  try {
-    throw new Error('oops');
-  }
-  catch (ex) {
-    console.error('inner', ex.message);
-    throw ex;
-  }
-  finally {
-    console.log('finally');
-  }
-}
-catch (ex) {
-  console.error('outer', ex.message);
-}
-
-// Output:
-// "inner" "oops"
-// "finally"
-// "outer" "oops"
- -

Cualquier excepción dad será capturada solo una vez por el bloque catch más cercano a menos que sea relanzado. Por supuesto cualquier nueva excepción que se origine en el bloque 'interno' (porque el código en el bloque catch puede hacer algo que lanze un error), será capturado por el bloque 'externo'.

- -

Retornando de un bloque finally

- -

Si el bloque finally retorna un valor, este valor se convierte en el valor de retorno de toda la producción try-catch-finally, a pesar de cualquier sentencia return en los bloques try y catch. Esto incluye excepciones lanzadas dentro del bloque catch.

- -
(function() {
-  try {
-    try {
-      throw new Error('oops');
-    }
-    catch (ex) {
-      console.error('inner', ex.message);
-      throw ex;
-    }
-    finally {
-      console.log('finally');
-      return;
-    }
-  }
-  catch (ex) {
-    console.error('outer', ex.message);
-  }
-})();
-
-// Output:
-// "inner" "oops"
-// "finally"
- -

El "oops" externo no es lanzado debido al retorno en el bloque finally. Lo mismo aplicaría para cualquier valor retornado del bloque catch.

- -

Vea los ejemplos para {{jsxref("Sentencias/throw", "throw")}}.

- -

Vea también

- - diff --git a/files/es/web/javascript/referencia/sentencias/var/index.html b/files/es/web/javascript/referencia/sentencias/var/index.html deleted file mode 100644 index 006e40a270..0000000000 --- a/files/es/web/javascript/referencia/sentencias/var/index.html +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: var -slug: Web/JavaScript/Referencia/Sentencias/var -tags: - - JavaScript - - Statement -translation_of: Web/JavaScript/Reference/Statements/var ---- -
{{jsSidebar("Statements")}}
- -

Resumen

- -

La sentencia var declara una variable, opcionalmente inicializándola con un valor.

- -

Sintaxis

- -
var nombreDeVariable1 [= valor1] [, nombreDeVariable2 [= valor2] ... [, nombreDeVariableN [=valorN]]]; 
- -
-
nombreDeVariableN
-
Representa el nombre que el programador da a la variable. Puede ser cualquier identificador legal.
-
- -
-
valorN
-
Valor inicial de la variable. Puede ser cualquier expresión legal. El valor predeterminado es undefined (en español, indefinida).
-
- -

Descripción

- -

Las  declaraciones de variables, donde sea que ocurran, son procesadas antes de que cualquier otro código sea ejecutado. El ámbito de una variable declarada con la palabra reservada var es su contexto de ejecución en curso, que puede ser la función que la contiene o, para las variables declaradas afuera de cualquier función, un ámbito global. Si re-declaras una variable Javascript, esta no perderá su valor.

- -

Asignar un valor a una variable no declarada implica crearla como variable global (se convierte en una propiedad del objeto global) cuando la asignación es ejecutada. Las diferencias entre una variable declarada y otra sin declarar son:

- -

1. Las variables declaradas se limitan al contexto de ejecución en el cual son declaradas. Las variables no declaradas siempre son globales.

- -
function x() {
-  y = 1;   // Lanza un error de tipo "ReferenceError" en modo estricto ('use strict')
-  var z = 2;
-}
-
-x();
-
-console.log(y); // Imprime "1" 
-console.log(z); // Lanza un error de tipo "ReferenceError": z no está definida afuera de x
- -

2. Las variables declaradas son creadas antes de ejecutar cualquier otro código. Las variables sin declarar no existen hasta que el código que las asigna es ejecutado.

- -
console.log(a);                // Lanza un error de tipo "ReferenceError".
-console.log('trabajando...'); // Nunca se ejecuta.
- -
var a;
-console.log(a);                // Imprime "undefined" o "" dependiendo del navegador.
-console.log('trabajando...'); // Imprime "trabajando...".
- -

3. Las variables declaradas son una propiedad no-configurable de su contexto de ejecución (de función o global). Las variables sin declarar son configurables (p. ej. pueden borrarse).

- -
var a = 1;
-b = 2;
-
-delete this.a; // Lanza un error de tipo "ReferenceError" en modo estricto ('use strict'), de lo contrario falla silenciosamente.
-delete this.b;
-
-console.log(a, b); // Lanza un error de tipo "ReferenceError". 
-// La propiedad 'b' se eliminó y ya no existe.
- -

Debido a esas tres diferencias, fallar al declarar variables muy probablemente llevará a resultados inesperados. Por tanto se recomienda siempre declarar las variables, sin importar si están en una función o un ámbito global. Y en el modo estricto (strict mode) de ECMAScript 5, asignar valor a una variable sin declarar lanzará un error.

- -

Elevación de variables

- -

Como la declaración de variables (y todas las declaraciones en general) se procesa antes de ejecutar cualquier código, declarar una variable en cualquier parte del código es equivalente a declararla al inicio del mismo. Esto también significa que una variable puede parecer usarse antes de ser declarada. Este comportamiento es llamado hoisting (del inglés "elevación"), ya que la declaración de una variable parecer haber sido movida a la cima de la función o código global.

- -
bla = 2;
-var bla;
-// ...
-
-// Es entendido implicitamente como:
-
-var bla;
-bla = 2;
- -

Por esa razón, se recomienda siempre declarar variables al inicio de su ámbito (la cima del código global y la cima del código de función) para que sea claro cuáles variables pertenecen al ámbito de función (local) y cuáles son resueltas en la cadena de ámbito.

- -

Es importante señalar que la elevación afectará la declaración de variables, pero no su inicialización. El valor será asignado precisamente cuando la sentencia de asignación sea alcanzada:

- -
function haz_algo() {
-  console.log(bar); // undefined (valor indefinido)
-  var bar = 111;
-  console.log(bar); // 111
-}
-
-// Se entiende implícitamente como: 
-function haz_algo() {
-  var bar;
-  console.log(bar); // undefined (valor indefinido)
-  bar = 111;
-  console.log(bar); // 111
-}
- -

 

- -

Ejemplos

- -

Declarando e inicializando dos variables

- -
var a = 0, b = 0;
- -

Asignando dos variables con un solo valor de cadena

- -
var a = 'A';
-var b = a;
-
-// Equivalente a:
-
-var a, b = a = 'A';
- -

Sé consciente del orden:

- -
var x = y, y = 'A';
-console.log(x + y); // Imprimirá "undefinedA"
- -

Aquí, 'x' & 'y' son declaradas antes de ejecutarse cualquier código, y la asignación ocurre después. Al momento de evaluar "x = y", 'y' existe así que ningún error "ReferenceError" es lanzado y su valor es 'undefined', de modo que 'x' también tiene asignada el valor 'undefined'. Después, a 'y' se le asigna el valor 'A'. Consecuentemente, luego de la primera línea, 'x' es exactamente igual a 'undefined' & 'y' es igual a 'A', de ahí el resultado.

- -

Initialización de muchas variables

- -
var x = 0;
-
-function f() {
-  var x = y = 1; // 'x' es declarada localmente, ¡'y' no lo es!
-}
-f();
-
-console.log(x, y); // Lanza un error de tipo "ReferenceError" en modo estricto ('y' no está definida). De lo contrario se imprimiría "0, 1".
-// En modo no-estricto:
-// 'x' es la variable global como se esperaría
-// 'y' sin embargo, se sale de la función
- -

Globales implícitas y ámbito externo a una función

- -

Las variables que parecen ser globales implícitas pueden ser referencias a variables en un ámbito externo a  la función:

- -
var x = 0;  // 'x' es declarada globalmente, luego se le asigna el valor 0.
-
-console.log(typeof z); // Imprime "undefined", pues 'z' aún no existe.
-
-function a() { // Cuando 'a()' es invocada,
-  var y = 2;   // 'y' es declarada localmente en la function 'a()', después se le asigna el valor 2.
-
-  console.log(x, y);   // Imprime "0, 2".
-
-  function b() {       // Cuando 'b()' es invocada,
-    x = 3;  // Asigna el valor 3 a la global 'x' ya existente, no crea una nueva variable global.
-    y = 4;  // Asigna 4 a la externa existente 'y', no crea una nueva variable global.
-    z = 5;  // Crea una nueva variable global 'z' y le asigna un valor de 5. 
-  }         // (Lanza un error de tipo "ReferenceError" en modo estricto.)
-
-  b();     // Invocar 'b()' crea 'z' como variable global.
-  console.log(x, y, z);  // Imprime "3, 4, 5".
-}
-
-a();                   // Invocar 'a()' también llama a 'b()'.
-console.log(x, z);     // Imprime "3, 5", porque 'z' ya es una global.
-console.log(typeof y); // Imprime 'undefined' porque 'y' es local en la función 'a()'
diff --git a/files/es/web/javascript/referencia/sentencias/while/index.html b/files/es/web/javascript/referencia/sentencias/while/index.html deleted file mode 100644 index 8eab047884..0000000000 --- a/files/es/web/javascript/referencia/sentencias/while/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: while -slug: Web/JavaScript/Referencia/Sentencias/while -tags: - - JavaScript - - Statement -translation_of: Web/JavaScript/Reference/Statements/while ---- -
{{jsSidebar("Statements")}}
- -

Resumen

- -

Crea un bucle que ejecuta una sentencia especificada mientras cierta condición se evalúe como verdadera. Dicha condición es evaluada antes de ejecutar la sentencia

- -

Sintaxis

- -
while (condicion)
-  sentencia
-
- -
-
condicion
-
Una expresión que se evalúa antes de cada paso del bucle. Si esta condición se evalúa como verdadera, se ejecuta sentencia. Cuando la condición se evalúa como false, la ejecución continúa con la sentencia posterior al bucle while.
-
- -
-
sentencia
-
Una sentecia que se ejecuta mientras la condición se evalúa como verdadera. Para ejecutar múltiples sentencias dentro de un bucle, utiliza una sentencia {{jsxref("Sentencias/block", "block")}} ({ ... }) para agrupar esas sentencias.
-
- -

Ejemplos

- -

El siguiente bucle while itera mientras n es menor que tres.

- -
n = 0;
-x = 0;
-while (n < 3) {
-  n ++;
-  x += n;
-}
-
- -

Cada interación, el bucle incrementa n y la añade a x. Por lo tanto, x y n toman los siguientes valores:

- - - -

Después de completar el tercer pase, la condición n < 3 no será verdadera más tiempo, por lo que el bucle terminará.

- -

Vea También

- - diff --git a/files/es/web/javascript/referencia/sentencias/with/index.html b/files/es/web/javascript/referencia/sentencias/with/index.html deleted file mode 100644 index d5dc78d600..0000000000 --- a/files/es/web/javascript/referencia/sentencias/with/index.html +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: with -slug: Web/JavaScript/Referencia/Sentencias/with -translation_of: Web/JavaScript/Reference/Statements/with ---- -
El uso de la declaración no es recomendado,  ya que puede ser el origen de los errores de confusión y problemas de compatibilidad. See the "Ambiguity Con" paragraph in the "Description" section below for details.
- -
{{jsSidebar("Statements")}}
- -

La sentencia with extiende el alcance de una cadena con la declaración.

- -

Sintaxis

- -
with (expresión) {
-  declaración
-}
-
- -
-
expresión
-
Añade la expresión dada a la declaración. Los parentesis alrededor de la expresión son necesarios.
-
declaración
-
Se puede ejecutar cualquier declaración. Para ejecutar varias declaraciónes, utilizar una declaración de bloque ({ ... }) para agrupar esas declaraciónes.
-
- -

Descripción

- -

JavaScript looks up an unqualified name by searching a scope chain associated with the execution context of the script or function containing that unqualified name. The 'with' statement adds the given object to the head of this scope chain during the evaluation of its statement body. If an unqualified name used in the body matches a property in the scope chain, then the name is bound to the property and the object containing the property. Otherwise a {{jsxref("ReferenceError")}} is thrown.

- -
Using with is not recommended, and is forbidden in ECMAScript 5 strict mode. The recommended alternative is to assign the object whose properties you want to access to a temporary variable.
- -

Performance pro & contra

- -

Pro: The with statement can help reduce file size by reducing the need to repeat a lengthy object reference without performance penalty. The scope chain change required by 'with' is not computationally expensive. Use of 'with' will relieve the interpreter of parsing repeated object references. Note, however, that in many cases this benefit can be achieved by using a temporary variable to store a reference to the desired object.

- -

Contra: The with statement forces the specified object to be searched first for all name lookups. Therefore all identifiers that aren't members of the specified object will be found more slowly in a 'with' block. Where performance is important, 'with' should only be used to encompass code blocks that access members of the specified object.

- -

Ambiguity contra

- -

Contra: The with statement makes it hard for a human reader or JavaScript compiler to decide whether an unqualified name will be found along the scope chain, and if so, in which object. So given this example:

- -
function f(x, o) {
-  with (o)
-    print(x);
-}
- -

Only when f is called is x either found or not, and if found, either in o or (if no such property exists) in f's activation object, where x names the first formal argument. If you forget to define x in the object you pass as the second argument, or if there's some similar bug or confusion, you won't get an error -- just unexpected results.

- -

Contra: Code using with may not be forward compatible, especially when used with something else than a plain object. Consider this example:

- -
-
function f(foo, values) {
-    with (foo) {
-        console.log(values)
-    }
-}
-
- -

If you call f([1,2,3], obj) in an ECMAScript 5 environment, then the values reference inside the with statement will resolve to obj. However, ECMAScript 6 introduces a values property on Array.prototype (so that it will be available on every array). So, in a JavaScript environment that supports ECMAScript 6, the values reference inside the with statement will resolve to [1,2,3].values.

-
- -

Examples

- -

Using with

- -

The following with statement specifies that the Math object is the default object. The statements following the with statement refer to the PI property and the cos and sin methods, without specifying an object. JavaScript assumes the Math object for these references.

- -
var a, x, y;
-var r = 10;
-
-with (Math) {
-  a = PI * r * r;
-  x = r * cos(PI);
-  y = r * sin(PI / 2);
-}
- -

Specifications

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES6', '#sec-with-statement', 'with statement')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-12.10', 'with statement')}}{{Spec2('ES5.1')}}Now forbidden in strict mode.
{{SpecName('ES3', '#sec-12.10', 'with statement')}}{{Spec2('ES3')}} 
{{SpecName('ES1', '#sec-12.10', 'with statement')}}{{Spec2('ES1')}}Initial definition
- -

Browser compatibility

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
-
- -

See also

- - diff --git a/files/es/web/javascript/referencia/template_strings/index.html b/files/es/web/javascript/referencia/template_strings/index.html deleted file mode 100644 index 708c879383..0000000000 --- a/files/es/web/javascript/referencia/template_strings/index.html +++ /dev/null @@ -1,314 +0,0 @@ ---- -title: Plantillas literales (plantillas de cadenas) -slug: Web/JavaScript/Referencia/template_strings -tags: - - ECMAScript 2015 - - Experimental - - Expérimental(2) - - JavaScript -translation_of: Web/JavaScript/Reference/Template_literals ---- -
{{JsSidebar("More")}}
- -

Las plantillas literales son cadenas literales que habilitan el uso de expresiones incrustadas. Con ellas, es posible utilizar cadenas de caracteres de más de una línea, y funcionalidades de interpolación de cadenas de caracteres.

- -

En ediciones anteriores de la especificación ES2015, solían llamarse "plantillas de cadenas de caracteres".

- -

Sintaxis

- -
`texto de cadena de caracteres`
-
-`línea 1 de la cadena de caracteres
- línea 2 de la cadena de caracteres`
-
-`texto de cadena de caracteres ${expresión} texto adicional`
-
-etiqueta`texto de cadena de caracteres ${expresión} texto adicional`
-
- -

Descripción

- -

Las plantillas literales se delimitan con el caracter de comillas o tildes invertidas (` `) (grave accent), en lugar de las comillas sencillas o dobles.

- -

Las plantillas de cadena de caracteres pueden contener marcadores, identificados por el signo de dólar y envueltos en llaves (${expresión}). Las expresiones contenidas en los marcadores, junto con el texto entre ellas, son enviados como argumentos a una función.

- -

La función por defecto sencillamente concatena las partes para formar una única cadena de caracteres. Si hay una expresión antes de la plantilla literal (aquí indicada mediante etiqueta), se le conoce como "plantilla etiquetada". En este caso, la expresión de etiqueta (típicamente una función) es llamada con la plantilla literal como parámetro, que luego puede ser manipulada antes de ser devuelta.

- -

En caso de querer escapar una comilla o tilde invertida en una plantilla literal, se debe poner una barra invertida (\) antes de la comilla o tilde invertida.

- -
`\`` === '`' // --> true (cierto)
- -

Cadenas de más de una línea

- -

Los caracteres de fin de línea encontrados forman parte de la plantilla literal.

- -

Utilizando cadenas de caracteres normales, sería necesario utilizar la siguiente sintaxes para producir cadenas de más de una línea:

- -
console.log('línea 1 de cadena de texto\n' +
-'\línea 2 de cadena de texto');
-// "línea 1 de cadena de texto
-// línea 2 de cadena de texto"
-
- -

Utilizando plantillas literales, se puede obtener el mismo resultado de la siguiente forma:

- -
console.log(`línea 1 de la cadena de texto
-línea 2 de la cadena de texto`);
-// "línea 1 de la cadena de texto
-// línea 2 de la cadena de texto"
- -

Interpolación de expresiones

- -

Para insertar expresiones dentro de cadenas de caracteres normales, se utilizaría la siguiente sintaxis:

- -
let a = 5;
-let b = 10;
-console.log('Quince es ' + (a + b) + ' y\nno ' + (2 * a + b) + '.');
-// "Quince es 15 y
-// no 20."
- -

Ahora, con las plantillas literales, se pueden utilizar sus nuevas capacidades (es decir, insertar expresiones con ${ } e incluir caracteres de fin de linea literales dentro de la cadena) para simplificar la sintaxis:

- -
let a = 5;
-let b = 10;
-console.log(`Quince es ${a + b} y
-no ${2 * a + b}.`);
-// "Quince es 15 y
-// no 20."
- -

Anidamiento de plantillas

- -

En ciertos casos, anidar una plantilla es la forma más fácil, e incluso más legible, de tener cadenas configurables. Dentro de una plantilla con tildes invertidas, es sencillo permitir tildes invertidas interiores simplemente usándolas dentro de un marcador de posición ${ } dentro de la plantilla.

- -

Por ejemplo, si la condición a es true (cierta): entonces return (devuelva) este literal con plantilla.

- -

En ES5:

- -
let classes = 'header'
-classes += (isLargeScreen() ?
-   '' : item.isCollapsed ?
-     ' icon-expander' : ' icon-collapser');
- -

En ES2015 con plantillas literales y sin anidamiento:

- -
const classes = `header ${ isLargeScreen() ? '' :
-    (item.isCollapsed ? 'icon-expander' : 'icon-collapser') }`;
- -

En ES5 con plantillas literales anidadas:

- -
const classes = `header ${ isLargeScreen() ? '' :
- `icon-${item.isCollapsed ? 'expander' : 'collapser'}` }`;
- -

Plantillas etiquetadas

- -

Una forma más avanzada de plantillas literales son las plantillas etiquetadas.

- -

Con ellas es posible modificar la salida de las plantillas utilizando una función. El primer argumento contiene un array con una o más cadenas de caracteres. El segundo y subsiguientes argumentos se asocian con las expresiones de la plantilla.

- -

La función de etiqueta puede ejecutar cualesquiera operaciones deseadas con estos argumentos, y luego devolver la cadena manipulada. (También puede devolver algo totalmente distinto, como se muestra en uno de los siguientes ejemplos.)

- -

El nombre de la función utilizada con la etiqueta no es nada especial, se puede utilizar cualquier nombre de función en su lugar.

- -
let persona = 'Mike';
-let edad = 28;
-
-function myTag(strings, expPersona, expEdad)
-{
-  let str0 = strings[0]; // "Ese "
-  let str1 = strings[1]; // " es un "
-
-  // Tecnicamente, hay una cadena de
-  // caracteres después de la expresión
-  // final (en nuestro ejemplo) pero
-  // está vacia (""), asi que se ignora.
-  // let str2 = strings[2];
-
-  let strEdad;
-  if (expEdad > 99)
-  {
-    strEdad = 'viejo';
-  }
-  else
-  {
-    strEdad = 'joven';
-  }
-
-  // Podemos incluso retornar una cadena de
-  // caracteres utilizando una plantilla literal.
-  return `${str0}${expPersona}${str1}${strEdad}`;
-}
-
-var salida = myTag`Ese ${ persona } es un ${ edad }`;
-
-console.log(salida);
-// Ese Mike es un joven
-
- -

Las funciones de etiqueta incluso pueden devolver valores que no sean cadenas de caracteres:

- -
function plantilla(cadenas, ...claves) {
-  return (function(...valores) {
-    let diccio = valores[valores.length - 1] || {};
-    let resultado = [cadenas[0]];
-    claves.forEach(function(clave, i) {
-      let valor = Number.isInteger(clave) ? valores[clave] : diccio[clave];
-      resultado.push(valor, cadenas[i + 1]);
-    });
-    return resultado.join('');
-  });
-}
-
-let t1Closure = plantilla`¡${0}${1}${2}${2}${3}!`;
-//let t1Closure = plantilla(["¡","","","","","","!"],0,1,2,3);
-t1Closure('H', 'U', 'R', 'A');              // "¡HURRA!"
-
-let t2Closure = plantilla`${0} ${'foo'}!`;
-//let t2Closure = plantilla(["¡",""," ","!"],0,"foo");
-t2Closure('Hola', {foo: 'Mundo'}); // "¡Hola Mundo!"
-
-let t3Closure = plantilla`Me llamo ${'nombre'}. Tengo casi ${'edad'} años.`;
-//let t3Closure = plantilla(["Me llamo ", ". Tengo casi ", " años."], "nombre", "edad");
-t3Closure('foo', {nombre: 'MDN', edad: 30}); //"Me llamo MDN. Tengo casi 30 años."
-t3Closure({nombre: 'MDN', edad: 30}); //"Me llamo MDN. Tengo casi 30 años."
- -

Cadenas en crudo (raw)

- -

La propiedad especial raw, disponible en el primer argumento de la función de etiqueta, permite acceso a las cadenas de caracteres tal como fueron ingresadas, sin procesar secuencias de escape.

- -
function etiqueta(cadenas) {
-  console.log(cadenas.raw[0]);
-}
-
-etiqueta`texto de cadena de caracteres 1 \n texto de cadena de caracteres 2`;
-// muestra "texto de cadena de caracteres 1 \n texto de cadena de caracteres 2" ,
-// incluyendo los caracteres '\' y 'n'
- -

Adicionalmente, el método {{jsxref("String.raw()")}} permite crear cadenas de caracteres en crudo tal como serían generadas por la función por defecto de plantilla, concatenando sus partes.

- -
let cadena = String.raw`¡Hola\n${2+3}!`;
-// "¡Hola\n5!"
-
-cadena.length;
-// 9
-
-Array.from(cadena).join(',');
-// "¡,H,o,l,a,\,n,5,!"
-
- -

Plantillas etiquetadas y secuencias de escape

- -

Comportamiento en ES2016

- -

Comenzando con ECMAScript 2016, las plantillas etiquetadas se comportan de acuerdo con las normas de las siguientes secuencias de escape:

- - - -

Esto significa que una plantilla etiquetada como la siguiente podría causar problemas, dado que, de acuerdo con la gramática de ECMAScript, un analizador buscará secuencias de escape de formato Unicode válidas pero encontrará sintaxis equivocado:

- -
latex`\unicode`
-// En ECMAScript 2016 y versiones anteriores, lanza
-// SyntaxError: malformed Unicode character escape sequence
- -

Revision de secuencias de escape no permitidas en ES2018

- -

Las plantillas etiquetadas deberías permitir la inserción de lenguages (como los DSL, o LaTeX), en donde otras secuencias de escape se ven comúnmente. La propuesta para ECMAScript Template Literal Revision (Revisión de Plantilla Literal) (Cuarta Etapa, en camino a ser integrada al estándar de ECMAScript 2018) elimina la restricción de las secuencias de escape en ECMAScript para las plantillas etiquetadas.

- -

Aún así, las secuencias de escape no permitidas deben ser representadas en la representación "cocinada" de la cadena. Aparecerán como elementos no definidos en el array llamado "cocinado" en el siguiente ejemplo.

- -
function latex(str) {
-  return { "cocinado": str[0], "en crudo": str.raw[0] }
-}
-
-latex`\unicode`
-
-// { cocinado: undefined, en crudo: "\\unicode" }
- -

Cabe destacar que la restricción para secuencias de escape solo ha sido eliminada para plantillas etiquetadas. Aún permanece para plantillas literales sin etiqueta:

- -
let bad = `bad escape sequence: \unicode`;
- -

Especificaciones

- - - - - - - - - - - - - - -
EspecificaciónStatusComentarios
{{SpecName('ES6', '#sec-template-literals', 'Template Literals')}}
- {{SpecName('ES6', '#sec-tagged-templates', 'Tagged Templates')}}
{{Spec2('ES6')}}Definición inicial.
- -

Compatibilidad de navegadores

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
FuncionalidadChromeFirefox (Gecko)Internet ExplorerOperaSafari
Soporte básico{{CompatChrome(41)}}{{CompatGeckoDesktop("34")}}{{CompatNo}}{{CompatOpera(29)}}{{CompatSafari(9.1)}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FuncionalidadAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Soporte básico{{CompatAndroid(67)}} -

{{CompatChrome(71)}}

-
{{CompatGeckoMobile("63")}}{{CompatNo}}{{CompatOpera(46)}}{{CompatSafari(9)}}
-
- -

Ver también

- - diff --git a/files/es/web/javascript/typed_arrays/index.html b/files/es/web/javascript/typed_arrays/index.html new file mode 100644 index 0000000000..ba82a49ebd --- /dev/null +++ b/files/es/web/javascript/typed_arrays/index.html @@ -0,0 +1,272 @@ +--- +title: Arreglos tipados de JavaScript +slug: Web/JavaScript/Vectores_tipados +tags: + - Arreglo tipado + - Guía + - JavaScript +translation_of: Web/JavaScript/Typed_arrays +--- +
{{JsSidebar("Advanced")}}
+ +

Los arreglos tipados en JavaScript son objetos similares a arreglos que proporcionan un mecanismo para leer y escribir datos binarios sin procesar en búferes de memoria. Como ya sabrás, los objetos {{jsxref("Array", "Arreglo")}} crecen y se encogen dinámicamente y pueden tener cualquier valor de JavaScript. Los motores de JavaScript realizan optimizaciones para que estos arreglos sean rápidos.

+ +

Sin embargo, a medida que las aplicaciones web se vuelven cada vez más poderosas, agregando características como manipulación de audio y video, acceso a datos sin procesar usando WebSockets, etc., ha quedado claro que hay momentos en los que sería útil que el código JavaScript pudiera manipular rápida y fácilmente datos binarios sin procesar. Aquí es donde entran en juego los arreglos tipados. Cada entrada en un arreglo tipado de JavaScript es un valor binario sin procesar en uno de los formatos admitidos, desde números enteros de 8 bits hasta números de punto flotante de 64 bits.

+ +

Sin embargo, los arreglos tipados no se deben confundir con los arreglos normales, ya que llamar a {{JSxRef("Array.isArray()")}} en un arreglo tipado devuelve false. Además, no todos los métodos disponibles para arreglos normales son compatibles con arreglos tipados (por ejemplo, push y pop).

+ +

Búferes y vistas: arquitectura de los arreglos tipados

+ +

Para lograr la máxima flexibilidad y eficiencia, los arreglos de JavaScript dividen la implementación en búferes y vistas. Un búfer (implementado por el objeto {{jsxref("ArrayBuffer")}} es un objeto que representa una porción de datos; no tiene ningún formato del que hablar y no ofrece ningún mecanismo para acceder a su contenido. Para acceder a la memoria contenida en un búfer, necesitas usar una vista. Una vista proporciona un contexto — es decir, un tipo de dato, un desplazamiento inicial y el número de elementos — que convierte los datos en un arreglo tipado.

+ +

Arreglos tipados en ArrayBuffer

+ +

ArrayBuffer

+ +

{{jsxref("ArrayBuffer")}} es un tipo de dato que se utiliza para representar un búfer de datos binarios genérico de longitud fija. No puedes manipular directamente el contenido de un ArrayBuffer; en su lugar, crea una vista de arreglo tipado o un {{JSxRef("DataView")}} que representa el búfer en un formato específico, y lo usa para leer y escribir el contenido del búfer.

+ +

Vistas de arreglos tipados

+ +

Las vistas de arreglos tipados tienen nombres autodescriptivos y proporcionan vistas para todos los tipos numéricos habituales tal como Int8, Uint32, Float64 y así sucesivamente. Hay una vista de arreglo tipado especial, la Uint8ClampedArray. Esta fija los valores entre 0 y 255. {{JSxRef("../Data_structures", "Tipos de datos JavaScript")}}

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TipoIntervalo de valoresTamaño en bytesDescripciónTipo de IDL webTipo C equivalente
{{JSxRef("Int8Array")}}-128 a 1271Dos enteros complementarios de 8 bits con signobyteint8_t
{{JSxRef("Uint8Array")}}0 a 2551Entero de 8-bit sin signooctetuint8_t
{{JSxRef("Uint8ClampedArray")}}0 a 2551Entero de 8 bits sin signo (sujeto)octetuint8_t
{{JSxRef("Int16Array")}}-32768 a 327672Dos enteros complementarios de 16 bits con signoshortint16_t
{{JSxRef("Uint16Array")}}0 a 655352Entero de 16 bits sin signoShort sin signouint16_t
{{JSxRef("Int32Array")}}-2147483648 a 21474836474dos enteros complementarios de 32 bits con signolongint32_t
{{JSxRef("Uint32Array")}}0 a 42949672954Enteros de 32 bits sin signolong sin signouint32_t
{{JSxRef("Float32Array")}}1.2×10-38 a 3.4×10384Número de coma flotante IEEE de 32 bits (7 dígitos significativos, p. ej., 1.1234567)float sin restriccionesfloat
{{JSxRef("Float64Array")}}1.2×10-38 a 3.4×103088Número de coma flotante IEEE de 64 bits (16 dígitos significativos, p. ej., 1.123...15)doble sin restriccionesdouble
{{JSxRef("BigInt64Array")}}-263 a 263-18Dos enteros complementarios de 64 bits con signobigintint64_t (long long con signo)
{{JSxRef("BigUint64Array")}}0 a 264-18Entero de 64 bits sin signobigintuint64_t (long long sin signo)
+ +

DataView

+ +

{{jsxref("DataView")}} es una interfaz de bajo nivel que proporciona una API captadora (getter)/(setter) establecedora para leer y escribir datos arbitrarios en el búfer. Esto es útil cuando se trata de diferentes tipos de datos, por ejemplo. Las vistas de arreglos tipados están en el orden de bytes nativo (consulta {{Glossary("Endianness")}} de tu plataforma. Con un DataView puedes controlar el orden de bytes. Es big-endian de manera predeterminada y se puede establecer en little-endian en los métodos captadores/establecedores.

+ +

APIs web que utilizan arreglos tipados

+ +

Estos son algunos ejemplos de APIs que utilizan arreglos tipados; hay otras, y todo el tiempo surgen más.

+ +
+
{{Link("/en-US/docs/Web/API/FileReader", "FileReader.prototype.readAsArrayBuffer()", "#readAsArrayBuffer()")}}
+
El método FileReader.prototype.readAsArrayBuffer() comienza a leer el contenido del {{Link("/es/docs/Web/API/Blob", "Blob")}} o {{Link("/es/docs/Web/API/File", "File")}}.
+
XMLHttpRequest.prototype.send()
+
El método send() de instancias de XMLHttpRequest ahora admiten arreglos tipados y objetos {{JSxRef("ArrayBuffer")}} como argumento.
+
{{Link("/en-US/docs/Web/API/ImageData", "ImageData.data")}}
+
Es un {{JSxRef("Uint8ClampedArray")}} que representa un arreglo unidimensional que contiene los datos en el orden RGBA, con valores enteros entre 0 y 255 inclusive.
+
+ +

Ejemplos

+ +

Usar vistas con búferes

+ +

En primer lugar, necesitaremos crear un búfer, aquí con una longitud fija de 16 bytes:

+ +
let buffer = new ArrayBuffer(16);
+
+ +

En este punto, tenemos una porción de memoria cuyos bytes están todos preiniciados a 0. Sin embargo, no hay mucho que podamos hacer con él. Podemos confirmar que de hecho tiene 16 bytes de longitud, y eso es todo:

+ +
if (buffer.byteLength === 16) {
+  console.log("Sí, son 16 bytes");
+} else {
+  console.log("¡Oh no, es del tamaño incorrecto!");
+}
+
+ +

Antes de que podamos trabajar realmente con este búfer, necesitamos crear una vista. Creemos una vista que trate los datos en el búfer como un arreglo de enteros de 32 bits con signo:

+ +
let int32View = new Int32Array(buffer);
+
+ +

Ahora podemos acceder a los campos del arreglo como un arreglo normal:

+ +
for (let i = 0; i < int32View.length; i++) {
+  int32View[i] = i * 2;
+}
+
+ +

Esto completa las 4 entradas en el arreglo (4 entradas de 4 bytes cada una suman 16 bytes en total) con los valores 0, 2, 4 y 6.

+ +

Múltiples vistas sobre los mismos datos

+ +

Las cosas comienzan a ponerse realmente interesantes cuando consideras que puedes crear múltiples vistas sobre los mismos datos. Por ejemplo, dado el código anterior, podemos continuar así:

+ +
let int16View = new Int16Array(buffer);
+
+for (let i = 0; i < int16View.length; i++) {
+  console.log('Entrada ' + i + ': ' + int16View[i]);
+}
+
+ +

Aquí creamos una vista entera de 16 bits que comparte el mismo búfer que la vista existente de 32 bits y sacamos todos los valores en el búfer como enteros de 16 bits. Ahora obtenemos la salida 0, 0, 2, 0, 4, 0, 6, 0.

+ +

Sin embargo, puedes dar un paso más. Considera esto:

+ +
int16View[0] = 32;
+console.log('La entrada 0 en el arreglo de 32 bits ahora es ' + int32View[0]);
+
+ +

La salida de esto es "La entrada 0 en el arreglo de 32 bits ahora es 32".

+ +

En otras palabras, los dos arreglos se ven simplemente en el mismo búfer de datos, tratándolo como formatos diferentes. Lo puedes hacer con cualquier {{JSxRef("Global_Objects/TypedArray", "tipo de vista", "#TypedArray_objects")}}.

+ +

Trabajar con complejas estructuras de datos

+ +

Al combinar un solo búfer con múltiples vistas de diferentes tipos, comenzando con diferentes desplazamientos en el búfer, puedes interactuar con objetos de datos que contienen múltiples tipos de datos. Esto te permite, por ejemplo, interactuar con complejas estructuras de datos {{Link("/es/docs/Web/WebGL", "WebGL")}}, archivos de datos o estructuras C que necesitas utilizar mientras usas {{Link("/en-US/docs/Mozilla/js-ctypes", "js-ctypes")}}.

+ +

Considera esta estructura C:

+ +
struct someStruct {
+  unsigned long id;
+  char username[16];
+  float amountDue;
+};
+ +

Puedes acceder a un búfer que contiene datos en un formato como este:

+ +
let buffer = new ArrayBuffer(24);
+
+// ... lee los datos en el búfer ...
+
+let idView = new Uint32Array(buffer, 0, 1);
+let usernameView = new Uint8Array(buffer, 4, 16);
+let amountDueView = new Float32Array(buffer, 20, 1);
+ +

Luego puedes acceder, por ejemplo, al monto adeudado con amountDueView[0].

+ +
Nota: La {{interwiki("wikipedia", "Data_structure_alignment")}} en una estructura C depende de la plataforma. Toma precauciones y consideraciones para estas diferencias de relleno.
+ +

Conversión a arreglos normales

+ +

Después de procesar un arreglo con tipo, a veces es útil volver a convertirla en un arreglo normal para beneficiarse del prototipo {{jsxref("Array")}}. Esto se puede hacer usando {{JSxRef("Array.from()")}}, o usando el siguiente código donde Array.from() no es compatible.

+ +
let typedArray = new Uint8Array([1, 2, 3, 4]),
+    normalArray = Array.prototype.slice.call(typedArray);
+normalArray.length === 4;
+normalArray.constructor === Array;
+
+ +

Especificaciones

+ + + + + + + + + + + + +
Especificación
{{SpecName('ESDraft', '#sec-typedarray-objects', 'TypedArray Objects')}}
+ +

Compatibilidad del navegador

+ + + +

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

+ +

Ve también

+ + diff --git "a/files/es/web/javascript/una_re-introducci\303\263n_a_javascript/index.html" "b/files/es/web/javascript/una_re-introducci\303\263n_a_javascript/index.html" deleted file mode 100644 index b8f2756627..0000000000 --- "a/files/es/web/javascript/una_re-introducci\303\263n_a_javascript/index.html" +++ /dev/null @@ -1,960 +0,0 @@ ---- -title: Una reintroducción a JavaScript (Tutorial de JS) -slug: Web/JavaScript/Una_re-introducción_a_JavaScript -tags: - - Aprender - - Guía - - Intermedio - - Intro - - JavaScript - - Tutorial - - introducción -translation_of: Web/JavaScript/A_re-introduction_to_JavaScript ---- -
{{jsSidebar}}
- - -

¿Por qué una reintroducción? Porque {{Glossary("JavaScript")}} es conocido por ser el lenguaje de programación más incomprendido. A menudo se le ridiculiza como un juguete, pero debajo de esa capa de engañosa simplicidad, aguardan poderosas características del lenguaje. Ahora un increíble número de aplicaciones de alto perfil utilizan JavaScript, lo cual demuestra que un conocimiento más profundo de esta tecnología es una habilidad importante para cualquier desarrollador web o móvil.

- -

Es útil comenzar con una descripción general de la historia del lenguaje. JavaScript fue creado en 1995 por Brendan Eich mientras era ingeniero en Netscape. JavaScript se lanzó por primera vez con Netscape 2 a principios de 1996. Originalmente se iba a llamar LiveScript, pero se le cambió el nombre en una desafortunada decisión de marketing que intentó capitalizar la popularidad del lenguaje Java de Sun Microsystem, a pesar de que los dos tienen muy poco en común. Esto ha sido una fuente de confusión desde entonces.

- -

Varios meses después, Microsoft lanzó JScript con Internet Explorer 3. Era un JavaScript prácticamente compatible. Varios meses después de eso, Netscape envió JavaScript a Ecma International, una organización europea de estándares, que resultó en la primera edición del estándar {{Glossary("ECMAScript")}} ese año. El estándar recibió una actualización significativa como ECMAScript edición 3 en 1999, y se ha mantenido bastante estable desde entonces. La cuarta edición fue abandonada debido a diferencias políticas sobre la complejidad del lenguaje. Muchas partes de la cuarta edición formaron la base para la edición 5 de ECMAScript, publicada en diciembre de 2009, y para la sexta edición principal del estándar, publicada en junio de 2015.

- -
-

Debido a que es más familiar, nos referiremos a ECMAScript como "JavaScript" de ahora en adelante.

-
- -

A diferencia de la mayoría de los lenguajes de programación, el lenguaje JavaScript no tiene un concepto de entrada o salida. Está diseñado para ejecutarse como un lenguaje de scripting en un entorno hospedado, y depende del entorno para proporcionar los mecanismos para comunicarse con el mundo exterior. El entorno de alojamiento más común es el navegador, pero también se pueden encontrar intérpretes de JavaScript en una gran lista de otros lugares, incluidos Adobe Acrobat, Adobe Photoshop, imágenes SVG, el motor de widgets de Yahoo, entornos de lado del servidor como Node.js, bases de datos NoSQL como Apache CouchDB de código abierto, computadoras integradas, entornos de escritorio completos como GNOME (una de las IGU —Interfaz Gráfica de Usuario— más populares para sistemas operativos GNU/Linux), y otros.

- -

Información general

- -

JavaScript es un lenguaje dinámico múltiparadigma con tipos y operadores, objetos estándar integrados y métodos. Su sintaxis se basa en los lenguajes Java y C — muchas estructuras de esos lenguajes también se aplican a JavaScript. JavaScript admite la programación orientada a objetos con prototipos de objetos, en lugar de clases (consulta más información sobre {{jsxref("Inheritance_and_the_prototype_chain", "herencia prototípica")}} y ES2015 {{jsxref("Reference/Classes", "clases")}}. JavaScript también admite la programación funcional — debido a que son objetos, las funciones se pueden almacenar en variables y pasarse como cualquier otro objeto.

- -

Comencemos observando los componentes básicos de cualquier lenguaje: los tipos. Los programas JavaScript manipulan valores, y todos esos valores pertenecen a un tipo. Los tipos de JavaScript son:

- - - -

... oh, y {{jsxref("undefined")}} y {{jsxref("null")}}, que son ... ligeramente extraños. Y {{jsxref("Array")}}, que es un tipo de objeto especial. Y {{jsxref("Date", "Fechas (Date)")}} y {{jsxref("RegExp", "Expresiones regulares (RegExp)")}}, que son objetos que obtienes de forma gratuita. Y para ser técnicamente precisos, las funciones son solo un tipo especial de objeto. Por lo tanto, el diagrama de tipos se parece más a este:

- - - -

Y también hay algunos tipos {{jsxref("Error")}} integrados. Sin embargo, las cosas son mucho más fáciles si nos atenemos al primer diagrama, por lo que discutiremos los tipos enumerados allí por ahora.

- -

Números

- -

Los números en JavaScript son "valores IEEE 754 de formato de 64 bits de doble precisión", de acuerdo con las especificaciones. No existen números enteros en JavaScript (excepto {{jsxref("BigInt")}}), por lo que debes tener un poco de cuidado. Ve este ejemplo:

- -
console.log(3 / 2);             // 1.5, not 1
-console.log(Math.floor(3 / 2)); // 1
- -

Entonces, un entero aparente de hecho implícitamente es un float.

- -

Además, ten cuidado con cosas como:

- -
0.1 + 0.2 == 0.30000000000000004;
-
- -

En la práctica, los valores enteros se tratan como enteros de 32 bits, y algunas implementaciones incluso los almacenan de esa manera hasta que se les pide que realicen una instrucción que sea válida en un Número pero no en un entero de 32 bits. Esto puede ser importante para operaciones bit a bit.

- -

Se admiten los {{jsxref("Operators", "operadores", "#Operadores_aritméticos")}} estándar, incluidas la aritmética de suma, resta, módulo (o resto), etc. También hay un objeto incorporado que no mencionamos anteriormente llamado {{jsxref("Math")}} que proporciona funciones matemáticas avanzadas y constantes:

- -
Math.sin(3.5);
-var circumference = 2 * Math.PI * r;
-
- -

Puedes convertir una cadena en un número entero usando la función {{jsxref("Objetos_Globales/parseInt", "parseInt()")}} incorporada. Esta toma la base para la conversión como un segundo argumento opcional, que siempre debes proporcionar:

- -
parseInt('123', 10); // 123
-parseInt('010', 10); // 10
-
- -

En los navegadores más antiguos, se supone que las cadenas que comienzan con un "0" están en octal (raíz 8), pero este no ha sido el caso desde 2013 más o menos. A menos que estés seguro de tu formato de cadena, puedes obtener resultados sorprendentes en esos navegadores más antiguos:

- -
parseInt('010');  //  8
-parseInt('0x10'); // 16
-
- -

Aquí, vemos que la función {{jsxref("Objetos_Globales/parseInt", "parseInt()")}} trata la primera cadena como octal debido al 0 inicial, y la segunda cadena como hexadecimal debido al "0x" inicial. La notación hexadecimal todavía está en su lugar; solo se ha eliminado el octal.

- -

Si deseas convertir un número binario en un entero, simplemente cambia la base:

- -
parseInt('11', 2); // 3
-
- -

De manera similar, puedes analizar números de coma flotante utilizando la función incorporada {{jsxref("Objetos_Globales/parseFloat", "parseFloat()")}}. A diferencia de su primo {{jsxref("Objetos_Globales/parseInt", "parseInt()")}}, parseFloat() siempre usa base 10.

- -

También puedes utilizar el operador + unario para convertir valores en números:

- -
+ '42';   // 42
-+ '010';  // 10
-+ '0x10'; // 16
-
- -

Se devuelve un valor especial llamado {{jsxref("NaN")}} (abreviatura de "Not a Number" o "No es un número") si la cadena no es numérica:

- -
parseInt('hello', 10); // NaN
-
- -

NaN es tóxico: si lo proporcionas como operando para cualquier operación matemática, el resultado también será NaN:

- -
NaN + 5; // NaN
-
- -

Puedes probar si un valor es NaN utilizando la función incorporada {{jsxref("Objetos_Globales/isNaN", "isNaN()")}}:

- -
isNaN(NaN); // true
-
- -

JavaScript también tiene los valores especiales {{jsxref("Infinity")}} e -Infinity:

- -
 1 / 0; //  Infinity
--1 / 0; // -Infinity
-
- -

Puedes probar los valores Infinity, -Infinity y NaN utilizando la función integrada {{jsxref("Objetos_Globales/isFinite", "isFinite()")}}:

- -
isFinite(1 / 0); // false
-isFinite(-Infinity); // false
-isFinite(NaN); // false
-
- -
Las funciones {{jsxref("Objetos_Globales/parseInt", "parseInt()")}} y {{jsxref("Objetos_Globales/parseFloat", "parseFloat()")}} analizan una cadena hasta que alcancen un caracter que no es válido para el formato de número especificado, luego devuelve el número analizado hasta ese punto. Sin embargo, el operador "+" simplemente convierte la cadena a NaN si contiene un caracter no válido. Intenta analizar la cadena "10.2abc" con cada método tú mismo en la consola y comprenderás mejor las diferencias.
- -

Strings)

- -

Las cadenas en JavaScript son secuencias de caracteres Unicode. Esta debería ser una buena noticia para cualquiera que haya tenido que lidiar con la internacionalización. Exactamente, son secuencias de unidades de código UTF-16; cada unidad de código está representada por un número de 16 bits. Cada caracter Unicode está representado por 1 o 2 unidades de código.

- -

Si deseas representar un solo caracter, simplemente usa una cadena que consta de ese único caracter.

- -

Para encontrar la longitud de una cadena (en unidades de código), accede a su propiedad {{jsxref("Objetos_Globales/String/length", "lenght")}}:

- -
'hello'.length; // 5
-
- -

¡Aquí está nuestra primer pincelada con objetos JavaScript! ¿Mencionamos que también puedes usar cadenas como {{jsxref("Object", "objectos", "", 1)}}? También tienen {{jsxref("String", "métodos", "#Métodos", 1)}} que te permiten manipular la cadena y acceder a información sobre la cadena:

- -
'hello'.charAt(0); // "h"
-'hello, world'.replace('world', 'mars'); // "hello, mars"
-'hello'.toUpperCase(); // "HELLO"
-
- -

Otros tipos

- -

JavaScript distingue entre {{jsxref("null")}}, que es un valor que indica un no valor deliberado (y solo se puede acceder a él mediante la palabra clave null), y {{jsxref("undefined")}}, que es un valor de tipo undefined que indica una variable no iniciada es decir, que aún no se le ha asignado un valor. Hablaremos de variables más adelante, pero en JavaScript es posible declarar una variable sin asignarle un valor. Si hace esto, el tipo de la variable es undefined. undefined en realidad es una constante.

- -

JavaScript tiene un tipo booleano, con valores posibles true y false (ambos son palabras clave). Cualquier valor se puede convertir a booleano de acuerdo con las siguientes reglas:

- -
    -
  1. false, 0, cadenas vacías (""), NaN, null, y undefined todos se vuelven false.
  2. -
  3. Todos los demás valores se vuelven true.
  4. -
- -

Puedes realizar esta conversión explícitamente utilizando la función Boolean():

- -
Boolean('');  // false
-Boolean(234); // true
-
- -

Sin embargo, esto rara vez es necesario, ya que JavaScript realizará silenciosamente esta conversión cuando espera un booleano, como en una declaración if (ve más adelante). Por esta razón, a veces hablamos simplemente de "valores verdaderos" y "valores falsos", es decir, valores que se convierten en true y false, respectivamente, cuando se convierten en booleanos. Alternativamente, estos valores se pueden llamar "veracidad" y "falsedad", respectivamente.

- -

Operaciones booleanas como && (and lógico), || (or lógico) y ! (not lógico) son compatibles; ve más adelante.

- -

Variables

- -

Las nuevas variables en JavaScript se declaran utilizando una de tres palabras clave: {{jsxref("Sentencias/let", "let")}}, {{jsxref("Sentencias/const", "const")}} o {{jsxref("Sentencias/var", "var")}}.
-
- let te permite declarar variables a nivel de bloque. La variable declarada está disponible en el bloque en el que está incluida.

- -
let a;
-let name = 'Simon';
-
- -

El siguiente es un ejemplo de alcance con una variable declarada con let:

- -
// myLetVariable *no* es visible aquí
-
-for (let myLetVariable = 0; myLetVariable < 5; myLetVariable++) {
-  // myLetVariable solo es visible aquí
-}
-
-// myLetVariable *no* es visible aquí
-
-
- -

const te permite declarar variables cuyos valores pretendes nunca cambiar. La variable está disponible en el bloque en el que se declara.

- -
const Pi = 3.14; // establece la variable Pi
-Pi = 1; // arrojará un error porque no puede cambiar una variable constante.
- -


- var es la palabra clave declarativa más común. No tiene las restricciones que tienen las otras dos palabras clave. Esto se debe a que tradicionalmente era la única forma de declarar una variable en JavaScript. Una variable declarada con la palabra clave var está disponible en la función en la que se declara.

- -
var a;
-var name = 'Simon';
- -

Un ejemplo de ámbito con una variable declarada con var:

- -
// myVarVariable *es* visible aquí
-
-for (var myVarVariable = 0; myVarVariable < 5; myVarVariable++) {
-  // myVarVariable es visible para toda la función
-}
-
-// myVarVariable *es* visible aquí
-
- -

Si declaras una variable sin asignarle ningún valor, su tipo es undefined.

- -

Una diferencia importante entre JavaScript y otros lenguajes como Java es que en JavaScript, los bloques no tienen alcance; solo las funciones tienen alcance. Entonces, si una variable se define usando var en una declaración compuesta (por ejemplo, dentro de una estructura de control if), será visible para toda la función. Sin embargo, a partir de ECMAScript 2015, las declaraciones {{jsxref("Sentencias/let", "let")}} y {{jsxref("Sentencias/const", "const")}} te permiten crear variables con alcance de bloque.

- -

Operadores

- -

Los operadores numéricos de JavaScript son +, -, *, / y % que es el operador de residuo o resto (que es lo mismo que módulo). Los valores se asignan usando =, y también hay declaraciones de asignación compuestas como += y -=. Estas se extienden hasta x = x operador y.

- -
x += 5;
-x = x + 5;
-
- -

Puedes usar ++ y -- para incrementar y disminuir respectivamente. Estos se pueden utilizar como operadores prefijos o sufijos.

- -

El operador + también hace concatenación de cadenas:

- -
'hello' + ' world'; // "hello world"
-
- -

Si agregas una cadena a un número (u otro valor), todo se convierte primero en cadena. Esto podría hacerte tropezar:

- -
'3' + 4 + 5;  // "345"
- 3 + 4 + '5'; // "75"
-
- -

Agregar una cadena vacía a algo es una forma útil de convertirla en cadena.

- -

Se pueden realizar comparaciones en JavaScript utilizando <, >, <= y >=. Estas funcionan tanto para cadenas como para números. La igualdad es un poco menos sencilla. El operador doble-igual realiza la coerción de tipos si le das diferentes tipos, con resultados a veces interesantes:

- -
123 == '123'; // true
-1 == true; // true
-
- -

Para evitar la coerción de tipos, usa el operador triple-igual:

- -
123 === '123'; // false
-1 === true;    // false
-
- -

También hay operadores != y !==.

- -

JavaScript también tiene operaciones bit a bit. Si quieres usarlas, ahí están.

- -

Estructuras de control

- -

JavaScript tiene un conjunto de estructuras de control similar a otros lenguajes de la familia C. Las declaraciones condicionales son compatibles con if y else; las puedes encadenarlas si lo deseas:

- -
var name = 'kittens';
-if (name == 'puppies') {
-  name += ' woof';
-} else if (name == 'kittens') {
-  name += ' meow';
-} else {
-  name += '!';
-}
-name == 'kittens meow';
-
- -

JavaScript tiene bucles while y bucles do-while. El primero es bueno para bucles básicos; el segundo bucle para donde deseas asegurarte de que el cuerpo del bucle se ejecute por lo menos una vez:

- -
while (true) {
-  // ¡un bucle infinito!
-}
-
-var input;
-do {
-  input = get_input();
-} while (inputIsNotValid(input));
-
- -

El bucle for de JavaScript es igual que el de C y Java: te permite proporcione la información de control para tu bucle en una sola línea.

- -
for (var i = 0; i < 5; i++) {
-  // Se ejecutará 5 veces
-}
-
- -

JavaScript también contiene otros dos bucles for destacados: for...of

- -
for (let value of array) {
-  // haz algo con valor
-}
-
- -

y for...in:

- -
for (let property in object) {
-  // hacer algo con la propiedad del objeto
-}
-
- -

Los operadores && y || utilizan lógica de cortocircuito, lo cual significa que si ejecutarán su segundo operando depende del primero. Esto es útil para verificar objetos nulos antes de acceder a sus atributos:

- -
var name = o && o.getName();
-
- -

O para almacenar en caché los valores (cuando los valores falsos no son válidos):

- -
var name = cachedName || (cachedName = getName());
-
- -

JavaScript tiene un operador ternario para expresiones condicionales:

- -
var allowed = (age > 18) ? 'yes' : 'no';
-
- -

La instrucción switch se puede usar para múltiples ramas según un número o cadena:

- -
switch (action) {
-  case 'draw':
-    drawIt();
-    break;
-  case 'eat':
-    eatIt();
-    break;
-  default:
-    doNothing();
-}
-
- -

Si no agregas una instrucción break, la ejecución "caerá" al siguiente nivel. Esto muy rara vez es lo que deseas; de hecho, vale la pena etiquetar específicamente la caída deliberada con un comentario si realmente lo pretendías para ayudar a la depuración:

- -
switch (a) {
-  case 1: // caída deliberada
-  case 2:
-    eatIt();
-    break;
-  default:
-    doNothing();
-}
-
- -

La cláusula default es opcional. Puedes tener expresiones tanto en la parte del switch como en los casos si lo deseas; las comparaciones tienen lugar entre los dos utilizando el operador ===:

- -
switch (1 + 3) {
-  case 2 + 2:
-    yay();
-    break;
-  default:
-    neverhappens();
-}
-
- -

Objetos

- -

Los objetos de JavaScript se pueden considerar como simples colecciones de pares nombre-valor. Como tal, son similares a:

- - - -

El hecho de que esta estructura de datos se utilice tan ampliamente es un testimonio de su versatilidad. Dado que todo (el núcleo, tipos bar) en JavaScript es un objeto, cualquier programa de JavaScript implica naturalmente una gran cantidad de búsquedas en tablas hash. ¡Qué bueno que sean tan rápidas!

- -

La parte "name" es una cadena JavaScript, mientras que el valor puede ser cualquier valor de JavaScript, incluidos más objetos. Esto te permite construir estructuras de datos de complejidad arbitraria.

- -

Hay dos formas básicas de crear un objeto vacío:

- -
var obj = new Object();
-
- -

Y:

- -
var obj = {};
-
- -

Estas son semánticamente equivalentes; la segunda se llama sintaxis literal de objeto y es más conveniente. Esta sintaxis también es el núcleo del formato JSON y se debe preferir en todo momento.

- -

La sintaxis de objeto literal se puede utilizar para iniciar un objeto en su totalidad:

- -
var obj = {
-  name: 'Carrot',
-  for: 'Max', // 'for' es una palabra reservada, use '_for' en su lugar.
-  details: {
-    color: 'orange',
-    size: 12
-  }
-};
-
- -

El acceso a los atributos se puede encadenar:

- -
obj.details.color; // orange
-obj['details']['size']; // 12
-
- -

El siguiente ejemplo crea un prototipo de objeto (Person) y una instancia de ese prototipo (you).

- -
function Person(name, age) {
-  this.name = name;
-  this.age = age;
-}
-
-// Define un objeto
-var you = new Person('You', 24);
-// Estamos creando una nueva persona llamada "You" de 24 años.
-
-
- -

Una vez creado, se puede volver a acceder a las propiedades de un objeto de dos formas:

- -
// notación de puntos
-obj.name = 'Simon';
-var name = obj.name;
-
- -

Y...

- -
// notación de corchetes
-obj['name'] = 'Simon';
-var name = obj['name'];
-// puedes usar una variable para definir una clave
-var user = prompt('¿cuál es su clave?')
-obj[user] = prompt('¿cuál es su valor?')
-
- -

Estas también son semánticamente equivalentes. El segundo método tiene la ventaja de que el nombre de la propiedad se proporciona como una cadena, lo cual significa que se puede calcular en tiempo de ejecución. Sin embargo, el uso de este método evita que se apliquen algunas optimizaciones de minificación y del motor de JavaScript. También se puede utilizar para establecer y obtener propiedades con nombres palabras reservadas:

- -
obj.for = 'Simon'; // Error de sintaxis, porque 'for' es una palabra reservada
-obj['for'] = 'Simon'; // trabaja bien
-
- -
-

A partir de ECMAScript 5, las palabras reservadas se pueden utilizar como nombres de propiedad de objeto "en bruto". Esto significa que no necesitan "vestirse" entre comillas al definir objeto literales. Consulta la especificación de ES5.

-
- -

Para obtener más información sobre objetos y prototipos, consulta {{jsxref("Objetos_Globales/Object/prototype", "Object.prototype")}}. Para obtener una explicación de los prototipos de objetos y las cadenas de prototipos de objetos, consulta Herencia y la cadena de prototipos.

- -
-

A partir de ECMAScript 2015, las claves de objeto se pueden definir mediante la variable en notación de corchetes al crearlas. {[phoneType]: 12345} es posible en lugar de solo var userPhone = {}; userPhone[phoneType] = 12345.

-
- -

Arreglos

- -

Los arreglos en JavaScript en son realidad un tipo especial de objeto. Funcionan de manera muy parecida a los objetos normales (las propiedades numéricas se pueden acceder naturalmente solo usando la sintaxis []) pero tienen una propiedad mágica llamada 'length'. Este siempre es uno más que el índice más alto de el arreglo.

- -

Una forma de crear arreglos es la siguiente:

- -
var a = new Array();
-a[0] = 'dog';
-a[1] = 'cat';
-a[2] = 'hen';
-a.length; // 3
-
- -

Una notación más conveniente es usar un arreglo literal:

- -
var a = ['dog', 'cat', 'hen'];
-a.length; // 3
-
- -

Ten en cuenta que array.length no necesariamente es el número de elementos del arreglo. Considera lo siguiente:

- -
var a = ['dog', 'cat', 'hen'];
-a[100] = 'fox';
-a.length; // 101
-
- -

Recuerda — la longitud de el arreglo es uno más que el índice más alto.

- -

Si consultas un índice de arreglo que no existe, obtendrás un valor de undefined:

- -
typeof a[90]; // undefined
-
- -

Si tienes en cuenta lo anterior sobre [] y length, puedes iterar sobre un arreglo utilizando el siguiente bucle for:

- -
for (var i = 0; i < a.length; i++) {
-  // Haz algo con a[i]
-}
-
- -

ES2015 introdujo el bucle más conciso for...of para objetos iterables como arreglos:

- -
for (const currentValue of a) {
-  // Haz algo con currentValue
-}
- -

También puedes iterar sobre un arreglo utilizando el bucle for...in, sin embargo, este no itera sobre los elementos del arreglo, sino los índices del arreglo. Además, si alguien agrega nuevas propiedades a Array.prototype, también serán iteradas por dicho bucle. Por lo tanto, este tipo de bucle no se recomienda para arreglos.

- -

Otra forma de iterar sobre un arreglo que se agregó con ECMAScript 5 es {{jsxref("Objetos_Globales/Array/forEach", "arr.forEach()")}}:

- -
['dog', 'cat', 'hen'].forEach(function(currentValue, index, array) {
-  // Hacer algo con currentValue o array[index]
-});
-
- -

Si deseas agregar un elemento a un arreglo, simplemente hazlo así:

- -
a.push(item);
- -

Los arreglos vienen con varios métodos. Consulta también la {{jsxref("Objetos_Globales/Array", "documentación completa para métodos de arreglo")}}.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Nombre del métodoDescripción
a.toString()Devuelve una cadena con el toString() de cada elemento separado por comas.
a.toLocaleString()Devuelve una cadena con el toLocaleString() de cada elemento separado por comas.
a.concat(item1[, item2[, ...[, itemN]]])Devuelve un nuevo arreglo con los elementos agregados.
a.join(sep)Convierte el arreglo en una cadena, con valores delimitados por el parámetro sep
a.pop()Elimina y devuelve el último elemento.
a.push(item1, ..., itemN)Agrega elementos al final del arreglo.
a.shift()Elimina y devuelve el primer elemento.
a.unshift(item1[, item2[, ...[, itemN]]])Añade elementos al inicio del arreglo.
a.slice(start[, end])Devuelve un subarreglo.
a.sort([cmpfn])Toma una función de comparación opcional.
a.splice(start, delcount[, item1[, ...[, itemN]]])Te permite modificar un arreglo eliminando una sección y reemplazándola con más elementos.
a.reverse()Invierte el arreglo.
- -

Funciones

- -

Junto con los objetos, las funciones son el componente principal para comprender JavaScript. La función más básica no podría ser mucho más sencilla:

- -
function add(x, y) {
-  var total = x + y;
-  return total;
-}
-
- -

Esto demuestra una función básica. Una función de JavaScript puede tomar 0 o más parámetros con nombre. El cuerpo de la función puede contener tantas declaraciones como desees y puedes declarar tus propias variables que son locales para esa función. La declaración return se puede usar para devolver un valor en cualquier momento, terminando la función. Si no se utiliza una declaración return (o return vacía sin valor), JavaScript devuelve undefined.

- -

Los parámetros nombrados resultan ser más intuitivos que cualquier otra cosa. Puedes llamar a una función sin pasar los parámetros que espera, en cuyo caso se establecerán en undefined.

- -
add(); // NaN
-// No puedes realizar sumas en undefined
-
- -

También puedes pasar más argumentos de los que espera la función:

- -
add(2, 3, 4); // 5
-// sumó los dos primeros; el 4 fue ignorado
-
- -

Eso puede parecer un poco tonto, pero las funciones tienen acceso a una variable adicional dentro de su cuerpo llamada argumentos, que es un objeto tipo arreglo que contiene todos los valores pasados a la función. Reescribamos la función de suma para tomar tantos valores como queramos:

- -
function add() {
-  var sum = 0;
-  for (var i = 0, j = arguments.length; i < j; i++) {
-    sum += arguments[i];
-  }
-  return sum;
-}
-
-add(2, 3, 4, 5); // 14
-
- -

Sin embargo, eso no es más útil que escribir 2 + 3 + 4 + 5. Creemos una función de promedio:

- -
function avg() {
-  var sum = 0;
-  for (var i = 0, j = arguments.length; i < j; i++) {
-    sum += arguments[i];
-  }
-  return sum / arguments.length;
-}
-
-avg(2, 3, 4, 5); // 3.5
-
- -

Esta es bastante útil, pero parece un poco detallada. Para reducir un poco más este código, podemos considerar la sustitución del uso del arreglo de argumentos a través de la sintaxis del parámetro Rest. De esta manera, podemos pasar cualquier número de argumentos a la función manteniendo nuestro código mínimo. El operador de parámetro rest se usa en listas de parámetros de función con el formato: ...variable e incluirá dentro de esa variable la lista completa de argumentos no capturados a los que se llamó la función. with. También reemplazaremos el bucle for con un bucle for...of para devolver los valores dentro de nuestra variable.

- -
function avg(...args) {
-  var sum = 0;
-  for (let value of args) {
-    sum += value;
-  }
-  return sum / args.length;
-}
-
-avg(2, 3, 4, 5); // 3.5
-
- -
En el código anterior, la variable args contiene todos los valores que se pasaron a la función.
-
-Es importante tener en cuenta que dondequiera que se coloque el operador de parámetro rest en una declaración de función, almacenará todos los argumentos después de su declaración, pero no antes. es decir, function avg(firstValue, ...args) almacenará el primer valor pasado a la función en la variable firstValue y los argumentos restantes en args. Esa es otra característica útil del lenguaje, pero nos lleva a un nuevo problema. La función avg() toma una lista de argumentos separados por comas, pero ¿qué sucede si deseas encontrar el promedio de un arreglo? Simplemente, podrías reescribir la función de la siguiente manera:
- -
function avgArray(arr) {
-  var sum = 0;
-  for (var i = 0, j = arr.length; i < j; i++) {
-    sum += arr[i];
-  }
-  return sum / arr.length;
-}
-
-avgArray([2, 3, 4, 5]); // 3.5
-
- -

Pero sería bueno poder reutilizar la función que ya hemos creado. Afortunadamente, JavaScript te permite llamar a una función con un arreglo arbitrario de argumentos, usando el método {{jsxref("Function.apply", "apply()")}} de cualquier objeto función.

- -
avg.apply(null, [2, 3, 4, 5]); // 3.5
-
- -

El segundo argumento de apply() es el arreglo que se utilizará como arguments; el primero se explicará más adelante. Esto enfatiza el hecho de que las funciones también son objetos.

- -
-

Puedes lograr el mismo resultado utilizando el operador de propagación en la llamada de función.

- -

Por ejemplo: avg(...numbers)

-
- -

JavaScript te permite crear funciones anónimas.

- -
var avg = function() {
-  var sum = 0;
-  for (var i = 0, j = arguments.length; i < j; i++) {
-    sum += arguments[i];
-  }
-  return sum / arguments.length;
-};
-
- -

Esto semánticamente es equivalente a la forma function avg(). Es extremadamente poderosa, ya que te permite colocar una definición de función completa en cualquier lugar donde normalmente colocarías una expresión. Esto permite todo tipo de ingeniosos trucos. Aquí hay una forma de "ocultar" algunas variables locales — como alcance de bloque en C:

- -
var a = 1;
-var b = 2;
-
-(function() {
-  var b = 3;
-  a += b;
-})();
-
-a; // 4
-b; // 2
-
- -

JavaScript te permite llamar a funciones de forma recursiva. Esto es particularmente útil para tratar con estructuras de árbol, como las que se encuentran en el DOM del navegador.

- -
function countChars(elm) {
-  if (elm.nodeType == 3) { // TEXT_NODE
-    return elm.nodeValue.length;
-  }
-  var count = 0;
-  for (var i = 0, child; child = elm.childNodes[i]; i++) {
-    count += countChars(child);
-  }
-  return count;
-}
-
- -

Esto resalta un problema potencial con las funciones anónimas: ¿cómo las llama de forma recursiva si no tienen un nombre? JavaScript te permite nombrar expresiones de función para esto. Puedes utilizar {{Glossary("IIFE", "IIFE (expresiones de función invocadas inmediatamente)")}} con nombre como se muestra a continuación:

- -
var charsInBody = (function counter(elm) {
-  if (elm.nodeType == 3) { // TEXT_NODE
-    return elm.nodeValue.length;
-  }
-  var count = 0;
-  for (var i = 0, child; child = elm.childNodes[i]; i++) {
-    count += counter(child);
-  }
-  return count;
-})(document.body);
-
- -

El nombre proporcionado a una expresión de función como arriba solo está disponible para el alcance de la función. Esto permite que el motor realice más optimizaciones y da como resultado un código más legible. El nombre también aparece en el depurador y en algunos seguimientos de la pila, lo cual puede ahorrarte tiempo al depurar.

- -

Ten en cuenta que las funciones de JavaScript en sí mismas son objetos, como todo lo demás en JavaScript, y puedes agregar o cambiar propiedades en ellas tal como hemos visto anteriormente en la sección Objetos.

- -

Objetos personalizados

- -
Para obtener una descripción más detallada de la programación orientada a objetos en JavaScript, consulta Introducción a JavaScript orientado a objetos.
- -

En la programación clásica orientada a objetos, los objetos son colecciones de datos y métodos que operan sobre esos datos. JavaScript es un lenguaje basado en prototipos que no contiene una declaración de clase, como la encontrarías en C++ o Java (esto, a veces es confuso para los programadores acostumbrados a lenguajes con una declaración de clase). En cambio, JavaScript usa funciones como clases. Consideremos un objeto person con campos first y last name. Hay dos formas de mostrar el nombre: como "primero último" o como "último, primero". Usando las funciones y objetos que hemos explicado anteriormente, podríamos mostrar los datos de esta manera:

- -
function makePerson(first, last) {
-  return {
-    first: first,
-    last: last
-  };
-}
-function personFullName(person) {
-  return person.first + ' ' + person.last;
-}
-function personFullNameReversed(person) {
-  return person.last + ', ' + person.first;
-}
-
-var s = makePerson('Simon', 'Willison');
-personFullName(s); // "Simon Willison"
-personFullNameReversed(s); // "Willison, Simon"
-
- -

Esto funciona, pero es bastante feo. Terminas con docenas de funciones en tu espacio de nombres global. Lo que realmente necesitamos es una forma de enlazar una función a un objeto. Dado que las funciones son objetos, esto es fácil:

- -
function makePerson(first, last) {
-  return {
-    first: first,
-    last: last,
-    fullName: function() {
-      return this.first + ' ' + this.last;
-    },
-    fullNameReversed: function() {
-      return this.last + ', ' + this.first;
-    }
-  };
-}
-
-var s = makePerson('Simon', 'Willison');
-s.fullName(); // "Simon Willison"
-s.fullNameReversed(); // "Willison, Simon"
-
- -

Nota sobre la palabra clave this. Usada dentro de una función, this se refiere al objeto actual. Lo que realmente significa está especificado por la forma en que llamaste a esa función. Si lo llamaste usando notación de puntos o notación de corchetes en un objeto, ese objeto se convierte en this. Si la notación de puntos no se usó para la llamada, this se refiere al objeto global.

- -

Ten en cuenta que this es una frecuente causa de errores. Por ejemplo:

- -
var s = makePerson('Simon', 'Willison');
-var fullName = s.fullName;
-fullName(); // undefined undefined
-
- -

Cuando llamamos a fullName() solo, sin usar s.fullName(), this está vinculado al objeto global. Debido a que no hay variables globales llamadas first o last obtenemos undefined para cada una.

- -

Podemos aprovechar la palabra clave this para mejorar nuestra función makePerson:

- -
function Person(first, last) {
-  this.first = first;
-  this.last = last;
-  this.fullName = function() {
-    return this.first + ' ' + this.last;
-  };
-  this.fullNameReversed = function() {
-    return this.last + ', ' + this.first;
-  };
-}
-var s = new Person('Simon', 'Willison');
-
- -

Hemos introducido otra palabra clave: new. new está fuertemente relacionado con this. Crea un nuevo objeto vacío y luego llama a la función especificada, con this configurado para ese nuevo objeto. Sin embargo, ten en cuenta que la función especificada con this no devuelve un valor, sino que simplemente modifica el objeto this. Es new que devuelve el objeto this al sitio que realiza la llamada. Las funciones que están diseñadas para ser llamadas por new se denominan funciones constructoras. La práctica común es poner en mayúscula estas funciones como recordatorio para llamarlas con new.

- -

La función mejorada todavía tiene el mismo error al llamar a fullName() sola.

- -

Nuestros objetos person están mejorando, pero todavía tienen algunos bordes desagradables. Cada vez que creamos un objeto person, estamos creando dos nuevos objetos de función dentro de él, ¿no sería mejor si este código fuera compartido?

- -
function personFullName() {
-  return this.first + ' ' + this.last;
-}
-function personFullNameReversed() {
-  return this.last + ', ' + this.first;
-}
-function Person(first, last) {
-  this.first = first;
-  this.last = last;
-  this.fullName = personFullName;
-  this.fullNameReversed = personFullNameReversed;
-}
-
- -

Eso es mejor: estamos creando las funciones como métodos solo una vez y asignándoles referencias dentro del constructor. ¿Podemos hacer algo mejor que eso? La respuesta es sí:

- -
function Person(first, last) {
-  this.first = first;
-  this.last = last;
-}
-Person.prototype.fullName = function() {
-  return this.first + ' ' + this.last;
-};
-Person.prototype.fullNameReversed = function() {
-  return this.last + ', ' + this.first;
-};
-
- -

Person.prototype es un objeto compartido por todas las instancias de Person. Forma parte de una cadena de búsqueda (que tiene un nombre especial, "cadena de prototipos"): cada vez que intentes acceder a una propiedad de Person que no esté configurada, JavaScript revisará Person.prototype para ver si esa propiedad existe allí. Como resultado, todo lo asignado a Person.prototype pasa a estar disponible para todas las instancias de ese constructor a través del objeto this.

- -

Esta es una herramienta increíblemente poderosa. JavaScript te permite modificar el prototipo de algo en cualquier momento en tu programa, lo cual significa que —en tiempo de ejecución— puedes agregar métodos adicionales a los objetos existentes:

- -
var s = new Person('Simon', 'Willison');
-s.firstNameCaps(); // TypeError en la línea 1: s.firstNameCaps no es una función
-
-Person.prototype.firstNameCaps = function() {
-  return this.first.toUpperCase();
-};
-s.firstNameCaps(); // "SIMON"
-
- -

Curiosamente, también puedes agregar cosas al prototipo de objetos JavaScript integrados. Agreguemos un método a String que devuelva esa cadena a la inversa:

- -
var s = 'Simon';
-s.reversed(); // TypeError en la línea 1: s.reversed no es una función
-
-String.prototype.reversed = function() {
-  var r = '';
-  for (var i = this.length - 1; i >= 0; i--) {
-    r += this[i];
-  }
-  return r;
-};
-
-s.reversed(); // nomiS
-
- -

¡Nuestro método new funciona incluso con cadenas literales!

- -
'Esto ahora se puede revertir'.reversed(); // ritrever edeup es aroha otsE
-
- -

Como se mencionó anteriormente, el prototipo forma parte de una cadena. La raíz de esa cadena es Object.prototype, cuyos métodos incluyen toString(); es este método el que se llama cuando intentas representar un objeto como una cadena. Esto es útil para depurar nuestros objetos Person:

- -
var s = new Person('Simon', 'Willison');
-s.toString(); // [object Object]
-
-Person.prototype.toString = function() {
-  return '<Person: ' + this.fullName() + '>';
-}
-
-s.toString(); // "<Person: Simon Willison>"
-
- -

¿Recuerda cómo avg.apply() tenía un primer argumento null? Ahora lo podemos revisar. El primer argumento de apply() es el objeto que se debe tratar como 'this'. Por ejemplo, aquí hay una implementación trivial de new:

- -
function trivialNew(constructor, ...args) {
-  var o = {}; // Crea un objeto
-  constructor.apply(o, args);
-  return o;
-}
-
- -

Esta no es una réplica exacta de new ya que no configura la cadena de prototipos (sería difícil de ilustrar). Esto no es algo que use con mucha frecuencia, pero es útil conocerlo. En este fragmento, ...args (incluidos los puntos suspensivos) se denomina "argumentos rest" — como su nombre indica, contiene el resto de los argumentos.

- -

Llamar a...

- -
var bill = trivialNew(Person, 'William', 'Orange');
- -

...por tanto, casi es equivalente a

- -
var bill = new Person('William', 'Orange');
- -

apply() tiene una función hermana llamada {{jsxref("Objetos_Globales/Function/call", "call()")}}, que nuevamente te permite establecer this pero toma una lista de argumentos expandida en lugar de un arreglo.

- -
function lastNameCaps() {
-  return this.last.toUpperCase();
-}
-var s = new Person('Simon', 'Willison');
-lastNameCaps.call(s);
-// Es lo mismo que:
-s.lastNameCaps = lastNameCaps;
-s.lastNameCaps(); // WILLISON
-
- -

Funciones internas

- -

Las declaraciones de función de JavaScript están permitidas dentro de otras funciones. Hemos visto esto una vez antes, con la función makePerson() anterior. Un detalle importante de las funciones anidadas en JavaScript es que pueden acceder a las variables en el alcance de su función padre:

- -
function parentFunc() {
-  var a = 1;
-
-  function nestedFunc() {
-    var b = 4; // parentFunc no puede usar esto
-    return a + b;
-  }
-  return nestedFunc(); // 5
-}
-
- -

Esto proporciona una gran utilidad para escribir un código más fácil de mantener. Si una función llamada se basa en una o dos funciones que no son útiles para ninguna otra parte de tu código, puedes anidar esas funciones de utilidad dentro de ella. Esto mantiene baja la cantidad de funciones que están en el alcance global, lo cual siempre es bueno.

- -

Esto también contrarresta el atractivo de las variables globales. Al escribir código complejo, a menudo es tentador utilizar variables globales para compartir valores entre múltiples funciones, lo que conduce a un código difícil de mantener. Las funciones anidadas pueden compartir variables en su padre, por lo que puedes usar ese mecanismo para unir funciones cuando tenga sentido sin contaminar tu espacio de nombres global — "globales locales" si lo deseas. Esta técnica se debe usar con precaución, pero es una útil habilidad.

- -

Cierres

- -

Esto nos lleva a una de las abstracciones más poderosas que JavaScript tiene para ofrecer — pero potencialmente, también la más confusa. ¿Qué hace esta?

- -
function makeAdder(a) {
-  return function(b) {
-    return a + b;
-  };
-}
-var add5 = makeAdder(5);
-var add20 = makeAdder(20);
-add5(6); // ?
-add20(7); // ?
-
- -

El nombre de la función makeAdder() lo debería revelar: crea nuevas funciones 'adder', cada una de las cuales, cuando se llama con un argumento, lo suma al argumento con el que fue creada.

- -

Lo que está sucediendo aquí es más o menos lo mismo que sucedía anteriormente con las funciones internas: una función definida dentro de otra función tiene acceso a las variables de la función externa. La única diferencia aquí es que la función externa ha regresado y, por lo tanto, el sentido común parece dictar que sus variables locales ya no existen. Pero existen todavía — de lo contrario, las funciones de suma no podrían funcionar. Además, hay dos diferentes "copias" de las variables locales de makeAdder(): una en la que a es 5 y la otra en la que a es 20. Entonces, el resultado de las llamadas a esa función es el siguiente:

- -
add5(6); // returns 11
-add20(7); // devuelve 27
-
- -

Esto es lo que está sucediendo realmente. Siempre que JavaScript ejecuta una función, se crea un objeto 'scope' para contener las variables locales creadas dentro de esa función. Se inicia con cualquier variable pasada como parámetros de función. Esto es similar al objeto global en el que viven todas las variables y funciones globales, pero con un par de importantes diferencias: en primer lugar, se crea un objeto de alcance completamente nuevo cada vez que una función se comienza a ejecutar y, en segundo lugar, a diferencia del objeto global (que es accesible como this y en los navegadores como window) no se puede acceder directamente a estos objetos scope desde tu código JavaScript. No hay ningún mecanismo para iterar sobre las propiedades del objeto scope actual, por ejemplo.

- -

Entonces, cuando se llama a makeAdder(), se crea un objeto scope con una propiedad: a, que es el argumento que se pasa a la función makeAdder(). makeAdder() luego devuelve una función recién creada. Normalmente, el recolector de basura de JavaScript limpiaría el objeto scope creado para makeAdder() en este punto, pero la función devuelta mantiene una referencia a ese objeto de ámbito. Como resultado, el objeto scope no será recolectado como basura hasta que no haya más referencias al objeto función que makeAdder() devolvió.

- -

Los objetos scope forman una cadena llamada cadena de ámbito, similar a la cadena de prototipos utilizada por el sistema de objetos de JavaScript.

- -

Un cierre es la combinación de una función y el objeto scope en el que se creó. Los cierres te permiten guardar el estado — como tal, a menudo se pueden usar en lugar de objetos. Puedes encontrar varias presentaciones excelentes de los cierres.

diff --git a/files/es/web/javascript/vectores_tipados/index.html b/files/es/web/javascript/vectores_tipados/index.html deleted file mode 100644 index ba82a49ebd..0000000000 --- a/files/es/web/javascript/vectores_tipados/index.html +++ /dev/null @@ -1,272 +0,0 @@ ---- -title: Arreglos tipados de JavaScript -slug: Web/JavaScript/Vectores_tipados -tags: - - Arreglo tipado - - Guía - - JavaScript -translation_of: Web/JavaScript/Typed_arrays ---- -
{{JsSidebar("Advanced")}}
- -

Los arreglos tipados en JavaScript son objetos similares a arreglos que proporcionan un mecanismo para leer y escribir datos binarios sin procesar en búferes de memoria. Como ya sabrás, los objetos {{jsxref("Array", "Arreglo")}} crecen y se encogen dinámicamente y pueden tener cualquier valor de JavaScript. Los motores de JavaScript realizan optimizaciones para que estos arreglos sean rápidos.

- -

Sin embargo, a medida que las aplicaciones web se vuelven cada vez más poderosas, agregando características como manipulación de audio y video, acceso a datos sin procesar usando WebSockets, etc., ha quedado claro que hay momentos en los que sería útil que el código JavaScript pudiera manipular rápida y fácilmente datos binarios sin procesar. Aquí es donde entran en juego los arreglos tipados. Cada entrada en un arreglo tipado de JavaScript es un valor binario sin procesar en uno de los formatos admitidos, desde números enteros de 8 bits hasta números de punto flotante de 64 bits.

- -

Sin embargo, los arreglos tipados no se deben confundir con los arreglos normales, ya que llamar a {{JSxRef("Array.isArray()")}} en un arreglo tipado devuelve false. Además, no todos los métodos disponibles para arreglos normales son compatibles con arreglos tipados (por ejemplo, push y pop).

- -

Búferes y vistas: arquitectura de los arreglos tipados

- -

Para lograr la máxima flexibilidad y eficiencia, los arreglos de JavaScript dividen la implementación en búferes y vistas. Un búfer (implementado por el objeto {{jsxref("ArrayBuffer")}} es un objeto que representa una porción de datos; no tiene ningún formato del que hablar y no ofrece ningún mecanismo para acceder a su contenido. Para acceder a la memoria contenida en un búfer, necesitas usar una vista. Una vista proporciona un contexto — es decir, un tipo de dato, un desplazamiento inicial y el número de elementos — que convierte los datos en un arreglo tipado.

- -

Arreglos tipados en ArrayBuffer

- -

ArrayBuffer

- -

{{jsxref("ArrayBuffer")}} es un tipo de dato que se utiliza para representar un búfer de datos binarios genérico de longitud fija. No puedes manipular directamente el contenido de un ArrayBuffer; en su lugar, crea una vista de arreglo tipado o un {{JSxRef("DataView")}} que representa el búfer en un formato específico, y lo usa para leer y escribir el contenido del búfer.

- -

Vistas de arreglos tipados

- -

Las vistas de arreglos tipados tienen nombres autodescriptivos y proporcionan vistas para todos los tipos numéricos habituales tal como Int8, Uint32, Float64 y así sucesivamente. Hay una vista de arreglo tipado especial, la Uint8ClampedArray. Esta fija los valores entre 0 y 255. {{JSxRef("../Data_structures", "Tipos de datos JavaScript")}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TipoIntervalo de valoresTamaño en bytesDescripciónTipo de IDL webTipo C equivalente
{{JSxRef("Int8Array")}}-128 a 1271Dos enteros complementarios de 8 bits con signobyteint8_t
{{JSxRef("Uint8Array")}}0 a 2551Entero de 8-bit sin signooctetuint8_t
{{JSxRef("Uint8ClampedArray")}}0 a 2551Entero de 8 bits sin signo (sujeto)octetuint8_t
{{JSxRef("Int16Array")}}-32768 a 327672Dos enteros complementarios de 16 bits con signoshortint16_t
{{JSxRef("Uint16Array")}}0 a 655352Entero de 16 bits sin signoShort sin signouint16_t
{{JSxRef("Int32Array")}}-2147483648 a 21474836474dos enteros complementarios de 32 bits con signolongint32_t
{{JSxRef("Uint32Array")}}0 a 42949672954Enteros de 32 bits sin signolong sin signouint32_t
{{JSxRef("Float32Array")}}1.2×10-38 a 3.4×10384Número de coma flotante IEEE de 32 bits (7 dígitos significativos, p. ej., 1.1234567)float sin restriccionesfloat
{{JSxRef("Float64Array")}}1.2×10-38 a 3.4×103088Número de coma flotante IEEE de 64 bits (16 dígitos significativos, p. ej., 1.123...15)doble sin restriccionesdouble
{{JSxRef("BigInt64Array")}}-263 a 263-18Dos enteros complementarios de 64 bits con signobigintint64_t (long long con signo)
{{JSxRef("BigUint64Array")}}0 a 264-18Entero de 64 bits sin signobigintuint64_t (long long sin signo)
- -

DataView

- -

{{jsxref("DataView")}} es una interfaz de bajo nivel que proporciona una API captadora (getter)/(setter) establecedora para leer y escribir datos arbitrarios en el búfer. Esto es útil cuando se trata de diferentes tipos de datos, por ejemplo. Las vistas de arreglos tipados están en el orden de bytes nativo (consulta {{Glossary("Endianness")}} de tu plataforma. Con un DataView puedes controlar el orden de bytes. Es big-endian de manera predeterminada y se puede establecer en little-endian en los métodos captadores/establecedores.

- -

APIs web que utilizan arreglos tipados

- -

Estos son algunos ejemplos de APIs que utilizan arreglos tipados; hay otras, y todo el tiempo surgen más.

- -
-
{{Link("/en-US/docs/Web/API/FileReader", "FileReader.prototype.readAsArrayBuffer()", "#readAsArrayBuffer()")}}
-
El método FileReader.prototype.readAsArrayBuffer() comienza a leer el contenido del {{Link("/es/docs/Web/API/Blob", "Blob")}} o {{Link("/es/docs/Web/API/File", "File")}}.
-
XMLHttpRequest.prototype.send()
-
El método send() de instancias de XMLHttpRequest ahora admiten arreglos tipados y objetos {{JSxRef("ArrayBuffer")}} como argumento.
-
{{Link("/en-US/docs/Web/API/ImageData", "ImageData.data")}}
-
Es un {{JSxRef("Uint8ClampedArray")}} que representa un arreglo unidimensional que contiene los datos en el orden RGBA, con valores enteros entre 0 y 255 inclusive.
-
- -

Ejemplos

- -

Usar vistas con búferes

- -

En primer lugar, necesitaremos crear un búfer, aquí con una longitud fija de 16 bytes:

- -
let buffer = new ArrayBuffer(16);
-
- -

En este punto, tenemos una porción de memoria cuyos bytes están todos preiniciados a 0. Sin embargo, no hay mucho que podamos hacer con él. Podemos confirmar que de hecho tiene 16 bytes de longitud, y eso es todo:

- -
if (buffer.byteLength === 16) {
-  console.log("Sí, son 16 bytes");
-} else {
-  console.log("¡Oh no, es del tamaño incorrecto!");
-}
-
- -

Antes de que podamos trabajar realmente con este búfer, necesitamos crear una vista. Creemos una vista que trate los datos en el búfer como un arreglo de enteros de 32 bits con signo:

- -
let int32View = new Int32Array(buffer);
-
- -

Ahora podemos acceder a los campos del arreglo como un arreglo normal:

- -
for (let i = 0; i < int32View.length; i++) {
-  int32View[i] = i * 2;
-}
-
- -

Esto completa las 4 entradas en el arreglo (4 entradas de 4 bytes cada una suman 16 bytes en total) con los valores 0, 2, 4 y 6.

- -

Múltiples vistas sobre los mismos datos

- -

Las cosas comienzan a ponerse realmente interesantes cuando consideras que puedes crear múltiples vistas sobre los mismos datos. Por ejemplo, dado el código anterior, podemos continuar así:

- -
let int16View = new Int16Array(buffer);
-
-for (let i = 0; i < int16View.length; i++) {
-  console.log('Entrada ' + i + ': ' + int16View[i]);
-}
-
- -

Aquí creamos una vista entera de 16 bits que comparte el mismo búfer que la vista existente de 32 bits y sacamos todos los valores en el búfer como enteros de 16 bits. Ahora obtenemos la salida 0, 0, 2, 0, 4, 0, 6, 0.

- -

Sin embargo, puedes dar un paso más. Considera esto:

- -
int16View[0] = 32;
-console.log('La entrada 0 en el arreglo de 32 bits ahora es ' + int32View[0]);
-
- -

La salida de esto es "La entrada 0 en el arreglo de 32 bits ahora es 32".

- -

En otras palabras, los dos arreglos se ven simplemente en el mismo búfer de datos, tratándolo como formatos diferentes. Lo puedes hacer con cualquier {{JSxRef("Global_Objects/TypedArray", "tipo de vista", "#TypedArray_objects")}}.

- -

Trabajar con complejas estructuras de datos

- -

Al combinar un solo búfer con múltiples vistas de diferentes tipos, comenzando con diferentes desplazamientos en el búfer, puedes interactuar con objetos de datos que contienen múltiples tipos de datos. Esto te permite, por ejemplo, interactuar con complejas estructuras de datos {{Link("/es/docs/Web/WebGL", "WebGL")}}, archivos de datos o estructuras C que necesitas utilizar mientras usas {{Link("/en-US/docs/Mozilla/js-ctypes", "js-ctypes")}}.

- -

Considera esta estructura C:

- -
struct someStruct {
-  unsigned long id;
-  char username[16];
-  float amountDue;
-};
- -

Puedes acceder a un búfer que contiene datos en un formato como este:

- -
let buffer = new ArrayBuffer(24);
-
-// ... lee los datos en el búfer ...
-
-let idView = new Uint32Array(buffer, 0, 1);
-let usernameView = new Uint8Array(buffer, 4, 16);
-let amountDueView = new Float32Array(buffer, 20, 1);
- -

Luego puedes acceder, por ejemplo, al monto adeudado con amountDueView[0].

- -
Nota: La {{interwiki("wikipedia", "Data_structure_alignment")}} en una estructura C depende de la plataforma. Toma precauciones y consideraciones para estas diferencias de relleno.
- -

Conversión a arreglos normales

- -

Después de procesar un arreglo con tipo, a veces es útil volver a convertirla en un arreglo normal para beneficiarse del prototipo {{jsxref("Array")}}. Esto se puede hacer usando {{JSxRef("Array.from()")}}, o usando el siguiente código donde Array.from() no es compatible.

- -
let typedArray = new Uint8Array([1, 2, 3, 4]),
-    normalArray = Array.prototype.slice.call(typedArray);
-normalArray.length === 4;
-normalArray.constructor === Array;
-
- -

Especificaciones

- - - - - - - - - - - - -
Especificación
{{SpecName('ESDraft', '#sec-typedarray-objects', 'TypedArray Objects')}}
- -

Compatibilidad del navegador

- - - -

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

- -

Ve también

- - -- cgit v1.2.3-54-g00ecf From 8a5554c6fae83e92b10c8dbe5b82108cb44fad6c Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 14:46:51 +0100 Subject: unslug es: modify --- files/es/_redirects.txt | 3122 ++- files/es/_wikihistory.json | 27746 +++++++++---------- files/es/conflicting/glossary/doctype/index.html | 3 +- .../cascade_and_inheritance/index.html | 3 +- .../learn/css/building_blocks/index.html | 3 +- .../learn/css/building_blocks/selectors/index.html | 3 +- .../building_blocks/values_and_units/index.html | 3 +- .../es/conflicting/learn/css/css_layout/index.html | 3 +- .../learn/css/first_steps/how_css_works/index.html | 3 +- .../index.html | 6 +- .../index.html | 4 +- .../conflicting/learn/css/first_steps/index.html | 5 +- .../learn/css/styling_text/fundamentals/index.html | 3 +- files/es/conflicting/learn/forms/index.html | 3 +- .../getting_started/index.html | 3 +- .../video_and_audio_content/index.html | 3 +- files/es/conflicting/learn/index.html | 3 +- .../learn/javascript/objects/index.html | 3 +- .../mdn/contribute/getting_started/index.html | 3 +- files/es/conflicting/mdn/tools/index.html | 3 +- files/es/conflicting/mdn/yari/index.html | 3 +- .../index.html | 3 +- files/es/conflicting/mozilla/add-ons/index.html | 3 +- .../tools/about_colon_debugging/index.html | 5 +- files/es/conflicting/tools/performance/index.html | 3 +- .../web/api/canvas_api/tutorial/index.html | 3 +- .../web/api/crypto/getrandomvalues/index.html | 3 +- .../web/api/document_object_model/index.html | 3 +- .../index.html | 3 +- .../index.html | 3 +- .../index.html | 3 +- .../es/conflicting/web/api/geolocation/index.html | 3 +- .../web/api/html_drag_and_drop_api/index.html | 3 +- files/es/conflicting/web/api/index.html | 3 +- .../conflicting/web/api/indexeddb_api/index.html | 3 +- files/es/conflicting/web/api/node/index.html | 3 +- files/es/conflicting/web/api/push_api/index.html | 3 +- files/es/conflicting/web/api/url/index.html | 3 +- .../conflicting/web/api/web_storage_api/index.html | 3 +- files/es/conflicting/web/api/webrtc_api/index.html | 3 +- .../conflicting/web/api/websockets_api/index.html | 3 +- .../web/api/window/localstorage/index.html | 3 +- .../web/api/windoworworkerglobalscope/index.html | 3 +- .../index.html | 3 +- .../index.html | 3 +- files/es/conflicting/web/css/@viewport/index.html | 3 +- .../index.html | 3 +- .../web/css/_colon_placeholder-shown/index.html | 7 +- .../index.html | 7 +- .../web/css/_doublecolon_placeholder/index.html | 7 +- .../index.html | 7 +- .../basic_concepts_of_flexbox/index.html | 3 +- .../typical_use_cases_of_flexbox/index.html | 3 +- files/es/conflicting/web/css/cursor/index.html | 3 +- .../es/conflicting/web/css/font-variant/index.html | 3 +- files/es/conflicting/web/css/width/index.html | 5 +- files/es/conflicting/web/guide/index.html | 3 +- files/es/conflicting/web/guide/mobile/index.html | 3 +- files/es/conflicting/web/html/element/index.html | 3 +- .../web/html/global_attributes/index.html | 3 +- .../html/global_attributes/spellcheck/index.html | 3 +- .../web/http/basics_of_http/mime_types/index.html | 3 +- files/es/conflicting/web/http/csp/index.html | 3 +- .../index.html | 3 +- .../headers/content-security-policy/index.html | 3 +- .../global_objects/arraybuffer/index.html | 3 +- .../reference/global_objects/date/index.html | 3 +- .../reference/global_objects/error/index.html | 3 +- .../reference/global_objects/function/index.html | 3 +- .../reference/global_objects/map/index.html | 3 +- .../reference/global_objects/number/index.html | 3 +- .../reference/global_objects/object/index.html | 3 +- .../reference/global_objects/promise/index.html | 3 +- .../reference/global_objects/rangeerror/index.html | 3 +- .../reference/global_objects/string/index.html | 3 +- .../global_objects/syntaxerror/index.html | 3 +- .../reference/global_objects/weakmap/index.html | 3 +- .../reference/lexical_grammar/index.html | 3 +- .../web/javascript/reference/operators/index.html | 3 +- .../reference/operators/spread_syntax/index.html | 3 +- .../index.html | 4 +- .../index.html | 4 +- .../index.html | 4 +- .../index.html | 4 +- .../reference/statements/switch/index.html | 3 +- files/es/conflicting/web/media/formats/index.html | 3 +- files/es/conflicting/web/opensearch/index.html | 3 +- .../web/progressive_web_apps/index.html | 3 +- .../progressive_web_apps/introduction/index.html | 3 +- .../using_custom_elements/index.html | 3 +- files/es/games/introduction/index.html | 3 +- .../index.html | 3 +- .../publishing_games/game_monetization/index.html | 3 +- files/es/games/tools/asm.js/index.html | 3 +- files/es/games/tools/index.html | 3 +- .../bounce_off_the_walls/index.html | 3 +- .../2d_breakout_game_phaser/buttons/index.html | 3 +- .../bounce_off_the_walls/index.html | 3 +- .../build_the_brick_field/index.html | 3 +- .../collision_detection/index.html | 3 +- .../create_the_canvas_and_draw_on_it/index.html | 4 +- .../finishing_up/index.html | 3 +- .../game_over/index.html | 3 +- .../2d_breakout_game_pure_javascript/index.html | 3 +- .../mouse_controls/index.html | 3 +- .../move_the_ball/index.html | 3 +- .../paddle_and_keyboard_controls/index.html | 3 +- .../track_the_score_and_win/index.html | 3 +- .../index.html | 3 +- files/es/games/tutorials/index.html | 3 +- files/es/glossary/algorithm/index.html | 3 +- files/es/glossary/argument/index.html | 3 +- files/es/glossary/array/index.html | 3 +- files/es/glossary/asynchronous/index.html | 3 +- files/es/glossary/attribute/index.html | 3 +- files/es/glossary/base64/index.html | 3 +- files/es/glossary/breadcrumb/index.html | 3 +- files/es/glossary/cache/index.html | 3 +- files/es/glossary/call_stack/index.html | 3 +- files/es/glossary/card_sorting/index.html | 3 +- files/es/glossary/character/index.html | 3 +- files/es/glossary/character_set/index.html | 3 +- files/es/glossary/cia/index.html | 3 +- files/es/glossary/cipher/index.html | 3 +- files/es/glossary/ciphertext/index.html | 3 +- files/es/glossary/closure/index.html | 3 +- files/es/glossary/cms/index.html | 3 +- files/es/glossary/constant/index.html | 3 +- files/es/glossary/cryptanalysis/index.html | 3 +- files/es/glossary/cryptography/index.html | 3 +- files/es/glossary/css_preprocessor/index.html | 3 +- files/es/glossary/data_structure/index.html | 3 +- files/es/glossary/decryption/index.html | 3 +- files/es/glossary/dhtml/index.html | 3 +- files/es/glossary/domain_name/index.html | 3 +- files/es/glossary/dynamic_typing/index.html | 3 +- files/es/glossary/encryption/index.html | 3 +- files/es/glossary/entity/index.html | 3 +- files/es/glossary/first-class_function/index.html | 3 +- files/es/glossary/forbidden_header_name/index.html | 3 +- files/es/glossary/function/index.html | 3 +- files/es/glossary/general_header/index.html | 3 +- files/es/glossary/identifier/index.html | 3 +- files/es/glossary/immutable/index.html | 3 +- .../glossary/information_architecture/index.html | 3 +- files/es/glossary/key/index.html | 3 +- files/es/glossary/localization/index.html | 3 +- files/es/glossary/main_thread/index.html | 3 +- files/es/glossary/metadata/index.html | 3 +- files/es/glossary/method/index.html | 3 +- files/es/glossary/number/index.html | 3 +- files/es/glossary/object/index.html | 3 +- files/es/glossary/operand/index.html | 3 +- files/es/glossary/operator/index.html | 3 +- files/es/glossary/plaintext/index.html | 3 +- files/es/glossary/preflight_request/index.html | 3 +- files/es/glossary/primitive/index.html | 3 +- files/es/glossary/property/index.html | 3 +- files/es/glossary/pseudo-class/index.html | 3 +- files/es/glossary/pseudocode/index.html | 3 +- files/es/glossary/recursion/index.html | 3 +- files/es/glossary/safe/index.html | 3 +- files/es/glossary/scm/index.html | 3 +- files/es/glossary/speculative_parsing/index.html | 3 +- files/es/glossary/statement/index.html | 3 +- files/es/glossary/static_typing/index.html | 3 +- files/es/glossary/synchronous/index.html | 3 +- files/es/glossary/type_coercion/index.html | 3 +- files/es/glossary/ui/index.html | 3 +- files/es/glossary/validator/index.html | 3 +- files/es/glossary/value/index.html | 3 +- files/es/glossary/whitespace/index.html | 3 +- files/es/glossary/xforms/index.html | 3 +- files/es/glossary/xhtml/index.html | 3 +- .../accessibility/what_is_accessibility/index.html | 3 +- .../common_questions/common_web_layouts/index.html | 3 +- .../how_much_does_it_cost/index.html | 3 +- .../common_questions/using_github_pages/index.html | 3 +- .../common_questions/what_is_a_url/index.html | 3 +- .../what_is_a_web_server/index.html | 3 +- .../what_software_do_i_need/index.html | 3 +- .../backgrounds_and_borders/index.html | 3 +- .../cascade_and_inheritance/index.html | 3 +- .../css/building_blocks/debugging_css/index.html | 3 +- .../fundamental_css_comprehension/index.html | 3 +- .../handling_different_text_directions/index.html | 3 +- .../images_media_form_elements/index.html | 5 +- .../building_blocks/overflowing_content/index.html | 3 +- .../selectors/attribute_selectors/index.html | 3 +- .../selectors/combinators/index.html | 3 +- .../learn/css/building_blocks/selectors/index.html | 3 +- .../pseudo-classes_and_pseudo-elements/index.html | 3 +- .../type_class_and_id_selectors/index.html | 5 +- .../building_blocks/sizing_items_in_css/index.html | 3 +- .../css/building_blocks/the_box_model/index.html | 3 +- .../building_blocks/values_and_units/index.html | 3 +- .../learn/css/css_layout/introduction/index.html | 3 +- .../es/learn/css/css_layout/normal_flow/index.html | 3 +- .../css/css_layout/responsive_design/index.html | 3 +- .../supporting_older_browsers/index.html | 3 +- .../css/first_steps/getting_started/index.html | 3 +- .../first_steps/how_css_is_structured/index.html | 3 +- .../learn/css/first_steps/how_css_works/index.html | 3 +- .../using_your_new_knowledge/index.html | 3 +- .../learn/css/first_steps/what_is_css/index.html | 3 +- files/es/learn/css/howto/css_faq/index.html | 3 +- .../learn/css/howto/generated_content/index.html | 3 +- files/es/learn/css/howto/index.html | 3 +- .../es/learn/css/styling_text/web_fonts/index.html | 3 +- .../forms/basic_native_form_controls/index.html | 3 +- files/es/learn/forms/form_validation/index.html | 3 +- .../how_to_build_custom_form_controls/index.html | 3 +- .../forms/how_to_structure_a_web_form/index.html | 3 +- files/es/learn/forms/html5_input_types/index.html | 3 +- files/es/learn/forms/index.html | 3 +- .../index.html | 3 +- .../sending_and_retrieving_form_data/index.html | 3 +- files/es/learn/forms/styling_web_forms/index.html | 3 +- .../index.html | 5 +- .../index.html | 5 +- files/es/learn/forms/your_first_form/index.html | 3 +- files/es/learn/front-end_web_developer/index.html | 3 +- .../dealing_with_files/index.html | 5 +- .../how_the_web_works/index.html | 3 +- .../installing_basic_software/index.html | 5 +- .../the_web_and_web_standards/index.html | 3 +- .../author_fast-loading_html_pages/index.html | 3 +- files/es/learn/html/howto/index.html | 3 +- .../html/howto/use_data_attributes/index.html | 3 +- .../advanced_text_formatting/index.html | 3 +- .../creating_hyperlinks/index.html | 3 +- .../introduction_to_html/debugging_html/index.html | 3 +- .../document_and_website_structure/index.html | 3 +- .../getting_started/index.html | 3 +- .../html_text_fundamentals/index.html | 3 +- .../es/learn/html/introduction_to_html/index.html | 3 +- .../marking_up_a_letter/index.html | 3 +- .../structuring_a_page_of_content/index.html | 3 +- .../index.html | 5 +- .../index.html | 5 +- .../test_your_skills_colon__links/index.html | 5 +- .../the_head_metadata_in_html/index.html | 3 +- files/es/learn/html/tables/advanced/index.html | 3 +- files/es/learn/html/tables/basics/index.html | 3 +- files/es/learn/html/tables/index.html | 3 +- .../html/tables/structuring_planet_data/index.html | 3 +- .../build_your_own_function/index.html | 3 +- .../javascript/building_blocks/events/index.html | 3 +- .../building_blocks/image_gallery/index.html | 3 +- .../building_blocks/looping_code/index.html | 3 +- .../client-side_web_apis/introduction/index.html | 3 +- .../learn/javascript/first_steps/math/index.html | 5 +- .../first_steps/silly_story_generator/index.html | 3 +- .../test_your_skills_colon__strings/index.html | 5 +- .../first_steps/what_is_javascript/index.html | 3 +- .../objects/object_building_practice/index.html | 3 +- .../es/learn/learning_and_getting_help/index.html | 3 +- .../configuring_server_mime_types/index.html | 3 +- .../server-side/django/introduction/index.html | 3 +- .../first_steps/client-server_overview/index.html | 3 +- files/es/learn/server-side/first_steps/index.html | 3 +- .../first_steps/introduction/index.html | 3 +- .../first_steps/web_frameworks/index.html | 3 +- .../first_steps/website_security/index.html | 3 +- .../client-side_javascript_frameworks/index.html | 3 +- .../react_getting_started/index.html | 4 +- .../vue_getting_started/index.html | 5 +- .../cross_browser_testing/index.html | 3 +- files/es/learn/tools_and_testing/github/index.html | 3 +- files/es/learn/tools_and_testing/index.html | 3 +- .../understanding_client-side_tools/index.html | 3 +- files/es/mdn/at_ten/index.html | 3 +- files/es/mdn/contribute/processes/index.html | 3 +- .../guidelines/conventions_definitions/index.html | 3 +- files/es/mdn/guidelines/css_style_guide/index.html | 3 +- .../mdn/guidelines/writing_style_guide/index.html | 3 +- .../mdn/structures/compatibility_tables/index.html | 3 +- files/es/mdn/structures/live_samples/index.html | 3 +- files/es/mdn/structures/macros/other/index.html | 3 +- files/es/mdn/tools/kumascript/index.html | 3 +- files/es/mdn/yari/index.html | 3 +- .../anatomy_of_a_webextension/index.html | 3 +- .../add-ons/webextensions/prerequisites/index.html | 3 +- .../user_interface/browser_action/index.html | 3 +- .../what_are_webextensions/index.html | 3 +- .../your_first_webextension/index.html | 3 +- .../your_second_webextension/index.html | 3 +- .../developer_guide/build_instructions/index.html | 3 +- .../developer_guide/mozilla_build_faq/index.html | 3 +- .../developer_guide/source_code/cvs/index.html | 3 +- files/es/mozilla/firefox/releases/1.5/index.html | 3 +- files/es/mozilla/firefox/releases/19/index.html | 3 +- .../2/adding_feed_readers_to_firefox/index.html | 3 +- files/es/mozilla/firefox/releases/2/index.html | 3 +- .../firefox/releases/2/security_changes/index.html | 3 +- files/es/mozilla/firefox/releases/3.5/index.html | 3 +- .../firefox/releases/3/dom_improvements/index.html | 3 +- .../firefox/releases/3/full_page_zoom/index.html | 3 +- files/es/mozilla/firefox/releases/3/index.html | 3 +- .../releases/3/notable_bugs_fixed/index.html | 3 +- .../firefox/releases/3/svg_improvements/index.html | 3 +- .../firefox/releases/3/templates/index.html | 3 +- .../releases/3/updating_extensions/index.html | 3 +- .../3/updating_web_applications/index.html | 3 +- .../3/xul_improvements_in_firefox_3/index.html | 3 +- .../index.html | 4 +- .../index.html" | 4 +- files/es/orphaned/code_snippets/index.html | 3 +- .../pesta\303\261as_del_navegador/index.html" | 3 +- .../interior_del_componente/index.html" | 3 +- .../prefacio/index.html" | 3 +- .../creando_una_extensi\303\263n/index.html" | 3 +- .../index.html" | 4 +- "files/es/orphaned/css_din\303\241mico/index.html" | 3 +- files/es/orphaned/desarrollando_mozilla/index.html | 3 +- .../index.html" | 3 +- .../index.html | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../etiquetas_audio_y_video_en_firefox/index.html | 3 +- .../index.html" | 3 +- .../es/orphaned/faq_incrustando_mozilla/index.html | 3 +- .../introduction_to_extensions/index.html | 3 +- .../index.html | 4 +- .../index.html | 3 +- .../fragmentos_de_c\303\263digo/index.html" | 3 +- files/es/orphaned/funciones/index.html | 3 +- .../generaci\303\263n_de_guids/index.html" | 3 +- files/es/orphaned/glossary/elemento/index.html | 3 +- .../index.html" | 3 +- .../index.html" | 2 + .../index.html" | 3 +- files/es/orphaned/herramientas/index.html | 3 +- .../es/orphaned/html/elemento/datalist/index.html | 3 +- files/es/orphaned/html/elemento/form/index.html | 3 +- files/es/orphaned/html/elemento/section/index.html | 3 +- .../incrustando_mozilla/comunidad/index.html | 3 +- .../index.html" | 3 +- .../es/orphaned/learn/how_to_contribute/index.html | 5 +- .../learn/html/forms/html5_updates/index.html | 3 +- files/es/orphaned/localizar_con_narro/index.html | 5 +- files/es/orphaned/mdn/community/index.html | 3 +- .../mdn/community/working_in_community/index.html | 3 +- .../howto/create_an_mdn_account/index.html | 3 +- .../howto/do_a_technical_review/index.html | 3 +- .../howto/do_an_editorial_review/index.html | 3 +- .../property_template/index.html | 3 +- .../howto/remove_experimental_macros/index.html | 3 +- .../howto/set_the_summary_for_a_page/index.html | 3 +- .../howto/tag_javascript_pages/index.html | 3 +- .../howto/use_navigation_sidebars/index.html | 3 +- .../index.html | 3 +- .../mdn/tools/page_regeneration/index.html | 3 +- .../orphaned/mdn/tools/template_editing/index.html | 3 +- .../index.html | 3 +- .../modo_casi_est\303\241ndar_de_gecko/index.html" | 3 +- .../add-ons/webextensions/debugging/index.html | 3 +- .../package_your_extension_/index.html | 3 +- .../porting_a_google_chrome_extension/index.html | 3 +- .../temporary_installation_in_firefox/index.html | 3 +- .../orphaned/m\303\263dulos_javascript/index.html" | 3 +- files/es/orphaned/nsdirectoryservice/index.html | 3 +- .../participar_en_el_proyecto_mozilla/index.html | 3 +- .../index.html" | 3 +- .../index.html" | 4 +- .../index.html" | 3 +- .../index.html | 3 +- files/es/orphaned/referencia_de_xul/index.html | 3 +- .../index.html" | 3 +- files/es/orphaned/storage/index.html | 3 +- .../tools/add-ons/dom_inspector/index.html | 17 +- files/es/orphaned/tools/add-ons/index.html | 5 +- .../index.html | 3 +- .../traducir_una_extensi\303\263n/index.html" | 3 +- .../index.html | 3 +- .../index.html" | 3 +- files/es/orphaned/usar_web_workers/index.html | 3 +- .../index.html | 3 +- .../index.html" | 3 +- files/es/orphaned/vigilar_plugins/index.html | 3 +- .../checking_authenticity_with_password/index.html | 3 +- .../web/css/comenzando_(tutorial_css)/index.html | 3 +- files/es/orphaned/web/css/como_iniciar/index.html | 3 +- .../es/orphaned/web/css/primeros_pasos/index.html | 3 +- files/es/orphaned/web/css/rtl/index.html | 3 +- .../html/introduction_alhtml_clone/index.html | 3 +- .../orphaned/web/html/element/command/index.html | 3 +- .../orphaned/web/html/element/element/index.html | 3 +- .../etiqueta_personalizada_html5/index.html | 3 +- .../html/elemento/tipos_de_elementos/index.html | 5 +- .../web/html/global_attributes/dropzone/index.html | 3 +- .../global_objects/array/prototype/index.html | 3 +- .../orphaned/web/svg/svg_en_firefox_1.5/index.html | 3 +- .../es/orphaned/xpinstall_api_reference/index.html | 3 +- .../debugger/how_to/use_a_source_map/index.html | 3 +- files/es/tools/keyboard_shortcuts/index.html | 5 +- files/es/tools/network_monitor/index.html | 3 +- .../es/tools/page_inspector/3-pane_mode/index.html | 3 +- .../how_to/examine_and_edit_html/index.html | 3 +- .../examine_and_edit_the_box_model/index.html | 3 +- .../how_to/inspect_and_select_colors/index.html | 3 +- .../how_to/open_the_inspector/index.html | 3 +- .../reposition_elements_in_the_page/index.html | 3 +- files/es/tools/performance/index.html | 3 +- files/es/tools/performance/ui_tour/index.html | 3 +- .../firefox_for_android/index.html | 3 +- files/es/tools/responsive_design_mode/index.html | 3 +- files/es/tools/style_editor/index.html | 3 +- files/es/tools/taking_screenshots/index.html | 3 +- files/es/tools/web_audio_editor/index.html | 3 +- .../the_command_line_interpreter/index.html | 3 +- files/es/tools/web_console/ui_tour/index.html | 3 +- .../using_the_alertdialog_role/index.html | 3 +- .../using_the_aria-required_attribute/index.html | 3 +- .../web/accessibility/aria/forms/alerts/index.html | 3 +- .../aria/forms/basic_form_hints/index.html | 3 +- .../aria/forms/multipart_labels/index.html | 3 +- files/es/web/accessibility/community/index.html | 3 +- files/es/web/accessibility/index.html | 3 +- .../accessibility/understanding_wcag/index.html | 3 +- .../understanding_wcag/keyboard/index.html | 3 +- .../perceivable/color_contrast/index.html | 3 +- .../understanding_wcag/perceivable/index.html | 3 +- .../text_labels_and_names/index.html | 3 +- files/es/web/api/animation/animation/index.html | 3 +- files/es/web/api/animation/currenttime/index.html | 3 +- files/es/web/api/animation/finished/index.html | 3 +- files/es/web/api/battery_status_api/index.html | 3 +- .../api/canvas_api/a_basic_ray-caster/index.html | 3 +- files/es/web/api/canvas_api/index.html | 3 +- .../manipulating_video_using_canvas/index.html | 3 +- .../tutorial/advanced_animations/index.html | 3 +- .../tutorial/applying_styles_and_colors/index.html | 3 +- .../tutorial/basic_animations/index.html | 3 +- .../api/canvas_api/tutorial/basic_usage/index.html | 3 +- .../tutorial/compositing/example/index.html | 3 +- .../canvas_api/tutorial/drawing_shapes/index.html | 3 +- .../canvas_api/tutorial/drawing_text/index.html | 5 +- .../hit_regions_and_accessibility/index.html | 3 +- files/es/web/api/canvas_api/tutorial/index.html | 3 +- .../tutorial/optimizing_canvas/index.html | 3 +- .../pixel_manipulation_with_canvas/index.html | 3 +- files/es/web/api/clipboard_api/index.html | 3 +- files/es/web/api/console/table/index.html | 3 +- files/es/web/api/crypto/getrandomvalues/index.html | 3 +- files/es/web/api/document/cookie/index.html | 3 +- .../es/web/api/document/createattribute/index.html | 3 +- files/es/web/api/document/createevent/index.html | 3 +- files/es/web/api/document/open/index.html | 3 +- .../document/pointerlockchange_event/index.html | 3 +- .../api/document_object_model/events/index.html | 3 +- .../api/document_object_model/examples/index.html | 3 +- .../how_to_create_a_dom_tree/index.html | 3 +- files/es/web/api/document_object_model/index.html | 3 +- .../document_object_model/introduction/index.html | 3 +- .../index.html | 3 +- .../index.html | 4 +- .../using_the_w3c_dom_level_1_core/index.html | 3 +- .../document_object_model/whitespace/index.html | 5 +- .../documentorshadowroot/getselection/index.html | 3 +- .../pointerlockelement/index.html | 3 +- .../documentorshadowroot/stylesheets/index.html | 3 +- files/es/web/api/domstring/binary/index.html | 3 +- files/es/web/api/element/blur_event/index.html | 3 +- .../web/api/elementcssinlinestyle/style/index.html | 3 +- .../es/web/api/fetch_api/basic_concepts/index.html | 3 +- files/es/web/api/fetch_api/using_fetch/index.html | 3 +- files/es/web/api/formdata/index.html | 3 +- .../api/formdata/using_formdata_objects/index.html | 3 +- files/es/web/api/geolocation_api/index.html | 3 +- .../ongotpointercapture/index.html | 3 +- .../onlostpointercapture/index.html | 3 +- .../web/api/globaleventhandlers/onwheel/index.html | 3 +- files/es/web/api/history_api/example/index.html | 3 +- files/es/web/api/history_api/index.html | 3 +- .../file_drag_and_drop/index.html | 3 +- files/es/web/api/html_drag_and_drop_api/index.html | 3 +- .../recommended_drag_types/index.html | 3 +- files/es/web/api/htmlelement/accesskey/index.html | 3 +- .../api/htmlelement/animationend_event/index.html | 3 +- .../htmlelement/transitioncancel_event/index.html | 3 +- .../api/htmlelement/transitionend_event/index.html | 3 +- .../api/htmlmediaelement/abort_event/index.html | 3 +- .../api/htmlorforeignelement/dataset/index.html | 3 +- .../web/api/htmlorforeignelement/focus/index.html | 3 +- files/es/web/api/htmlvideoelement/index.html | 3 +- .../basic_concepts_behind_indexeddb/index.html | 3 +- .../api/indexeddb_api/using_indexeddb/index.html | 3 +- files/es/web/api/media_streams_api/index.html | 3 +- files/es/web/api/navigator/geolocation/index.html | 3 +- .../online_and_offline_events/index.html | 3 +- files/es/web/api/node/insertbefore/index.html | 3 +- files/es/web/api/node/parentelement/index.html | 3 +- .../using_the_notifications_api/index.html | 3 +- files/es/web/api/pointer_lock_api/index.html | 3 +- files/es/web/api/server-sent_events/index.html | 3 +- .../using_server-sent_events/index.html | 3 +- files/es/web/api/touch_events/index.html | 3 +- files/es/web/api/vibration_api/index.html | 3 +- files/es/web/api/web_audio_api/index.html | 3 +- .../using_the_web_speech_api/index.html | 3 +- files/es/web/api/web_storage_api/index.html | 3 +- .../using_the_web_storage_api/index.html | 3 +- .../web_workers_api/using_web_workers/index.html | 3 +- .../creating_3d_objects_using_webgl/index.html | 3 +- .../tutorial/using_textures_in_webgl/index.html | 3 +- .../web/api/webrtc_api/session_lifetime/index.html | 3 +- .../api/webrtc_api/taking_still_photos/index.html | 3 +- .../writing_websocket_server/index.html | 3 +- .../writing_websocket_servers/index.html | 3 +- .../web/api/window/beforeunload_event/index.html | 3 +- .../api/window/domcontentloaded_event/index.html | 3 +- files/es/web/api/window/load_event/index.html | 3 +- .../api/windoweventhandlers/onunload/index.html | 3 +- .../api/windoworworkerglobalscope/atob/index.html | 3 +- .../clearinterval/index.html | 3 +- .../cleartimeout/index.html | 3 +- .../setinterval/index.html | 3 +- .../settimeout/index.html | 3 +- files/es/web/api/xmldocument/async/index.html | 3 +- .../api/xmlhttprequest/loadend_event/index.html | 3 +- files/es/web/css/@media/height/index.html | 3 +- files/es/web/css/@media/resolution/index.html | 3 +- files/es/web/css/_colon_autofill/index.html | 5 +- files/es/web/css/_colon_is/index.html | 7 +- files/es/web/css/_colon_not/index.html | 5 +- files/es/web/css/_colon_user-invalid/index.html | 5 +- .../_doublecolon_file-selector-button/index.html | 5 +- .../web/css/adjacent_sibling_combinator/index.html | 3 +- files/es/web/css/attribute_selectors/index.html | 3 +- files/es/web/css/box-flex/index.html | 3 +- files/es/web/css/box-ordinal-group/index.html | 3 +- files/es/web/css/box-pack/index.html | 3 +- files/es/web/css/column-gap/index.html | 3 +- files/es/web/css/comments/index.html | 3 +- files/es/web/css/computed_value/index.html | 3 +- .../detecting_css_animation_support/index.html | 3 +- .../css_animations/using_css_animations/index.html | 3 +- .../border-image_generator/index.html | 3 +- .../web/css/css_backgrounds_and_borders/index.html | 3 +- .../using_multiple_backgrounds/index.html | 3 +- .../index.html | 3 +- files/es/web/css/css_box_model/index.html | 3 +- .../introduction_to_the_css_box_model/index.html | 3 +- .../mastering_margin_collapsing/index.html | 3 +- files/es/web/css/css_color/index.html | 3 +- .../css/css_colors/color_picker_tool/index.html | 3 +- files/es/web/css/css_columns/index.html | 3 +- .../using_multi-column_layouts/index.html | 3 +- files/es/web/css/css_conditional_rules/index.html | 3 +- .../basic_concepts_of_flexbox/index.html | 3 +- .../typical_use_cases_of_flexbox/index.html | 3 +- .../basic_concepts_of_grid_layout/index.html | 3 +- .../relationship_of_grid_layout/index.html | 3 +- .../css/css_images/using_css_gradients/index.html | 3 +- .../css/css_logical_properties/sizing/index.html | 3 +- .../adding_z-index/index.html | 3 +- .../understanding_z_index/index.html | 3 +- .../stacking_and_float/index.html | 3 +- .../stacking_context_example_1/index.html | 5 +- .../stacking_context_example_2/index.html | 5 +- .../stacking_context_example_3/index.html | 5 +- .../stacking_without_z-index/index.html | 3 +- .../the_stacking_context/index.html | 3 +- files/es/web/css/css_selectors/index.html | 3 +- .../index.html | 7 +- files/es/web/css/css_text/index.html | 3 +- .../using_css_transitions/index.html | 3 +- files/es/web/css/font-language-override/index.html | 3 +- files/es/web/css/gap/index.html | 3 +- .../web/css/general_sibling_combinator/index.html | 3 +- files/es/web/css/gradient/index.html | 3 +- files/es/web/css/initial_value/index.html | 5 +- files/es/web/css/mask-clip/index.html | 3 +- files/es/web/css/mask-image/index.html | 3 +- files/es/web/css/mask-origin/index.html | 3 +- files/es/web/css/mask-position/index.html | 3 +- files/es/web/css/mask-repeat/index.html | 3 +- files/es/web/css/mask/index.html | 3 +- .../media_queries/testing_media_queries/index.html | 3 +- .../media_queries/using_media_queries/index.html | 3 +- files/es/web/css/mix-blend-mode/index.html | 3 +- files/es/web/css/percentage/index.html | 3 +- files/es/web/css/pseudo-elements/index.html | 3 +- files/es/web/css/reference/index.html | 3 +- files/es/web/css/replaced_element/index.html | 3 +- files/es/web/css/resolution/index.html | 3 +- files/es/web/css/specificity/index.html | 3 +- .../css/tools/cubic_bezier_generator/index.html | 3 +- files/es/web/css/tools/index.html | 3 +- files/es/web/css/url()/index.html | 3 +- files/es/web/css/user-modify/index.html | 3 +- .../es/web/css/value_definition_syntax/index.html | 3 +- files/es/web/guide/ajax/community/index.html | 3 +- files/es/web/guide/ajax/getting_started/index.html | 3 +- .../index.html | 3 +- .../creating_and_triggering_events/index.html | 3 +- .../es/web/guide/events/event_handlers/index.html | 3 +- files/es/web/guide/events/index.html | 3 +- .../index.html | 5 +- .../web/guide/html/content_categories/index.html | 3 +- .../html/html5/constraint_validation/index.html | 3 +- .../web/guide/html/html5/html5_parser/index.html | 3 +- files/es/web/guide/html/html5/index.html | 3 +- .../html/html5/introduction_to_html5/index.html | 3 +- .../using_html_sections_and_outlines/index.html | 3 +- files/es/web/guide/mobile/index.html | 3 +- files/es/web/html/attributes/accept/index.html | 3 +- .../es/web/html/attributes/autocomplete/index.html | 3 +- .../es/web/html/attributes/crossorigin/index.html | 3 +- files/es/web/html/attributes/index.html | 3 +- files/es/web/html/attributes/min/index.html | 3 +- files/es/web/html/attributes/minlength/index.html | 3 +- files/es/web/html/attributes/multiple/index.html | 3 +- files/es/web/html/cors_enabled_image/index.html | 3 +- files/es/web/html/element/a/index.html | 3 +- files/es/web/html/element/abbr/index.html | 5 +- files/es/web/html/element/acronym/index.html | 5 +- files/es/web/html/element/address/index.html | 5 +- files/es/web/html/element/applet/index.html | 5 +- files/es/web/html/element/area/index.html | 5 +- files/es/web/html/element/article/index.html | 3 +- files/es/web/html/element/aside/index.html | 7 +- files/es/web/html/element/audio/index.html | 3 +- files/es/web/html/element/b/index.html | 5 +- files/es/web/html/element/base/index.html | 5 +- files/es/web/html/element/basefont/index.html | 5 +- files/es/web/html/element/bdi/index.html | 3 +- files/es/web/html/element/bdo/index.html | 5 +- files/es/web/html/element/bgsound/index.html | 3 +- files/es/web/html/element/big/index.html | 5 +- files/es/web/html/element/blink/index.html | 3 +- files/es/web/html/element/blockquote/index.html | 5 +- files/es/web/html/element/body/index.html | 3 +- files/es/web/html/element/br/index.html | 5 +- files/es/web/html/element/button/index.html | 5 +- files/es/web/html/element/canvas/index.html | 5 +- files/es/web/html/element/caption/index.html | 5 +- files/es/web/html/element/center/index.html | 5 +- files/es/web/html/element/cite/index.html | 5 +- files/es/web/html/element/code/index.html | 5 +- files/es/web/html/element/col/index.html | 5 +- files/es/web/html/element/colgroup/index.html | 5 +- files/es/web/html/element/content/index.html | 3 +- files/es/web/html/element/data/index.html | 3 +- files/es/web/html/element/datalist/index.html | 3 +- files/es/web/html/element/dd/index.html | 3 +- files/es/web/html/element/del/index.html | 5 +- files/es/web/html/element/details/index.html | 3 +- files/es/web/html/element/dfn/index.html | 5 +- files/es/web/html/element/dialog/index.html | 3 +- files/es/web/html/element/dir/index.html | 5 +- files/es/web/html/element/div/index.html | 5 +- files/es/web/html/element/dl/index.html | 3 +- files/es/web/html/element/dt/index.html | 3 +- files/es/web/html/element/em/index.html | 5 +- files/es/web/html/element/embed/index.html | 5 +- files/es/web/html/element/fieldset/index.html | 5 +- files/es/web/html/element/figcaption/index.html | 3 +- files/es/web/html/element/figure/index.html | 5 +- files/es/web/html/element/font/index.html | 5 +- files/es/web/html/element/footer/index.html | 3 +- files/es/web/html/element/form/index.html | 3 +- files/es/web/html/element/frame/index.html | 5 +- files/es/web/html/element/frameset/index.html | 5 +- files/es/web/html/element/head/index.html | 5 +- files/es/web/html/element/header/index.html | 3 +- .../web/html/element/heading_elements/index.html | 5 +- files/es/web/html/element/hgroup/index.html | 3 +- files/es/web/html/element/hr/index.html | 5 +- files/es/web/html/element/html/index.html | 5 +- files/es/web/html/element/i/index.html | 5 +- files/es/web/html/element/iframe/index.html | 3 +- files/es/web/html/element/image/index.html | 3 +- files/es/web/html/element/img/index.html | 3 +- files/es/web/html/element/index.html | 3 +- files/es/web/html/element/input/button/index.html | 3 +- .../es/web/html/element/input/checkbox/index.html | 3 +- files/es/web/html/element/input/color/index.html | 3 +- files/es/web/html/element/input/date/index.html | 3 +- .../es/web/html/element/input/datetime/index.html | 3 +- files/es/web/html/element/input/email/index.html | 3 +- files/es/web/html/element/input/hidden/index.html | 3 +- files/es/web/html/element/input/index.html | 3 +- files/es/web/html/element/input/number/index.html | 3 +- .../es/web/html/element/input/password/index.html | 3 +- files/es/web/html/element/input/range/index.html | 3 +- files/es/web/html/element/input/text/index.html | 3 +- files/es/web/html/element/ins/index.html | 5 +- files/es/web/html/element/isindex/index.html | 3 +- files/es/web/html/element/kbd/index.html | 5 +- files/es/web/html/element/keygen/index.html | 3 +- files/es/web/html/element/label/index.html | 3 +- files/es/web/html/element/legend/index.html | 5 +- files/es/web/html/element/li/index.html | 5 +- files/es/web/html/element/link/index.html | 5 +- files/es/web/html/element/main/index.html | 3 +- files/es/web/html/element/map/index.html | 5 +- files/es/web/html/element/mark/index.html | 5 +- files/es/web/html/element/marquee/index.html | 3 +- files/es/web/html/element/menu/index.html | 5 +- files/es/web/html/element/meta/index.html | 5 +- files/es/web/html/element/multicol/index.html | 3 +- files/es/web/html/element/nav/index.html | 3 +- files/es/web/html/element/nobr/index.html | 3 +- files/es/web/html/element/noframes/index.html | 5 +- files/es/web/html/element/noscript/index.html | 5 +- files/es/web/html/element/object/index.html | 3 +- files/es/web/html/element/ol/index.html | 5 +- files/es/web/html/element/option/index.html | 3 +- files/es/web/html/element/p/index.html | 5 +- files/es/web/html/element/param/index.html | 5 +- files/es/web/html/element/picture/index.html | 3 +- files/es/web/html/element/pre/index.html | 3 +- files/es/web/html/element/progress/index.html | 3 +- files/es/web/html/element/q/index.html | 3 +- files/es/web/html/element/s/index.html | 5 +- files/es/web/html/element/samp/index.html | 3 +- files/es/web/html/element/section/index.html | 3 +- files/es/web/html/element/select/index.html | 3 +- files/es/web/html/element/shadow/index.html | 3 +- files/es/web/html/element/slot/index.html | 3 +- files/es/web/html/element/small/index.html | 5 +- files/es/web/html/element/source/index.html | 3 +- files/es/web/html/element/span/index.html | 5 +- files/es/web/html/element/strike/index.html | 5 +- files/es/web/html/element/strong/index.html | 5 +- files/es/web/html/element/style/index.html | 5 +- files/es/web/html/element/sub/index.html | 5 +- files/es/web/html/element/sup/index.html | 5 +- files/es/web/html/element/table/index.html | 3 +- files/es/web/html/element/td/index.html | 3 +- files/es/web/html/element/template/index.html | 3 +- files/es/web/html/element/textarea/index.html | 3 +- files/es/web/html/element/th/index.html | 3 +- files/es/web/html/element/time/index.html | 3 +- files/es/web/html/element/title/index.html | 5 +- files/es/web/html/element/tr/index.html | 3 +- files/es/web/html/element/track/index.html | 3 +- files/es/web/html/element/tt/index.html | 5 +- files/es/web/html/element/u/index.html | 5 +- files/es/web/html/element/ul/index.html | 5 +- files/es/web/html/element/var/index.html | 5 +- files/es/web/html/element/video/index.html | 3 +- files/es/web/html/element/wbr/index.html | 3 +- files/es/web/html/element/xmp/index.html | 3 +- .../html/global_attributes/accesskey/index.html | 3 +- .../global_attributes/autocapitalize/index.html | 3 +- .../es/web/html/global_attributes/class/index.html | 3 +- .../global_attributes/contenteditable/index.html | 3 +- .../html/global_attributes/contextmenu/index.html | 3 +- .../html/global_attributes/data-_star_/index.html | 3 +- files/es/web/html/global_attributes/dir/index.html | 3 +- .../html/global_attributes/draggable/index.html | 3 +- .../web/html/global_attributes/hidden/index.html | 3 +- files/es/web/html/global_attributes/id/index.html | 3 +- files/es/web/html/global_attributes/index.html | 3 +- files/es/web/html/global_attributes/is/index.html | 3 +- .../web/html/global_attributes/itemid/index.html | 3 +- .../web/html/global_attributes/itemprop/index.html | 3 +- .../web/html/global_attributes/itemref/index.html | 3 +- .../html/global_attributes/itemscope/index.html | 3 +- .../es/web/html/global_attributes/lang/index.html | 3 +- .../es/web/html/global_attributes/slot/index.html | 3 +- .../html/global_attributes/spellcheck/index.html | 3 +- .../es/web/html/global_attributes/style/index.html | 3 +- .../web/html/global_attributes/tabindex/index.html | 3 +- .../es/web/html/global_attributes/title/index.html | 3 +- .../html/global_attributes/translate/index.html | 3 +- .../x-ms-acceleratorkey/index.html | 3 +- files/es/web/html/index/index.html | 3 +- files/es/web/html/inline_elements/index.html | 3 +- files/es/web/html/link_types/index.html | 3 +- files/es/web/html/microdata/index.html | 3 +- files/es/web/html/microformats/index.html | 3 +- files/es/web/html/reference/index.html | 3 +- .../html/using_the_application_cache/index.html | 3 +- .../web/http/basics_of_http/data_uris/index.html | 3 +- .../identifying_resources_on_the_web/index.html | 3 +- files/es/web/http/conditional_requests/index.html | 3 +- .../connection_management_in_http_1.x/index.html | 3 +- files/es/web/http/cors/index.html | 3 +- files/es/web/http/headers/digest/index.html | 3 +- .../web/http/headers/user-agent/firefox/index.html | 3 +- .../web/http/protocol_upgrade_mechanism/index.html | 3 +- .../http/resources_and_specifications/index.html | 3 +- files/es/web/http/session/index.html | 3 +- files/es/web/http/status/413/index.html | 3 +- .../a_re-introduction_to_javascript/index.html | 3 +- .../es/web/javascript/about_javascript/index.html | 3 +- .../index.html | 3 +- .../control_flow_and_error_handling/index.html | 5 +- files/es/web/javascript/guide/functions/index.html | 5 +- .../guide/indexed_collections/index.html | 5 +- .../web/javascript/guide/introduction/index.html | 5 +- .../guide/loops_and_iteration/index.html | 3 +- files/es/web/javascript/guide/modules/index.html | 3 +- .../regular_expressions/assertions/index.html | 3 +- .../character_classes/index.html | 3 +- .../regular_expressions/cheatsheet/index.html | 3 +- .../groups_and_ranges/index.html | 3 +- .../regular_expressions/quantifiers/index.html | 3 +- .../unicode_property_escapes/index.html | 3 +- .../web/javascript/guide/using_promises/index.html | 3 +- .../guide/working_with_objects/index.html | 3 +- .../inheritance_and_the_prototype_chain/index.html | 3 +- .../javascript_technologies_overview/index.html | 3 +- .../es/web/javascript/memory_management/index.html | 3 +- files/es/web/javascript/reference/about/index.html | 3 +- .../reference/classes/constructor/index.html | 3 +- .../reference/classes/extends/index.html | 3 +- .../es/web/javascript/reference/classes/index.html | 3 +- .../classes/private_class_fields/index.html | 3 +- .../classes/public_class_fields/index.html | 3 +- .../javascript/reference/classes/static/index.html | 3 +- .../deprecated_and_obsolete_features/index.html | 3 +- .../the_legacy_iterator_protocol/index.html | 4 +- .../reference/errors/bad_regexp_flag/index.html | 3 +- .../reference/errors/illegal_character/index.html | 3 +- .../missing_semicolon_before_statement/index.html | 3 +- .../errors/strict_non_simple_params/index.html | 3 +- .../functions/arguments/callee/index.html | 3 +- .../reference/functions/arguments/index.html | 3 +- .../functions/arguments/length/index.html | 3 +- .../reference/functions/arrow_functions/index.html | 3 +- .../functions/default_parameters/index.html | 3 +- .../javascript/reference/functions/get/index.html | 3 +- .../web/javascript/reference/functions/index.html | 3 +- .../functions/method_definitions/index.html | 3 +- .../reference/functions/rest_parameters/index.html | 3 +- .../javascript/reference/functions/set/index.html | 3 +- .../global_objects/aggregateerror/index.html | 3 +- .../global_objects/array/@@iterator/index.html | 5 +- .../global_objects/array/@@species/index.html | 5 +- .../global_objects/array/@@unscopables/index.html | 5 +- .../global_objects/array/concat/index.html | 3 +- .../global_objects/array/copywithin/index.html | 3 +- .../global_objects/array/entries/index.html | 3 +- .../global_objects/array/every/index.html | 3 +- .../reference/global_objects/array/fill/index.html | 3 +- .../global_objects/array/filter/index.html | 3 +- .../reference/global_objects/array/find/index.html | 3 +- .../global_objects/array/findindex/index.html | 3 +- .../reference/global_objects/array/flat/index.html | 3 +- .../global_objects/array/flatmap/index.html | 3 +- .../global_objects/array/foreach/index.html | 3 +- .../reference/global_objects/array/from/index.html | 3 +- .../global_objects/array/includes/index.html | 3 +- .../reference/global_objects/array/index.html | 3 +- .../global_objects/array/indexof/index.html | 3 +- .../global_objects/array/isarray/index.html | 3 +- .../reference/global_objects/array/join/index.html | 3 +- .../reference/global_objects/array/keys/index.html | 3 +- .../global_objects/array/lastindexof/index.html | 3 +- .../global_objects/array/length/index.html | 3 +- .../reference/global_objects/array/map/index.html | 3 +- .../reference/global_objects/array/of/index.html | 3 +- .../reference/global_objects/array/pop/index.html | 3 +- .../reference/global_objects/array/push/index.html | 3 +- .../global_objects/array/reduce/index.html | 3 +- .../global_objects/array/reduceright/index.html | 3 +- .../global_objects/array/reverse/index.html | 3 +- .../global_objects/array/shift/index.html | 3 +- .../global_objects/array/slice/index.html | 3 +- .../reference/global_objects/array/some/index.html | 3 +- .../reference/global_objects/array/sort/index.html | 3 +- .../global_objects/array/splice/index.html | 3 +- .../global_objects/array/tolocalestring/index.html | 3 +- .../global_objects/array/tosource/index.html | 3 +- .../global_objects/array/tostring/index.html | 3 +- .../global_objects/array/unshift/index.html | 3 +- .../global_objects/array/values/index.html | 3 +- .../arraybuffer/@@species/index.html | 5 +- .../arraybuffer/bytelength/index.html | 3 +- .../global_objects/arraybuffer/index.html | 3 +- .../global_objects/asyncfunction/index.html | 3 +- .../global_objects/boolean/boolean/index.html | 3 +- .../reference/global_objects/boolean/index.html | 3 +- .../global_objects/boolean/tosource/index.html | 3 +- .../global_objects/date/getdate/index.html | 3 +- .../global_objects/date/getday/index.html | 3 +- .../global_objects/date/getfullyear/index.html | 3 +- .../global_objects/date/gethours/index.html | 3 +- .../global_objects/date/getmilliseconds/index.html | 3 +- .../global_objects/date/getminutes/index.html | 3 +- .../global_objects/date/getmonth/index.html | 3 +- .../global_objects/date/getseconds/index.html | 3 +- .../global_objects/date/gettime/index.html | 3 +- .../global_objects/date/getutcfullyear/index.html | 3 +- .../global_objects/date/getutchours/index.html | 3 +- .../reference/global_objects/date/index.html | 3 +- .../reference/global_objects/date/now/index.html | 3 +- .../reference/global_objects/date/parse/index.html | 3 +- .../global_objects/date/setfullyear/index.html | 3 +- .../global_objects/date/setmonth/index.html | 3 +- .../global_objects/date/todatestring/index.html | 3 +- .../global_objects/date/toisostring/index.html | 3 +- .../global_objects/date/tojson/index.html | 3 +- .../date/tolocaledatestring/index.html | 3 +- .../global_objects/date/tolocalestring/index.html | 3 +- .../date/tolocaletimestring/index.html | 3 +- .../global_objects/date/toutcstring/index.html | 3 +- .../reference/global_objects/date/utc/index.html | 3 +- .../reference/global_objects/decodeuri/index.html | 3 +- .../global_objects/decodeuricomponent/index.html | 3 +- .../reference/global_objects/encodeuri/index.html | 3 +- .../global_objects/encodeuricomponent/index.html | 3 +- .../global_objects/error/error/index.html | 3 +- .../global_objects/error/filename/index.html | 3 +- .../reference/global_objects/error/index.html | 3 +- .../global_objects/error/linenumber/index.html | 3 +- .../global_objects/error/message/index.html | 3 +- .../reference/global_objects/error/name/index.html | 3 +- .../global_objects/error/tosource/index.html | 3 +- .../global_objects/error/tostring/index.html | 3 +- .../reference/global_objects/escape/index.html | 3 +- .../reference/global_objects/eval/index.html | 3 +- .../reference/global_objects/evalerror/index.html | 3 +- .../global_objects/function/apply/index.html | 3 +- .../global_objects/function/arguments/index.html | 3 +- .../global_objects/function/bind/index.html | 3 +- .../global_objects/function/call/index.html | 3 +- .../global_objects/function/caller/index.html | 3 +- .../global_objects/function/displayname/index.html | 3 +- .../global_objects/function/function/index.html | 3 +- .../reference/global_objects/function/index.html | 3 +- .../global_objects/function/length/index.html | 3 +- .../global_objects/function/name/index.html | 3 +- .../global_objects/function/tosource/index.html | 3 +- .../global_objects/function/tostring/index.html | 3 +- .../reference/global_objects/generator/index.html | 3 +- .../global_objects/generator/next/index.html | 3 +- .../global_objects/generator/return/index.html | 3 +- .../global_objects/generator/throw/index.html | 3 +- .../javascript/reference/global_objects/index.html | 3 +- .../reference/global_objects/infinity/index.html | 3 +- .../global_objects/internalerror/index.html | 3 +- .../internalerror/internalerror/index.html | 5 +- .../reference/global_objects/intl/index.html | 3 +- .../intl/numberformat/format/index.html | 3 +- .../global_objects/intl/numberformat/index.html | 3 +- .../intl/relativetimeformat/index.html | 3 +- .../reference/global_objects/isfinite/index.html | 3 +- .../reference/global_objects/isnan/index.html | 3 +- .../reference/global_objects/json/index.html | 3 +- .../reference/global_objects/json/parse/index.html | 3 +- .../global_objects/json/stringify/index.html | 3 +- .../reference/global_objects/map/clear/index.html | 3 +- .../reference/global_objects/map/delete/index.html | 3 +- .../global_objects/map/entries/index.html | 3 +- .../global_objects/map/foreach/index.html | 3 +- .../reference/global_objects/map/get/index.html | 3 +- .../reference/global_objects/map/has/index.html | 3 +- .../reference/global_objects/map/index.html | 3 +- .../reference/global_objects/map/keys/index.html | 3 +- .../reference/global_objects/map/set/index.html | 3 +- .../reference/global_objects/map/size/index.html | 3 +- .../reference/global_objects/map/values/index.html | 3 +- .../reference/global_objects/math/abs/index.html | 3 +- .../reference/global_objects/math/acos/index.html | 3 +- .../reference/global_objects/math/acosh/index.html | 3 +- .../reference/global_objects/math/asin/index.html | 3 +- .../reference/global_objects/math/asinh/index.html | 3 +- .../reference/global_objects/math/atan/index.html | 3 +- .../reference/global_objects/math/atan2/index.html | 3 +- .../reference/global_objects/math/atanh/index.html | 3 +- .../reference/global_objects/math/cbrt/index.html | 3 +- .../reference/global_objects/math/ceil/index.html | 3 +- .../reference/global_objects/math/cos/index.html | 3 +- .../reference/global_objects/math/e/index.html | 3 +- .../reference/global_objects/math/exp/index.html | 3 +- .../reference/global_objects/math/expm1/index.html | 3 +- .../reference/global_objects/math/floor/index.html | 3 +- .../global_objects/math/fround/index.html | 3 +- .../reference/global_objects/math/hypot/index.html | 3 +- .../reference/global_objects/math/index.html | 3 +- .../reference/global_objects/math/ln10/index.html | 3 +- .../reference/global_objects/math/ln2/index.html | 3 +- .../reference/global_objects/math/log/index.html | 3 +- .../reference/global_objects/math/log10/index.html | 3 +- .../global_objects/math/log10e/index.html | 3 +- .../reference/global_objects/math/log2/index.html | 3 +- .../reference/global_objects/math/log2e/index.html | 3 +- .../reference/global_objects/math/max/index.html | 3 +- .../reference/global_objects/math/min/index.html | 3 +- .../reference/global_objects/math/pi/index.html | 3 +- .../reference/global_objects/math/pow/index.html | 3 +- .../global_objects/math/random/index.html | 3 +- .../reference/global_objects/math/round/index.html | 3 +- .../reference/global_objects/math/sign/index.html | 3 +- .../reference/global_objects/math/sin/index.html | 3 +- .../reference/global_objects/math/sqrt/index.html | 3 +- .../global_objects/math/sqrt1_2/index.html | 3 +- .../reference/global_objects/math/sqrt2/index.html | 3 +- .../reference/global_objects/math/tan/index.html | 3 +- .../reference/global_objects/math/tanh/index.html | 3 +- .../reference/global_objects/math/trunc/index.html | 3 +- .../reference/global_objects/nan/index.html | 3 +- .../reference/global_objects/null/index.html | 3 +- .../reference/global_objects/number/index.html | 3 +- .../global_objects/number/isfinite/index.html | 3 +- .../global_objects/number/isinteger/index.html | 3 +- .../global_objects/number/isnan/index.html | 3 +- .../global_objects/number/issafeinteger/index.html | 3 +- .../number/max_safe_integer/index.html | 3 +- .../global_objects/number/max_value/index.html | 3 +- .../global_objects/number/min_value/index.html | 3 +- .../reference/global_objects/number/nan/index.html | 3 +- .../number/negative_infinity/index.html | 3 +- .../global_objects/number/parsefloat/index.html | 3 +- .../global_objects/number/parseint/index.html | 3 +- .../number/positive_infinity/index.html | 3 +- .../global_objects/number/tofixed/index.html | 3 +- .../number/tolocalestring/index.html | 3 +- .../global_objects/number/toprecision/index.html | 3 +- .../global_objects/number/tostring/index.html | 3 +- .../global_objects/number/valueof/index.html | 3 +- .../object/__definegetter__/index.html | 3 +- .../object/__lookupgetter__/index.html | 3 +- .../global_objects/object/assign/index.html | 3 +- .../global_objects/object/constructor/index.html | 3 +- .../global_objects/object/create/index.html | 3 +- .../object/defineproperties/index.html | 3 +- .../object/defineproperty/index.html | 3 +- .../global_objects/object/entries/index.html | 3 +- .../global_objects/object/freeze/index.html | 3 +- .../global_objects/object/fromentries/index.html | 3 +- .../object/getownpropertydescriptor/index.html | 3 +- .../object/getownpropertydescriptors/index.html | 3 +- .../object/getownpropertynames/index.html | 3 +- .../object/getownpropertysymbols/index.html | 3 +- .../object/getprototypeof/index.html | 3 +- .../object/hasownproperty/index.html | 3 +- .../reference/global_objects/object/index.html | 3 +- .../reference/global_objects/object/is/index.html | 3 +- .../global_objects/object/isextensible/index.html | 3 +- .../global_objects/object/isfrozen/index.html | 3 +- .../global_objects/object/isprototypeof/index.html | 3 +- .../global_objects/object/issealed/index.html | 3 +- .../global_objects/object/keys/index.html | 3 +- .../object/preventextensions/index.html | 3 +- .../object/propertyisenumerable/index.html | 3 +- .../global_objects/object/proto/index.html | 3 +- .../global_objects/object/seal/index.html | 3 +- .../object/setprototypeof/index.html | 3 +- .../object/tolocalestring/index.html | 3 +- .../global_objects/object/tosource/index.html | 3 +- .../global_objects/object/tostring/index.html | 3 +- .../global_objects/object/valueof/index.html | 3 +- .../global_objects/object/values/index.html | 3 +- .../reference/global_objects/parsefloat/index.html | 3 +- .../reference/global_objects/parseint/index.html | 3 +- .../global_objects/promise/all/index.html | 3 +- .../global_objects/promise/catch/index.html | 3 +- .../global_objects/promise/finally/index.html | 3 +- .../reference/global_objects/promise/index.html | 3 +- .../global_objects/promise/race/index.html | 3 +- .../global_objects/promise/reject/index.html | 3 +- .../global_objects/promise/resolve/index.html | 3 +- .../global_objects/promise/then/index.html | 3 +- .../reference/global_objects/proxy/index.html | 3 +- .../proxy/getownpropertydescriptor/index.html | 3 +- .../global_objects/proxy/proxy/index.html | 3 +- .../global_objects/proxy/proxy/set/index.html | 3 +- .../global_objects/referenceerror/index.html | 3 +- .../global_objects/regexp/compile/index.html | 3 +- .../global_objects/regexp/exec/index.html | 3 +- .../global_objects/regexp/ignorecase/index.html | 3 +- .../reference/global_objects/regexp/index.html | 3 +- .../global_objects/regexp/regexp/index.html | 3 +- .../global_objects/regexp/rightcontext/index.html | 3 +- .../global_objects/regexp/test/index.html | 3 +- .../global_objects/regexp/tostring/index.html | 3 +- .../global_objects/set/@@iterator/index.html | 5 +- .../reference/global_objects/set/add/index.html | 3 +- .../reference/global_objects/set/clear/index.html | 3 +- .../reference/global_objects/set/delete/index.html | 3 +- .../global_objects/set/entries/index.html | 3 +- .../reference/global_objects/set/has/index.html | 3 +- .../reference/global_objects/set/index.html | 3 +- .../reference/global_objects/set/size/index.html | 3 +- .../reference/global_objects/set/values/index.html | 3 +- .../global_objects/string/anchor/index.html | 3 +- .../reference/global_objects/string/big/index.html | 3 +- .../global_objects/string/blink/index.html | 3 +- .../global_objects/string/bold/index.html | 3 +- .../global_objects/string/charat/index.html | 3 +- .../global_objects/string/charcodeat/index.html | 3 +- .../global_objects/string/codepointat/index.html | 3 +- .../global_objects/string/concat/index.html | 3 +- .../global_objects/string/endswith/index.html | 3 +- .../global_objects/string/fixed/index.html | 3 +- .../global_objects/string/fontcolor/index.html | 3 +- .../global_objects/string/fontsize/index.html | 3 +- .../global_objects/string/fromcharcode/index.html | 3 +- .../global_objects/string/fromcodepoint/index.html | 3 +- .../global_objects/string/includes/index.html | 3 +- .../reference/global_objects/string/index.html | 3 +- .../global_objects/string/indexof/index.html | 3 +- .../global_objects/string/italics/index.html | 3 +- .../global_objects/string/lastindexof/index.html | 3 +- .../global_objects/string/length/index.html | 3 +- .../global_objects/string/link/index.html | 3 +- .../global_objects/string/localecompare/index.html | 3 +- .../global_objects/string/match/index.html | 3 +- .../global_objects/string/matchall/index.html | 3 +- .../global_objects/string/normalize/index.html | 3 +- .../global_objects/string/padstart/index.html | 3 +- .../reference/global_objects/string/raw/index.html | 3 +- .../global_objects/string/repeat/index.html | 3 +- .../global_objects/string/replace/index.html | 3 +- .../global_objects/string/search/index.html | 3 +- .../global_objects/string/slice/index.html | 3 +- .../global_objects/string/small/index.html | 3 +- .../global_objects/string/split/index.html | 3 +- .../global_objects/string/startswith/index.html | 3 +- .../global_objects/string/strike/index.html | 3 +- .../reference/global_objects/string/sub/index.html | 3 +- .../global_objects/string/substr/index.html | 3 +- .../global_objects/string/substring/index.html | 3 +- .../reference/global_objects/string/sup/index.html | 3 +- .../string/tolocalelowercase/index.html | 3 +- .../string/tolocaleuppercase/index.html | 3 +- .../global_objects/string/tolowercase/index.html | 3 +- .../global_objects/string/tosource/index.html | 3 +- .../global_objects/string/tostring/index.html | 3 +- .../global_objects/string/touppercase/index.html | 3 +- .../global_objects/string/trim/index.html | 3 +- .../global_objects/string/trimend/index.html | 3 +- .../global_objects/string/valueof/index.html | 3 +- .../reference/global_objects/symbol/for/index.html | 3 +- .../global_objects/symbol/hasinstance/index.html | 3 +- .../reference/global_objects/symbol/index.html | 3 +- .../global_objects/symbol/iterator/index.html | 3 +- .../global_objects/syntaxerror/index.html | 3 +- .../global_objects/typedarray/buffer/index.html | 3 +- .../reference/global_objects/typedarray/index.html | 3 +- .../reference/global_objects/uint8array/index.html | 3 +- .../reference/global_objects/undefined/index.html | 3 +- .../reference/global_objects/unescape/index.html | 3 +- .../reference/global_objects/urierror/index.html | 3 +- .../global_objects/weakmap/clear/index.html | 3 +- .../global_objects/weakmap/delete/index.html | 3 +- .../global_objects/weakmap/get/index.html | 3 +- .../global_objects/weakmap/has/index.html | 3 +- .../reference/global_objects/weakmap/index.html | 3 +- .../global_objects/weakmap/set/index.html | 3 +- .../reference/global_objects/weakset/index.html | 3 +- .../global_objects/webassembly/index.html | 3 +- files/es/web/javascript/reference/index.html | 3 +- .../reference/iteration_protocols/index.html | 3 +- .../reference/lexical_grammar/index.html | 3 +- .../reference/operators/addition/index.html | 3 +- .../reference/operators/assignment/index.html | 3 +- .../reference/operators/async_function/index.html | 3 +- .../reference/operators/await/index.html | 3 +- .../reference/operators/class/index.html | 3 +- .../reference/operators/comma_operator/index.html | 3 +- .../operators/conditional_operator/index.html | 3 +- .../reference/operators/decrement/index.html | 3 +- .../reference/operators/delete/index.html | 3 +- .../operators/destructuring_assignment/index.html | 3 +- .../reference/operators/division/index.html | 3 +- .../reference/operators/equality/index.html | 3 +- .../reference/operators/function/index.html | 3 +- .../reference/operators/function_star_/index.html | 3 +- .../reference/operators/grouping/index.html | 3 +- .../javascript/reference/operators/in/index.html | 3 +- .../web/javascript/reference/operators/index.html | 3 +- .../reference/operators/instanceof/index.html | 3 +- .../reference/operators/new.target/index.html | 3 +- .../javascript/reference/operators/new/index.html | 3 +- .../operators/operator_precedence/index.html | 3 +- .../operators/optional_chaining/index.html | 3 +- .../operators/pipeline_operator/index.html | 3 +- .../operators/property_accessors/index.html | 3 +- .../reference/operators/remainder/index.html | 3 +- .../reference/operators/spread_syntax/index.html | 3 +- .../reference/operators/strict_equality/index.html | 3 +- .../reference/operators/subtraction/index.html | 3 +- .../reference/operators/super/index.html | 3 +- .../javascript/reference/operators/this/index.html | 3 +- .../reference/operators/typeof/index.html | 3 +- .../javascript/reference/operators/void/index.html | 3 +- .../reference/operators/yield/index.html | 3 +- .../reference/operators/yield_star_/index.html | 3 +- .../reference/statements/async_function/index.html | 3 +- .../reference/statements/block/index.html | 3 +- .../reference/statements/break/index.html | 3 +- .../reference/statements/class/index.html | 3 +- .../reference/statements/const/index.html | 3 +- .../reference/statements/continue/index.html | 3 +- .../reference/statements/debugger/index.html | 3 +- .../reference/statements/do...while/index.html | 3 +- .../reference/statements/empty/index.html | 3 +- .../reference/statements/export/index.html | 3 +- .../reference/statements/for-await...of/index.html | 3 +- .../reference/statements/for...in/index.html | 3 +- .../reference/statements/for...of/index.html | 3 +- .../javascript/reference/statements/for/index.html | 3 +- .../reference/statements/function/index.html | 3 +- .../reference/statements/function_star_/index.html | 3 +- .../reference/statements/if...else/index.html | 3 +- .../reference/statements/import.meta/index.html | 3 +- .../reference/statements/import/index.html | 3 +- .../web/javascript/reference/statements/index.html | 3 +- .../reference/statements/label/index.html | 3 +- .../javascript/reference/statements/let/index.html | 3 +- .../reference/statements/return/index.html | 3 +- .../reference/statements/switch/index.html | 3 +- .../reference/statements/throw/index.html | 3 +- .../reference/statements/try...catch/index.html | 3 +- .../javascript/reference/statements/var/index.html | 3 +- .../reference/statements/while/index.html | 3 +- .../reference/statements/with/index.html | 3 +- .../javascript/reference/strict_mode/index.html | 3 +- .../reference/template_literals/index.html | 3 +- files/es/web/javascript/typed_arrays/index.html | 3 +- files/es/web/mathml/element/index.html | 3 +- files/es/web/mathml/element/math/index.html | 3 +- .../index.html | 3 +- files/es/web/opensearch/index.html | 3 +- .../optimizing_startup_performance/index.html | 3 +- .../developer_guide/installing/index.html | 3 +- .../responsive/media_types/index.html | 3 +- .../es/web/security/same-origin_policy/index.html | 3 +- .../turning_off_form_autocompletion/index.html | 3 +- .../index.html | 3 +- files/es/web/svg/element/glyph/index.html | 3 +- files/es/web/svg/element/script/index.html | 3 +- .../web/svg/svg_1.1_support_in_firefox/index.html | 3 +- files/es/web/svg/tutorial/introduction/index.html | 3 +- files/es/web/tutorials/index.html | 3 +- files/es/web/xml/xml_introduction/index.html | 3 +- .../es/web/xpath/axes/ancestor-or-self/index.html | 3 +- files/es/web/xpath/axes/ancestor/index.html | 3 +- files/es/web/xpath/axes/attribute/index.html | 3 +- files/es/web/xpath/axes/child/index.html | 3 +- .../web/xpath/axes/descendant-or-self/index.html | 3 +- files/es/web/xpath/axes/descendant/index.html | 3 +- .../es/web/xpath/axes/following-sibling/index.html | 3 +- files/es/web/xpath/axes/following/index.html | 3 +- files/es/web/xpath/axes/index.html | 3 +- files/es/web/xpath/axes/namespace/index.html | 3 +- files/es/web/xpath/axes/parent/index.html | 3 +- .../es/web/xpath/axes/preceding-sibling/index.html | 3 +- files/es/web/xpath/axes/preceding/index.html | 3 +- files/es/web/xpath/functions/contains/index.html | 3 +- files/es/web/xpath/functions/index.html | 3 +- files/es/web/xpath/functions/substring/index.html | 3 +- files/es/web/xpath/functions/true/index.html | 3 +- .../index.html | 3 +- files/es/web/xslt/element/apply-imports/index.html | 3 +- .../es/web/xslt/element/apply-templates/index.html | 3 +- files/es/web/xslt/element/attribute-set/index.html | 3 +- files/es/web/xslt/element/attribute/index.html | 3 +- files/es/web/xslt/element/call-template/index.html | 3 +- files/es/web/xslt/element/choose/index.html | 3 +- files/es/web/xslt/element/comment/index.html | 3 +- files/es/web/xslt/element/copy-of/index.html | 3 +- files/es/web/xslt/element/copy/index.html | 3 +- .../es/web/xslt/element/decimal-format/index.html | 3 +- files/es/web/xslt/element/fallback/index.html | 3 +- files/es/web/xslt/element/for-each/index.html | 3 +- files/es/web/xslt/element/if/index.html | 3 +- files/es/web/xslt/element/import/index.html | 3 +- files/es/web/xslt/element/include/index.html | 3 +- files/es/web/xslt/element/key/index.html | 3 +- files/es/web/xslt/element/message/index.html | 3 +- .../es/web/xslt/element/namespace-alias/index.html | 3 +- files/es/web/xslt/element/number/index.html | 3 +- files/es/web/xslt/element/otherwise/index.html | 3 +- files/es/web/xslt/element/when/index.html | 3 +- files/es/web/xslt/element/with-param/index.html | 3 +- .../web/xslt/transforming_xml_with_xslt/index.html | 3 +- 1275 files changed, 18753 insertions(+), 16200 deletions(-) (limited to 'files/es/web/javascript') diff --git a/files/es/_redirects.txt b/files/es/_redirects.txt index 5a3341f7de..4d20053064 100644 --- a/files/es/_redirects.txt +++ b/files/es/_redirects.txt @@ -1,15 +1,25 @@ # FROM-URL TO-URL /es/docs/AJAX /es/docs/Web/Guide/AJAX -/es/docs/AJAX/Comunidad /es/docs/Web/Guide/AJAX/Comunidad -/es/docs/AJAX/Primeros_Pasos /es/docs/Web/Guide/AJAX/Primeros_Pasos -/es/docs/AJAX:Comunidad /es/docs/Web/Guide/AJAX/Comunidad -/es/docs/AJAX:Primeros_Pasos /es/docs/Web/Guide/AJAX/Primeros_Pasos -/es/docs/Accesibilidad /es/docs/Web/Accesibilidad -/es/docs/Accesibilidad/Comunidad /es/docs/Web/Accesibilidad/Comunidad -/es/docs/Accesibilidad:Comunidad /es/docs/Web/Accesibilidad/Comunidad -/es/docs/Accessibility /es/docs/Web/Accesibilidad +/es/docs/AJAX/Comunidad /es/docs/Web/Guide/AJAX/Community +/es/docs/AJAX/Primeros_Pasos /es/docs/Web/Guide/AJAX/Getting_Started +/es/docs/AJAX:Comunidad /es/docs/Web/Guide/AJAX/Community +/es/docs/AJAX:Primeros_Pasos /es/docs/Web/Guide/AJAX/Getting_Started +/es/docs/Accesibilidad /es/docs/Web/Accessibility +/es/docs/Accesibilidad/Comunidad /es/docs/Web/Accessibility/Community +/es/docs/Accesibilidad:Comunidad /es/docs/Web/Accessibility/Community +/es/docs/Accessibility /es/docs/Web/Accessibility +/es/docs/Acerca_del_Modelo_de_Objetos_del_Documento /es/docs/conflicting/Web/API/Document_Object_Model +/es/docs/Actualizar_aplicaciones_web_para_Firefox_3 /es/docs/Mozilla/Firefox/Releases/3/Updating_web_applications +/es/docs/Actualizar_extensiones_para_Firefox_3 /es/docs/Mozilla/Firefox/Releases/3/Updating_extensions +/es/docs/Actualizar_extensiones_para_Firefox_3/Actualizar_extensiones_para_Firefox_3 /es/docs/orphaned/Actualizar_extensiones_para_Firefox_3/Actualizar_extensiones_para_Firefox_3 +/es/docs/Actualizar_una_extensión_para_que_soporte_múltiples_aplicaciones_de_Mozilla /es/docs/orphaned/Actualizar_una_extensión_para_que_soporte_múltiples_aplicaciones_de_Mozilla +/es/docs/Applying_SVG_effects_to_HTML_content /es/docs/Web/SVG/Applying_SVG_effects_to_HTML_content /es/docs/ArrastrarSoltar /en-US/docs/Web/API/HTML_Drag_and_Drop_API -/es/docs/ArrastrarSoltar/Arrastrar_y_soltar /es/docs/DragDrop/Drag_and_Drop +/es/docs/ArrastrarSoltar/Arrastrar_y_soltar /es/docs/Web/API/HTML_Drag_and_Drop_API +/es/docs/Añadir_lectores_de_canales_a_Firefox /es/docs/Mozilla/Firefox/Releases/2/Adding_feed_readers_to_Firefox +/es/docs/Añadir_motores_de_búsqueda_desde_páginas_web /es/docs/conflicting/Web/OpenSearch +/es/docs/Bugs_importantes_solucionados_en_Firefox_3 /es/docs/Mozilla/Firefox/Releases/3/Notable_bugs_fixed +/es/docs/Building_an_Extension /es/docs/conflicting/Mozilla/Add-ons /es/docs/CSS /es/docs/Web/CSS /es/docs/CSS/-moz-force-broken-image-icon /es/docs/Web/CSS/-moz-force-broken-image-icon /es/docs/CSS/::selection /es/docs/Web/CSS/::selection @@ -26,30 +36,32 @@ /es/docs/CSS/@import /es/docs/Web/CSS/@import /es/docs/CSS/@keyframes /es/docs/Web/CSS/@keyframes /es/docs/CSS/@media /es/docs/Web/CSS/@media -/es/docs/CSS/Comenzando_(tutorial_CSS) /es/docs/Web/CSS/Comenzando_(tutorial_CSS) -/es/docs/CSS/Como_iniciar /es/docs/Web/CSS/Como_iniciar -/es/docs/CSS/Como_iniciar/Por_que_usar_CSS /es/docs/Web/CSS/Como_iniciar/Por_que_usar_CSS -/es/docs/CSS/Como_iniciar/Porqué_usar_CSS /es/docs/Web/CSS/Como_iniciar/Por_que_usar_CSS -/es/docs/CSS/Como_iniciar/Que_es_CSS /es/docs/Web/CSS/Como_iniciar/Que_es_CSS -/es/docs/CSS/Consultas_multimedia /es/docs/CSS/Media_queries -/es/docs/CSS/Getting_Started /es/docs/Web/CSS/Comenzando_(tutorial_CSS) -/es/docs/CSS/Introducción /es/docs/Web/CSS/Introducción -/es/docs/CSS/Primeros_pasos /es/docs/Web/CSS/Primeros_pasos -/es/docs/CSS/Pseudoelementos /es/docs/Web/CSS/Pseudoelementos -/es/docs/CSS/Selectores_atributo /es/docs/Web/CSS/Selectores_atributo -/es/docs/CSS/Transiciones_de_CSS /es/docs/Web/CSS/Transiciones_de_CSS -/es/docs/CSS/Usando_animaciones_CSS /es/docs/Web/CSS/CSS_Animations/Usando_animaciones_CSS -/es/docs/CSS/Usando_gradientes_con_CSS /es/docs/CSS/Using_CSS_gradients +/es/docs/CSS/Comenzando_(tutorial_CSS) /es/docs/orphaned/Web/CSS/Comenzando_(tutorial_CSS) +/es/docs/CSS/Como_iniciar /es/docs/orphaned/Web/CSS/Como_iniciar +/es/docs/CSS/Como_iniciar/Por_que_usar_CSS /es/docs/conflicting/Learn/CSS/First_steps/How_CSS_works +/es/docs/CSS/Como_iniciar/Porqué_usar_CSS /es/docs/conflicting/Learn/CSS/First_steps/How_CSS_works +/es/docs/CSS/Como_iniciar/Que_es_CSS /es/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_a460b5a76c3c2e7fc9b8da464dfd0c22 +/es/docs/CSS/Consultas_multimedia /es/docs/Web/CSS/Media_Queries/Using_media_queries +/es/docs/CSS/Getting_Started /es/docs/orphaned/Web/CSS/Comenzando_(tutorial_CSS) +/es/docs/CSS/Introducción /es/docs/conflicting/Learn/CSS/First_steps +/es/docs/CSS/Media_queries /es/docs/Web/CSS/Media_Queries/Using_media_queries +/es/docs/CSS/Primeros_pasos /es/docs/orphaned/Web/CSS/Primeros_pasos +/es/docs/CSS/Pseudoelementos /es/docs/Web/CSS/Pseudo-elements +/es/docs/CSS/Selectores_atributo /es/docs/Web/CSS/Attribute_selectors +/es/docs/CSS/Transiciones_de_CSS /es/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions +/es/docs/CSS/Usando_animaciones_CSS /es/docs/Web/CSS/CSS_Animations/Using_CSS_animations +/es/docs/CSS/Usando_gradientes_con_CSS /es/docs/Web/CSS/CSS_Images/Using_CSS_gradients +/es/docs/CSS/Using_CSS_gradients /es/docs/Web/CSS/CSS_Images/Using_CSS_gradients /es/docs/CSS/Using_CSS_transforms /es/docs/Web/CSS/CSS_Transforms/Using_CSS_transforms /es/docs/CSS/Uso_de_CSS_transforms /es/docs/Web/CSS/CSS_Transforms/Using_CSS_transforms -/es/docs/CSS/Valor_calculado /es/docs/Web/CSS/Valor_calculado -/es/docs/CSS/Valor_inicial /es/docs/Web/CSS/Valor_inicial +/es/docs/CSS/Valor_calculado /es/docs/Web/CSS/computed_value +/es/docs/CSS/Valor_inicial /es/docs/Web/CSS/initial_value /es/docs/CSS/after /es/docs/Web/CSS/::after /es/docs/CSS/animation /es/docs/Web/CSS/animation /es/docs/CSS/animation-delay /es/docs/Web/CSS/animation-delay /es/docs/CSS/animation-direction /es/docs/Web/CSS/animation-direction /es/docs/CSS/animation-duration /es/docs/Web/CSS/animation-duration -/es/docs/CSS/auto /es/docs/Web/CSS/auto +/es/docs/CSS/auto /es/docs/conflicting/Web/CSS/width /es/docs/CSS/azimuth /es/docs/Web/CSS/azimuth /es/docs/CSS/background /es/docs/Web/CSS/background /es/docs/CSS/background-attachment /es/docs/Web/CSS/background-attachment @@ -80,7 +92,7 @@ /es/docs/CSS/capacidad_de_animacion_de_propiedades_CSS /es/docs/Web/CSS /es/docs/CSS/clip /es/docs/Web/CSS/clip /es/docs/CSS/color /es/docs/Web/CSS/color -/es/docs/CSS/computed_value /es/docs/Web/CSS/Valor_calculado +/es/docs/CSS/computed_value /es/docs/Web/CSS/computed_value /es/docs/CSS/content /es/docs/Web/CSS/content /es/docs/CSS/cursor /es/docs/Web/CSS/cursor /es/docs/CSS/direction /es/docs/Web/CSS/direction @@ -112,15 +124,15 @@ /es/docs/CSS/min-height /es/docs/Web/CSS/min-height /es/docs/CSS/min-width /es/docs/Web/CSS/min-width /es/docs/CSS/none /es/docs/Web/CSS/float -/es/docs/CSS/normal /es/docs/Web/CSS/normal +/es/docs/CSS/normal /es/docs/conflicting/Web/CSS/font-variant /es/docs/CSS/number /es/docs/Web/CSS/number /es/docs/CSS/opacity /es/docs/Web/CSS/opacity /es/docs/CSS/overflow /es/docs/Web/CSS/overflow /es/docs/CSS/perspective /es/docs/Web/CSS/perspective -/es/docs/CSS/porcentaje /es/docs/Web/CSS/porcentaje +/es/docs/CSS/porcentaje /es/docs/Web/CSS/percentage /es/docs/CSS/position /es/docs/Web/CSS/position /es/docs/CSS/right /es/docs/Web/CSS/right -/es/docs/CSS/rtl /es/docs/Web/CSS/rtl +/es/docs/CSS/rtl /es/docs/orphaned/Web/CSS/rtl /es/docs/CSS/top /es/docs/Web/CSS/top /es/docs/CSS/transform /es/docs/Web/CSS/transform /es/docs/CSS/transform-origin /es/docs/Web/CSS/transform-origin @@ -131,10 +143,10 @@ /es/docs/CSS/width /es/docs/Web/CSS/width /es/docs/CSS/z-index /es/docs/Web/CSS/z-index /es/docs/CSS::default /es/docs/Web/CSS/:default -/es/docs/CSS:Valor_calculado /es/docs/Web/CSS/Valor_calculado -/es/docs/CSS:Valor_inicial /es/docs/Web/CSS/Valor_inicial +/es/docs/CSS:Valor_calculado /es/docs/Web/CSS/computed_value +/es/docs/CSS:Valor_inicial /es/docs/Web/CSS/initial_value /es/docs/CSS:after /es/docs/Web/CSS/::after -/es/docs/CSS:auto /es/docs/Web/CSS/auto +/es/docs/CSS:auto /es/docs/conflicting/Web/CSS/width /es/docs/CSS:azimuth /es/docs/Web/CSS/azimuth /es/docs/CSS:background /es/docs/Web/CSS/background /es/docs/CSS:background-attachment /es/docs/Web/CSS/background-attachment @@ -157,7 +169,7 @@ /es/docs/CSS:border-width /es/docs/Web/CSS/border-width /es/docs/CSS:bottom /es/docs/Web/CSS/bottom /es/docs/CSS:color /es/docs/Web/CSS/color -/es/docs/CSS:computed_value /es/docs/Web/CSS/Valor_calculado +/es/docs/CSS:computed_value /es/docs/Web/CSS/computed_value /es/docs/CSS:content /es/docs/Web/CSS/content /es/docs/CSS:cursor /es/docs/Web/CSS/cursor /es/docs/CSS:direction /es/docs/Web/CSS/direction @@ -189,42 +201,59 @@ /es/docs/CSS:min-height /es/docs/Web/CSS/min-height /es/docs/CSS:min-width /es/docs/Web/CSS/min-width /es/docs/CSS:none /es/docs/Web/CSS/float -/es/docs/CSS:normal /es/docs/Web/CSS/normal +/es/docs/CSS:normal /es/docs/conflicting/Web/CSS/font-variant /es/docs/CSS:number /es/docs/Web/CSS/number /es/docs/CSS:position /es/docs/Web/CSS/position /es/docs/CSS:right /es/docs/Web/CSS/right -/es/docs/CSS:rtl /es/docs/Web/CSS/rtl +/es/docs/CSS:rtl /es/docs/orphaned/Web/CSS/rtl /es/docs/CSS:top /es/docs/Web/CSS/top /es/docs/CSS:vacío /es/docs/Web/CSS/:empty /es/docs/CSS:visibility /es/docs/Web/CSS/visibility /es/docs/CSS:width /es/docs/Web/CSS/width -/es/docs/Complementos_de_Firefox._Guia_del_desarrollador /es/docs/Guía_para_el_desarrollador_de_agregados_para_Firefox +/es/docs/CSS_dinámico /es/docs/orphaned/CSS_dinámico +/es/docs/Cadenas_del_User_Agent_de_Gecko /es/docs/Web/HTTP/Headers/User-Agent/Firefox +/es/docs/Code_snippets /es/docs/orphaned/Code_snippets +/es/docs/Code_snippets/Pestañas_del_navegador /es/docs/orphaned/Code_snippets/Pestañas_del_navegador +/es/docs/Columnas_con_CSS-3 /es/docs/Web/CSS/CSS_Columns/Using_multi-column_layouts +/es/docs/Compilar_e_instalar /es/docs/Mozilla/Developer_guide/Build_Instructions +/es/docs/Complementos_de_Firefox._Guia_del_desarrollador /es/docs/orphaned/Guía_para_el_desarrollador_de_agregados_para_Firefox +/es/docs/Configurar_correctamente_los_tipos_MIME_del_servidor /es/docs/Learn/Server-side/Configuring_server_MIME_types +/es/docs/Control_de_la_corrección_ortográfica_en_formularios_HTML /es/docs/conflicting/Web/HTML/Global_attributes/spellcheck /es/docs/Core_JavaScript_1.5_Guide /es/docs/Web/JavaScript/Guide /es/docs/Core_JavaScript_1.5_Guide/Calling_Functions /es/docs/Web/JavaScript/Guide/Funciones#Llamando_funciones -/es/docs/Core_JavaScript_1.5_Guide/Defining_Functions /es/docs/Web/JavaScript/Guide/Funciones -/es/docs/Core_JavaScript_1.5_Guide/Operators /es/docs/Web/JavaScript/Referencia/Operadores -/es/docs/Core_JavaScript_1.5_Guide/Operators/Special_Operators /es/docs/Web/JavaScript/Referencia/Operadores -/es/docs/Core_JavaScript_1.5_Guide/Predefined_Core_Objects /es/docs/Web/JavaScript/Referencia -/es/docs/Core_JavaScript_1.5_Guide/Predefined_Core_Objects/Objeto_Array /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array +/es/docs/Core_JavaScript_1.5_Guide/Defining_Functions /es/docs/Web/JavaScript/Guide/Functions +/es/docs/Core_JavaScript_1.5_Guide/Operators /es/docs/Web/JavaScript/Reference/Operators +/es/docs/Core_JavaScript_1.5_Guide/Operators/Special_Operators /es/docs/Web/JavaScript/Reference/Operators +/es/docs/Core_JavaScript_1.5_Guide/Predefined_Core_Objects /es/docs/Web/JavaScript/Reference +/es/docs/Core_JavaScript_1.5_Guide/Predefined_Core_Objects/Objeto_Array /es/docs/Web/JavaScript/Reference/Global_Objects/Array /es/docs/Core_JavaScript_1.5_Guide:Calling_Functions /es/docs/Web/JavaScript/Guide/Funciones#Llamando_funciones -/es/docs/Core_JavaScript_1.5_Guide:Defining_Functions /es/docs/Web/JavaScript/Guide/Funciones -/es/docs/Core_JavaScript_1.5_Guide:Operators:Special_Operators /es/docs/Web/JavaScript/Referencia/Operadores -/es/docs/Core_JavaScript_1.5_Guide:Predefined_Core_Objects:Objeto_Array /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array -/es/docs/Core_JavaScript_1.5_Reference /es/docs/Web/JavaScript/Referencia -/es/docs/Core_JavaScript_1.5_Reference/Objects /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/Core_JavaScript_1.5_Reference/Objects/String /es/docs/Web/JavaScript/Referencia/Objetos_globales/String -/es/docs/Core_JavaScript_1.5_Reference/Objects/String/small /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/small -/es/docs/Core_JavaScript_1.5_Reference:Objects:String:small /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/small -/es/docs/Creación_de_Componentes_XPCOM:Interior_del_Componente /es/docs/Creación_de_Componentes_XPCOM/Interior_del_Componente -/es/docs/Creación_de_Componentes_XPCOM:Prefacio /es/docs/Creación_de_Componentes_XPCOM/Prefacio +/es/docs/Core_JavaScript_1.5_Guide:Defining_Functions /es/docs/Web/JavaScript/Guide/Functions +/es/docs/Core_JavaScript_1.5_Guide:Operators:Special_Operators /es/docs/Web/JavaScript/Reference/Operators +/es/docs/Core_JavaScript_1.5_Guide:Predefined_Core_Objects:Objeto_Array /es/docs/Web/JavaScript/Reference/Global_Objects/Array +/es/docs/Core_JavaScript_1.5_Reference /es/docs/Web/JavaScript/Reference +/es/docs/Core_JavaScript_1.5_Reference/Objects /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/Core_JavaScript_1.5_Reference/Objects/String /es/docs/Web/JavaScript/Reference/Global_Objects/String +/es/docs/Core_JavaScript_1.5_Reference/Objects/String/small /es/docs/Web/JavaScript/Reference/Global_Objects/String/small +/es/docs/Core_JavaScript_1.5_Reference:Objects:String:small /es/docs/Web/JavaScript/Reference/Global_Objects/String/small +/es/docs/Creacion_de_plugins_OpenSearch_para_Firefox /es/docs/Web/OpenSearch +/es/docs/Creación_de_Componentes_XPCOM/Interior_del_Componente /es/docs/orphaned/Creación_de_Componentes_XPCOM/Interior_del_Componente +/es/docs/Creación_de_Componentes_XPCOM/Prefacio /es/docs/orphaned/Creación_de_Componentes_XPCOM/Prefacio +/es/docs/Creación_de_Componentes_XPCOM:Interior_del_Componente /es/docs/orphaned/Creación_de_Componentes_XPCOM/Interior_del_Componente +/es/docs/Creación_de_Componentes_XPCOM:Prefacio /es/docs/orphaned/Creación_de_Componentes_XPCOM/Prefacio /es/docs/Creación_de_Componentes_XPCOM:Un_vistazo_de_XPCOM /es/docs/Creación_de_Componentes_XPCOM/Un_vistazo_de_XPCOM /es/docs/Creación_de_Componentes_XPCOM:Uso_de_Componentes_XPCOM /es/docs/Creación_de_Componentes_XPCOM/Uso_de_Componentes_XPCOM /es/docs/Creando_Componentes_XPCOM /es/docs/Creación_de_Componentes_XPCOM /es/docs/Creando_un_skin_para_Firefox /es/docs/Creando_un_tema_para_Firefox /es/docs/Creando_un_skin_para_Firefox:UUID /es/docs/Creando_un_skin_para_Firefox/UUID /es/docs/Creando_un_skin_para_Firefox:_Como_empezar /es/docs/Creando_un_skin_para_Firefox/Como_empezar +/es/docs/Creando_una_extensión /es/docs/orphaned/Creando_una_extensión /es/docs/Crear_una_barra_lateral_en_Firefox /es/docs/Crear_un_panel_lateral_en_Firefox -/es/docs/Código_fuente_de_Mozilla_(CVS) /es/docs/Mozilla/Developer_guide/Source_Code/Código_fuente_de_Mozilla_(CVS) +/es/docs/Crear_una_extensión_personalizada_de_Firefox_con_el_Mozilla_Build_System /es/docs/orphaned/Crear_una_extensión_personalizada_de_Firefox_con_el_Mozilla_Build_System +/es/docs/Código_fuente_de_Mozilla_(CVS) /es/docs/Mozilla/Developer_guide/Source_Code/CVS +/es/docs/DHTML /es/docs/Glossary/DHTML +/es/docs/DHTML_Demostraciones_del_uso_de_DOM_Style /es/docs/orphaned/DHTML_Demostraciones_del_uso_de_DOM_Style +/es/docs/DOM /es/docs/conflicting/Web/API/Document_Object_Model_7d961b8030c6099ee907f4f4b5fe6b3d +/es/docs/DOM/Almacenamiento /es/docs/conflicting/Web/API/Web_Storage_API /es/docs/DOM/CSS /es/docs/Web/CSS /es/docs/DOM/CameraCapabilities /es/docs/Web/API/CameraCapabilities /es/docs/DOM/CameraCapabilities.effects /es/docs/Web/API/CameraCapabilities/effects @@ -234,12 +263,14 @@ /es/docs/DOM/CssRule.cssText /es/docs/Web/API/CSSRule/cssText /es/docs/DOM/CssRule.parentStyleSheet /es/docs/Web/API/CSSRule/parentStyleSheet /es/docs/DOM/CssRule.selectorText /es/docs/Web/API/CSSStyleRule/selectorText -/es/docs/DOM/Document.styleSheets /es/docs/Web/API/Document/styleSheets +/es/docs/DOM/Document.styleSheets /es/docs/Web/API/DocumentOrShadowRoot/styleSheets /es/docs/DOM/Element.setAttribute /es/docs/Web/API/Element/setAttribute -/es/docs/DOM/Element.style /es/docs/Web/API/HTMLElement/style +/es/docs/DOM/Element.style /es/docs/Web/API/ElementCSSInlineStyle/style /es/docs/DOM/HTMLAudioElement /es/docs/Web/API/HTMLAudioElement /es/docs/DOM/HTMLTableElement /es/docs/Web/API/HTMLTableElement -/es/docs/DOM/Manipulating_the_browser_history /es/docs/DOM/Manipulando_el_historial_del_navegador +/es/docs/DOM/Manipulando_el_historial_del_navegador /es/docs/Web/API/History_API +/es/docs/DOM/Manipulando_el_historial_del_navegador/Ejemplo /es/docs/Web/API/History_API/Example +/es/docs/DOM/Manipulating_the_browser_history /es/docs/Web/API/History_API /es/docs/DOM/MozSocial.closePanel /es/docs/Web/API/MozSocial/closePanel /es/docs/DOM/MozSocial.getAttention /es/docs/Web/API/MozSocial/getAttention /es/docs/DOM/MozSocial.getWorker /es/docs/Web/API/MozSocial/getWorker @@ -282,6 +313,7 @@ /es/docs/DOM/Stylesheet.title /es/docs/Web/API/StyleSheet/title /es/docs/DOM/Stylesheet.type /es/docs/Web/API/StyleSheet/type /es/docs/DOM/Stylesheet_object /es/docs/Web/API/CSSStyleSheet +/es/docs/DOM/Touch_events /es/docs/Web/API/Touch_events /es/docs/DOM/Window.getComputedStyle /es/docs/Web/API/Window/getComputedStyle /es/docs/DOM/document /es/docs/Web/API/Document /es/docs/DOM/document.URL /es/docs/Web/API/Document/URL @@ -291,6 +323,7 @@ /es/docs/DOM/document.bgColor /es/docs/Web/API/Document/bgColor /es/docs/DOM/document.body /es/docs/Web/API/Document/body /es/docs/DOM/document.characterSet /es/docs/Web/API/Document/characterSet +/es/docs/DOM/document.cookie /es/docs/Web/API/Document/cookie /es/docs/DOM/document.createRange /es/docs/Web/API/Document/createRange /es/docs/DOM/document.documentElement /es/docs/Web/API/Document/documentElement /es/docs/DOM/document.documentURIObject /es/docs/Web/API/Document/documentURIObject @@ -332,13 +365,13 @@ /es/docs/DOM/window.applicationCache /es/docs/Web/API/Window/applicationCache /es/docs/DOM/window.fullScreen /es/docs/Web/API/Window/fullScreen /es/docs/DOM/window.getSelection /es/docs/Web/API/Window/getSelection -/es/docs/DOM/window.navigator.geolocation /es/docs/Web/API/NavigatorGeolocation/geolocation +/es/docs/DOM/window.navigator.geolocation /es/docs/Web/API/Navigator/geolocation /es/docs/DOM/window.navigator.registerProtocolHandler /es/docs/Web/API/Navigator/registerProtocolHandler /es/docs/DOM/window.navigator.vibrate /es/docs/Web/API/Navigator/vibrate /es/docs/DOM/window.onload /es/docs/Web/API/GlobalEventHandlers/onload -/es/docs/DOM/window.onunload /es/docs/Web/API/GlobalEventHandlers/onunload +/es/docs/DOM/window.onunload /es/docs/Web/API/WindowEventHandlers/onunload /es/docs/DOM/window.requestAnimationFrame /es/docs/Web/API/Window/requestAnimationFrame -/es/docs/DOM:Almacenamiento /es/docs/DOM/Almacenamiento +/es/docs/DOM:Almacenamiento /es/docs/conflicting/Web/API/Web_Storage_API /es/docs/DOM:Selection:addRange /es/docs/Web/API/Selection/addRange /es/docs/DOM:Selection:anchorNode /es/docs/Web/API/Selection/anchorNode /es/docs/DOM:Selection:anchorOffset /es/docs/Web/API/Selection/anchorOffset @@ -365,7 +398,7 @@ /es/docs/DOM:document.bgColor /es/docs/Web/API/Document/bgColor /es/docs/DOM:document.body /es/docs/Web/API/Document/body /es/docs/DOM:document.characterSet /es/docs/Web/API/Document/characterSet -/es/docs/DOM:document.cookie /es/docs/DOM/document.cookie +/es/docs/DOM:document.cookie /es/docs/Web/API/Document/cookie /es/docs/DOM:document.createRange /es/docs/Web/API/Document/createRange /es/docs/DOM:document.documentElement /es/docs/Web/API/Document/documentElement /es/docs/DOM:document.documentURIObject /es/docs/Web/API/Document/documentURIObject @@ -403,10 +436,20 @@ /es/docs/DOM:window.fullScreen /es/docs/Web/API/Window/fullScreen /es/docs/DOM:window.getSelection /es/docs/Web/API/Window/getSelection /es/docs/DOM:window.navigator.registerProtocolHandler /es/docs/Web/API/Navigator/registerProtocolHandler +/es/docs/DOM_Inspector /es/docs/orphaned/Tools/Add-ons/DOM_Inspector +/es/docs/Desarrollando_Mozilla /es/docs/orphaned/Desarrollando_Mozilla +/es/docs/Desarrollo_Web /es/docs/conflicting/Web/Guide /es/docs/Detección_del_navegador_y_soporte_entre_ellos /es/docs/Detección_del_navegador_y_cobertura_a_múltiples_navegadores +/es/docs/Detectar_la_orientación_del_dispositivo /es/docs/orphaned/Detectar_la_orientación_del_dispositivo /es/docs/Developer_Guide /es/docs/Mozilla/Developer_guide /es/docs/Developer_Guide/Source_Code /es/docs/Mozilla/Developer_guide/Source_Code -/es/docs/Drawing_text_using_a_canvas /es/docs/Dibujar_texto_usando_canvas +/es/docs/Dibujando_Gráficos_con_Canvas /es/docs/orphaned/Dibujando_Gráficos_con_Canvas +/es/docs/Dibujar_texto_usando_canvas /es/docs/Web/API/Canvas_API/Tutorial/Drawing_text +/es/docs/DragDrop /es/docs/conflicting/Web/API/HTML_Drag_and_Drop_API +/es/docs/DragDrop/Drag_and_Drop /es/docs/Web/API/HTML_Drag_and_Drop_API +/es/docs/DragDrop/Drag_and_Drop/drag_and_drop_archivo /es/docs/Web/API/HTML_Drag_and_Drop_API/File_drag_and_drop +/es/docs/DragDrop/Recommended_Drag_Types /es/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types +/es/docs/Drawing_text_using_a_canvas /es/docs/Web/API/Canvas_API/Tutorial/Drawing_text /es/docs/EXSLT /es/docs/Web/EXSLT /es/docs/EXSLT/exsl /es/docs/Web/EXSLT/exsl /es/docs/EXSLT/exsl/node-set /es/docs/Web/EXSLT/exsl/node-set @@ -449,9 +492,13 @@ /es/docs/EXSLT:str:concat /es/docs/Web/EXSLT/str/concat /es/docs/EXSLT:str:split /es/docs/Web/EXSLT/str/split /es/docs/EXSLT:str:tokenize /es/docs/Web/EXSLT/str/tokenize -/es/docs/Errores_notables_corregidos_en_Firefox_3 /es/docs/Bugs_importantes_solucionados_en_Firefox_3 -/es/docs/Eventos_online_y_offline /es/docs/Web/API/NavigatorOnLine/Eventos_online_y_offline +/es/docs/Errores_notables_corregidos_en_Firefox_3 /es/docs/Mozilla/Firefox/Releases/3/Notable_bugs_fixed +/es/docs/Estructura_de_directorios_de_código_fuente_de_Mozilla /es/docs/orphaned/Estructura_de_directorios_de_código_fuente_de_Mozilla +/es/docs/Etiquetas_audio_y_video_en_Firefox /es/docs/orphaned/Etiquetas_audio_y_video_en_Firefox +/es/docs/Eventos_online_y_offline /es/docs/Web/API/NavigatorOnLine/Online_and_offline_events +/es/docs/Extensiones/Actualización_de_extensiones_para_Firefox_4 /es/docs/orphaned/Extensiones/Actualización_de_extensiones_para_Firefox_4 /es/docs/Extensión_Firebug_(externo) https://addons.mozilla.org/extensions/moreinfo.php?id=1843&application=firefox +/es/docs/FAQ_Incrustando_Mozilla /es/docs/orphaned/FAQ_Incrustando_Mozilla /es/docs/FUEL:Annotations /es/docs/FUEL/Annotations /es/docs/FUEL:Application /es/docs/FUEL/Application /es/docs/FUEL:Bookmark /es/docs/FUEL/Bookmark @@ -467,21 +514,114 @@ /es/docs/FUEL:PreferenceBranch /es/docs/FUEL/PreferenceBranch /es/docs/FUEL:SessionStorage /es/docs/FUEL/SessionStorage /es/docs/FUEL:Window /es/docs/FUEL/Window -/es/docs/Firefox_1.5 /es/docs/Firefox_1.5_para_Desarrolladores -/es/docs/Firefox_2 /es/docs/Firefox_2_para_desarrolladores -/es/docs/Firefox_3.1_para_desarrolladores /es/docs/Firefox_3.5_para_desarrolladores -/es/docs/Firefox_3.5_para_desarrolladores/Firefox_3.1_para_desarrolladores /es/docs/Firefox_3.5_para_desarrolladores -/es/docs/Firefox_3.5_para_desarrolladores/Firefox_3.5_para_desarrolladores /es/docs/Firefox_3.5_para_desarrolladores -/es/docs/Firefox_addons_developer_guide/Introduction_to_Extensions-redirect-1 /es/docs/Firefox_addons_developer_guide/Introduction_to_Extensions +/es/docs/Firefox_1.5 /es/docs/Mozilla/Firefox/Releases/1.5 +/es/docs/Firefox_1.5_para_Desarrolladores /es/docs/Mozilla/Firefox/Releases/1.5 +/es/docs/Firefox_19_para_desarrolladores /es/docs/Mozilla/Firefox/Releases/19 +/es/docs/Firefox_2 /es/docs/Mozilla/Firefox/Releases/2 +/es/docs/Firefox_2_para_desarrolladores /es/docs/Mozilla/Firefox/Releases/2 +/es/docs/Firefox_3.1_para_desarrolladores /es/docs/Mozilla/Firefox/Releases/3.5 +/es/docs/Firefox_3.5_para_desarrolladores /es/docs/Mozilla/Firefox/Releases/3.5 +/es/docs/Firefox_3.5_para_desarrolladores/Firefox_3.1_para_desarrolladores /es/docs/Mozilla/Firefox/Releases/3.5 +/es/docs/Firefox_3.5_para_desarrolladores/Firefox_3.5_para_desarrolladores /es/docs/Mozilla/Firefox/Releases/3.5 +/es/docs/Firefox_3_para_desarrolladores /es/docs/Mozilla/Firefox/Releases/3 +/es/docs/Firefox_addons_developer_guide/Introduction_to_Extensions /es/docs/orphaned/Firefox_addons_developer_guide/Introduction_to_Extensions +/es/docs/Firefox_addons_developer_guide/Introduction_to_Extensions-redirect-1 /es/docs/orphaned/Firefox_addons_developer_guide/Introduction_to_Extensions +/es/docs/Firefox_addons_developer_guide/Technologies_used_in_developing_extensions /es/docs/orphaned/Firefox_addons_developer_guide/Technologies_used_in_developing_extensions /es/docs/Firefox_en_Android /es/docs/Mozilla/Firefox_para_Android +/es/docs/Formatos_multimedia_admitidos_por_los_elementos_de_video_y_audio /es/docs/orphaned/Formatos_multimedia_admitidos_por_los_elementos_de_video_y_audio +/es/docs/Fragmentos_de_código /es/docs/orphaned/Fragmentos_de_código +/es/docs/Funciones /es/docs/orphaned/Funciones +/es/docs/Games/Herramients /es/docs/Games/Tools +/es/docs/Games/Herramients/asm.js /es/docs/Games/Tools/asm.js +/es/docs/Games/Introduccion /es/docs/Games/Introduction +/es/docs/Games/Introducción_al_desarrollo_de_juegos_HTML5_(resumen) /es/docs/Games/Introduction_to_HTML5_Game_Development +/es/docs/Games/Publishing_games/Monetización_de_los_juegos /es/docs/Games/Publishing_games/Game_monetization +/es/docs/Games/Tutorials/2D_breakout_game_Phaser/Botones /es/docs/Games/Tutorials/2D_breakout_game_Phaser/Buttons +/es/docs/Games/Tutorials/2D_breakout_game_Phaser/Rebotar_en_las_paredes /es/docs/Games/Tutorials/2D_breakout_game_Phaser/Bounce_off_the_walls +/es/docs/Games/Workflows /es/docs/Games/Tutorials +/es/docs/Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro /es/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript +/es/docs/Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Bounce_off_the_walls /es/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Bounce_off_the_walls +/es/docs/Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Construye_grupo_bloques /es/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Build_the_brick_field +/es/docs/Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Control_pala_y_teclado /es/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Paddle_and_keyboard_controls +/es/docs/Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Controles_raton /es/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Mouse_controls +/es/docs/Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Create_the_Canvas_and_draw_on_it /es/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it +/es/docs/Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Deteccion_colisiones /es/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Collision_detection +/es/docs/Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Fin_del_juego /es/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Game_over +/es/docs/Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Mueve_la_bola /es/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Move_the_ball +/es/docs/Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Terminando /es/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Finishing_up +/es/docs/Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Track_the_score_and_win /es/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Track_the_score_and_win +/es/docs/Games/Workflows/HTML5_Gamedev_Phaser_Device_Orientation /es/docs/Games/Tutorials/HTML5_Gamedev_Phaser_Device_Orientation /es/docs/Garantía_de_Calidad /es/docs/QA +/es/docs/Generación_de_GUIDs /es/docs/orphaned/Generación_de_GUIDs /es/docs/Gestión_del_foco_en_HTML /es/docs/Web/API/Document/hasFocus /es/docs/Glossary/AOM /es/docs/Glossary/Accessibility_tree +/es/docs/Glossary/Algoritmo /es/docs/Glossary/Algorithm +/es/docs/Glossary/Argumento /es/docs/Glossary/Argument +/es/docs/Glossary/Arquitectura_de_la_información /es/docs/Glossary/Information_architecture +/es/docs/Glossary/Arreglos /es/docs/Glossary/array +/es/docs/Glossary/Asíncrono /es/docs/Glossary/Asynchronous +/es/docs/Glossary/Atributo /es/docs/Glossary/Attribute +/es/docs/Glossary/Atributo_global /es/docs/conflicting/Web/HTML/Global_attributes +/es/docs/Glossary/CID /es/docs/Glossary/CIA +/es/docs/Glossary/Cabecera_general /es/docs/Glossary/General_header +/es/docs/Glossary/Caché /es/docs/Glossary/Cache +/es/docs/Glossary/Caracter /es/docs/Glossary/Character +/es/docs/Glossary/Cifrado /es/docs/Glossary/Cipher +/es/docs/Glossary/Clasificación_por_tarjetas_(card_sorting) /es/docs/Glossary/Card_sorting +/es/docs/Glossary/Clausura /es/docs/Glossary/Closure +/es/docs/Glossary/Clave /es/docs/Glossary/Key +/es/docs/Glossary/Constante /es/docs/Glossary/Constant +/es/docs/Glossary/Criptoanálisis /es/docs/Glossary/Cryptanalysis +/es/docs/Glossary/Criptografía /es/docs/Glossary/Cryptography +/es/docs/Glossary/DTD /es/docs/conflicting/Glossary/Doctype +/es/docs/Glossary/Descifrado /es/docs/Glossary/Decryption +/es/docs/Glossary/Encriptación /es/docs/Glossary/Encryption +/es/docs/Glossary/Entidad /es/docs/Glossary/Entity +/es/docs/Glossary/Espacio_en_blanco /es/docs/Glossary/Whitespace +/es/docs/Glossary/Estructura_de_datos /es/docs/Glossary/Data_structure +/es/docs/Glossary/Funcion_de_primera_clase /es/docs/Glossary/First-class_Function +/es/docs/Glossary/Función /es/docs/Glossary/Function +/es/docs/Glossary/Hilo_principal /es/docs/Glossary/Main_thread +/es/docs/Glossary/IU /es/docs/Glossary/UI +/es/docs/Glossary/Identificador /es/docs/Glossary/Identifier +/es/docs/Glossary/Inmutable /es/docs/Glossary/Immutable +/es/docs/Glossary/Metadato /es/docs/Glossary/Metadata +/es/docs/Glossary/Método /es/docs/Glossary/Method +/es/docs/Glossary/Nombre_de_dominio /es/docs/Glossary/Domain_name +/es/docs/Glossary/Nombre_de_encabezado_prohibido /es/docs/Glossary/Forbidden_header_name +/es/docs/Glossary/Numero /es/docs/Glossary/Number +/es/docs/Glossary/Objecto /es/docs/Glossary/Object +/es/docs/Glossary/Operador /es/docs/Glossary/Operator +/es/docs/Glossary/Operando /es/docs/Glossary/Operand +/es/docs/Glossary/Pila_llamadas /es/docs/Glossary/Call_stack +/es/docs/Glossary/Preflight_peticion /es/docs/Glossary/Preflight_request +/es/docs/Glossary/Preprocesador_CSS /es/docs/Glossary/CSS_preprocessor +/es/docs/Glossary/Primitivo /es/docs/Glossary/Primitive +/es/docs/Glossary/Pseudo-clase /es/docs/Glossary/Pseudo-class +/es/docs/Glossary/Pseudocódigo /es/docs/Glossary/Pseudocode +/es/docs/Glossary/Recursión /es/docs/Glossary/Recursion +/es/docs/Glossary/SCV /es/docs/Glossary/SCM +/es/docs/Glossary/Sentencias /es/docs/Glossary/Statement +/es/docs/Glossary/Sincronico /es/docs/Glossary/Synchronous +/es/docs/Glossary/Sistema_gestion_contenidos /es/docs/Glossary/CMS +/es/docs/Glossary/TextoCifrado /es/docs/Glossary/Ciphertext +/es/docs/Glossary/TextoSimple /es/docs/Glossary/Plaintext +/es/docs/Glossary/Tipado_dinámico /es/docs/Glossary/Dynamic_typing +/es/docs/Glossary/Tipificación_estática /es/docs/Glossary/Static_typing +/es/docs/Glossary/Validador /es/docs/Glossary/Validator +/es/docs/Glossary/Valor /es/docs/Glossary/Value +/es/docs/Glossary/XForm /es/docs/Glossary/XForms +/es/docs/Glossary/coercion /es/docs/Glossary/Type_coercion +/es/docs/Glossary/conjunto_de_caracteres /es/docs/Glossary/character_set +/es/docs/Glossary/elemento /es/docs/orphaned/Glossary/elemento +/es/docs/Glossary/miga-de-pan /es/docs/Glossary/Breadcrumb +/es/docs/Glossary/propiedad /es/docs/Glossary/property +/es/docs/Glossary/seguro /es/docs/Glossary/safe /es/docs/Glossary/undefined_es /es/docs/Glossary/undefined /es/docs/Guía_JavaScript_1.5 /es/docs/Web/JavaScript/Guide -/es/docs/Guía_JavaScript_1.5/Acerca_de_esta_guía /es/docs/Web/JavaScript/Guide/Introducción -/es/docs/Guía_JavaScript_1.5/Concepto_de_JavaScript /es/docs/Web/JavaScript/Guide/Introducción -/es/docs/Guía_JavaScript_1.5/Constantes /es/docs/Web/JavaScript/Referencia/Sentencias/const +/es/docs/Guía_JavaScript_1.5/Acerca_de_esta_guía /es/docs/Web/JavaScript/Guide/Introduction +/es/docs/Guía_JavaScript_1.5/Concepto_de_JavaScript /es/docs/Web/JavaScript/Guide/Introduction +/es/docs/Guía_JavaScript_1.5/Constantes /es/docs/Web/JavaScript/Reference/Statements/const /es/docs/Guía_JavaScript_1.5/Crear_nuevos_objetos /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#Creando_nuevos_objetos /es/docs/Guía_JavaScript_1.5/Crear_nuevos_objetos/Borrando_propiedades /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#Eliminando_propiedades /es/docs/Guía_JavaScript_1.5/Crear_nuevos_objetos/Definiendo_las_funciones_get_y_set /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#Definiendo_getters_y_setters @@ -493,7 +633,7 @@ /es/docs/Guía_JavaScript_1.5/Crear_nuevos_objetos/Using_Object_Initializers /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#El_uso_de_inicializadores_de_objeto /es/docs/Guía_JavaScript_1.5/Crear_nuevos_objetos/Utilizando_Objetos_Iniciadores /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#El_uso_de_inicializadores_de_objeto /es/docs/Guía_JavaScript_1.5/Crear_una_expresión_regular /es/docs/Web/JavaScript/Guide/Regular_Expressions -/es/docs/Guía_JavaScript_1.5/Definiendo_Funciones /es/docs/Web/JavaScript/Guide/Funciones +/es/docs/Guía_JavaScript_1.5/Definiendo_Funciones /es/docs/Web/JavaScript/Guide/Functions /es/docs/Guía_JavaScript_1.5/El_ejemplo_Empleado /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Ejemplo.3A_employee /es/docs/Guía_JavaScript_1.5/El_ejemplo_Employee /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Ejemplo.3A_employee /es/docs/Guía_JavaScript_1.5/El_ejemplo_Employee/Constructores_más_flexibles /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Constructores_mas_flexibles @@ -520,15 +660,15 @@ /es/docs/Guía_JavaScript_1.5/Más_sobre_la_herencia_de_propiedades/Herencia_no_múltiple /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#No_existe_herencia_multiple /es/docs/Guía_JavaScript_1.5/Más_sobre_la_herencia_de_propiedades/Información_global_en_los_constructores /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Informacion_global_en_los_constructores /es/docs/Guía_JavaScript_1.5/Más_sobre_la_herencia_de_propiedades/Valores_locales_frente_a_los_heredados /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Valores_locales_frente_a_valores_heredados -/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos /es/docs/Web/JavaScript/Referencia -/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Array /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array -/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Boolean /es/docs/Web/JavaScript/Referencia/Objetos_globales/Boolean -/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Date /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date -/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Function /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function -/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Math /es/docs/Web/JavaScript/Referencia/Objetos_globales/Math -/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Number /es/docs/Web/JavaScript/Referencia/Objetos_globales/Number -/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_RegExp /es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp -/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_String /es/docs/Web/JavaScript/Referencia/Objetos_globales/String +/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos /es/docs/Web/JavaScript/Reference +/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Array /es/docs/Web/JavaScript/Reference/Global_Objects/Array +/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Boolean /es/docs/Web/JavaScript/Reference/Global_Objects/Boolean +/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Date /es/docs/Web/JavaScript/Reference/Global_Objects/Date +/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Function /es/docs/Web/JavaScript/Reference/Global_Objects/Function +/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Math /es/docs/Web/JavaScript/Reference/Global_Objects/Math +/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Number /es/docs/Web/JavaScript/Reference/Global_Objects/Number +/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_RegExp /es/docs/Web/JavaScript/Reference/Global_Objects/RegExp +/es/docs/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_String /es/docs/Web/JavaScript/Reference/Global_Objects/String /es/docs/Guía_JavaScript_1.5/Objetos_y_propiedades /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#Objetos_y_propiedades /es/docs/Guía_JavaScript_1.5/Operadores /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operadores /es/docs/Guía_JavaScript_1.5/Operadores/Operadores_aritméticos /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operadores_aritm.C3.A9ticos @@ -538,10 +678,10 @@ /es/docs/Guía_JavaScript_1.5/Operadores/Operadores_especiales /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Special_operators /es/docs/Guía_JavaScript_1.5/Operadores/Operadores_lógicos /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operadores_l.C3.B3gicos /es/docs/Guía_JavaScript_1.5/Operadores/Operadores_sobre_bits /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operadores_Bit-a-bit -/es/docs/Guía_JavaScript_1.5/Predefined_Functions /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/Guía_JavaScript_1.5/Predefined_Functions/eval_Function /es/docs/Web/JavaScript/Referencia/Objetos_globales/eval +/es/docs/Guía_JavaScript_1.5/Predefined_Functions /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/Guía_JavaScript_1.5/Predefined_Functions/eval_Function /es/docs/Web/JavaScript/Reference/Global_Objects/eval /es/docs/Guía_JavaScript_1.5/Sentencia_condicional /es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores#Condicionales -/es/docs/Guía_JavaScript_1.5/Sentencia_de_bloque /es/docs/Web/JavaScript/Referencia/Sentencias/block +/es/docs/Guía_JavaScript_1.5/Sentencia_de_bloque /es/docs/Web/JavaScript/Reference/Statements/block /es/docs/Guía_JavaScript_1.5/Sentencias_de_manejo_de_excepciones /es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores#Utilizing_Error_objects /es/docs/Guía_JavaScript_1.5/Sentencias_de_manejo_de_excepciones/throw /es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores#throw_statement /es/docs/Guía_JavaScript_1.5/Sentencias_de_manejo_de_excepciones/try...catch /es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores#try...catch_statement @@ -552,13 +692,13 @@ /es/docs/Guía_JavaScript_1.5/Trabajar_con_expresiones_regulares/Ejemplos_de_expresiones_regulares /es/docs/Web/JavaScript/Guide/Regular_Expressions /es/docs/Guía_JavaScript_1.5/Trabajar_con_expresiones_regulares/Usar_coincidencias_de_subcadenas_parentizadas /es/docs/Web/JavaScript/Guide/Regular_Expressions /es/docs/Guía_JavaScript_1.5/Unicode /en-US/docs/Web/JavaScript/Reference/Lexical_grammar -/es/docs/Guía_JavaScript_1.5/Usando_el_objeto_arguments /es/docs/Web/JavaScript/Guide/Funciones -/es/docs/Guía_JavaScript_1.5/Using_the_arguments_object /es/docs/Web/JavaScript/Guide/Funciones +/es/docs/Guía_JavaScript_1.5/Usando_el_objeto_arguments /es/docs/Web/JavaScript/Guide/Functions +/es/docs/Guía_JavaScript_1.5/Using_the_arguments_object /es/docs/Web/JavaScript/Guide/Functions /es/docs/Guía_JavaScript_1.5/Valores /es/docs/Web/JavaScript/Guide/Grammar_and_types /es/docs/Guía_JavaScript_1.5/Variables /es/docs/Web/JavaScript/Guide/Grammar_and_types -/es/docs/Guía_JavaScript_1.5:Acerca_de_esta_guía /es/docs/Web/JavaScript/Guide/Introducción -/es/docs/Guía_JavaScript_1.5:Concepto_de_JavaScript /es/docs/Web/JavaScript/Guide/Introducción -/es/docs/Guía_JavaScript_1.5:Constantes /es/docs/Web/JavaScript/Referencia/Sentencias/const +/es/docs/Guía_JavaScript_1.5:Acerca_de_esta_guía /es/docs/Web/JavaScript/Guide/Introduction +/es/docs/Guía_JavaScript_1.5:Concepto_de_JavaScript /es/docs/Web/JavaScript/Guide/Introduction +/es/docs/Guía_JavaScript_1.5:Constantes /es/docs/Web/JavaScript/Reference/Statements/const /es/docs/Guía_JavaScript_1.5:Crear_nuevos_objetos /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#Creando_nuevos_objetos /es/docs/Guía_JavaScript_1.5:Crear_nuevos_objetos:Borrando_propiedades /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#Eliminando_propiedades /es/docs/Guía_JavaScript_1.5:Crear_nuevos_objetos:Definiendo_las_funciones_get_y_set /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#Definiendo_getters_y_setters @@ -570,7 +710,7 @@ /es/docs/Guía_JavaScript_1.5:Crear_nuevos_objetos:Using_Object_Initializers /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#El_uso_de_inicializadores_de_objeto /es/docs/Guía_JavaScript_1.5:Crear_nuevos_objetos:Utilizando_Objetos_Iniciadores /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#El_uso_de_inicializadores_de_objeto /es/docs/Guía_JavaScript_1.5:Crear_una_expresión_regular /es/docs/Web/JavaScript/Guide/Regular_Expressions -/es/docs/Guía_JavaScript_1.5:Definiendo_Funciones /es/docs/Web/JavaScript/Guide/Funciones +/es/docs/Guía_JavaScript_1.5:Definiendo_Funciones /es/docs/Web/JavaScript/Guide/Functions /es/docs/Guía_JavaScript_1.5:El_ejemplo_Empleado /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Ejemplo.3A_employee /es/docs/Guía_JavaScript_1.5:El_ejemplo_Employee /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Ejemplo.3A_employee /es/docs/Guía_JavaScript_1.5:El_ejemplo_Employee:Constructores_más_flexibles /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Constructores_mas_flexibles @@ -597,15 +737,15 @@ /es/docs/Guía_JavaScript_1.5:Más_sobre_la_herencia_de_propiedades:Herencia_no_múltiple /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#No_existe_herencia_multiple /es/docs/Guía_JavaScript_1.5:Más_sobre_la_herencia_de_propiedades:Información_global_en_los_constructores /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Informacion_global_en_los_constructores /es/docs/Guía_JavaScript_1.5:Más_sobre_la_herencia_de_propiedades:Valores_locales_frente_a_los_heredados /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Valores_locales_frente_a_valores_heredados -/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos /es/docs/Web/JavaScript/Referencia -/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos:Objeto_Array /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array -/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos:Objeto_Boolean /es/docs/Web/JavaScript/Referencia/Objetos_globales/Boolean -/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos:Objeto_Date /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date -/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos:Objeto_Function /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function -/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos:Objeto_Math /es/docs/Web/JavaScript/Referencia/Objetos_globales/Math -/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos:Objeto_Number /es/docs/Web/JavaScript/Referencia/Objetos_globales/Number -/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos:Objeto_RegExp /es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp -/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos:Objeto_String /es/docs/Web/JavaScript/Referencia/Objetos_globales/String +/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos /es/docs/Web/JavaScript/Reference +/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos:Objeto_Array /es/docs/Web/JavaScript/Reference/Global_Objects/Array +/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos:Objeto_Boolean /es/docs/Web/JavaScript/Reference/Global_Objects/Boolean +/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos:Objeto_Date /es/docs/Web/JavaScript/Reference/Global_Objects/Date +/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos:Objeto_Function /es/docs/Web/JavaScript/Reference/Global_Objects/Function +/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos:Objeto_Math /es/docs/Web/JavaScript/Reference/Global_Objects/Math +/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos:Objeto_Number /es/docs/Web/JavaScript/Reference/Global_Objects/Number +/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos:Objeto_RegExp /es/docs/Web/JavaScript/Reference/Global_Objects/RegExp +/es/docs/Guía_JavaScript_1.5:Objetos_base_predefinidos:Objeto_String /es/docs/Web/JavaScript/Reference/Global_Objects/String /es/docs/Guía_JavaScript_1.5:Objetos_y_propiedades /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#Objetos_y_propiedades /es/docs/Guía_JavaScript_1.5:Operadores /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operadores /es/docs/Guía_JavaScript_1.5:Operadores:Operadores_aritméticos /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operadores_aritm.C3.A9ticos @@ -615,9 +755,9 @@ /es/docs/Guía_JavaScript_1.5:Operadores:Operadores_especiales /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Special_operators /es/docs/Guía_JavaScript_1.5:Operadores:Operadores_lógicos /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operadores_l.C3.B3gicos /es/docs/Guía_JavaScript_1.5:Operadores:Operadores_sobre_bits /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operadores_Bit-a-bit -/es/docs/Guía_JavaScript_1.5:Predefined_Functions:eval_Function /es/docs/Web/JavaScript/Referencia/Objetos_globales/eval +/es/docs/Guía_JavaScript_1.5:Predefined_Functions:eval_Function /es/docs/Web/JavaScript/Reference/Global_Objects/eval /es/docs/Guía_JavaScript_1.5:Sentencia_condicional /es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores#Condicionales -/es/docs/Guía_JavaScript_1.5:Sentencia_de_bloque /es/docs/Web/JavaScript/Referencia/Sentencias/block +/es/docs/Guía_JavaScript_1.5:Sentencia_de_bloque /es/docs/Web/JavaScript/Reference/Statements/block /es/docs/Guía_JavaScript_1.5:Sentencias_de_manejo_de_excepciones /es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores#Utilizing_Error_objects /es/docs/Guía_JavaScript_1.5:Sentencias_de_manejo_de_excepciones:throw /es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores#throw_statement /es/docs/Guía_JavaScript_1.5:Sentencias_de_manejo_de_excepciones:try...catch /es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores#try...catch_statement @@ -628,227 +768,245 @@ /es/docs/Guía_JavaScript_1.5:Trabajar_con_expresiones_regulares:Ejemplos_de_expresiones_regulares /es/docs/Web/JavaScript/Guide/Regular_Expressions /es/docs/Guía_JavaScript_1.5:Trabajar_con_expresiones_regulares:Usar_coincidencias_de_subcadenas_parentizadas /es/docs/Web/JavaScript/Guide/Regular_Expressions /es/docs/Guía_JavaScript_1.5:Unicode /en-US/docs/Web/JavaScript/Reference/Lexical_grammar -/es/docs/Guía_JavaScript_1.5:Usando_el_objeto_arguments /es/docs/Web/JavaScript/Guide/Funciones -/es/docs/Guía_JavaScript_1.5:Using_the_arguments_object /es/docs/Web/JavaScript/Guide/Funciones +/es/docs/Guía_JavaScript_1.5:Usando_el_objeto_arguments /es/docs/Web/JavaScript/Guide/Functions +/es/docs/Guía_JavaScript_1.5:Using_the_arguments_object /es/docs/Web/JavaScript/Guide/Functions /es/docs/Guía_JavaScript_1.5:Valores /es/docs/Web/JavaScript/Guide/Grammar_and_types /es/docs/Guía_JavaScript_1.5:Variables /es/docs/Web/JavaScript/Guide/Grammar_and_types -/es/docs/Guía_de_referencia_de_CSS /es/docs/Web/CSS/Referencia_CSS +/es/docs/Guía_de_referencia_de_CSS /es/docs/Web/CSS/Reference +/es/docs/Guía_para_el_desarrollador_de_agregados_para_Firefox /es/docs/orphaned/Guía_para_el_desarrollador_de_agregados_para_Firefox +/es/docs/Guía_para_el_desarrollador_de_agregados_para_Firefox/Introducción_a_las_extensiones /es/docs/orphaned/Guía_para_el_desarrollador_de_agregados_para_Firefox/Introducción_a_las_extensiones +/es/docs/Guía_para_la_migración_a_catálogo /es/docs/orphaned/Guía_para_la_migración_a_catálogo /es/docs/HTML /es/docs/Web/HTML /es/docs/HTML/Block-level_elements /es/docs/Web/HTML/Block-level_elements -/es/docs/HTML/Canvas /es/docs/Web/HTML/Canvas -/es/docs/HTML/Canvas/Drawing_graphics_with_canvas /es/docs/Web/HTML/Canvas/Drawing_graphics_with_canvas -/es/docs/HTML/Consejos_para_la_creación_de_páginas_HTML_de_carga_rápida /es/docs/Web/HTML/Consejos_para_la_creación_de_páginas_HTML_de_carga_rápida -/es/docs/HTML/Element /es/docs/Web/HTML/Elemento -/es/docs/HTML/Element/a /es/docs/Web/HTML/Elemento/a -/es/docs/HTML/Element/form /es/docs/Web/HTML/Elemento/form -/es/docs/HTML/Element/hgroup /es/docs/Web/HTML/Elemento/hgroup -/es/docs/HTML/Element/iframe /es/docs/Web/HTML/Elemento/iframe -/es/docs/HTML/Element/section /es/docs/Web/HTML/Elemento/section -/es/docs/HTML/Element/tabla /es/docs/Web/HTML/Elemento/table -/es/docs/HTML/Element/table /es/docs/Web/HTML/Elemento/table -/es/docs/HTML/Element/video /es/docs/Web/HTML/Elemento/video -/es/docs/HTML/Elemento /es/docs/Web/HTML/Elemento +/es/docs/HTML/Canvas /es/docs/Web/API/Canvas_API +/es/docs/HTML/Canvas/Drawing_graphics_with_canvas /es/docs/conflicting/Web/API/Canvas_API/Tutorial +/es/docs/HTML/Consejos_para_la_creación_de_páginas_HTML_de_carga_rápida /es/docs/Learn/HTML/Howto/Author_fast-loading_HTML_pages +/es/docs/HTML/Element /es/docs/Web/HTML/Element +/es/docs/HTML/Element/a /es/docs/Web/HTML/Element/a +/es/docs/HTML/Element/form /es/docs/Web/HTML/Element/form +/es/docs/HTML/Element/hgroup /es/docs/Web/HTML/Element/hgroup +/es/docs/HTML/Element/iframe /es/docs/Web/HTML/Element/iframe +/es/docs/HTML/Element/section /es/docs/Web/HTML/Element/section +/es/docs/HTML/Element/tabla /es/docs/Web/HTML/Element/table +/es/docs/HTML/Element/table /es/docs/Web/HTML/Element/table +/es/docs/HTML/Element/video /es/docs/Web/HTML/Element/video +/es/docs/HTML/Elemento /es/docs/Web/HTML/Element /es/docs/HTML/Elemento/ /es/docs/Web/HTML/Elemento/ -/es/docs/HTML/Elemento/Audio /es/docs/Web/HTML/Elemento/audio -/es/docs/HTML/Elemento/Elementos_títulos /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/HTML/Elemento/Progreso /es/docs/Web/HTML/Elemento/progress -/es/docs/HTML/Elemento/Tipos_de_elementos /es/docs/Web/HTML/Elemento/Tipos_de_elementos -/es/docs/HTML/Elemento/a /es/docs/Web/HTML/Elemento/a -/es/docs/HTML/Elemento/abbr /es/docs/Web/HTML/Elemento/abbr -/es/docs/HTML/Elemento/acronym /es/docs/Web/HTML/Elemento/acronym -/es/docs/HTML/Elemento/address /es/docs/Web/HTML/Elemento/address -/es/docs/HTML/Elemento/applet /es/docs/Web/HTML/Elemento/applet -/es/docs/HTML/Elemento/area /es/docs/Web/HTML/Elemento/area -/es/docs/HTML/Elemento/article /es/docs/Web/HTML/Elemento/article -/es/docs/HTML/Elemento/aside /es/docs/Web/HTML/Elemento/aside -/es/docs/HTML/Elemento/b /es/docs/Web/HTML/Elemento/b -/es/docs/HTML/Elemento/base /es/docs/Web/HTML/Elemento/base -/es/docs/HTML/Elemento/basefont /es/docs/Web/HTML/Elemento/basefont -/es/docs/HTML/Elemento/bdo /es/docs/Web/HTML/Elemento/bdo -/es/docs/HTML/Elemento/big /es/docs/Web/HTML/Elemento/big -/es/docs/HTML/Elemento/blockquote /es/docs/Web/HTML/Elemento/blockquote -/es/docs/HTML/Elemento/body /es/docs/Web/HTML/Elemento/body -/es/docs/HTML/Elemento/br /es/docs/Web/HTML/Elemento/br -/es/docs/HTML/Elemento/button /es/docs/Web/HTML/Elemento/button -/es/docs/HTML/Elemento/canvas /es/docs/Web/HTML/Elemento/canvas -/es/docs/HTML/Elemento/caption /es/docs/Web/HTML/Elemento/caption -/es/docs/HTML/Elemento/center /es/docs/Web/HTML/Elemento/center -/es/docs/HTML/Elemento/cite /es/docs/Web/HTML/Elemento/cite -/es/docs/HTML/Elemento/code /es/docs/Web/HTML/Elemento/code -/es/docs/HTML/Elemento/col /es/docs/Web/HTML/Elemento/col -/es/docs/HTML/Elemento/colgroup /es/docs/Web/HTML/Elemento/colgroup -/es/docs/HTML/Elemento/dd /es/docs/Web/HTML/Elemento/dd -/es/docs/HTML/Elemento/del /es/docs/Web/HTML/Elemento/del -/es/docs/HTML/Elemento/dfn /es/docs/Web/HTML/Elemento/dfn -/es/docs/HTML/Elemento/dir /es/docs/Web/HTML/Elemento/dir -/es/docs/HTML/Elemento/div /es/docs/Web/HTML/Elemento/div -/es/docs/HTML/Elemento/dl /es/docs/Web/HTML/Elemento/dl -/es/docs/HTML/Elemento/dt /es/docs/Web/HTML/Elemento/dt -/es/docs/HTML/Elemento/em /es/docs/Web/HTML/Elemento/em -/es/docs/HTML/Elemento/embed /es/docs/Web/HTML/Elemento/embed -/es/docs/HTML/Elemento/etiqueta /es/docs/Web/HTML/Elemento/label -/es/docs/HTML/Elemento/fieldset /es/docs/Web/HTML/Elemento/fieldset -/es/docs/HTML/Elemento/figure /es/docs/Web/HTML/Elemento/figure -/es/docs/HTML/Elemento/font /es/docs/Web/HTML/Elemento/font -/es/docs/HTML/Elemento/footer /es/docs/Web/HTML/Elemento/footer -/es/docs/HTML/Elemento/frame /es/docs/Web/HTML/Elemento/frame -/es/docs/HTML/Elemento/frameset /es/docs/Web/HTML/Elemento/frameset -/es/docs/HTML/Elemento/h1 /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/HTML/Elemento/h2 /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/HTML/Elemento/h3 /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/HTML/Elemento/h4 /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/HTML/Elemento/h5 /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/HTML/Elemento/h6 /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/HTML/Elemento/head /es/docs/Web/HTML/Elemento/head -/es/docs/HTML/Elemento/header /es/docs/Web/HTML/Elemento/header -/es/docs/HTML/Elemento/hr /es/docs/Web/HTML/Elemento/hr -/es/docs/HTML/Elemento/html /es/docs/Web/HTML/Elemento/html -/es/docs/HTML/Elemento/i /es/docs/Web/HTML/Elemento/i -/es/docs/HTML/Elemento/img /es/docs/Web/HTML/Elemento/img -/es/docs/HTML/Elemento/input /es/docs/Web/HTML/Elemento/input -/es/docs/HTML/Elemento/ins /es/docs/Web/HTML/Elemento/ins -/es/docs/HTML/Elemento/kbd /es/docs/Web/HTML/Elemento/kbd -/es/docs/HTML/Elemento/keygen /es/docs/Web/HTML/Elemento/keygen -/es/docs/HTML/Elemento/label /es/docs/Web/HTML/Elemento/label -/es/docs/HTML/Elemento/legend /es/docs/Web/HTML/Elemento/legend -/es/docs/HTML/Elemento/li /es/docs/Web/HTML/Elemento/li -/es/docs/HTML/Elemento/link /es/docs/Web/HTML/Elemento/link -/es/docs/HTML/Elemento/main /es/docs/Web/HTML/Elemento/main -/es/docs/HTML/Elemento/map /es/docs/Web/HTML/Elemento/map -/es/docs/HTML/Elemento/mark /es/docs/Web/HTML/Elemento/mark -/es/docs/HTML/Elemento/menu /es/docs/Web/HTML/Elemento/menu -/es/docs/HTML/Elemento/meta /es/docs/Web/HTML/Elemento/meta -/es/docs/HTML/Elemento/nav /es/docs/Web/HTML/Elemento/nav -/es/docs/HTML/Elemento/noframes /es/docs/Web/HTML/Elemento/noframes -/es/docs/HTML/Elemento/noscript /es/docs/Web/HTML/Elemento/noscript -/es/docs/HTML/Elemento/ol /es/docs/Web/HTML/Elemento/ol -/es/docs/HTML/Elemento/p /es/docs/Web/HTML/Elemento/p -/es/docs/HTML/Elemento/param /es/docs/Web/HTML/Elemento/param -/es/docs/HTML/Elemento/pre /es/docs/Web/HTML/Elemento/pre -/es/docs/HTML/Elemento/preformato /es/docs/Web/HTML/Elemento/pre -/es/docs/HTML/Elemento/q /es/docs/Web/HTML/Elemento/q -/es/docs/HTML/Elemento/s /es/docs/Web/HTML/Elemento/s -/es/docs/HTML/Elemento/samp /es/docs/Web/HTML/Elemento/samp -/es/docs/HTML/Elemento/small /es/docs/Web/HTML/Elemento/small -/es/docs/HTML/Elemento/source /es/docs/Web/HTML/Elemento/source -/es/docs/HTML/Elemento/span /es/docs/Web/HTML/Elemento/span -/es/docs/HTML/Elemento/strike /es/docs/Web/HTML/Elemento/strike -/es/docs/HTML/Elemento/strong /es/docs/Web/HTML/Elemento/strong -/es/docs/HTML/Elemento/style /es/docs/Web/HTML/Elemento/style -/es/docs/HTML/Elemento/sub /es/docs/Web/HTML/Elemento/sub -/es/docs/HTML/Elemento/sup /es/docs/Web/HTML/Elemento/sup -/es/docs/HTML/Elemento/time /es/docs/Web/HTML/Elemento/time -/es/docs/HTML/Elemento/title /es/docs/Web/HTML/Elemento/title -/es/docs/HTML/Elemento/tt /es/docs/Web/HTML/Elemento/tt -/es/docs/HTML/Elemento/u /es/docs/Web/HTML/Elemento/u -/es/docs/HTML/Elemento/ul /es/docs/Web/HTML/Elemento/ul -/es/docs/HTML/Elemento/var /es/docs/Web/HTML/Elemento/var -/es/docs/HTML/Elemento/video /es/docs/Web/HTML/Elemento/video -/es/docs/HTML/Formatos_admitidos_de_audio_y_video_en_html5 /es/docs/Web/HTML/Formatos_admitidos_de_audio_y_video_en_html5 -/es/docs/HTML/HTML5/Introduction_to_HTML5 /es/docs/HTML/HTML5/Introducción_a_HTML5 -/es/docs/HTML/La_importancia_de_comentar_correctamente /es/docs/Web/HTML/La_importancia_de_comentar_correctamente -/es/docs/HTML:Canvas /es/docs/Web/HTML/Canvas -/es/docs/HTML:Element /es/docs/Web/HTML/Elemento -/es/docs/HTML:Element:a /es/docs/Web/HTML/Elemento/a -/es/docs/HTML:Elemento /es/docs/Web/HTML/Elemento -/es/docs/HTML:Elemento:Tipos_de_elementos /es/docs/Web/HTML/Elemento/Tipos_de_elementos -/es/docs/HTML:Elemento:a /es/docs/Web/HTML/Elemento/a -/es/docs/HTML:Elemento:abbr /es/docs/Web/HTML/Elemento/abbr -/es/docs/HTML:Elemento:acronym /es/docs/Web/HTML/Elemento/acronym -/es/docs/HTML:Elemento:address /es/docs/Web/HTML/Elemento/address -/es/docs/HTML:Elemento:applet /es/docs/Web/HTML/Elemento/applet -/es/docs/HTML:Elemento:area /es/docs/Web/HTML/Elemento/area -/es/docs/HTML:Elemento:b /es/docs/Web/HTML/Elemento/b -/es/docs/HTML:Elemento:base /es/docs/Web/HTML/Elemento/base -/es/docs/HTML:Elemento:basefont /es/docs/Web/HTML/Elemento/basefont -/es/docs/HTML:Elemento:bdo /es/docs/Web/HTML/Elemento/bdo -/es/docs/HTML:Elemento:big /es/docs/Web/HTML/Elemento/big -/es/docs/HTML:Elemento:blockquote /es/docs/Web/HTML/Elemento/blockquote -/es/docs/HTML:Elemento:body /es/docs/Web/HTML/Elemento/body -/es/docs/HTML:Elemento:br /es/docs/Web/HTML/Elemento/br -/es/docs/HTML:Elemento:button /es/docs/Web/HTML/Elemento/button -/es/docs/HTML:Elemento:caption /es/docs/Web/HTML/Elemento/caption -/es/docs/HTML:Elemento:center /es/docs/Web/HTML/Elemento/center -/es/docs/HTML:Elemento:cite /es/docs/Web/HTML/Elemento/cite -/es/docs/HTML:Elemento:code /es/docs/Web/HTML/Elemento/code -/es/docs/HTML:Elemento:col /es/docs/Web/HTML/Elemento/col -/es/docs/HTML:Elemento:colgroup /es/docs/Web/HTML/Elemento/colgroup -/es/docs/HTML:Elemento:dd /es/docs/Web/HTML/Elemento/dd -/es/docs/HTML:Elemento:del /es/docs/Web/HTML/Elemento/del -/es/docs/HTML:Elemento:dfn /es/docs/Web/HTML/Elemento/dfn -/es/docs/HTML:Elemento:dir /es/docs/Web/HTML/Elemento/dir -/es/docs/HTML:Elemento:div /es/docs/Web/HTML/Elemento/div -/es/docs/HTML:Elemento:dl /es/docs/Web/HTML/Elemento/dl -/es/docs/HTML:Elemento:dt /es/docs/Web/HTML/Elemento/dt -/es/docs/HTML:Elemento:em /es/docs/Web/HTML/Elemento/em -/es/docs/HTML:Elemento:fieldset /es/docs/Web/HTML/Elemento/fieldset -/es/docs/HTML:Elemento:font /es/docs/Web/HTML/Elemento/font -/es/docs/HTML:Elemento:frame /es/docs/Web/HTML/Elemento/frame -/es/docs/HTML:Elemento:frameset /es/docs/Web/HTML/Elemento/frameset -/es/docs/HTML:Elemento:h1 /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/HTML:Elemento:h2 /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/HTML:Elemento:h3 /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/HTML:Elemento:h4 /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/HTML:Elemento:h5 /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/HTML:Elemento:h6 /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/HTML:Elemento:head /es/docs/Web/HTML/Elemento/head -/es/docs/HTML:Elemento:hr /es/docs/Web/HTML/Elemento/hr -/es/docs/HTML:Elemento:html /es/docs/Web/HTML/Elemento/html -/es/docs/HTML:Elemento:i /es/docs/Web/HTML/Elemento/i -/es/docs/HTML:Elemento:ins /es/docs/Web/HTML/Elemento/ins -/es/docs/HTML:Elemento:kbd /es/docs/Web/HTML/Elemento/kbd -/es/docs/HTML:Elemento:label /es/docs/Web/HTML/Elemento/label -/es/docs/HTML:Elemento:legend /es/docs/Web/HTML/Elemento/legend -/es/docs/HTML:Elemento:li /es/docs/Web/HTML/Elemento/li -/es/docs/HTML:Elemento:link /es/docs/Web/HTML/Elemento/link -/es/docs/HTML:Elemento:map /es/docs/Web/HTML/Elemento/map -/es/docs/HTML:Elemento:menu /es/docs/Web/HTML/Elemento/menu -/es/docs/HTML:Elemento:meta /es/docs/Web/HTML/Elemento/meta -/es/docs/HTML:Elemento:noframes /es/docs/Web/HTML/Elemento/noframes -/es/docs/HTML:Elemento:noscript /es/docs/Web/HTML/Elemento/noscript -/es/docs/HTML:Elemento:ol /es/docs/Web/HTML/Elemento/ol -/es/docs/HTML:Elemento:p /es/docs/Web/HTML/Elemento/p -/es/docs/HTML:Elemento:param /es/docs/Web/HTML/Elemento/param -/es/docs/HTML:Elemento:pre /es/docs/Web/HTML/Elemento/pre -/es/docs/HTML:Elemento:q /es/docs/Web/HTML/Elemento/q -/es/docs/HTML:Elemento:s /es/docs/Web/HTML/Elemento/s -/es/docs/HTML:Elemento:samp /es/docs/Web/HTML/Elemento/samp -/es/docs/HTML:Elemento:small /es/docs/Web/HTML/Elemento/small -/es/docs/HTML:Elemento:span /es/docs/Web/HTML/Elemento/span -/es/docs/HTML:Elemento:strike /es/docs/Web/HTML/Elemento/strike -/es/docs/HTML:Elemento:strong /es/docs/Web/HTML/Elemento/strong -/es/docs/HTML:Elemento:style /es/docs/Web/HTML/Elemento/style -/es/docs/HTML:Elemento:sub /es/docs/Web/HTML/Elemento/sub -/es/docs/HTML:Elemento:sup /es/docs/Web/HTML/Elemento/sup -/es/docs/HTML:Elemento:title /es/docs/Web/HTML/Elemento/title -/es/docs/HTML:Elemento:tt /es/docs/Web/HTML/Elemento/tt -/es/docs/HTML:Elemento:u /es/docs/Web/HTML/Elemento/u -/es/docs/HTML:Elemento:ul /es/docs/Web/HTML/Elemento/ul -/es/docs/HTML:Elemento:var /es/docs/Web/HTML/Elemento/var -/es/docs/HTML:La_importancia_de_comentar_correctamente /es/docs/Web/HTML/La_importancia_de_comentar_correctamente +/es/docs/HTML/Elemento/Audio /es/docs/Web/HTML/Element/audio +/es/docs/HTML/Elemento/Elementos_títulos /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/HTML/Elemento/Progreso /es/docs/Web/HTML/Element/progress +/es/docs/HTML/Elemento/Tipos_de_elementos /es/docs/orphaned/Web/HTML/Elemento/Tipos_de_elementos +/es/docs/HTML/Elemento/a /es/docs/Web/HTML/Element/a +/es/docs/HTML/Elemento/abbr /es/docs/Web/HTML/Element/abbr +/es/docs/HTML/Elemento/acronym /es/docs/Web/HTML/Element/acronym +/es/docs/HTML/Elemento/address /es/docs/Web/HTML/Element/address +/es/docs/HTML/Elemento/applet /es/docs/Web/HTML/Element/applet +/es/docs/HTML/Elemento/area /es/docs/Web/HTML/Element/area +/es/docs/HTML/Elemento/article /es/docs/Web/HTML/Element/article +/es/docs/HTML/Elemento/aside /es/docs/Web/HTML/Element/aside +/es/docs/HTML/Elemento/b /es/docs/Web/HTML/Element/b +/es/docs/HTML/Elemento/base /es/docs/Web/HTML/Element/base +/es/docs/HTML/Elemento/basefont /es/docs/Web/HTML/Element/basefont +/es/docs/HTML/Elemento/bdo /es/docs/Web/HTML/Element/bdo +/es/docs/HTML/Elemento/big /es/docs/Web/HTML/Element/big +/es/docs/HTML/Elemento/blockquote /es/docs/Web/HTML/Element/blockquote +/es/docs/HTML/Elemento/body /es/docs/Web/HTML/Element/body +/es/docs/HTML/Elemento/br /es/docs/Web/HTML/Element/br +/es/docs/HTML/Elemento/button /es/docs/Web/HTML/Element/button +/es/docs/HTML/Elemento/canvas /es/docs/Web/HTML/Element/canvas +/es/docs/HTML/Elemento/caption /es/docs/Web/HTML/Element/caption +/es/docs/HTML/Elemento/center /es/docs/Web/HTML/Element/center +/es/docs/HTML/Elemento/cite /es/docs/Web/HTML/Element/cite +/es/docs/HTML/Elemento/code /es/docs/Web/HTML/Element/code +/es/docs/HTML/Elemento/col /es/docs/Web/HTML/Element/col +/es/docs/HTML/Elemento/colgroup /es/docs/Web/HTML/Element/colgroup +/es/docs/HTML/Elemento/datalist /es/docs/orphaned/HTML/Elemento/datalist +/es/docs/HTML/Elemento/dd /es/docs/Web/HTML/Element/dd +/es/docs/HTML/Elemento/del /es/docs/Web/HTML/Element/del +/es/docs/HTML/Elemento/dfn /es/docs/Web/HTML/Element/dfn +/es/docs/HTML/Elemento/dir /es/docs/Web/HTML/Element/dir +/es/docs/HTML/Elemento/div /es/docs/Web/HTML/Element/div +/es/docs/HTML/Elemento/dl /es/docs/Web/HTML/Element/dl +/es/docs/HTML/Elemento/dt /es/docs/Web/HTML/Element/dt +/es/docs/HTML/Elemento/em /es/docs/Web/HTML/Element/em +/es/docs/HTML/Elemento/embed /es/docs/Web/HTML/Element/embed +/es/docs/HTML/Elemento/etiqueta /es/docs/Web/HTML/Element/label +/es/docs/HTML/Elemento/fieldset /es/docs/Web/HTML/Element/fieldset +/es/docs/HTML/Elemento/figure /es/docs/Web/HTML/Element/figure +/es/docs/HTML/Elemento/font /es/docs/Web/HTML/Element/font +/es/docs/HTML/Elemento/footer /es/docs/Web/HTML/Element/footer +/es/docs/HTML/Elemento/form /es/docs/orphaned/HTML/Elemento/form +/es/docs/HTML/Elemento/frame /es/docs/Web/HTML/Element/frame +/es/docs/HTML/Elemento/frameset /es/docs/Web/HTML/Element/frameset +/es/docs/HTML/Elemento/h1 /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/HTML/Elemento/h2 /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/HTML/Elemento/h3 /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/HTML/Elemento/h4 /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/HTML/Elemento/h5 /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/HTML/Elemento/h6 /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/HTML/Elemento/head /es/docs/Web/HTML/Element/head +/es/docs/HTML/Elemento/header /es/docs/Web/HTML/Element/header +/es/docs/HTML/Elemento/hr /es/docs/Web/HTML/Element/hr +/es/docs/HTML/Elemento/html /es/docs/Web/HTML/Element/html +/es/docs/HTML/Elemento/i /es/docs/Web/HTML/Element/i +/es/docs/HTML/Elemento/img /es/docs/Web/HTML/Element/img +/es/docs/HTML/Elemento/input /es/docs/Web/HTML/Element/input +/es/docs/HTML/Elemento/ins /es/docs/Web/HTML/Element/ins +/es/docs/HTML/Elemento/kbd /es/docs/Web/HTML/Element/kbd +/es/docs/HTML/Elemento/keygen /es/docs/Web/HTML/Element/keygen +/es/docs/HTML/Elemento/label /es/docs/Web/HTML/Element/label +/es/docs/HTML/Elemento/legend /es/docs/Web/HTML/Element/legend +/es/docs/HTML/Elemento/li /es/docs/Web/HTML/Element/li +/es/docs/HTML/Elemento/link /es/docs/Web/HTML/Element/link +/es/docs/HTML/Elemento/main /es/docs/Web/HTML/Element/main +/es/docs/HTML/Elemento/map /es/docs/Web/HTML/Element/map +/es/docs/HTML/Elemento/mark /es/docs/Web/HTML/Element/mark +/es/docs/HTML/Elemento/menu /es/docs/Web/HTML/Element/menu +/es/docs/HTML/Elemento/meta /es/docs/Web/HTML/Element/meta +/es/docs/HTML/Elemento/nav /es/docs/Web/HTML/Element/nav +/es/docs/HTML/Elemento/noframes /es/docs/Web/HTML/Element/noframes +/es/docs/HTML/Elemento/noscript /es/docs/Web/HTML/Element/noscript +/es/docs/HTML/Elemento/ol /es/docs/Web/HTML/Element/ol +/es/docs/HTML/Elemento/p /es/docs/Web/HTML/Element/p +/es/docs/HTML/Elemento/param /es/docs/Web/HTML/Element/param +/es/docs/HTML/Elemento/pre /es/docs/Web/HTML/Element/pre +/es/docs/HTML/Elemento/preformato /es/docs/Web/HTML/Element/pre +/es/docs/HTML/Elemento/q /es/docs/Web/HTML/Element/q +/es/docs/HTML/Elemento/s /es/docs/Web/HTML/Element/s +/es/docs/HTML/Elemento/samp /es/docs/Web/HTML/Element/samp +/es/docs/HTML/Elemento/section /es/docs/orphaned/HTML/Elemento/section +/es/docs/HTML/Elemento/small /es/docs/Web/HTML/Element/small +/es/docs/HTML/Elemento/source /es/docs/Web/HTML/Element/source +/es/docs/HTML/Elemento/span /es/docs/Web/HTML/Element/span +/es/docs/HTML/Elemento/strike /es/docs/Web/HTML/Element/strike +/es/docs/HTML/Elemento/strong /es/docs/Web/HTML/Element/strong +/es/docs/HTML/Elemento/style /es/docs/Web/HTML/Element/style +/es/docs/HTML/Elemento/sub /es/docs/Web/HTML/Element/sub +/es/docs/HTML/Elemento/sup /es/docs/Web/HTML/Element/sup +/es/docs/HTML/Elemento/time /es/docs/Web/HTML/Element/time +/es/docs/HTML/Elemento/title /es/docs/Web/HTML/Element/title +/es/docs/HTML/Elemento/tt /es/docs/Web/HTML/Element/tt +/es/docs/HTML/Elemento/u /es/docs/Web/HTML/Element/u +/es/docs/HTML/Elemento/ul /es/docs/Web/HTML/Element/ul +/es/docs/HTML/Elemento/var /es/docs/Web/HTML/Element/var +/es/docs/HTML/Elemento/video /es/docs/Web/HTML/Element/video +/es/docs/HTML/Formatos_admitidos_de_audio_y_video_en_html5 /es/docs/conflicting/Web/Media/Formats +/es/docs/HTML/HTML5 /es/docs/Web/Guide/HTML/HTML5 +/es/docs/HTML/HTML5/Forms_in_HTML5 /es/docs/Learn/Forms +/es/docs/HTML/HTML5/Formularios_en_HTML5 /es/docs/orphaned/Learn/HTML/Forms/HTML5_updates +/es/docs/HTML/HTML5/HTML5_Parser /es/docs/Web/Guide/HTML/HTML5/HTML5_Parser +/es/docs/HTML/HTML5/HTML5_lista_elementos /es/docs/conflicting/Web/HTML/Element +/es/docs/HTML/HTML5/Introducción_a_HTML5 /es/docs/Web/Guide/HTML/HTML5/Introduction_to_HTML5 +/es/docs/HTML/HTML5/Introduction_to_HTML5 /es/docs/Web/Guide/HTML/HTML5/Introduction_to_HTML5 +/es/docs/HTML/HTML5/Validacion_de_restricciones /es/docs/Web/Guide/HTML/HTML5/Constraint_validation +/es/docs/HTML/La_importancia_de_comentar_correctamente /es/docs/conflicting/Learn/HTML/Introduction_to_HTML/Getting_started +/es/docs/HTML:Canvas /es/docs/Web/API/Canvas_API +/es/docs/HTML:Element /es/docs/Web/HTML/Element +/es/docs/HTML:Element:a /es/docs/Web/HTML/Element/a +/es/docs/HTML:Elemento /es/docs/Web/HTML/Element +/es/docs/HTML:Elemento:Tipos_de_elementos /es/docs/orphaned/Web/HTML/Elemento/Tipos_de_elementos +/es/docs/HTML:Elemento:a /es/docs/Web/HTML/Element/a +/es/docs/HTML:Elemento:abbr /es/docs/Web/HTML/Element/abbr +/es/docs/HTML:Elemento:acronym /es/docs/Web/HTML/Element/acronym +/es/docs/HTML:Elemento:address /es/docs/Web/HTML/Element/address +/es/docs/HTML:Elemento:applet /es/docs/Web/HTML/Element/applet +/es/docs/HTML:Elemento:area /es/docs/Web/HTML/Element/area +/es/docs/HTML:Elemento:b /es/docs/Web/HTML/Element/b +/es/docs/HTML:Elemento:base /es/docs/Web/HTML/Element/base +/es/docs/HTML:Elemento:basefont /es/docs/Web/HTML/Element/basefont +/es/docs/HTML:Elemento:bdo /es/docs/Web/HTML/Element/bdo +/es/docs/HTML:Elemento:big /es/docs/Web/HTML/Element/big +/es/docs/HTML:Elemento:blockquote /es/docs/Web/HTML/Element/blockquote +/es/docs/HTML:Elemento:body /es/docs/Web/HTML/Element/body +/es/docs/HTML:Elemento:br /es/docs/Web/HTML/Element/br +/es/docs/HTML:Elemento:button /es/docs/Web/HTML/Element/button +/es/docs/HTML:Elemento:caption /es/docs/Web/HTML/Element/caption +/es/docs/HTML:Elemento:center /es/docs/Web/HTML/Element/center +/es/docs/HTML:Elemento:cite /es/docs/Web/HTML/Element/cite +/es/docs/HTML:Elemento:code /es/docs/Web/HTML/Element/code +/es/docs/HTML:Elemento:col /es/docs/Web/HTML/Element/col +/es/docs/HTML:Elemento:colgroup /es/docs/Web/HTML/Element/colgroup +/es/docs/HTML:Elemento:dd /es/docs/Web/HTML/Element/dd +/es/docs/HTML:Elemento:del /es/docs/Web/HTML/Element/del +/es/docs/HTML:Elemento:dfn /es/docs/Web/HTML/Element/dfn +/es/docs/HTML:Elemento:dir /es/docs/Web/HTML/Element/dir +/es/docs/HTML:Elemento:div /es/docs/Web/HTML/Element/div +/es/docs/HTML:Elemento:dl /es/docs/Web/HTML/Element/dl +/es/docs/HTML:Elemento:dt /es/docs/Web/HTML/Element/dt +/es/docs/HTML:Elemento:em /es/docs/Web/HTML/Element/em +/es/docs/HTML:Elemento:fieldset /es/docs/Web/HTML/Element/fieldset +/es/docs/HTML:Elemento:font /es/docs/Web/HTML/Element/font +/es/docs/HTML:Elemento:frame /es/docs/Web/HTML/Element/frame +/es/docs/HTML:Elemento:frameset /es/docs/Web/HTML/Element/frameset +/es/docs/HTML:Elemento:h1 /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/HTML:Elemento:h2 /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/HTML:Elemento:h3 /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/HTML:Elemento:h4 /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/HTML:Elemento:h5 /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/HTML:Elemento:h6 /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/HTML:Elemento:head /es/docs/Web/HTML/Element/head +/es/docs/HTML:Elemento:hr /es/docs/Web/HTML/Element/hr +/es/docs/HTML:Elemento:html /es/docs/Web/HTML/Element/html +/es/docs/HTML:Elemento:i /es/docs/Web/HTML/Element/i +/es/docs/HTML:Elemento:ins /es/docs/Web/HTML/Element/ins +/es/docs/HTML:Elemento:kbd /es/docs/Web/HTML/Element/kbd +/es/docs/HTML:Elemento:label /es/docs/Web/HTML/Element/label +/es/docs/HTML:Elemento:legend /es/docs/Web/HTML/Element/legend +/es/docs/HTML:Elemento:li /es/docs/Web/HTML/Element/li +/es/docs/HTML:Elemento:link /es/docs/Web/HTML/Element/link +/es/docs/HTML:Elemento:map /es/docs/Web/HTML/Element/map +/es/docs/HTML:Elemento:menu /es/docs/Web/HTML/Element/menu +/es/docs/HTML:Elemento:meta /es/docs/Web/HTML/Element/meta +/es/docs/HTML:Elemento:noframes /es/docs/Web/HTML/Element/noframes +/es/docs/HTML:Elemento:noscript /es/docs/Web/HTML/Element/noscript +/es/docs/HTML:Elemento:ol /es/docs/Web/HTML/Element/ol +/es/docs/HTML:Elemento:p /es/docs/Web/HTML/Element/p +/es/docs/HTML:Elemento:param /es/docs/Web/HTML/Element/param +/es/docs/HTML:Elemento:pre /es/docs/Web/HTML/Element/pre +/es/docs/HTML:Elemento:q /es/docs/Web/HTML/Element/q +/es/docs/HTML:Elemento:s /es/docs/Web/HTML/Element/s +/es/docs/HTML:Elemento:samp /es/docs/Web/HTML/Element/samp +/es/docs/HTML:Elemento:small /es/docs/Web/HTML/Element/small +/es/docs/HTML:Elemento:span /es/docs/Web/HTML/Element/span +/es/docs/HTML:Elemento:strike /es/docs/Web/HTML/Element/strike +/es/docs/HTML:Elemento:strong /es/docs/Web/HTML/Element/strong +/es/docs/HTML:Elemento:style /es/docs/Web/HTML/Element/style +/es/docs/HTML:Elemento:sub /es/docs/Web/HTML/Element/sub +/es/docs/HTML:Elemento:sup /es/docs/Web/HTML/Element/sup +/es/docs/HTML:Elemento:title /es/docs/Web/HTML/Element/title +/es/docs/HTML:Elemento:tt /es/docs/Web/HTML/Element/tt +/es/docs/HTML:Elemento:u /es/docs/Web/HTML/Element/u +/es/docs/HTML:Elemento:ul /es/docs/Web/HTML/Element/ul +/es/docs/HTML:Elemento:var /es/docs/Web/HTML/Element/var +/es/docs/HTML:La_importancia_de_comentar_correctamente /es/docs/conflicting/Learn/HTML/Introduction_to_HTML/Getting_started +/es/docs/Herramientas /es/docs/orphaned/Herramientas /es/docs/Herramientas_API /es/docs/API_del_Toolkit +/es/docs/How_to_create_a_DOM_tree /es/docs/Web/API/Document_object_model/How_to_create_a_DOM_tree /es/docs/Html_Validator_(externo) https://addons.mozilla.org/firefox/249/ +/es/docs/Incrustando_Mozilla/Comunidad /es/docs/orphaned/Incrustando_Mozilla/Comunidad +/es/docs/IndexedDB /es/docs/conflicting/Web/API/IndexedDB_API /es/docs/IndexedDB-840092-dup /es/docs/Web/API/IndexedDB_API -/es/docs/IndexedDB-840092-dup/Conceptos_Basicos_Detras_De_IndexedDB /es/docs/Web/API/IndexedDB_API/Conceptos_Basicos_Detras_De_IndexedDB -/es/docs/IndexedDB-840092-dup/Usando_IndexedDB /es/docs/Web/API/IndexedDB_API/Usando_IndexedDB +/es/docs/IndexedDB-840092-dup/Conceptos_Basicos_Detras_De_IndexedDB /es/docs/Web/API/IndexedDB_API/Basic_Concepts_Behind_IndexedDB +/es/docs/IndexedDB-840092-dup/Usando_IndexedDB /es/docs/Web/API/IndexedDB_API/Using_IndexedDB +/es/docs/Instalación_de_motores_de_búsqueda_desde_páginas_web /es/docs/orphaned/Instalación_de_motores_de_búsqueda_desde_páginas_web /es/docs/Instalar_el_manifest /es/docs/Manifiesto_de_instalación /es/docs/Install_Manifests /es/docs/Manifiesto_de_instalación -/es/docs/Introducción_a_JavaScript_orientado_a_objetos /es/docs/Web/JavaScript/Introducción_a_JavaScript_orientado_a_objetos -/es/docs/Introducción_a_XML /es/docs/Web/XML/Introducción_a_XML -/es/docs/Introduction_to_using_XPath_in_JavaScript /es/docs/Web/JavaScript/Introduction_to_using_XPath_in_JavaScript +/es/docs/Introducción_a_JavaScript_orientado_a_objetos /es/docs/conflicting/Learn/JavaScript/Objects +/es/docs/Introducción_a_XML /es/docs/Web/XML/XML_introduction +/es/docs/Introduction_to_using_XPath_in_JavaScript /es/docs/Web/XPath/Introduction_to_using_XPath_in_JavaScript /es/docs/JavaScript /es/docs/Web/JavaScript -/es/docs/JavaScript/Acerca_de_JavaScript /es/docs/Web/JavaScript/Acerca_de_JavaScript +/es/docs/JavaScript/Acerca_de_JavaScript /es/docs/Web/JavaScript/About_JavaScript /es/docs/JavaScript/Guide /es/docs/Web/JavaScript/Guide -/es/docs/JavaScript/Guide/AcercaDe /es/docs/Web/JavaScript/Guide/Introducción +/es/docs/JavaScript/Guide/AcercaDe /es/docs/Web/JavaScript/Guide/Introduction /es/docs/JavaScript/Guide/Closures /es/docs/Web/JavaScript/Closures /es/docs/JavaScript/Guide/Details_of_the_Object_Model /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model -/es/docs/JavaScript/Guide/Funciones /es/docs/Web/JavaScript/Guide/Funciones -/es/docs/JavaScript/Guide/JavaScript_Overview /es/docs/Web/JavaScript/Guide/Introducción +/es/docs/JavaScript/Guide/Funciones /es/docs/Web/JavaScript/Guide/Functions +/es/docs/JavaScript/Guide/JavaScript_Overview /es/docs/Web/JavaScript/Guide/Introduction /es/docs/JavaScript/Guide/Obsolete_Pages /es/docs/Web/JavaScript/Guide /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5 /es/docs/Web/JavaScript/Guide -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Acerca_de_esta_guía /es/docs/Web/JavaScript/Guide/Introducción -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Concepto_de_JavaScript /es/docs/Web/JavaScript/Guide/Introducción -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Constantes /es/docs/Web/JavaScript/Referencia/Sentencias/const +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Acerca_de_esta_guía /es/docs/Web/JavaScript/Guide/Introduction +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Concepto_de_JavaScript /es/docs/Web/JavaScript/Guide/Introduction +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Constantes /es/docs/Web/JavaScript/Reference/Statements/const /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Constructores_más_flexibles /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Constructores_mas_flexibles /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Crear_nuevos_objetos /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#Creando_nuevos_objetos /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Crear_nuevos_objetos/Borrando_propiedades /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#Eliminando_propiedades @@ -861,7 +1019,7 @@ /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Crear_nuevos_objetos/Using_Object_Initializers /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#El_uso_de_inicializadores_de_objeto /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Crear_nuevos_objetos/Utilizando_Objetos_Iniciadores /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#El_uso_de_inicializadores_de_objeto /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Crear_una_expresión_regular /es/docs/Web/JavaScript/Guide/Regular_Expressions -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Definiendo_Funciones /es/docs/Web/JavaScript/Guide/Funciones +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Definiendo_Funciones /es/docs/Web/JavaScript/Guide/Functions /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/El_ejemplo_Empleado /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Ejemplo.3A_employee /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/El_ejemplo_Employee /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Ejemplo.3A_employee /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/El_ejemplo_Employee/Creando_la_jerarquía /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Creacion_de_la_jerarquia @@ -887,15 +1045,15 @@ /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Más_sobre_la_herencia_de_propiedades/Herencia_no_múltiple /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#No_existe_herencia_multiple /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Más_sobre_la_herencia_de_propiedades/Información_global_en_los_constructores /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Informacion_global_en_los_constructores /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Más_sobre_la_herencia_de_propiedades/Valores_locales_frente_a_los_heredados /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Valores_locales_frente_a_valores_heredados -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos /es/docs/Web/JavaScript/Referencia -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Array /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Boolean /es/docs/Web/JavaScript/Referencia/Objetos_globales/Boolean -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Date /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Function /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Math /es/docs/Web/JavaScript/Referencia/Objetos_globales/Math -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Number /es/docs/Web/JavaScript/Referencia/Objetos_globales/Number -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_RegExp /es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_String /es/docs/Web/JavaScript/Referencia/Objetos_globales/String +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos /es/docs/Web/JavaScript/Reference +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Array /es/docs/Web/JavaScript/Reference/Global_Objects/Array +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Boolean /es/docs/Web/JavaScript/Reference/Global_Objects/Boolean +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Date /es/docs/Web/JavaScript/Reference/Global_Objects/Date +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Function /es/docs/Web/JavaScript/Reference/Global_Objects/Function +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Math /es/docs/Web/JavaScript/Reference/Global_Objects/Math +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Number /es/docs/Web/JavaScript/Reference/Global_Objects/Number +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_RegExp /es/docs/Web/JavaScript/Reference/Global_Objects/RegExp +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_String /es/docs/Web/JavaScript/Reference/Global_Objects/String /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_y_propiedades /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#Objetos_y_propiedades /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Operadores /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operadores /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Operadores/Operadores_aritméticos /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operadores_aritm.C3.A9ticos @@ -905,10 +1063,10 @@ /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Operadores/Operadores_especiales /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Special_operators /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Operadores/Operadores_lógicos /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operadores_l.C3.B3gicos /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Operadores/Operadores_sobre_bits /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operadores_Bit-a-bit -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Predefined_Functions /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Predefined_Functions/eval_Function /es/docs/Web/JavaScript/Referencia/Objetos_globales/eval +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Predefined_Functions /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Predefined_Functions/eval_Function /es/docs/Web/JavaScript/Reference/Global_Objects/eval /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Sentencia_condicional /es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores#Condicionales -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Sentencia_de_bloque /es/docs/Web/JavaScript/Referencia/Sentencias/block +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Sentencia_de_bloque /es/docs/Web/JavaScript/Reference/Statements/block /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Sentencias_de_manejo_de_excepciones /es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores#Utilizing_Error_objects /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Sentencias_de_manejo_de_excepciones/throw /es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores#throw_statement /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Sentencias_de_manejo_de_excepciones/try...catch /es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores#try...catch_statement @@ -919,13 +1077,13 @@ /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Trabajar_con_expresiones_regulares/Ejemplos_de_expresiones_regulares /es/docs/Web/JavaScript/Guide/Regular_Expressions /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Trabajar_con_expresiones_regulares/Usar_coincidencias_de_subcadenas_parentizadas /es/docs/Web/JavaScript/Guide/Regular_Expressions /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Unicode /en-US/docs/Web/JavaScript/Reference/Lexical_grammar -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Usando_el_objeto_arguments /es/docs/Web/JavaScript/Guide/Funciones -/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Using_the_arguments_object /es/docs/Web/JavaScript/Guide/Funciones +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Usando_el_objeto_arguments /es/docs/Web/JavaScript/Guide/Functions +/es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Using_the_arguments_object /es/docs/Web/JavaScript/Guide/Functions /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Valores /es/docs/Web/JavaScript/Guide/Grammar_and_types /es/docs/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Variables /es/docs/Web/JavaScript/Guide/Grammar_and_types -/es/docs/JavaScript/Guide/Trabajando_con_objectos /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos +/es/docs/JavaScript/Guide/Trabajando_con_objectos /es/docs/Web/JavaScript/Guide/Working_with_Objects /es/docs/JavaScript/Guide/Valores,_variables_y_literales /es/docs/Web/JavaScript/Guide/Grammar_and_types -/es/docs/JavaScript/Introducción_a_JavaScript_orientado_a_objetos /es/docs/Web/JavaScript/Introducción_a_JavaScript_orientado_a_objetos +/es/docs/JavaScript/Introducción_a_JavaScript_orientado_a_objetos /es/docs/conflicting/Learn/JavaScript/Objects /es/docs/JavaScript/Novedades_en_JavaScript /es/docs/Web/JavaScript/Novedades_en_JavaScript /es/docs/JavaScript/Novedades_en_JavaScript/1.5 /es/docs/Web/JavaScript/Novedades_en_JavaScript/1.5 /es/docs/JavaScript/Novedades_en_JavaScript/1.6 /es/docs/Web/JavaScript/Novedades_en_JavaScript/1.6 @@ -934,160 +1092,186 @@ /es/docs/JavaScript/Novedades_en_JavaScript/1.8.5 /es/docs/Web/JavaScript/Novedades_en_JavaScript/1.8.5 /es/docs/JavaScript/Novedades_en_JavaScript/Novedades_en_JavaScript_1.8.5 /es/docs/Web/JavaScript/Novedades_en_JavaScript/1.8.5 /es/docs/JavaScript/Primeros_Pasos /es/docs/Learn/Getting_started_with_the_web/JavaScript_basics -/es/docs/JavaScript/Reference/Global_Objects/Array/push /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/push -/es/docs/JavaScript/Reference/Global_Objects/RegExp /es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp -/es/docs/JavaScript/Reference/Operators/function /es/docs/Web/JavaScript/Referencia/Operadores/function -/es/docs/JavaScript/Reference/Operators/get /es/docs/Web/JavaScript/Referencia/Funciones/get -/es/docs/JavaScript/Reference/Operators/in /es/docs/Web/JavaScript/Referencia/Operadores/in -/es/docs/JavaScript/Reference/Operators/this /es/docs/Web/JavaScript/Referencia/Operadores/this -/es/docs/JavaScript/Referencia /es/docs/Web/JavaScript/Referencia -/es/docs/JavaScript/Referencia/Acerca_de /es/docs/Web/JavaScript/Referencia/Acerca_de -/es/docs/JavaScript/Referencia/Características_Desaprobadas /es/docs/Web/JavaScript/Referencia/Características_Desaprobadas -/es/docs/JavaScript/Referencia/Características_Despreciadas /es/docs/Web/JavaScript/Referencia/Características_Desaprobadas -/es/docs/JavaScript/Referencia/Funciones /es/docs/Web/JavaScript/Referencia/Funciones -/es/docs/JavaScript/Referencia/Funciones/String /es/docs/Web/JavaScript/Referencia/Objetos_globales/String -/es/docs/JavaScript/Referencia/Funciones/arguments /es/docs/Web/JavaScript/Referencia/Funciones/arguments -/es/docs/JavaScript/Referencia/Funciones/arguments/callee /es/docs/Web/JavaScript/Referencia/Funciones/arguments/callee -/es/docs/JavaScript/Referencia/Funciones_globales /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/JavaScript/Referencia/Funciones_globales/Boolean /es/docs/Web/JavaScript/Referencia/Objetos_globales/Boolean -/es/docs/JavaScript/Referencia/Funciones_globales/Date /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date -/es/docs/JavaScript/Referencia/Funciones_globales/Object /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object -/es/docs/JavaScript/Referencia/Funciones_globales/String /es/docs/Web/JavaScript/Referencia/Objetos_globales/String -/es/docs/JavaScript/Referencia/Funciones_globales/decodeURI /es/docs/Web/JavaScript/Referencia/Objetos_globales/decodeURI -/es/docs/JavaScript/Referencia/Funciones_globales/decodeURIComponent /es/docs/Web/JavaScript/Referencia/Objetos_globales/decodeURIComponent -/es/docs/JavaScript/Referencia/Funciones_globales/encodeURI /es/docs/Web/JavaScript/Referencia/Objetos_globales/encodeURI -/es/docs/JavaScript/Referencia/Funciones_globales/encodeURIComponent /es/docs/Web/JavaScript/Referencia/Objetos_globales/encodeURIComponent -/es/docs/JavaScript/Referencia/Funciones_globales/eval /es/docs/Web/JavaScript/Referencia/Objetos_globales/eval -/es/docs/JavaScript/Referencia/Funciones_globales/isFinite /es/docs/Web/JavaScript/Referencia/Objetos_globales/isFinite -/es/docs/JavaScript/Referencia/Funciones_globales/isNaN /es/docs/Web/JavaScript/Referencia/Objetos_globales/isNaN -/es/docs/JavaScript/Referencia/Funciones_globales/parseInt /es/docs/Web/JavaScript/Referencia/Objetos_globales/parseInt -/es/docs/JavaScript/Referencia/Objetos_globales /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/JavaScript/Referencia/Objetos_globales/Array /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array -/es/docs/JavaScript/Referencia/Objetos_globales/Array/forEach /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/forEach -/es/docs/JavaScript/Referencia/Objetos_globales/Array/indexOf /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/indexOf -/es/docs/JavaScript/Referencia/Objetos_globales/Array/push /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/push -/es/docs/JavaScript/Referencia/Objetos_globales/Array/reduce /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/reduce -/es/docs/JavaScript/Referencia/Objetos_globales/Array/reduceRight /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/reduceRight -/es/docs/JavaScript/Referencia/Objetos_globales/Boolean /es/docs/Web/JavaScript/Referencia/Objetos_globales/Boolean -/es/docs/JavaScript/Referencia/Objetos_globales/Boolean/toSource /es/docs/Web/JavaScript/Referencia/Objetos_globales/Boolean/toSource -/es/docs/JavaScript/Referencia/Objetos_globales/Date /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date -/es/docs/JavaScript/Referencia/Objetos_globales/Date/UTC /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/UTC -/es/docs/JavaScript/Referencia/Objetos_globales/Date/now /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/now -/es/docs/JavaScript/Referencia/Objetos_globales/Date/parse /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/parse -/es/docs/JavaScript/Referencia/Objetos_globales/Error /es/docs/Web/JavaScript/Referencia/Objetos_globales/Error -/es/docs/JavaScript/Referencia/Objetos_globales/Function /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function -/es/docs/JavaScript/Referencia/Objetos_globales/Function/apply /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/apply -/es/docs/JavaScript/Referencia/Objetos_globales/Function/arguments /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/arguments -/es/docs/JavaScript/Referencia/Objetos_globales/Function/call /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/call -/es/docs/JavaScript/Referencia/Objetos_globales/Function/prototype /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/prototype -/es/docs/JavaScript/Referencia/Objetos_globales/JSON /es/docs/Web/JavaScript/Referencia/Objetos_globales/JSON -/es/docs/JavaScript/Referencia/Objetos_globales/JSON/stringify /es/docs/Web/JavaScript/Referencia/Objetos_globales/JSON/stringify -/es/docs/JavaScript/Referencia/Objetos_globales/Math /es/docs/Web/JavaScript/Referencia/Objetos_globales/Math -/es/docs/JavaScript/Referencia/Objetos_globales/Math/E /es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/E -/es/docs/JavaScript/Referencia/Objetos_globales/Math/LN10 /es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/LN10 -/es/docs/JavaScript/Referencia/Objetos_globales/Math/LN2 /es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/LN2 -/es/docs/JavaScript/Referencia/Objetos_globales/Math/LOG2E /es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/LOG2E -/es/docs/JavaScript/Referencia/Objetos_globales/Math/floor /es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/floor -/es/docs/JavaScript/Referencia/Objetos_globales/Number /es/docs/Web/JavaScript/Referencia/Objetos_globales/Number -/es/docs/JavaScript/Referencia/Objetos_globales/Number/NEGATIVE_INFINITY /es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/NEGATIVE_INFINITY -/es/docs/JavaScript/Referencia/Objetos_globales/Number/POSITIVE_INFINITY /es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/POSITIVE_INFINITY -/es/docs/JavaScript/Referencia/Objetos_globales/Number/prototype /es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/prototype -/es/docs/JavaScript/Referencia/Objetos_globales/Number/toString /es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/toString -/es/docs/JavaScript/Referencia/Objetos_globales/Object /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object -/es/docs/JavaScript/Referencia/Objetos_globales/Object/constructor /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/constructor -/es/docs/JavaScript/Referencia/Objetos_globales/Object/create /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/create -/es/docs/JavaScript/Referencia/Objetos_globales/Object/defineProperties /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/defineProperties -/es/docs/JavaScript/Referencia/Objetos_globales/Object/hasOwnProperty /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/hasOwnProperty -/es/docs/JavaScript/Referencia/Objetos_globales/Object/toString /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/toString +/es/docs/JavaScript/Reference/Global_Objects/Array/push /es/docs/Web/JavaScript/Reference/Global_Objects/Array/push +/es/docs/JavaScript/Reference/Global_Objects/RegExp /es/docs/Web/JavaScript/Reference/Global_Objects/RegExp +/es/docs/JavaScript/Reference/Operators/function /es/docs/Web/JavaScript/Reference/Operators/function +/es/docs/JavaScript/Reference/Operators/get /es/docs/Web/JavaScript/Reference/Functions/get +/es/docs/JavaScript/Reference/Operators/in /es/docs/Web/JavaScript/Reference/Operators/in +/es/docs/JavaScript/Reference/Operators/this /es/docs/Web/JavaScript/Reference/Operators/this +/es/docs/JavaScript/Referencia /es/docs/Web/JavaScript/Reference +/es/docs/JavaScript/Referencia/Acerca_de /es/docs/Web/JavaScript/Reference/About +/es/docs/JavaScript/Referencia/Características_Desaprobadas /es/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features +/es/docs/JavaScript/Referencia/Características_Despreciadas /es/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features +/es/docs/JavaScript/Referencia/Funciones /es/docs/Web/JavaScript/Reference/Functions +/es/docs/JavaScript/Referencia/Funciones/String /es/docs/Web/JavaScript/Reference/Global_Objects/String +/es/docs/JavaScript/Referencia/Funciones/arguments /es/docs/Web/JavaScript/Reference/Functions/arguments +/es/docs/JavaScript/Referencia/Funciones/arguments/callee /es/docs/Web/JavaScript/Reference/Functions/arguments/callee +/es/docs/JavaScript/Referencia/Funciones_globales /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/JavaScript/Referencia/Funciones_globales/Boolean /es/docs/Web/JavaScript/Reference/Global_Objects/Boolean +/es/docs/JavaScript/Referencia/Funciones_globales/Date /es/docs/Web/JavaScript/Reference/Global_Objects/Date +/es/docs/JavaScript/Referencia/Funciones_globales/Object /es/docs/Web/JavaScript/Reference/Global_Objects/Object +/es/docs/JavaScript/Referencia/Funciones_globales/String /es/docs/Web/JavaScript/Reference/Global_Objects/String +/es/docs/JavaScript/Referencia/Funciones_globales/decodeURI /es/docs/Web/JavaScript/Reference/Global_Objects/decodeURI +/es/docs/JavaScript/Referencia/Funciones_globales/decodeURIComponent /es/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent +/es/docs/JavaScript/Referencia/Funciones_globales/encodeURI /es/docs/Web/JavaScript/Reference/Global_Objects/encodeURI +/es/docs/JavaScript/Referencia/Funciones_globales/encodeURIComponent /es/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent +/es/docs/JavaScript/Referencia/Funciones_globales/eval /es/docs/Web/JavaScript/Reference/Global_Objects/eval +/es/docs/JavaScript/Referencia/Funciones_globales/isFinite /es/docs/Web/JavaScript/Reference/Global_Objects/isFinite +/es/docs/JavaScript/Referencia/Funciones_globales/isNaN /es/docs/Web/JavaScript/Reference/Global_Objects/isNaN +/es/docs/JavaScript/Referencia/Funciones_globales/parseInt /es/docs/Web/JavaScript/Reference/Global_Objects/parseInt +/es/docs/JavaScript/Referencia/Objetos_globales /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/JavaScript/Referencia/Objetos_globales/Array /es/docs/Web/JavaScript/Reference/Global_Objects/Array +/es/docs/JavaScript/Referencia/Objetos_globales/Array/forEach /es/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach +/es/docs/JavaScript/Referencia/Objetos_globales/Array/indexOf /es/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf +/es/docs/JavaScript/Referencia/Objetos_globales/Array/push /es/docs/Web/JavaScript/Reference/Global_Objects/Array/push +/es/docs/JavaScript/Referencia/Objetos_globales/Array/reduce /es/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce +/es/docs/JavaScript/Referencia/Objetos_globales/Array/reduceRight /es/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight +/es/docs/JavaScript/Referencia/Objetos_globales/Boolean /es/docs/Web/JavaScript/Reference/Global_Objects/Boolean +/es/docs/JavaScript/Referencia/Objetos_globales/Boolean/toSource /es/docs/Web/JavaScript/Reference/Global_Objects/Boolean/toSource +/es/docs/JavaScript/Referencia/Objetos_globales/Date /es/docs/Web/JavaScript/Reference/Global_Objects/Date +/es/docs/JavaScript/Referencia/Objetos_globales/Date/UTC /es/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC +/es/docs/JavaScript/Referencia/Objetos_globales/Date/now /es/docs/Web/JavaScript/Reference/Global_Objects/Date/now +/es/docs/JavaScript/Referencia/Objetos_globales/Date/parse /es/docs/Web/JavaScript/Reference/Global_Objects/Date/parse +/es/docs/JavaScript/Referencia/Objetos_globales/Error /es/docs/Web/JavaScript/Reference/Global_Objects/Error +/es/docs/JavaScript/Referencia/Objetos_globales/Function /es/docs/Web/JavaScript/Reference/Global_Objects/Function +/es/docs/JavaScript/Referencia/Objetos_globales/Function/apply /es/docs/Web/JavaScript/Reference/Global_Objects/Function/apply +/es/docs/JavaScript/Referencia/Objetos_globales/Function/arguments /es/docs/Web/JavaScript/Reference/Global_Objects/Function/arguments +/es/docs/JavaScript/Referencia/Objetos_globales/Function/call /es/docs/Web/JavaScript/Reference/Global_Objects/Function/call +/es/docs/JavaScript/Referencia/Objetos_globales/Function/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Function +/es/docs/JavaScript/Referencia/Objetos_globales/JSON /es/docs/Web/JavaScript/Reference/Global_Objects/JSON +/es/docs/JavaScript/Referencia/Objetos_globales/JSON/stringify /es/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify +/es/docs/JavaScript/Referencia/Objetos_globales/Math /es/docs/Web/JavaScript/Reference/Global_Objects/Math +/es/docs/JavaScript/Referencia/Objetos_globales/Math/E /es/docs/Web/JavaScript/Reference/Global_Objects/Math/E +/es/docs/JavaScript/Referencia/Objetos_globales/Math/LN10 /es/docs/Web/JavaScript/Reference/Global_Objects/Math/LN10 +/es/docs/JavaScript/Referencia/Objetos_globales/Math/LN2 /es/docs/Web/JavaScript/Reference/Global_Objects/Math/LN2 +/es/docs/JavaScript/Referencia/Objetos_globales/Math/LOG2E /es/docs/Web/JavaScript/Reference/Global_Objects/Math/LOG2E +/es/docs/JavaScript/Referencia/Objetos_globales/Math/floor /es/docs/Web/JavaScript/Reference/Global_Objects/Math/floor +/es/docs/JavaScript/Referencia/Objetos_globales/Number /es/docs/Web/JavaScript/Reference/Global_Objects/Number +/es/docs/JavaScript/Referencia/Objetos_globales/Number/NEGATIVE_INFINITY /es/docs/Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY +/es/docs/JavaScript/Referencia/Objetos_globales/Number/POSITIVE_INFINITY /es/docs/Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY +/es/docs/JavaScript/Referencia/Objetos_globales/Number/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Number +/es/docs/JavaScript/Referencia/Objetos_globales/Number/toString /es/docs/Web/JavaScript/Reference/Global_Objects/Number/toString +/es/docs/JavaScript/Referencia/Objetos_globales/Object /es/docs/Web/JavaScript/Reference/Global_Objects/Object +/es/docs/JavaScript/Referencia/Objetos_globales/Object/constructor /es/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor +/es/docs/JavaScript/Referencia/Objetos_globales/Object/create /es/docs/Web/JavaScript/Reference/Global_Objects/Object/create +/es/docs/JavaScript/Referencia/Objetos_globales/Object/defineProperties /es/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties +/es/docs/JavaScript/Referencia/Objetos_globales/Object/hasOwnProperty /es/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty +/es/docs/JavaScript/Referencia/Objetos_globales/Object/toString /es/docs/Web/JavaScript/Reference/Global_Objects/Object/toString /es/docs/JavaScript/Referencia/Objetos_globales/Object/unwatch /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/unwatch /es/docs/JavaScript/Referencia/Objetos_globales/Object/watch /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/watch -/es/docs/JavaScript/Referencia/Objetos_globales/RegExp /es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp -/es/docs/JavaScript/Referencia/Objetos_globales/String /es/docs/Web/JavaScript/Referencia/Objetos_globales/String -/es/docs/JavaScript/Referencia/Objetos_globales/String/anchor /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/anchor -/es/docs/JavaScript/Referencia/Objetos_globales/String/big /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/big -/es/docs/JavaScript/Referencia/Objetos_globales/String/blink /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/blink -/es/docs/JavaScript/Referencia/Objetos_globales/String/bold /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/bold -/es/docs/JavaScript/Referencia/Objetos_globales/String/charAt /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/charAt -/es/docs/JavaScript/Referencia/Objetos_globales/String/charCodeAt /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/charCodeAt -/es/docs/JavaScript/Referencia/Objetos_globales/String/concat /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/concat -/es/docs/JavaScript/Referencia/Objetos_globales/String/constructor /es/docs/Web/JavaScript/Referencia/Objetos_globales/String -/es/docs/JavaScript/Referencia/Objetos_globales/String/fixed /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/fixed -/es/docs/JavaScript/Referencia/Objetos_globales/String/fromCharCode /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/fromCharCode -/es/docs/JavaScript/Referencia/Objetos_globales/String/indexOf /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/indexOf -/es/docs/JavaScript/Referencia/Objetos_globales/String/italics /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/italics -/es/docs/JavaScript/Referencia/Objetos_globales/String/lastIndexOf /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/lastIndexOf -/es/docs/JavaScript/Referencia/Objetos_globales/String/length /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/length -/es/docs/JavaScript/Referencia/Objetos_globales/String/link /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/link -/es/docs/JavaScript/Referencia/Objetos_globales/String/match /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/match -/es/docs/JavaScript/Referencia/Objetos_globales/String/prototype /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/prototype -/es/docs/JavaScript/Referencia/Objetos_globales/String/replace /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/replace -/es/docs/JavaScript/Referencia/Objetos_globales/String/search /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/search -/es/docs/JavaScript/Referencia/Objetos_globales/String/slice /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/slice -/es/docs/JavaScript/Referencia/Objetos_globales/String/small /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/small -/es/docs/JavaScript/Referencia/Objetos_globales/String/split /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/split -/es/docs/JavaScript/Referencia/Objetos_globales/String/strike /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/strike -/es/docs/JavaScript/Referencia/Objetos_globales/String/sub /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/sub -/es/docs/JavaScript/Referencia/Objetos_globales/String/substr /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/substr -/es/docs/JavaScript/Referencia/Objetos_globales/String/substring /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/substring -/es/docs/JavaScript/Referencia/Objetos_globales/String/sup /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/sup -/es/docs/JavaScript/Referencia/Objetos_globales/String/toLowerCase /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/toLowerCase -/es/docs/JavaScript/Referencia/Objetos_globales/String/toString /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/toString -/es/docs/JavaScript/Referencia/Objetos_globales/String/toUpperCase /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/toUpperCase -/es/docs/JavaScript/Referencia/Objetos_globales/String/valueOf /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/valueOf -/es/docs/JavaScript/Referencia/Objetos_globales/eval /es/docs/Web/JavaScript/Referencia/Objetos_globales/eval -/es/docs/JavaScript/Referencia/Objetos_globales/parseFloat /es/docs/Web/JavaScript/Referencia/Objetos_globales/parseFloat -/es/docs/JavaScript/Referencia/Objetos_globlales /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/JavaScript/Referencia/Objetos_globlales/Function/arguments /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/arguments -/es/docs/JavaScript/Referencia/Operadores /es/docs/Web/JavaScript/Referencia/Operadores -/es/docs/JavaScript/Referencia/Operadores/Aritméticos /es/docs/Web/JavaScript/Referencia/Operadores/Aritméticos -/es/docs/JavaScript/Referencia/Operadores/Especiales /es/docs/Web/JavaScript/Referencia/Operadores -/es/docs/JavaScript/Referencia/Operadores/Especiales/function /es/docs/Web/JavaScript/Referencia/Operadores/function -/es/docs/JavaScript/Referencia/Operadores/Especiales/instanceof /es/docs/Web/JavaScript/Referencia/Operadores/instanceof -/es/docs/JavaScript/Referencia/Operadores/Especiales/typeof /es/docs/Web/JavaScript/Referencia/Operadores/typeof -/es/docs/JavaScript/Referencia/Operadores/Especiales/void /es/docs/Web/JavaScript/Referencia/Operadores/void -/es/docs/JavaScript/Referencia/Operadores/Miembros /es/docs/Web/JavaScript/Referencia/Operadores/Miembros -/es/docs/JavaScript/Referencia/Operadores/Operadores_especiales /es/docs/Web/JavaScript/Referencia/Operadores -/es/docs/JavaScript/Referencia/Operadores/Operadores_especiales/Operador_this /es/docs/Web/JavaScript/Referencia/Operadores/this -/es/docs/JavaScript/Referencia/Operadores/Operator_Precedence /es/docs/Web/JavaScript/Referencia/Operadores/Operator_Precedence -/es/docs/JavaScript/Referencia/Operadores/String /es/docs/Web/JavaScript/Referencia/Operadores/Aritméticos -/es/docs/JavaScript/Referencia/Operadores/function /es/docs/Web/JavaScript/Referencia/Operadores/function -/es/docs/JavaScript/Referencia/Operadores/get /es/docs/Web/JavaScript/Referencia/Funciones/get -/es/docs/JavaScript/Referencia/Operadores/in /es/docs/Web/JavaScript/Referencia/Operadores/in -/es/docs/JavaScript/Referencia/Operadores/instanceof /es/docs/Web/JavaScript/Referencia/Operadores/instanceof -/es/docs/JavaScript/Referencia/Operadores/new /es/docs/Web/JavaScript/Referencia/Operadores/new -/es/docs/JavaScript/Referencia/Operadores/this /es/docs/Web/JavaScript/Referencia/Operadores/this -/es/docs/JavaScript/Referencia/Operadores/typeof /es/docs/Web/JavaScript/Referencia/Operadores/typeof -/es/docs/JavaScript/Referencia/Operadores/void /es/docs/Web/JavaScript/Referencia/Operadores/void -/es/docs/JavaScript/Referencia/Operadores/void_ /es/docs/Web/JavaScript/Referencia/Operadores/void -/es/docs/JavaScript/Referencia/Palabras_Reservadas /es/docs/Web/JavaScript/Referencia/Palabras_Reservadas -/es/docs/JavaScript/Referencia/Propiedades_globales /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/JavaScript/Referencia/Propiedades_globales/Infinity /es/docs/Web/JavaScript/Referencia/Objetos_globales/Infinity -/es/docs/JavaScript/Referencia/Propiedades_globales/NaN /es/docs/Web/JavaScript/Referencia/Objetos_globales/NaN -/es/docs/JavaScript/Referencia/Propiedades_globales/undefined /es/docs/Web/JavaScript/Referencia/Objetos_globales/undefined -/es/docs/JavaScript/Referencia/Sentencias /es/docs/Web/JavaScript/Referencia/Sentencias -/es/docs/JavaScript/Referencia/Sentencias/block /es/docs/Web/JavaScript/Referencia/Sentencias/block -/es/docs/JavaScript/Referencia/Sentencias/break /es/docs/Web/JavaScript/Referencia/Sentencias/break -/es/docs/JavaScript/Referencia/Sentencias/const /es/docs/Web/JavaScript/Referencia/Sentencias/const -/es/docs/JavaScript/Referencia/Sentencias/continue /es/docs/Web/JavaScript/Referencia/Sentencias/continue -/es/docs/JavaScript/Referencia/Sentencias/do...while /es/docs/Web/JavaScript/Referencia/Sentencias/do...while -/es/docs/JavaScript/Referencia/Sentencias/export /es/docs/Web/JavaScript/Referencia/Sentencias/export -/es/docs/JavaScript/Referencia/Sentencias/for /es/docs/Web/JavaScript/Referencia/Sentencias/for -/es/docs/JavaScript/Referencia/Sentencias/for...in /es/docs/Web/JavaScript/Referencia/Sentencias/for...in +/es/docs/JavaScript/Referencia/Objetos_globales/RegExp /es/docs/Web/JavaScript/Reference/Global_Objects/RegExp +/es/docs/JavaScript/Referencia/Objetos_globales/String /es/docs/Web/JavaScript/Reference/Global_Objects/String +/es/docs/JavaScript/Referencia/Objetos_globales/String/anchor /es/docs/Web/JavaScript/Reference/Global_Objects/String/anchor +/es/docs/JavaScript/Referencia/Objetos_globales/String/big /es/docs/Web/JavaScript/Reference/Global_Objects/String/big +/es/docs/JavaScript/Referencia/Objetos_globales/String/blink /es/docs/Web/JavaScript/Reference/Global_Objects/String/blink +/es/docs/JavaScript/Referencia/Objetos_globales/String/bold /es/docs/Web/JavaScript/Reference/Global_Objects/String/bold +/es/docs/JavaScript/Referencia/Objetos_globales/String/charAt /es/docs/Web/JavaScript/Reference/Global_Objects/String/charAt +/es/docs/JavaScript/Referencia/Objetos_globales/String/charCodeAt /es/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt +/es/docs/JavaScript/Referencia/Objetos_globales/String/concat /es/docs/Web/JavaScript/Reference/Global_Objects/String/concat +/es/docs/JavaScript/Referencia/Objetos_globales/String/constructor /es/docs/Web/JavaScript/Reference/Global_Objects/String +/es/docs/JavaScript/Referencia/Objetos_globales/String/fixed /es/docs/Web/JavaScript/Reference/Global_Objects/String/fixed +/es/docs/JavaScript/Referencia/Objetos_globales/String/fromCharCode /es/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode +/es/docs/JavaScript/Referencia/Objetos_globales/String/indexOf /es/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf +/es/docs/JavaScript/Referencia/Objetos_globales/String/italics /es/docs/Web/JavaScript/Reference/Global_Objects/String/italics +/es/docs/JavaScript/Referencia/Objetos_globales/String/lastIndexOf /es/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf +/es/docs/JavaScript/Referencia/Objetos_globales/String/length /es/docs/Web/JavaScript/Reference/Global_Objects/String/length +/es/docs/JavaScript/Referencia/Objetos_globales/String/link /es/docs/Web/JavaScript/Reference/Global_Objects/String/link +/es/docs/JavaScript/Referencia/Objetos_globales/String/match /es/docs/Web/JavaScript/Reference/Global_Objects/String/match +/es/docs/JavaScript/Referencia/Objetos_globales/String/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/String +/es/docs/JavaScript/Referencia/Objetos_globales/String/replace /es/docs/Web/JavaScript/Reference/Global_Objects/String/replace +/es/docs/JavaScript/Referencia/Objetos_globales/String/search /es/docs/Web/JavaScript/Reference/Global_Objects/String/search +/es/docs/JavaScript/Referencia/Objetos_globales/String/slice /es/docs/Web/JavaScript/Reference/Global_Objects/String/slice +/es/docs/JavaScript/Referencia/Objetos_globales/String/small /es/docs/Web/JavaScript/Reference/Global_Objects/String/small +/es/docs/JavaScript/Referencia/Objetos_globales/String/split /es/docs/Web/JavaScript/Reference/Global_Objects/String/split +/es/docs/JavaScript/Referencia/Objetos_globales/String/strike /es/docs/Web/JavaScript/Reference/Global_Objects/String/strike +/es/docs/JavaScript/Referencia/Objetos_globales/String/sub /es/docs/Web/JavaScript/Reference/Global_Objects/String/sub +/es/docs/JavaScript/Referencia/Objetos_globales/String/substr /es/docs/Web/JavaScript/Reference/Global_Objects/String/substr +/es/docs/JavaScript/Referencia/Objetos_globales/String/substring /es/docs/Web/JavaScript/Reference/Global_Objects/String/substring +/es/docs/JavaScript/Referencia/Objetos_globales/String/sup /es/docs/Web/JavaScript/Reference/Global_Objects/String/sup +/es/docs/JavaScript/Referencia/Objetos_globales/String/toLowerCase /es/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase +/es/docs/JavaScript/Referencia/Objetos_globales/String/toString /es/docs/Web/JavaScript/Reference/Global_Objects/String/toString +/es/docs/JavaScript/Referencia/Objetos_globales/String/toUpperCase /es/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase +/es/docs/JavaScript/Referencia/Objetos_globales/String/valueOf /es/docs/Web/JavaScript/Reference/Global_Objects/String/valueOf +/es/docs/JavaScript/Referencia/Objetos_globales/eval /es/docs/Web/JavaScript/Reference/Global_Objects/eval +/es/docs/JavaScript/Referencia/Objetos_globales/parseFloat /es/docs/Web/JavaScript/Reference/Global_Objects/parseFloat +/es/docs/JavaScript/Referencia/Objetos_globlales /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/JavaScript/Referencia/Objetos_globlales/Function/arguments /es/docs/Web/JavaScript/Reference/Global_Objects/Function/arguments +/es/docs/JavaScript/Referencia/Operadores /es/docs/Web/JavaScript/Reference/Operators +/es/docs/JavaScript/Referencia/Operadores/Aritméticos /es/docs/conflicting/Web/JavaScript/Reference/Operators +/es/docs/JavaScript/Referencia/Operadores/Especiales /es/docs/Web/JavaScript/Reference/Operators +/es/docs/JavaScript/Referencia/Operadores/Especiales/function /es/docs/Web/JavaScript/Reference/Operators/function +/es/docs/JavaScript/Referencia/Operadores/Especiales/instanceof /es/docs/Web/JavaScript/Reference/Operators/instanceof +/es/docs/JavaScript/Referencia/Operadores/Especiales/typeof /es/docs/Web/JavaScript/Reference/Operators/typeof +/es/docs/JavaScript/Referencia/Operadores/Especiales/void /es/docs/Web/JavaScript/Reference/Operators/void +/es/docs/JavaScript/Referencia/Operadores/Miembros /es/docs/Web/JavaScript/Reference/Operators/Property_Accessors +/es/docs/JavaScript/Referencia/Operadores/Operadores_especiales /es/docs/Web/JavaScript/Reference/Operators +/es/docs/JavaScript/Referencia/Operadores/Operadores_especiales/Operador_this /es/docs/Web/JavaScript/Reference/Operators/this +/es/docs/JavaScript/Referencia/Operadores/Operator_Precedence /es/docs/Web/JavaScript/Reference/Operators/Operator_Precedence +/es/docs/JavaScript/Referencia/Operadores/String /es/docs/conflicting/Web/JavaScript/Reference/Operators +/es/docs/JavaScript/Referencia/Operadores/function /es/docs/Web/JavaScript/Reference/Operators/function +/es/docs/JavaScript/Referencia/Operadores/get /es/docs/Web/JavaScript/Reference/Functions/get +/es/docs/JavaScript/Referencia/Operadores/in /es/docs/Web/JavaScript/Reference/Operators/in +/es/docs/JavaScript/Referencia/Operadores/instanceof /es/docs/Web/JavaScript/Reference/Operators/instanceof +/es/docs/JavaScript/Referencia/Operadores/new /es/docs/Web/JavaScript/Reference/Operators/new +/es/docs/JavaScript/Referencia/Operadores/this /es/docs/Web/JavaScript/Reference/Operators/this +/es/docs/JavaScript/Referencia/Operadores/typeof /es/docs/Web/JavaScript/Reference/Operators/typeof +/es/docs/JavaScript/Referencia/Operadores/void /es/docs/Web/JavaScript/Reference/Operators/void +/es/docs/JavaScript/Referencia/Operadores/void_ /es/docs/Web/JavaScript/Reference/Operators/void +/es/docs/JavaScript/Referencia/Palabras_Reservadas /es/docs/conflicting/Web/JavaScript/Reference/Lexical_grammar +/es/docs/JavaScript/Referencia/Propiedades_globales /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/JavaScript/Referencia/Propiedades_globales/Infinity /es/docs/Web/JavaScript/Reference/Global_Objects/Infinity +/es/docs/JavaScript/Referencia/Propiedades_globales/NaN /es/docs/Web/JavaScript/Reference/Global_Objects/NaN +/es/docs/JavaScript/Referencia/Propiedades_globales/undefined /es/docs/Web/JavaScript/Reference/Global_Objects/undefined +/es/docs/JavaScript/Referencia/Sentencias /es/docs/Web/JavaScript/Reference/Statements +/es/docs/JavaScript/Referencia/Sentencias/block /es/docs/Web/JavaScript/Reference/Statements/block +/es/docs/JavaScript/Referencia/Sentencias/break /es/docs/Web/JavaScript/Reference/Statements/break +/es/docs/JavaScript/Referencia/Sentencias/const /es/docs/Web/JavaScript/Reference/Statements/const +/es/docs/JavaScript/Referencia/Sentencias/continue /es/docs/Web/JavaScript/Reference/Statements/continue +/es/docs/JavaScript/Referencia/Sentencias/do...while /es/docs/Web/JavaScript/Reference/Statements/do...while +/es/docs/JavaScript/Referencia/Sentencias/export /es/docs/Web/JavaScript/Reference/Statements/export +/es/docs/JavaScript/Referencia/Sentencias/for /es/docs/Web/JavaScript/Reference/Statements/for +/es/docs/JavaScript/Referencia/Sentencias/for...in /es/docs/Web/JavaScript/Reference/Statements/for...in /es/docs/JavaScript/Referencia/Sentencias/for_each...in /es/docs/Web/JavaScript/Referencia/Sentencias/for_each...in -/es/docs/JavaScript/Referencia/Sentencias/function /es/docs/Web/JavaScript/Referencia/Sentencias/function -/es/docs/JavaScript/Referencia/Sentencias/if...else /es/docs/Web/JavaScript/Referencia/Sentencias/if...else -/es/docs/JavaScript/Referencia/Sentencias/label /es/docs/Web/JavaScript/Referencia/Sentencias/label -/es/docs/JavaScript/Referencia/Sentencias/return /es/docs/Web/JavaScript/Referencia/Sentencias/return -/es/docs/JavaScript/Referencia/Sentencias/throw /es/docs/Web/JavaScript/Referencia/Sentencias/throw -/es/docs/JavaScript/Referencia/Sentencias/try...catch /es/docs/Web/JavaScript/Referencia/Sentencias/try...catch -/es/docs/JavaScript/Referencia/Sentencias/var /es/docs/Web/JavaScript/Referencia/Sentencias/var -/es/docs/JavaScript/Referencia/Sentencias/while /es/docs/Web/JavaScript/Referencia/Sentencias/while -/es/docs/JavaScript/Una_nueva_introducción_a_JavaScript /es/docs/Web/JavaScript/Una_re-introducción_a_JavaScript +/es/docs/JavaScript/Referencia/Sentencias/function /es/docs/Web/JavaScript/Reference/Statements/function +/es/docs/JavaScript/Referencia/Sentencias/if...else /es/docs/Web/JavaScript/Reference/Statements/if...else +/es/docs/JavaScript/Referencia/Sentencias/label /es/docs/Web/JavaScript/Reference/Statements/label +/es/docs/JavaScript/Referencia/Sentencias/return /es/docs/Web/JavaScript/Reference/Statements/return +/es/docs/JavaScript/Referencia/Sentencias/throw /es/docs/Web/JavaScript/Reference/Statements/throw +/es/docs/JavaScript/Referencia/Sentencias/try...catch /es/docs/Web/JavaScript/Reference/Statements/try...catch +/es/docs/JavaScript/Referencia/Sentencias/var /es/docs/Web/JavaScript/Reference/Statements/var +/es/docs/JavaScript/Referencia/Sentencias/while /es/docs/Web/JavaScript/Reference/Statements/while +/es/docs/JavaScript/Una_nueva_introducción_a_JavaScript /es/docs/Web/JavaScript/A_re-introduction_to_JavaScript +/es/docs/Learn/Accessibility/Qué_es_la_accesibilidad /es/docs/Learn/Accessibility/What_is_accessibility +/es/docs/Learn/Aprender_y_obtener_ayuda /es/docs/Learn/Learning_and_getting_help +/es/docs/Learn/CSS/Building_blocks/Cascada_y_herencia /es/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance +/es/docs/Learn/CSS/Building_blocks/Contenido_desbordado /es/docs/Learn/CSS/Building_blocks/Overflowing_content +/es/docs/Learn/CSS/Building_blocks/Depurar_el_CSS /es/docs/Learn/CSS/Building_blocks/Debugging_CSS +/es/docs/Learn/CSS/Building_blocks/Dimensionar_elementos_en_CSS /es/docs/Learn/CSS/Building_blocks/Sizing_items_in_CSS +/es/docs/Learn/CSS/Building_blocks/El_modelo_de_caja /es/docs/Learn/CSS/Building_blocks/The_box_model +/es/docs/Learn/CSS/Building_blocks/Fondos_y_bordes /es/docs/Learn/CSS/Building_blocks/Backgrounds_and_borders +/es/docs/Learn/CSS/Building_blocks/Imágenes_medios_y_elementos_de_formulario /es/docs/Learn/CSS/Building_blocks/Images_media_form_elements +/es/docs/Learn/CSS/Building_blocks/Manejando_diferentes_direcciones_de_texto /es/docs/Learn/CSS/Building_blocks/Handling_different_text_directions +/es/docs/Learn/CSS/Building_blocks/Selectores_CSS /es/docs/Learn/CSS/Building_blocks/Selectors +/es/docs/Learn/CSS/Building_blocks/Selectores_CSS/Combinadores /es/docs/Learn/CSS/Building_blocks/Selectors/Combinators +/es/docs/Learn/CSS/Building_blocks/Selectores_CSS/Pseudo-clases_y_pseudo-elementos /es/docs/Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements +/es/docs/Learn/CSS/Building_blocks/Selectores_CSS/Selectores_de_atributos /es/docs/Learn/CSS/Building_blocks/Selectors/Attribute_selectors +/es/docs/Learn/CSS/Building_blocks/Selectores_CSS/Selectores_de_tipo_clase_e_ID /es/docs/Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors +/es/docs/Learn/CSS/Building_blocks/Valores_y_unidades_CSS /es/docs/Learn/CSS/Building_blocks/Values_and_units +/es/docs/Learn/CSS/CSS_layout/Diseño_receptivo /es/docs/Learn/CSS/CSS_layout/Responsive_Design +/es/docs/Learn/CSS/CSS_layout/Flujo_normal /es/docs/Learn/CSS/CSS_layout/Normal_Flow +/es/docs/Learn/CSS/CSS_layout/Introducción /es/docs/Learn/CSS/CSS_layout/Introduction +/es/docs/Learn/CSS/CSS_layout/Soporte_a_navegadores_antiguos /es/docs/Learn/CSS/CSS_layout/Supporting_Older_Browsers +/es/docs/Learn/CSS/First_steps/Comenzando_CSS /es/docs/Learn/CSS/First_steps/Getting_started +/es/docs/Learn/CSS/First_steps/Como_funciona_CSS /es/docs/Learn/CSS/First_steps/How_CSS_works +/es/docs/Learn/CSS/First_steps/Como_se_estructura_CSS /es/docs/Learn/CSS/First_steps/How_CSS_is_structured +/es/docs/Learn/CSS/First_steps/Qué_es_CSS /es/docs/Learn/CSS/First_steps/What_is_CSS +/es/docs/Learn/CSS/First_steps/Usa_tu_nuevo_conocimiento /es/docs/Learn/CSS/First_steps/Using_your_new_knowledge /es/docs/Learn/CSS/Introduction_to_CSS /en-US/docs/Learn/CSS/First_steps /es/docs/Learn/CSS/Introduction_to_CSS/Cascada_y_herencia /en-US/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance /es/docs/Learn/CSS/Introduction_to_CSS/Combinaciones_y_selectores_multiples /en-US/docs/Learn/CSS/Building_blocks/Selectors/Combinators /es/docs/Learn/CSS/Introduction_to_CSS/Como_funciona_CSS /en-US/docs/Learn/CSS/First_steps/How_CSS_works /es/docs/Learn/CSS/Introduction_to_CSS/Depuración_CSS /en-US/docs/Learn/CSS/Building_blocks/Debugging_CSS +/es/docs/Learn/CSS/Introduction_to_CSS/Fundamental_CSS_comprehension /es/docs/Learn/CSS/Building_blocks/Fundamental_CSS_comprehension /es/docs/Learn/CSS/Introduction_to_CSS/Modelo_cajas /en-US/docs/Learn/CSS/Building_blocks/The_box_model /es/docs/Learn/CSS/Introduction_to_CSS/Pseudo-clases_y_pseudo-elementos /en-US/docs/Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements /es/docs/Learn/CSS/Introduction_to_CSS/Selectores /en-US/docs/Learn/CSS/Building_blocks/Selectors @@ -1097,317 +1281,493 @@ /es/docs/Learn/CSS/Introduction_to_CSS/Valores_y_unidades /en-US/docs/Learn/CSS/Building_blocks/Values_and_units /es/docs/Learn/CSS/Styling_boxes /en-US/docs/Learn/CSS/Building_blocks /es/docs/Learn/CSS/Styling_boxes/estilizando_tablas /es/docs/Learn/CSS/Building_blocks/Styling_tables -/es/docs/Learn/HTML/Forms/My_first_HTML_form /es/docs/Learn/HTML/Forms/Your_first_HTML_form +/es/docs/Learn/CSS/Styling_text/Fuentes_web /es/docs/Learn/CSS/Styling_text/Web_fonts +/es/docs/Learn/CSS/Sábercomo /es/docs/Learn/CSS/Howto +/es/docs/Learn/CSS/Sábercomo/Generated_content /es/docs/Learn/CSS/Howto/Generated_content +/es/docs/Learn/Common_questions/Cuanto_cuesta /es/docs/Learn/Common_questions/How_much_does_it_cost +/es/docs/Learn/Common_questions/Que_es_un_servidor_WEB /es/docs/Learn/Common_questions/What_is_a_web_server +/es/docs/Learn/Common_questions/Que_software_necesito /es/docs/Learn/Common_questions/What_software_do_I_need +/es/docs/Learn/Common_questions/Qué_es_una_URL /es/docs/Learn/Common_questions/What_is_a_URL +/es/docs/Learn/Common_questions/diseños_web_comunes /es/docs/Learn/Common_questions/Common_web_layouts +/es/docs/Learn/Como_Contribuir /es/docs/orphaned/Learn/How_to_contribute +/es/docs/Learn/Desarrollo_web_Front-end /es/docs/Learn/Front-end_web_developer +/es/docs/Learn/Getting_started_with_the_web/Cómo_funciona_la_Web /es/docs/Learn/Getting_started_with_the_web/How_the_Web_works +/es/docs/Learn/Getting_started_with_the_web/Instalacion_de_software_basico /es/docs/Learn/Getting_started_with_the_web/Installing_basic_software +/es/docs/Learn/Getting_started_with_the_web/La_web_y_los_estandares_web /es/docs/Learn/Getting_started_with_the_web/The_web_and_web_standards +/es/docs/Learn/Getting_started_with_the_web/Manejando_los_archivos /es/docs/Learn/Getting_started_with_the_web/Dealing_with_files +/es/docs/Learn/HTML/Forms /es/docs/conflicting/Learn/Forms +/es/docs/Learn/HTML/Forms/How_to_structure_an_HTML_form /es/docs/Learn/Forms/How_to_structure_a_web_form +/es/docs/Learn/HTML/Forms/My_first_HTML_form /es/docs/Learn/Forms/Your_first_form +/es/docs/Learn/HTML/Forms/Property_compatibility_table_for_form_controls /es/docs/Learn/Forms/Property_compatibility_table_for_form_controls +/es/docs/Learn/HTML/Forms/Prueba_tus_habilidades:_Otros_controles /es/docs/Learn/Forms/Test_your_skills:_Other_controls +/es/docs/Learn/HTML/Forms/Prueba_tus_habilidades:_controles_HTML5 /es/docs/Learn/Forms/Test_your_skills:_HTML5_controls +/es/docs/Learn/HTML/Forms/Sending_and_retrieving_form_data /es/docs/Learn/Forms/Sending_and_retrieving_form_data +/es/docs/Learn/HTML/Forms/Styling_HTML_forms /es/docs/Learn/Forms/Styling_web_forms +/es/docs/Learn/HTML/Forms/The_native_form_widgets /es/docs/Learn/Forms/Basic_native_form_controls +/es/docs/Learn/HTML/Forms/Tipos_input_HTML5 /es/docs/Learn/Forms/HTML5_input_types +/es/docs/Learn/HTML/Forms/Validacion_formulario_datos /es/docs/Learn/Forms/Form_validation +/es/docs/Learn/HTML/Forms/Your_first_HTML_form /es/docs/Learn/Forms/Your_first_form +/es/docs/Learn/HTML/Forms/como_crear_widgets_de_formularios_personalizados /es/docs/Learn/Forms/How_to_build_custom_form_controls +/es/docs/Learn/HTML/Introduccion_a_HTML /es/docs/Learn/HTML/Introduction_to_HTML +/es/docs/Learn/HTML/Introduccion_a_HTML/Advanced_text_formatting /es/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting +/es/docs/Learn/HTML/Introduccion_a_HTML/Creating_hyperlinks /es/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks +/es/docs/Learn/HTML/Introduccion_a_HTML/Debugging_HTML /es/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML +/es/docs/Learn/HTML/Introduccion_a_HTML/Estructuración_de_una_página_de_contenido /es/docs/Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content +/es/docs/Learn/HTML/Introduccion_a_HTML/Marking_up_a_letter /es/docs/Learn/HTML/Introduction_to_HTML/Marking_up_a_letter +/es/docs/Learn/HTML/Introduccion_a_HTML/Metados_en /es/docs/Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML +/es/docs/Learn/HTML/Introduccion_a_HTML/Prueba_tus_habilidades:_Enlaces /es/docs/Learn/HTML/Introduction_to_HTML/Test_your_skills:_Links +/es/docs/Learn/HTML/Introduccion_a_HTML/Prueba_tus_habilidades:_Texto_básico_HTML /es/docs/Learn/HTML/Introduction_to_HTML/Test_your_skills:_HTML_text_basics +/es/docs/Learn/HTML/Introduccion_a_HTML/Test_your_skills:_Advanced_HTML_text /es/docs/Learn/HTML/Introduction_to_HTML/Test_your_skills:_Advanced_HTML_text +/es/docs/Learn/HTML/Introduccion_a_HTML/estructura /es/docs/Learn/HTML/Introduction_to_HTML/Document_and_website_structure +/es/docs/Learn/HTML/Introduccion_a_HTML/iniciar /es/docs/Learn/HTML/Introduction_to_HTML/Getting_started +/es/docs/Learn/HTML/Introduccion_a_HTML/texto /es/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals +/es/docs/Learn/HTML/Tablas /es/docs/Learn/HTML/Tables +/es/docs/Learn/HTML/Tablas/Conceptos_básicos_de_las_tablas_HTML /es/docs/Learn/HTML/Tables/Basics +/es/docs/Learn/HTML/Tablas/Funciones_avanzadas_de_las_tablas_HTML_y_accesibilidad /es/docs/Learn/HTML/Tables/Advanced +/es/docs/Learn/HTML/Tablas/Structuring_planet_data /es/docs/Learn/HTML/Tables/Structuring_planet_data +/es/docs/Learn/HTML/como /es/docs/Learn/HTML/Howto +/es/docs/Learn/HTML/como/Usando_atributos_de_datos /es/docs/Learn/HTML/Howto/Use_data_attributes +/es/docs/Learn/Herramientas_y_pruebas /es/docs/Learn/Tools_and_testing +/es/docs/Learn/Herramientas_y_pruebas/Cross_browser_testing /es/docs/Learn/Tools_and_testing/Cross_browser_testing +/es/docs/Learn/Herramientas_y_pruebas/GitHub /es/docs/Learn/Tools_and_testing/GitHub +/es/docs/Learn/Herramientas_y_pruebas/Lado-del-cliente_JavaScript_frameworks /es/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks +/es/docs/Learn/Herramientas_y_pruebas/Lado-del-cliente_JavaScript_frameworks/React_getting_started /es/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started +/es/docs/Learn/Herramientas_y_pruebas/Lado-del-cliente_JavaScript_frameworks/Vue_primeros_pasos /es/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_getting_started +/es/docs/Learn/Herramientas_y_pruebas/Understanding_client-side_tools /es/docs/Learn/Tools_and_testing/Understanding_client-side_tools +/es/docs/Learn/JavaScript/Building_blocks/Bucle_codigo /es/docs/Learn/JavaScript/Building_blocks/Looping_code +/es/docs/Learn/JavaScript/Building_blocks/Construyendo_tu_propia_funcion /es/docs/Learn/JavaScript/Building_blocks/Build_your_own_function +/es/docs/Learn/JavaScript/Building_blocks/Eventos /es/docs/Learn/JavaScript/Building_blocks/Events +/es/docs/Learn/JavaScript/Building_blocks/Galeria_de_imagenes /es/docs/Learn/JavaScript/Building_blocks/Image_gallery +/es/docs/Learn/JavaScript/Client-side_web_APIs/Introducción /es/docs/Learn/JavaScript/Client-side_web_APIs/Introduction +/es/docs/Learn/JavaScript/First_steps/Generador_de_historias_absurdas /es/docs/Learn/JavaScript/First_steps/Silly_story_generator +/es/docs/Learn/JavaScript/First_steps/Matemáticas /es/docs/Learn/JavaScript/First_steps/Math +/es/docs/Learn/JavaScript/First_steps/Prueba_tus_habilidades:_Strings /es/docs/Learn/JavaScript/First_steps/Test_your_skills:_Strings +/es/docs/Learn/JavaScript/First_steps/Qué_es_JavaScript /es/docs/Learn/JavaScript/First_steps/What_is_JavaScript +/es/docs/Learn/JavaScript/Objects/Ejercicio_práctico_de_construcción_de_objetos /es/docs/Learn/JavaScript/Objects/Object_building_practice +/es/docs/Learn/Server-side/Django/Introducción /es/docs/Learn/Server-side/Django/Introduction +/es/docs/Learn/Server-side/Primeros_pasos /es/docs/Learn/Server-side/First_steps +/es/docs/Learn/Server-side/Primeros_pasos/Introducción /es/docs/Learn/Server-side/First_steps/Introduction +/es/docs/Learn/Server-side/Primeros_pasos/Vision_General_Cliente_Servidor /es/docs/Learn/Server-side/First_steps/Client-Server_overview +/es/docs/Learn/Server-side/Primeros_pasos/Web_frameworks /es/docs/Learn/Server-side/First_steps/Web_frameworks +/es/docs/Learn/Server-side/Primeros_pasos/seguridad_sitios_web /es/docs/Learn/Server-side/First_steps/Website_security +/es/docs/Learn/Using_Github_pages /es/docs/Learn/Common_questions/Using_Github_pages +/es/docs/Learn/codificacion-scripting /es/docs/conflicting/Learn +/es/docs/Localización /es/docs/Glossary/Localization +/es/docs/Localizar_con_Narro /es/docs/orphaned/Localizar_con_Narro /es/docs/Lugares:Guía_para_migración_con_lugares /es/docs/Lugares/Guía_para_migración_con_lugares /es/docs/MDN/Comenzando /es/docs/MDN/Contribute/Getting_started +/es/docs/MDN/Comunidad /es/docs/orphaned/MDN/Community +/es/docs/MDN/Contribute/Community /es/docs/orphaned/MDN/Community/Working_in_community /es/docs/MDN/Contribute/Content /es/docs/MDN/Guidelines -/es/docs/MDN/Contribute/Content/Content_blocks /es/docs/MDN/Guidelines/Content_blocks +/es/docs/MDN/Contribute/Content/Content_blocks /es/docs/MDN/Guidelines/CSS_style_guide /es/docs/MDN/Contribute/Guidelines /es/docs/MDN/Guidelines -/es/docs/MDN/Contribute/Guidelines/Content_blocks /es/docs/MDN/Guidelines/Content_blocks -/es/docs/MDN/Contribute/Guidelines/Convenciones_y_definiciones /es/docs/MDN/Guidelines/Convenciones_y_definiciones -/es/docs/MDN/Contribute/Guidelines/Project:Guía_de_estilo /es/docs/MDN/Guidelines/Project:Guía_de_estilo +/es/docs/MDN/Contribute/Guidelines/Content_blocks /es/docs/MDN/Guidelines/CSS_style_guide +/es/docs/MDN/Contribute/Guidelines/Convenciones_y_definiciones /es/docs/MDN/Guidelines/Conventions_definitions +/es/docs/MDN/Contribute/Guidelines/Project:Guía_de_estilo /es/docs/MDN/Guidelines/Writing_style_guide /es/docs/MDN/Contribute/Herramientas /es/docs/MDN/Tools -/es/docs/MDN/Contribute/Herramientas/Page_regeneration /es/docs/MDN/Tools/Page_regeneration -/es/docs/MDN/Contribute/Herramientas/Template_editing /es/docs/MDN/Tools/Template_editing +/es/docs/MDN/Contribute/Herramientas/Page_regeneration /es/docs/orphaned/MDN/Tools/Page_regeneration +/es/docs/MDN/Contribute/Herramientas/Template_editing /es/docs/orphaned/MDN/Tools/Template_editing +/es/docs/MDN/Contribute/Howto/Crear_cuenta_MDN /es/docs/orphaned/MDN/Contribute/Howto/Create_an_MDN_account +/es/docs/MDN/Contribute/Howto/Document_a_CSS_property/Plantilla_propiedad /es/docs/orphaned/MDN/Contribute/Howto/Document_a_CSS_property/Property_template +/es/docs/MDN/Contribute/Howto/Etiquetas_paginas_javascript /es/docs/orphaned/MDN/Contribute/Howto/Tag_JavaScript_pages +/es/docs/MDN/Contribute/Howto/Remover_Macros_Experimentales /es/docs/orphaned/MDN/Contribute/Howto/Remove_Experimental_Macros +/es/docs/MDN/Contribute/Howto/Set_the_summary_for_a_page /es/docs/orphaned/MDN/Contribute/Howto/Set_the_summary_for_a_page +/es/docs/MDN/Contribute/Howto/Usar_barras_laterales_de_navegación /es/docs/orphaned/MDN/Contribute/Howto/Use_navigation_sidebars +/es/docs/MDN/Contribute/Howto/Write_an_article_to_help_learn_about_the_Web /es/docs/orphaned/MDN/Contribute/Howto/Write_an_article_to_help_learn_about_the_Web +/es/docs/MDN/Contribute/Howto/revision_editorial /es/docs/orphaned/MDN/Contribute/Howto/Do_an_editorial_review +/es/docs/MDN/Contribute/Howto/revision_tecnica /es/docs/orphaned/MDN/Contribute/Howto/Do_a_technical_review +/es/docs/MDN/Contribute/Procesos /es/docs/MDN/Contribute/Processes /es/docs/MDN/Contribute/Structures /es/docs/MDN/Structures -/es/docs/MDN/Contribute/Structures/Ejemplos_ejecutables /es/docs/MDN/Structures/Ejemplos_ejecutables +/es/docs/MDN/Contribute/Structures/Ejemplos_ejecutables /es/docs/MDN/Structures/Live_samples /es/docs/MDN/Contribute/Structures/Macros /es/docs/MDN/Structures/Macros /es/docs/MDN/Contribute/Structures/Macros/Commonly-used_macros /es/docs/MDN/Structures/Macros/Commonly-used_macros -/es/docs/MDN/Contribute/Structures/Macros/Otras /es/docs/MDN/Structures/Macros/Otras -/es/docs/MDN/Contribute/Structures/Tablas_de_compatibilidad /es/docs/MDN/Structures/Tablas_de_compatibilidad +/es/docs/MDN/Contribute/Structures/Macros/Otras /es/docs/MDN/Structures/Macros/Other +/es/docs/MDN/Contribute/Structures/Tablas_de_compatibilidad /es/docs/MDN/Structures/Compatibility_tables +/es/docs/MDN/Contribute/Tareas /es/docs/conflicting/MDN/Contribute/Getting_started /es/docs/MDN/Enviar_feedback_sobre_MDN /es/docs/MDN/Contribute/Feedback -/es/docs/MDN/Kuma/Introduction_to_KumaScript /es/docs/MDN/Tools/Introduction_to_KumaScript -/es/docs/Manipular_video_por_medio_de_canvas /es/docs/Web/HTML/anipular_video_por_medio_de_canvas +/es/docs/MDN/Guidelines/Content_blocks /es/docs/MDN/Guidelines/CSS_style_guide +/es/docs/MDN/Guidelines/Convenciones_y_definiciones /es/docs/MDN/Guidelines/Conventions_definitions +/es/docs/MDN/Guidelines/Project:Guía_de_estilo /es/docs/MDN/Guidelines/Writing_style_guide +/es/docs/MDN/Kuma /es/docs/MDN/Yari +/es/docs/MDN/Kuma/Contributing /es/docs/conflicting/MDN/Yari_13d770b50d5ab9ce747962b2552e0eef +/es/docs/MDN/Kuma/Contributing/Getting_started /es/docs/conflicting/MDN/Yari +/es/docs/MDN/Kuma/Introduction_to_KumaScript /es/docs/MDN/Tools/KumaScript +/es/docs/MDN/Structures/Ejemplos_ejecutables /es/docs/MDN/Structures/Live_samples +/es/docs/MDN/Structures/Macros/Otras /es/docs/MDN/Structures/Macros/Other +/es/docs/MDN/Structures/Tablas_de_compatibilidad /es/docs/MDN/Structures/Compatibility_tables +/es/docs/MDN/Tools/Introduction_to_KumaScript /es/docs/MDN/Tools/KumaScript +/es/docs/MDN/Tools/Page_regeneration /es/docs/orphaned/MDN/Tools/Page_regeneration +/es/docs/MDN/Tools/Template_editing /es/docs/orphaned/MDN/Tools/Template_editing +/es/docs/MDN/User_guide /es/docs/conflicting/MDN/Tools +/es/docs/MDN_en_diez /es/docs/MDN/At_ten +/es/docs/Manipular_video_por_medio_de_canvas /es/docs/Web/API/Canvas_API/Manipulating_video_using_canvas /es/docs/MathML /es/docs/Web/MathML -/es/docs/MathML/Elemento /es/docs/Web/MathML/Elemento +/es/docs/MathML/Elemento /es/docs/Web/MathML/Element +/es/docs/Mejoras_DOM_en_Firefox_3 /es/docs/Mozilla/Firefox/Releases/3/DOM_improvements +/es/docs/Mejoras_SVG_en_Firefox_3 /es/docs/Mozilla/Firefox/Releases/3/SVG_improvements +/es/docs/Mejoras_XUL_en_Firefox_3 /es/docs/Mozilla/Firefox/Releases/3/XUL_improvements_in_Firefox_3 +/es/docs/Migrar_aplicaciones_desde_Internet_Explorer_a_Mozilla /es/docs/orphaned/Migrar_aplicaciones_desde_Internet_Explorer_a_Mozilla +/es/docs/Modo_casi_estándar_de_Gecko /es/docs/orphaned/Modo_casi_estándar_de_Gecko /es/docs/Monitoring_downloads /es/docs/Vigilar_descargas +/es/docs/Mozilla/Add-ons/WebExtensions/Anatomia_de_una_WebExtension /es/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension +/es/docs/Mozilla/Add-ons/WebExtensions/Depuración /es/docs/orphaned/Mozilla/Add-ons/WebExtensions/Debugging +/es/docs/Mozilla/Add-ons/WebExtensions/Packaging_and_installation /es/docs/orphaned/Mozilla/Add-ons/WebExtensions/Temporary_Installation_in_Firefox +/es/docs/Mozilla/Add-ons/WebExtensions/Porting_from_Google_Chrome /es/docs/orphaned/Mozilla/Add-ons/WebExtensions/Porting_a_Google_Chrome_extension +/es/docs/Mozilla/Add-ons/WebExtensions/Prerequisitos /es/docs/Mozilla/Add-ons/WebExtensions/Prerequisites +/es/docs/Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension /es/docs/orphaned/Mozilla/Add-ons/WebExtensions/Package_your_extension_ +/es/docs/Mozilla/Add-ons/WebExtensions/Que_son_las_WebExtensions /es/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions +/es/docs/Mozilla/Add-ons/WebExtensions/Tu_primera_WebExtension /es/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension +/es/docs/Mozilla/Add-ons/WebExtensions/Tutorial /es/docs/Mozilla/Add-ons/WebExtensions/Your_second_WebExtension +/es/docs/Mozilla/Add-ons/WebExtensions/user_interface/Accion_navegador /es/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_action +/es/docs/Mozilla/Developer_guide/Preguntas_frecuentes_sobre_la_compilación_de_Mozilla /es/docs/Mozilla/Developer_guide/Mozilla_build_FAQ +/es/docs/Mozilla/Developer_guide/Source_Code/Código_fuente_de_Mozilla_(CVS) /es/docs/Mozilla/Developer_guide/Source_Code/CVS +/es/docs/Módulos_JavaScript /es/docs/orphaned/Módulos_JavaScript /es/docs/Novedades_en_JavaScript_1.6 /es/docs/Web/JavaScript/Novedades_en_JavaScript/1.6 /es/docs/Novedades_en_JavaScript_1.7 /es/docs/Web/JavaScript/Novedades_en_JavaScript/1.7 /es/docs/Novedades_en_JavaScript_1.8 /es/docs/Web/JavaScript/Novedades_en_JavaScript/1.8 /es/docs/Novedades_en_Javascript_1.5 /es/docs/Web/JavaScript/Novedades_en_JavaScript/1.5 -/es/docs/Participando_en_el_proyecto_Mozilla /es/docs/Participar_en_el_proyecto_Mozilla -/es/docs/Poniendo_al_día_extensiones_para_Firefox_3 /es/docs/Actualizar_extensiones_para_Firefox_3/Actualizar_extensiones_para_Firefox_3 +/es/docs/Participando_en_el_proyecto_Mozilla /es/docs/orphaned/Participar_en_el_proyecto_Mozilla +/es/docs/Participar_en_el_proyecto_Mozilla /es/docs/orphaned/Participar_en_el_proyecto_Mozilla +/es/docs/Plantillas_en_Firefox_3 /es/docs/Mozilla/Firefox/Releases/3/Templates +/es/docs/Poniendo_al_día_extensiones_para_Firefox_3 /es/docs/orphaned/Actualizar_extensiones_para_Firefox_3/Actualizar_extensiones_para_Firefox_3 /es/docs/Portada /es/docs/Web -/es/docs/Preguntas_frecuentes_sobre_CSS /es/docs/Web/CSS/Preguntas_frecuentes_sobre_CSS -/es/docs/Preguntas_frecuentes_sobre_incrustación_en_Mozilla:Introducción_a_Gecko_e_inscrustación /es/docs/Preguntas_frecuentes_sobre_incrustación_en_Mozilla/Introducción_a_Gecko_e_inscrustación -/es/docs/Preguntas_frecuentes_sobre_la_compilación_de_Mozilla /es/docs/Mozilla/Developer_guide/Preguntas_frecuentes_sobre_la_compilación_de_Mozilla +/es/docs/Preguntas_frecuentes_sobre_CSS /es/docs/Learn/CSS/Howto/CSS_FAQ +/es/docs/Preguntas_frecuentes_sobre_incrustación_en_Mozilla /es/docs/orphaned/Preguntas_frecuentes_sobre_incrustación_en_Mozilla +/es/docs/Preguntas_frecuentes_sobre_incrustación_en_Mozilla/Introducción_a_Gecko_e_inscrustación /es/docs/orphaned/Preguntas_frecuentes_sobre_incrustación_en_Mozilla/Introducción_a_Gecko_e_inscrustación +/es/docs/Preguntas_frecuentes_sobre_incrustación_en_Mozilla:Introducción_a_Gecko_e_inscrustación /es/docs/orphaned/Preguntas_frecuentes_sobre_incrustación_en_Mozilla/Introducción_a_Gecko_e_inscrustación +/es/docs/Preguntas_frecuentes_sobre_la_compilación_de_Mozilla /es/docs/Mozilla/Developer_guide/Mozilla_build_FAQ +/es/docs/Principios_básicos_de_los_servicios_Web /es/docs/orphaned/Principios_básicos_de_los_servicios_Web /es/docs/Quirks_Mode_and_Standards_Mode /es/docs/Web/HTML/Quirks_Mode_and_Standards_Mode -/es/docs/Recursos_offline_en_firefox /es/docs/Web/HTML/Recursos_offline_en_firefox -/es/docs/Referencia_CSS /es/docs/Web/CSS/Referencia_CSS +/es/docs/Recursos_en_modo_desconectado_en_Firefox /es/docs/orphaned/Recursos_en_modo_desconectado_en_Firefox +/es/docs/Recursos_offline_en_firefox /es/docs/Web/HTML/Using_the_application_cache +/es/docs/Referencia_CSS /es/docs/Web/CSS/Reference /es/docs/Referencia_CSS/Extensiones_CSS_Mozilla /es/docs/Web/CSS/Mozilla_Extensions /es/docs/Referencia_CSS/Extensiones_Mozilla /es/docs/Web/CSS/Mozilla_Extensions /es/docs/Referencia_CSS:Extensiones_Mozilla /es/docs/Web/CSS/Mozilla_Extensions -/es/docs/Referencia_DOM_de_Gecko:Ejemplos /es/docs/Referencia_DOM_de_Gecko/Ejemplos -/es/docs/Referencia_DOM_de_Gecko:Introducción /es/docs/Referencia_DOM_de_Gecko/Introducción -/es/docs/Referencia_DOM_de_Gecko:Prefacio /es/docs/Referencia_DOM_de_Gecko/Prefacio -/es/docs/Referencia_de_JavaScript_1.5 /es/docs/Web/JavaScript/Referencia -/es/docs/Referencia_de_JavaScript_1.5/Acerca_de /es/docs/Web/JavaScript/Referencia/Acerca_de -/es/docs/Referencia_de_JavaScript_1.5/Características_Desaprobadas /es/docs/Web/JavaScript/Referencia/Características_Desaprobadas -/es/docs/Referencia_de_JavaScript_1.5/Características_Despreciadas /es/docs/Web/JavaScript/Referencia/Características_Desaprobadas -/es/docs/Referencia_de_JavaScript_1.5/Funciones /es/docs/Web/JavaScript/Referencia/Funciones -/es/docs/Referencia_de_JavaScript_1.5/Funciones/String /es/docs/Web/JavaScript/Referencia/Objetos_globales/String -/es/docs/Referencia_de_JavaScript_1.5/Funciones/arguments /es/docs/Web/JavaScript/Referencia/Funciones/arguments -/es/docs/Referencia_de_JavaScript_1.5/Funciones/arguments/callee /es/docs/Web/JavaScript/Referencia/Funciones/arguments/callee -/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/Boolean /es/docs/Web/JavaScript/Referencia/Objetos_globales/Boolean -/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/Date /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date -/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/Object /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object -/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/String /es/docs/Web/JavaScript/Referencia/Objetos_globales/String -/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/decodeURI /es/docs/Web/JavaScript/Referencia/Objetos_globales/decodeURI -/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/decodeURIComponent /es/docs/Web/JavaScript/Referencia/Objetos_globales/decodeURIComponent -/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/encodeURI /es/docs/Web/JavaScript/Referencia/Objetos_globales/encodeURI -/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/encodeURIComponent /es/docs/Web/JavaScript/Referencia/Objetos_globales/encodeURIComponent -/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/eval /es/docs/Web/JavaScript/Referencia/Objetos_globales/eval -/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/isFinite /es/docs/Web/JavaScript/Referencia/Objetos_globales/isFinite -/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/isNaN /es/docs/Web/JavaScript/Referencia/Objetos_globales/isNaN -/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/parseFloat /es/docs/Web/JavaScript/Referencia/Objetos_globales/parseFloat -/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/parseInt /es/docs/Web/JavaScript/Referencia/Objetos_globales/parseInt -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Array /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Array/forEach /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/forEach -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Array/indexOf /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/indexOf -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Array/push /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/push -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Array/reduce /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/reduce -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Array/reduceRight /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/reduceRight -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Boolean /es/docs/Web/JavaScript/Referencia/Objetos_globales/Boolean -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Boolean/toSource /es/docs/Web/JavaScript/Referencia/Objetos_globales/Boolean/toSource -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Date /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Date/UTC /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/UTC -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Date/now /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/now -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Date/parse /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/parse -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Error /es/docs/Web/JavaScript/Referencia/Objetos_globales/Error -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Function /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Function/apply /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/apply -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Function/call /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/call -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Function/prototype /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/prototype -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/JSON /es/docs/Web/JavaScript/Referencia/Objetos_globales/JSON -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/JSON/stringify /es/docs/Web/JavaScript/Referencia/Objetos_globales/JSON/stringify -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Math /es/docs/Web/JavaScript/Referencia/Objetos_globales/Math -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Math/E /es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/E -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Math/LN10 /es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/LN10 -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Math/LN2 /es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/LN2 -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Math/LOG2E /es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/LOG2E -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Math/floor /es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/floor -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Number /es/docs/Web/JavaScript/Referencia/Objetos_globales/Number -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Number/NEGATIVE_INFINITY /es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/NEGATIVE_INFINITY -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Number/POSITIVE_INFINITY /es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/POSITIVE_INFINITY -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Number/prototype /es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/prototype -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Number/toString /es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/toString -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Object /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Object/constructor /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/constructor -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Object/create /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/create -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Object/defineProperties /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/defineProperties -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Object/hasOwnProperty /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/hasOwnProperty -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Object/toString /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/toString +/es/docs/Referencia_DOM_de_Gecko /es/docs/Web/API/Document_Object_Model +/es/docs/Referencia_DOM_de_Gecko/Cómo_espacioenblanco /es/docs/Web/API/Document_Object_Model/Whitespace +/es/docs/Referencia_DOM_de_Gecko/Ejemplos /es/docs/Web/API/Document_Object_Model/Examples +/es/docs/Referencia_DOM_de_Gecko/Eventos /es/docs/Web/API/Document_Object_Model/Events +/es/docs/Referencia_DOM_de_Gecko/Introducción /es/docs/Web/API/Document_Object_Model/Introduction +/es/docs/Referencia_DOM_de_Gecko/Localizando_elementos_DOM_usando_selectores /es/docs/Web/API/Document_object_model/Locating_DOM_elements_using_selectors +/es/docs/Referencia_DOM_de_Gecko/Prefacio /es/docs/conflicting/Web/API/Document_Object_Model_9f3a59543838705de7e9b080fde3cc14 +/es/docs/Referencia_DOM_de_Gecko:Ejemplos /es/docs/Web/API/Document_Object_Model/Examples +/es/docs/Referencia_DOM_de_Gecko:Introducción /es/docs/Web/API/Document_Object_Model/Introduction +/es/docs/Referencia_DOM_de_Gecko:Prefacio /es/docs/conflicting/Web/API/Document_Object_Model_9f3a59543838705de7e9b080fde3cc14 +/es/docs/Referencia_de_JavaScript_1.5 /es/docs/Web/JavaScript/Reference +/es/docs/Referencia_de_JavaScript_1.5/Acerca_de /es/docs/Web/JavaScript/Reference/About +/es/docs/Referencia_de_JavaScript_1.5/Características_Desaprobadas /es/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features +/es/docs/Referencia_de_JavaScript_1.5/Características_Despreciadas /es/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features +/es/docs/Referencia_de_JavaScript_1.5/Funciones /es/docs/Web/JavaScript/Reference/Functions +/es/docs/Referencia_de_JavaScript_1.5/Funciones/String /es/docs/Web/JavaScript/Reference/Global_Objects/String +/es/docs/Referencia_de_JavaScript_1.5/Funciones/arguments /es/docs/Web/JavaScript/Reference/Functions/arguments +/es/docs/Referencia_de_JavaScript_1.5/Funciones/arguments/callee /es/docs/Web/JavaScript/Reference/Functions/arguments/callee +/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/Boolean /es/docs/Web/JavaScript/Reference/Global_Objects/Boolean +/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/Date /es/docs/Web/JavaScript/Reference/Global_Objects/Date +/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/Object /es/docs/Web/JavaScript/Reference/Global_Objects/Object +/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/String /es/docs/Web/JavaScript/Reference/Global_Objects/String +/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/decodeURI /es/docs/Web/JavaScript/Reference/Global_Objects/decodeURI +/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/decodeURIComponent /es/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent +/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/encodeURI /es/docs/Web/JavaScript/Reference/Global_Objects/encodeURI +/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/encodeURIComponent /es/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent +/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/eval /es/docs/Web/JavaScript/Reference/Global_Objects/eval +/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/isFinite /es/docs/Web/JavaScript/Reference/Global_Objects/isFinite +/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/isNaN /es/docs/Web/JavaScript/Reference/Global_Objects/isNaN +/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/parseFloat /es/docs/Web/JavaScript/Reference/Global_Objects/parseFloat +/es/docs/Referencia_de_JavaScript_1.5/Funciones_globales/parseInt /es/docs/Web/JavaScript/Reference/Global_Objects/parseInt +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Array /es/docs/Web/JavaScript/Reference/Global_Objects/Array +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Array/forEach /es/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Array/indexOf /es/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Array/push /es/docs/Web/JavaScript/Reference/Global_Objects/Array/push +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Array/reduce /es/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Array/reduceRight /es/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Boolean /es/docs/Web/JavaScript/Reference/Global_Objects/Boolean +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Boolean/toSource /es/docs/Web/JavaScript/Reference/Global_Objects/Boolean/toSource +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Date /es/docs/Web/JavaScript/Reference/Global_Objects/Date +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Date/UTC /es/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Date/now /es/docs/Web/JavaScript/Reference/Global_Objects/Date/now +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Date/parse /es/docs/Web/JavaScript/Reference/Global_Objects/Date/parse +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Error /es/docs/Web/JavaScript/Reference/Global_Objects/Error +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Function /es/docs/Web/JavaScript/Reference/Global_Objects/Function +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Function/apply /es/docs/Web/JavaScript/Reference/Global_Objects/Function/apply +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Function/call /es/docs/Web/JavaScript/Reference/Global_Objects/Function/call +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Function/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Function +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/JSON /es/docs/Web/JavaScript/Reference/Global_Objects/JSON +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/JSON/stringify /es/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Math /es/docs/Web/JavaScript/Reference/Global_Objects/Math +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Math/E /es/docs/Web/JavaScript/Reference/Global_Objects/Math/E +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Math/LN10 /es/docs/Web/JavaScript/Reference/Global_Objects/Math/LN10 +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Math/LN2 /es/docs/Web/JavaScript/Reference/Global_Objects/Math/LN2 +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Math/LOG2E /es/docs/Web/JavaScript/Reference/Global_Objects/Math/LOG2E +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Math/floor /es/docs/Web/JavaScript/Reference/Global_Objects/Math/floor +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Number /es/docs/Web/JavaScript/Reference/Global_Objects/Number +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Number/NEGATIVE_INFINITY /es/docs/Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Number/POSITIVE_INFINITY /es/docs/Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Number/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Number +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Number/toString /es/docs/Web/JavaScript/Reference/Global_Objects/Number/toString +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Object /es/docs/Web/JavaScript/Reference/Global_Objects/Object +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Object/constructor /es/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Object/create /es/docs/Web/JavaScript/Reference/Global_Objects/Object/create +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Object/defineProperties /es/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Object/hasOwnProperty /es/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Object/toString /es/docs/Web/JavaScript/Reference/Global_Objects/Object/toString /es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Object/unwatch /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/unwatch /es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/Object/watch /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/watch -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/RegExp /es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String /es/docs/Web/JavaScript/Referencia/Objetos_globales/String -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/anchor /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/anchor -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/big /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/big -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/blink /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/blink -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/bold /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/bold -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/charAt /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/charAt -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/charCodeAt /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/charCodeAt -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/concat /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/concat -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/constructor /es/docs/Web/JavaScript/Referencia/Objetos_globales/String -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/fixed /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/fixed -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/fromCharCode /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/fromCharCode -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/indexOf /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/indexOf -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/italics /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/italics -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/lastIndexOf /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/lastIndexOf -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/length /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/length -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/link /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/link -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/match /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/match -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/prototype /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/prototype -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/replace /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/replace -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/search /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/search -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/slice /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/slice -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/small /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/small -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/split /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/split -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/strike /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/strike -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/sub /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/sub -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/substr /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/substr -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/substring /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/substring -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/sup /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/sup -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/toLowerCase /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/toLowerCase -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/toString /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/toString -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/toUpperCase /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/toUpperCase -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/valueOf /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/valueOf -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globlales /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/Referencia_de_JavaScript_1.5/Objetos_globlales/Function/arguments /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/arguments -/es/docs/Referencia_de_JavaScript_1.5/Operadores /es/docs/Web/JavaScript/Referencia/Operadores -/es/docs/Referencia_de_JavaScript_1.5/Operadores/Aritméticos /es/docs/Web/JavaScript/Referencia/Operadores/Aritméticos -/es/docs/Referencia_de_JavaScript_1.5/Operadores/Especiales /es/docs/Web/JavaScript/Referencia/Operadores -/es/docs/Referencia_de_JavaScript_1.5/Operadores/Especiales/function /es/docs/Web/JavaScript/Referencia/Operadores/function -/es/docs/Referencia_de_JavaScript_1.5/Operadores/Especiales/instanceof /es/docs/Web/JavaScript/Referencia/Operadores/instanceof -/es/docs/Referencia_de_JavaScript_1.5/Operadores/Especiales/typeof /es/docs/Web/JavaScript/Referencia/Operadores/typeof -/es/docs/Referencia_de_JavaScript_1.5/Operadores/Especiales/void /es/docs/Web/JavaScript/Referencia/Operadores/void -/es/docs/Referencia_de_JavaScript_1.5/Operadores/Miembros /es/docs/Web/JavaScript/Referencia/Operadores/Miembros -/es/docs/Referencia_de_JavaScript_1.5/Operadores/Operadores_especiales /es/docs/Web/JavaScript/Referencia/Operadores -/es/docs/Referencia_de_JavaScript_1.5/Operadores/Operadores_especiales/Operador_this /es/docs/Web/JavaScript/Referencia/Operadores/this -/es/docs/Referencia_de_JavaScript_1.5/Operadores/Operator_Precedence /es/docs/Web/JavaScript/Referencia/Operadores/Operator_Precedence -/es/docs/Referencia_de_JavaScript_1.5/Operadores/String /es/docs/Web/JavaScript/Referencia/Operadores/Aritméticos -/es/docs/Referencia_de_JavaScript_1.5/Operadores/function /es/docs/Web/JavaScript/Referencia/Operadores/function -/es/docs/Referencia_de_JavaScript_1.5/Operadores/get /es/docs/Web/JavaScript/Referencia/Funciones/get -/es/docs/Referencia_de_JavaScript_1.5/Operadores/in /es/docs/Web/JavaScript/Referencia/Operadores/in -/es/docs/Referencia_de_JavaScript_1.5/Operadores/new /es/docs/Web/JavaScript/Referencia/Operadores/new -/es/docs/Referencia_de_JavaScript_1.5/Operadores/this /es/docs/Web/JavaScript/Referencia/Operadores/this -/es/docs/Referencia_de_JavaScript_1.5/Palabras_Reservadas /es/docs/Web/JavaScript/Referencia/Palabras_Reservadas -/es/docs/Referencia_de_JavaScript_1.5/Propiedades_globales /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/Referencia_de_JavaScript_1.5/Propiedades_globales/Infinity /es/docs/Web/JavaScript/Referencia/Objetos_globales/Infinity -/es/docs/Referencia_de_JavaScript_1.5/Propiedades_globales/NaN /es/docs/Web/JavaScript/Referencia/Objetos_globales/NaN -/es/docs/Referencia_de_JavaScript_1.5/Propiedades_globales/undefined /es/docs/Web/JavaScript/Referencia/Objetos_globales/undefined -/es/docs/Referencia_de_JavaScript_1.5/Sentencias /es/docs/Web/JavaScript/Referencia/Sentencias -/es/docs/Referencia_de_JavaScript_1.5/Sentencias/block /es/docs/Web/JavaScript/Referencia/Sentencias/block -/es/docs/Referencia_de_JavaScript_1.5/Sentencias/break /es/docs/Web/JavaScript/Referencia/Sentencias/break -/es/docs/Referencia_de_JavaScript_1.5/Sentencias/const /es/docs/Web/JavaScript/Referencia/Sentencias/const -/es/docs/Referencia_de_JavaScript_1.5/Sentencias/continue /es/docs/Web/JavaScript/Referencia/Sentencias/continue -/es/docs/Referencia_de_JavaScript_1.5/Sentencias/do...while /es/docs/Web/JavaScript/Referencia/Sentencias/do...while -/es/docs/Referencia_de_JavaScript_1.5/Sentencias/export /es/docs/Web/JavaScript/Referencia/Sentencias/export -/es/docs/Referencia_de_JavaScript_1.5/Sentencias/for /es/docs/Web/JavaScript/Referencia/Sentencias/for -/es/docs/Referencia_de_JavaScript_1.5/Sentencias/for...in /es/docs/Web/JavaScript/Referencia/Sentencias/for...in +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/RegExp /es/docs/Web/JavaScript/Reference/Global_Objects/RegExp +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String /es/docs/Web/JavaScript/Reference/Global_Objects/String +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/anchor /es/docs/Web/JavaScript/Reference/Global_Objects/String/anchor +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/big /es/docs/Web/JavaScript/Reference/Global_Objects/String/big +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/blink /es/docs/Web/JavaScript/Reference/Global_Objects/String/blink +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/bold /es/docs/Web/JavaScript/Reference/Global_Objects/String/bold +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/charAt /es/docs/Web/JavaScript/Reference/Global_Objects/String/charAt +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/charCodeAt /es/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/concat /es/docs/Web/JavaScript/Reference/Global_Objects/String/concat +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/constructor /es/docs/Web/JavaScript/Reference/Global_Objects/String +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/fixed /es/docs/Web/JavaScript/Reference/Global_Objects/String/fixed +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/fromCharCode /es/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/indexOf /es/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/italics /es/docs/Web/JavaScript/Reference/Global_Objects/String/italics +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/lastIndexOf /es/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/length /es/docs/Web/JavaScript/Reference/Global_Objects/String/length +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/link /es/docs/Web/JavaScript/Reference/Global_Objects/String/link +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/match /es/docs/Web/JavaScript/Reference/Global_Objects/String/match +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/String +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/replace /es/docs/Web/JavaScript/Reference/Global_Objects/String/replace +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/search /es/docs/Web/JavaScript/Reference/Global_Objects/String/search +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/slice /es/docs/Web/JavaScript/Reference/Global_Objects/String/slice +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/small /es/docs/Web/JavaScript/Reference/Global_Objects/String/small +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/split /es/docs/Web/JavaScript/Reference/Global_Objects/String/split +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/strike /es/docs/Web/JavaScript/Reference/Global_Objects/String/strike +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/sub /es/docs/Web/JavaScript/Reference/Global_Objects/String/sub +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/substr /es/docs/Web/JavaScript/Reference/Global_Objects/String/substr +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/substring /es/docs/Web/JavaScript/Reference/Global_Objects/String/substring +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/sup /es/docs/Web/JavaScript/Reference/Global_Objects/String/sup +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/toLowerCase /es/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/toString /es/docs/Web/JavaScript/Reference/Global_Objects/String/toString +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/toUpperCase /es/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globales/String/valueOf /es/docs/Web/JavaScript/Reference/Global_Objects/String/valueOf +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globlales /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/Referencia_de_JavaScript_1.5/Objetos_globlales/Function/arguments /es/docs/Web/JavaScript/Reference/Global_Objects/Function/arguments +/es/docs/Referencia_de_JavaScript_1.5/Operadores /es/docs/Web/JavaScript/Reference/Operators +/es/docs/Referencia_de_JavaScript_1.5/Operadores/Aritméticos /es/docs/conflicting/Web/JavaScript/Reference/Operators +/es/docs/Referencia_de_JavaScript_1.5/Operadores/Especiales /es/docs/Web/JavaScript/Reference/Operators +/es/docs/Referencia_de_JavaScript_1.5/Operadores/Especiales/function /es/docs/Web/JavaScript/Reference/Operators/function +/es/docs/Referencia_de_JavaScript_1.5/Operadores/Especiales/instanceof /es/docs/Web/JavaScript/Reference/Operators/instanceof +/es/docs/Referencia_de_JavaScript_1.5/Operadores/Especiales/typeof /es/docs/Web/JavaScript/Reference/Operators/typeof +/es/docs/Referencia_de_JavaScript_1.5/Operadores/Especiales/void /es/docs/Web/JavaScript/Reference/Operators/void +/es/docs/Referencia_de_JavaScript_1.5/Operadores/Miembros /es/docs/Web/JavaScript/Reference/Operators/Property_Accessors +/es/docs/Referencia_de_JavaScript_1.5/Operadores/Operadores_especiales /es/docs/Web/JavaScript/Reference/Operators +/es/docs/Referencia_de_JavaScript_1.5/Operadores/Operadores_especiales/Operador_this /es/docs/Web/JavaScript/Reference/Operators/this +/es/docs/Referencia_de_JavaScript_1.5/Operadores/Operator_Precedence /es/docs/Web/JavaScript/Reference/Operators/Operator_Precedence +/es/docs/Referencia_de_JavaScript_1.5/Operadores/String /es/docs/conflicting/Web/JavaScript/Reference/Operators +/es/docs/Referencia_de_JavaScript_1.5/Operadores/function /es/docs/Web/JavaScript/Reference/Operators/function +/es/docs/Referencia_de_JavaScript_1.5/Operadores/get /es/docs/Web/JavaScript/Reference/Functions/get +/es/docs/Referencia_de_JavaScript_1.5/Operadores/in /es/docs/Web/JavaScript/Reference/Operators/in +/es/docs/Referencia_de_JavaScript_1.5/Operadores/new /es/docs/Web/JavaScript/Reference/Operators/new +/es/docs/Referencia_de_JavaScript_1.5/Operadores/this /es/docs/Web/JavaScript/Reference/Operators/this +/es/docs/Referencia_de_JavaScript_1.5/Palabras_Reservadas /es/docs/conflicting/Web/JavaScript/Reference/Lexical_grammar +/es/docs/Referencia_de_JavaScript_1.5/Propiedades_globales /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/Referencia_de_JavaScript_1.5/Propiedades_globales/Infinity /es/docs/Web/JavaScript/Reference/Global_Objects/Infinity +/es/docs/Referencia_de_JavaScript_1.5/Propiedades_globales/NaN /es/docs/Web/JavaScript/Reference/Global_Objects/NaN +/es/docs/Referencia_de_JavaScript_1.5/Propiedades_globales/undefined /es/docs/Web/JavaScript/Reference/Global_Objects/undefined +/es/docs/Referencia_de_JavaScript_1.5/Sentencias /es/docs/Web/JavaScript/Reference/Statements +/es/docs/Referencia_de_JavaScript_1.5/Sentencias/block /es/docs/Web/JavaScript/Reference/Statements/block +/es/docs/Referencia_de_JavaScript_1.5/Sentencias/break /es/docs/Web/JavaScript/Reference/Statements/break +/es/docs/Referencia_de_JavaScript_1.5/Sentencias/const /es/docs/Web/JavaScript/Reference/Statements/const +/es/docs/Referencia_de_JavaScript_1.5/Sentencias/continue /es/docs/Web/JavaScript/Reference/Statements/continue +/es/docs/Referencia_de_JavaScript_1.5/Sentencias/do...while /es/docs/Web/JavaScript/Reference/Statements/do...while +/es/docs/Referencia_de_JavaScript_1.5/Sentencias/export /es/docs/Web/JavaScript/Reference/Statements/export +/es/docs/Referencia_de_JavaScript_1.5/Sentencias/for /es/docs/Web/JavaScript/Reference/Statements/for +/es/docs/Referencia_de_JavaScript_1.5/Sentencias/for...in /es/docs/Web/JavaScript/Reference/Statements/for...in /es/docs/Referencia_de_JavaScript_1.5/Sentencias/for_each...in /es/docs/Web/JavaScript/Referencia/Sentencias/for_each...in -/es/docs/Referencia_de_JavaScript_1.5/Sentencias/function /es/docs/Web/JavaScript/Referencia/Sentencias/function -/es/docs/Referencia_de_JavaScript_1.5/Sentencias/if...else /es/docs/Web/JavaScript/Referencia/Sentencias/if...else -/es/docs/Referencia_de_JavaScript_1.5/Sentencias/label /es/docs/Web/JavaScript/Referencia/Sentencias/label -/es/docs/Referencia_de_JavaScript_1.5/Sentencias/return /es/docs/Web/JavaScript/Referencia/Sentencias/return -/es/docs/Referencia_de_JavaScript_1.5/Sentencias/throw /es/docs/Web/JavaScript/Referencia/Sentencias/throw -/es/docs/Referencia_de_JavaScript_1.5/Sentencias/try...catch /es/docs/Web/JavaScript/Referencia/Sentencias/try...catch -/es/docs/Referencia_de_JavaScript_1.5/Sentencias/var /es/docs/Web/JavaScript/Referencia/Sentencias/var -/es/docs/Referencia_de_JavaScript_1.5/Sentencias/while /es/docs/Web/JavaScript/Referencia/Sentencias/while -/es/docs/Referencia_de_JavaScript_1.5:Acerca_de /es/docs/Web/JavaScript/Referencia/Acerca_de -/es/docs/Referencia_de_JavaScript_1.5:Características_Desaprobadas /es/docs/Web/JavaScript/Referencia/Características_Desaprobadas -/es/docs/Referencia_de_JavaScript_1.5:Características_Despreciadas /es/docs/Web/JavaScript/Referencia/Características_Desaprobadas -/es/docs/Referencia_de_JavaScript_1.5:Funciones /es/docs/Web/JavaScript/Referencia/Funciones -/es/docs/Referencia_de_JavaScript_1.5:Funciones:String /es/docs/Web/JavaScript/Referencia/Objetos_globales/String -/es/docs/Referencia_de_JavaScript_1.5:Funciones:arguments /es/docs/Web/JavaScript/Referencia/Funciones/arguments -/es/docs/Referencia_de_JavaScript_1.5:Funciones:arguments:callee /es/docs/Web/JavaScript/Referencia/Funciones/arguments/callee -/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:Boolean /es/docs/Web/JavaScript/Referencia/Objetos_globales/Boolean -/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:Date /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date -/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:Object /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object -/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:String /es/docs/Web/JavaScript/Referencia/Objetos_globales/String -/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:decodeURI /es/docs/Web/JavaScript/Referencia/Objetos_globales/decodeURI -/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:decodeURIComponent /es/docs/Web/JavaScript/Referencia/Objetos_globales/decodeURIComponent -/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:encodeURI /es/docs/Web/JavaScript/Referencia/Objetos_globales/encodeURI -/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:encodeURIComponent /es/docs/Web/JavaScript/Referencia/Objetos_globales/encodeURIComponent -/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:eval /es/docs/Web/JavaScript/Referencia/Objetos_globales/eval -/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:isFinite /es/docs/Web/JavaScript/Referencia/Objetos_globales/isFinite -/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:isNaN /es/docs/Web/JavaScript/Referencia/Objetos_globales/isNaN -/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:parseFloat /es/docs/Web/JavaScript/Referencia/Objetos_globales/parseFloat -/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:parseInt /es/docs/Web/JavaScript/Referencia/Objetos_globales/parseInt -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Array /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Array:reduce /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/reduce -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Array:reduceRight /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/reduceRight -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Boolean /es/docs/Web/JavaScript/Referencia/Objetos_globales/Boolean -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Boolean:toSource /es/docs/Web/JavaScript/Referencia/Objetos_globales/Boolean/toSource -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Date /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Date:UTC /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/UTC -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Date:now /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/now -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Date:parse /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/parse -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Error /es/docs/Web/JavaScript/Referencia/Objetos_globales/Error -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Function /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Function:prototype /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/prototype -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Math /es/docs/Web/JavaScript/Referencia/Objetos_globales/Math -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Number /es/docs/Web/JavaScript/Referencia/Objetos_globales/Number -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Number:prototype /es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/prototype -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Number:toString /es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/toString -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Object /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Object:toString /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/toString +/es/docs/Referencia_de_JavaScript_1.5/Sentencias/function /es/docs/Web/JavaScript/Reference/Statements/function +/es/docs/Referencia_de_JavaScript_1.5/Sentencias/if...else /es/docs/Web/JavaScript/Reference/Statements/if...else +/es/docs/Referencia_de_JavaScript_1.5/Sentencias/label /es/docs/Web/JavaScript/Reference/Statements/label +/es/docs/Referencia_de_JavaScript_1.5/Sentencias/return /es/docs/Web/JavaScript/Reference/Statements/return +/es/docs/Referencia_de_JavaScript_1.5/Sentencias/throw /es/docs/Web/JavaScript/Reference/Statements/throw +/es/docs/Referencia_de_JavaScript_1.5/Sentencias/try...catch /es/docs/Web/JavaScript/Reference/Statements/try...catch +/es/docs/Referencia_de_JavaScript_1.5/Sentencias/var /es/docs/Web/JavaScript/Reference/Statements/var +/es/docs/Referencia_de_JavaScript_1.5/Sentencias/while /es/docs/Web/JavaScript/Reference/Statements/while +/es/docs/Referencia_de_JavaScript_1.5:Acerca_de /es/docs/Web/JavaScript/Reference/About +/es/docs/Referencia_de_JavaScript_1.5:Características_Desaprobadas /es/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features +/es/docs/Referencia_de_JavaScript_1.5:Características_Despreciadas /es/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features +/es/docs/Referencia_de_JavaScript_1.5:Funciones /es/docs/Web/JavaScript/Reference/Functions +/es/docs/Referencia_de_JavaScript_1.5:Funciones:String /es/docs/Web/JavaScript/Reference/Global_Objects/String +/es/docs/Referencia_de_JavaScript_1.5:Funciones:arguments /es/docs/Web/JavaScript/Reference/Functions/arguments +/es/docs/Referencia_de_JavaScript_1.5:Funciones:arguments:callee /es/docs/Web/JavaScript/Reference/Functions/arguments/callee +/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:Boolean /es/docs/Web/JavaScript/Reference/Global_Objects/Boolean +/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:Date /es/docs/Web/JavaScript/Reference/Global_Objects/Date +/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:Object /es/docs/Web/JavaScript/Reference/Global_Objects/Object +/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:String /es/docs/Web/JavaScript/Reference/Global_Objects/String +/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:decodeURI /es/docs/Web/JavaScript/Reference/Global_Objects/decodeURI +/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:decodeURIComponent /es/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent +/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:encodeURI /es/docs/Web/JavaScript/Reference/Global_Objects/encodeURI +/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:encodeURIComponent /es/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent +/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:eval /es/docs/Web/JavaScript/Reference/Global_Objects/eval +/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:isFinite /es/docs/Web/JavaScript/Reference/Global_Objects/isFinite +/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:isNaN /es/docs/Web/JavaScript/Reference/Global_Objects/isNaN +/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:parseFloat /es/docs/Web/JavaScript/Reference/Global_Objects/parseFloat +/es/docs/Referencia_de_JavaScript_1.5:Funciones_globales:parseInt /es/docs/Web/JavaScript/Reference/Global_Objects/parseInt +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Array /es/docs/Web/JavaScript/Reference/Global_Objects/Array +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Array:reduce /es/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Array:reduceRight /es/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Boolean /es/docs/Web/JavaScript/Reference/Global_Objects/Boolean +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Boolean:toSource /es/docs/Web/JavaScript/Reference/Global_Objects/Boolean/toSource +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Date /es/docs/Web/JavaScript/Reference/Global_Objects/Date +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Date:UTC /es/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Date:now /es/docs/Web/JavaScript/Reference/Global_Objects/Date/now +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Date:parse /es/docs/Web/JavaScript/Reference/Global_Objects/Date/parse +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Error /es/docs/Web/JavaScript/Reference/Global_Objects/Error +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Function /es/docs/Web/JavaScript/Reference/Global_Objects/Function +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Function:prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Function +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Math /es/docs/Web/JavaScript/Reference/Global_Objects/Math +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Number /es/docs/Web/JavaScript/Reference/Global_Objects/Number +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Number:prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Number +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Number:toString /es/docs/Web/JavaScript/Reference/Global_Objects/Number/toString +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Object /es/docs/Web/JavaScript/Reference/Global_Objects/Object +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Object:toString /es/docs/Web/JavaScript/Reference/Global_Objects/Object/toString /es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Object:unwatch /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/unwatch /es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:Object:watch /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/watch -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:RegExp /es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String /es/docs/Web/JavaScript/Referencia/Objetos_globales/String -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:anchor /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/anchor -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:big /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/big -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:blink /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/blink -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:bold /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/bold -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:charAt /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/charAt -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:charCodeAt /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/charCodeAt -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:concat /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/concat -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:constructor /es/docs/Web/JavaScript/Referencia/Objetos_globales/String -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:fixed /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/fixed -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:fromCharCode /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/fromCharCode -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:indexOf /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/indexOf -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:italics /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/italics -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:lastIndexOf /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/lastIndexOf -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:length /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/length -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:link /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/link -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:match /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/match -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:prototype /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/prototype -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:replace /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/replace -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:search /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/search -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:slice /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/slice -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:small /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/small -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:split /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/split -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:strike /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/strike -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:sub /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/sub -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:substr /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/substr -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:substring /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/substring -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:sup /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/sup -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:toLowerCase /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/toLowerCase -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:toString /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/toString -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:toUpperCase /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/toUpperCase -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:valueOf /es/docs/Web/JavaScript/Referencia/Objetos_globales/String/valueOf -/es/docs/Referencia_de_JavaScript_1.5:Objetos_globlales:Function:arguments /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/arguments -/es/docs/Referencia_de_JavaScript_1.5:Operadores /es/docs/Web/JavaScript/Referencia/Operadores -/es/docs/Referencia_de_JavaScript_1.5:Operadores:Aritméticos /es/docs/Web/JavaScript/Referencia/Operadores/Aritméticos -/es/docs/Referencia_de_JavaScript_1.5:Operadores:Especiales:function /es/docs/Web/JavaScript/Referencia/Operadores/function -/es/docs/Referencia_de_JavaScript_1.5:Operadores:Especiales:instanceof /es/docs/Web/JavaScript/Referencia/Operadores/instanceof -/es/docs/Referencia_de_JavaScript_1.5:Operadores:Especiales:typeof /es/docs/Web/JavaScript/Referencia/Operadores/typeof -/es/docs/Referencia_de_JavaScript_1.5:Operadores:Especiales:void /es/docs/Web/JavaScript/Referencia/Operadores/void -/es/docs/Referencia_de_JavaScript_1.5:Operadores:Miembros /es/docs/Web/JavaScript/Referencia/Operadores/Miembros -/es/docs/Referencia_de_JavaScript_1.5:Operadores:Operadores_especiales:Operador_this /es/docs/Web/JavaScript/Referencia/Operadores/this -/es/docs/Referencia_de_JavaScript_1.5:Operadores:String /es/docs/Web/JavaScript/Referencia/Operadores/Aritméticos -/es/docs/Referencia_de_JavaScript_1.5:Palabras_Reservadas /es/docs/Web/JavaScript/Referencia/Palabras_Reservadas -/es/docs/Referencia_de_JavaScript_1.5:Propiedades_globales /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/Referencia_de_JavaScript_1.5:Propiedades_globales:Infinity /es/docs/Web/JavaScript/Referencia/Objetos_globales/Infinity -/es/docs/Referencia_de_JavaScript_1.5:Propiedades_globales:NaN /es/docs/Web/JavaScript/Referencia/Objetos_globales/NaN -/es/docs/Referencia_de_JavaScript_1.5:Propiedades_globales:undefined /es/docs/Web/JavaScript/Referencia/Objetos_globales/undefined -/es/docs/Referencia_de_JavaScript_1.5:Sentencias /es/docs/Web/JavaScript/Referencia/Sentencias -/es/docs/Referencia_de_JavaScript_1.5:Sentencias:block /es/docs/Web/JavaScript/Referencia/Sentencias/block -/es/docs/Referencia_de_JavaScript_1.5:Sentencias:break /es/docs/Web/JavaScript/Referencia/Sentencias/break -/es/docs/Referencia_de_JavaScript_1.5:Sentencias:continue /es/docs/Web/JavaScript/Referencia/Sentencias/continue -/es/docs/Referencia_de_JavaScript_1.5:Sentencias:do...while /es/docs/Web/JavaScript/Referencia/Sentencias/do...while -/es/docs/Referencia_de_JavaScript_1.5:Sentencias:for /es/docs/Web/JavaScript/Referencia/Sentencias/for -/es/docs/Referencia_de_JavaScript_1.5:Sentencias:for...in /es/docs/Web/JavaScript/Referencia/Sentencias/for...in -/es/docs/Referencia_de_JavaScript_1.5:Sentencias:function /es/docs/Web/JavaScript/Referencia/Sentencias/function -/es/docs/Referencia_de_JavaScript_1.5:Sentencias:if...else /es/docs/Web/JavaScript/Referencia/Sentencias/if...else -/es/docs/Referencia_de_JavaScript_1.5:Sentencias:label /es/docs/Web/JavaScript/Referencia/Sentencias/label -/es/docs/Referencia_de_JavaScript_1.5:Sentencias:return /es/docs/Web/JavaScript/Referencia/Sentencias/return -/es/docs/Referencia_de_JavaScript_1.5:Sentencias:throw /es/docs/Web/JavaScript/Referencia/Sentencias/throw -/es/docs/Referencia_de_JavaScript_1.5:Sentencias:try...catch /es/docs/Web/JavaScript/Referencia/Sentencias/try...catch -/es/docs/Referencia_de_JavaScript_1.5:Sentencias:var /es/docs/Web/JavaScript/Referencia/Sentencias/var -/es/docs/Referencia_de_JavaScript_1.5:Sentencias:while /es/docs/Web/JavaScript/Referencia/Sentencias/while +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:RegExp /es/docs/Web/JavaScript/Reference/Global_Objects/RegExp +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String /es/docs/Web/JavaScript/Reference/Global_Objects/String +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:anchor /es/docs/Web/JavaScript/Reference/Global_Objects/String/anchor +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:big /es/docs/Web/JavaScript/Reference/Global_Objects/String/big +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:blink /es/docs/Web/JavaScript/Reference/Global_Objects/String/blink +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:bold /es/docs/Web/JavaScript/Reference/Global_Objects/String/bold +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:charAt /es/docs/Web/JavaScript/Reference/Global_Objects/String/charAt +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:charCodeAt /es/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:concat /es/docs/Web/JavaScript/Reference/Global_Objects/String/concat +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:constructor /es/docs/Web/JavaScript/Reference/Global_Objects/String +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:fixed /es/docs/Web/JavaScript/Reference/Global_Objects/String/fixed +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:fromCharCode /es/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:indexOf /es/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:italics /es/docs/Web/JavaScript/Reference/Global_Objects/String/italics +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:lastIndexOf /es/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:length /es/docs/Web/JavaScript/Reference/Global_Objects/String/length +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:link /es/docs/Web/JavaScript/Reference/Global_Objects/String/link +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:match /es/docs/Web/JavaScript/Reference/Global_Objects/String/match +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/String +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:replace /es/docs/Web/JavaScript/Reference/Global_Objects/String/replace +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:search /es/docs/Web/JavaScript/Reference/Global_Objects/String/search +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:slice /es/docs/Web/JavaScript/Reference/Global_Objects/String/slice +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:small /es/docs/Web/JavaScript/Reference/Global_Objects/String/small +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:split /es/docs/Web/JavaScript/Reference/Global_Objects/String/split +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:strike /es/docs/Web/JavaScript/Reference/Global_Objects/String/strike +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:sub /es/docs/Web/JavaScript/Reference/Global_Objects/String/sub +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:substr /es/docs/Web/JavaScript/Reference/Global_Objects/String/substr +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:substring /es/docs/Web/JavaScript/Reference/Global_Objects/String/substring +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:sup /es/docs/Web/JavaScript/Reference/Global_Objects/String/sup +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:toLowerCase /es/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:toString /es/docs/Web/JavaScript/Reference/Global_Objects/String/toString +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:toUpperCase /es/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globales:String:valueOf /es/docs/Web/JavaScript/Reference/Global_Objects/String/valueOf +/es/docs/Referencia_de_JavaScript_1.5:Objetos_globlales:Function:arguments /es/docs/Web/JavaScript/Reference/Global_Objects/Function/arguments +/es/docs/Referencia_de_JavaScript_1.5:Operadores /es/docs/Web/JavaScript/Reference/Operators +/es/docs/Referencia_de_JavaScript_1.5:Operadores:Aritméticos /es/docs/conflicting/Web/JavaScript/Reference/Operators +/es/docs/Referencia_de_JavaScript_1.5:Operadores:Especiales:function /es/docs/Web/JavaScript/Reference/Operators/function +/es/docs/Referencia_de_JavaScript_1.5:Operadores:Especiales:instanceof /es/docs/Web/JavaScript/Reference/Operators/instanceof +/es/docs/Referencia_de_JavaScript_1.5:Operadores:Especiales:typeof /es/docs/Web/JavaScript/Reference/Operators/typeof +/es/docs/Referencia_de_JavaScript_1.5:Operadores:Especiales:void /es/docs/Web/JavaScript/Reference/Operators/void +/es/docs/Referencia_de_JavaScript_1.5:Operadores:Miembros /es/docs/Web/JavaScript/Reference/Operators/Property_Accessors +/es/docs/Referencia_de_JavaScript_1.5:Operadores:Operadores_especiales:Operador_this /es/docs/Web/JavaScript/Reference/Operators/this +/es/docs/Referencia_de_JavaScript_1.5:Operadores:String /es/docs/conflicting/Web/JavaScript/Reference/Operators +/es/docs/Referencia_de_JavaScript_1.5:Palabras_Reservadas /es/docs/conflicting/Web/JavaScript/Reference/Lexical_grammar +/es/docs/Referencia_de_JavaScript_1.5:Propiedades_globales /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/Referencia_de_JavaScript_1.5:Propiedades_globales:Infinity /es/docs/Web/JavaScript/Reference/Global_Objects/Infinity +/es/docs/Referencia_de_JavaScript_1.5:Propiedades_globales:NaN /es/docs/Web/JavaScript/Reference/Global_Objects/NaN +/es/docs/Referencia_de_JavaScript_1.5:Propiedades_globales:undefined /es/docs/Web/JavaScript/Reference/Global_Objects/undefined +/es/docs/Referencia_de_JavaScript_1.5:Sentencias /es/docs/Web/JavaScript/Reference/Statements +/es/docs/Referencia_de_JavaScript_1.5:Sentencias:block /es/docs/Web/JavaScript/Reference/Statements/block +/es/docs/Referencia_de_JavaScript_1.5:Sentencias:break /es/docs/Web/JavaScript/Reference/Statements/break +/es/docs/Referencia_de_JavaScript_1.5:Sentencias:continue /es/docs/Web/JavaScript/Reference/Statements/continue +/es/docs/Referencia_de_JavaScript_1.5:Sentencias:do...while /es/docs/Web/JavaScript/Reference/Statements/do...while +/es/docs/Referencia_de_JavaScript_1.5:Sentencias:for /es/docs/Web/JavaScript/Reference/Statements/for +/es/docs/Referencia_de_JavaScript_1.5:Sentencias:for...in /es/docs/Web/JavaScript/Reference/Statements/for...in +/es/docs/Referencia_de_JavaScript_1.5:Sentencias:function /es/docs/Web/JavaScript/Reference/Statements/function +/es/docs/Referencia_de_JavaScript_1.5:Sentencias:if...else /es/docs/Web/JavaScript/Reference/Statements/if...else +/es/docs/Referencia_de_JavaScript_1.5:Sentencias:label /es/docs/Web/JavaScript/Reference/Statements/label +/es/docs/Referencia_de_JavaScript_1.5:Sentencias:return /es/docs/Web/JavaScript/Reference/Statements/return +/es/docs/Referencia_de_JavaScript_1.5:Sentencias:throw /es/docs/Web/JavaScript/Reference/Statements/throw +/es/docs/Referencia_de_JavaScript_1.5:Sentencias:try...catch /es/docs/Web/JavaScript/Reference/Statements/try...catch +/es/docs/Referencia_de_JavaScript_1.5:Sentencias:var /es/docs/Web/JavaScript/Reference/Statements/var +/es/docs/Referencia_de_JavaScript_1.5:Sentencias:while /es/docs/Web/JavaScript/Reference/Statements/while +/es/docs/Referencia_de_XUL /es/docs/orphaned/Referencia_de_XUL /es/docs/SVG /es/docs/Web/SVG -/es/docs/SVG/SVG_en_Firefox_1.5 /es/docs/Web/SVG/SVG_en_Firefox_1.5 +/es/docs/SVG/SVG_en_Firefox_1.5 /es/docs/orphaned/Web/SVG/SVG_en_Firefox_1.5 /es/docs/SVG/Tutorial /es/docs/Web/SVG/Tutorial /es/docs/SVG/Tutorial/Getting_Started /es/docs/Web/SVG/Tutorial/Getting_Started -/es/docs/SVG:SVG_en_Firefox_1.5 /es/docs/Web/SVG/SVG_en_Firefox_1.5 +/es/docs/SVG:SVG_en_Firefox_1.5 /es/docs/orphaned/Web/SVG/SVG_en_Firefox_1.5 /es/docs/SVG_In_HTML_Introduction /es/docs/Web/SVG/Tutorial/SVG_In_HTML_Introduction +/es/docs/SVG_en_Firefox /es/docs/Web/SVG/SVG_1.1_Support_in_Firefox /es/docs/Screening_duplicate_bugs /es/docs/QA/Screening_duplicate_bugs -/es/docs/Secciones_y_contornos_de_un_documento_HTML5 /es/docs/Sections_and_Outlines_of_an_HTML5_document -/es/docs/Secciones_y_esquema_de_un_documento_HTML_5 /es/docs/Sections_and_Outlines_of_an_HTML5_document +/es/docs/Secciones_y_contornos_de_un_documento_HTML5 /es/docs/Web/Guide/HTML/Using_HTML_sections_and_outlines +/es/docs/Secciones_y_esquema_de_un_documento_HTML_5 /es/docs/Web/Guide/HTML/Using_HTML_sections_and_outlines +/es/docs/Sections_and_Outlines_of_an_HTML5_document /es/docs/Web/Guide/HTML/Using_HTML_sections_and_outlines +/es/docs/Seguridad_en_Firefox_2 /es/docs/Mozilla/Firefox/Releases/2/Security_changes +/es/docs/Selección_de_modo_en_Mozilla /es/docs/orphaned/Selección_de_modo_en_Mozilla +/es/docs/Server-sent_events /es/docs/Web/API/Server-sent_events +/es/docs/Server-sent_events/utilizando_server_sent_events_sse /es/docs/Web/API/Server-sent_events/Using_server-sent_events /es/docs/Social_API-redirect-1 /es/docs/Social_API /es/docs/Social_API-redirect-2 /es/docs/Social_API /es/docs/Social_API/Glossary-redirect-1 /es/docs/Social_API/Glossary /es/docs/Social_API/Glossary-redirect-2 /es/docs/Social_API/Glossary /es/docs/Social_API/Guide-redirect-1 /es/docs/Social_API/Guide -/es/docs/Transformando_XML_con_XSLT /es/docs/Web/XSLT/Transformando_XML_con_XSLT -/es/docs/Usando_audio_y_video_con_HTML5 /es/docs/Web/HTML/Usando_audio_y_video_con_HTML5 -/es/docs/Usando_audio_y_video_en_Firefox /es/docs/Web/HTML/Usando_audio_y_video_con_HTML5 +/es/docs/Storage /es/docs/orphaned/Storage +/es/docs/Tipo_MIME_incorrecto_en_archivos_CSS /es/docs/conflicting/Web/HTTP/Basics_of_HTTP/MIME_types +/es/docs/Tools/Accesos_directos /es/docs/Tools/Keyboard_shortcuts +/es/docs/Tools/Add-ons /es/docs/orphaned/Tools/Add-ons +/es/docs/Tools/Debugger/How_to/Uso_de_un_mapa_fuente /es/docs/Tools/Debugger/How_to/Use_a_source_map +/es/docs/Tools/Desempeño /es/docs/Tools/Performance +/es/docs/Tools/Desempeño/UI_Tour /es/docs/Tools/Performance/UI_Tour +/es/docs/Tools/Editor_Audio_Web /es/docs/Tools/Web_Audio_Editor +/es/docs/Tools/Editor_Estilo /es/docs/Tools/Style_Editor +/es/docs/Tools/Monitor_de_Red /es/docs/Tools/Network_Monitor +/es/docs/Tools/Page_Inspector/3er-panel_modo /es/docs/Tools/Page_Inspector/3-pane_mode +/es/docs/Tools/Page_Inspector/How_to/Abrir_el_Inspector /es/docs/Tools/Page_Inspector/How_to/Open_the_Inspector +/es/docs/Tools/Page_Inspector/How_to/Examinar_y_editar_HTML /es/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML +/es/docs/Tools/Page_Inspector/How_to/Examinar_y_editar_el_modelo_de_cajasmodel /es/docs/Tools/Page_Inspector/How_to/Examine_and_edit_the_box_model +/es/docs/Tools/Page_Inspector/How_to/Inspeccionar_y_seleccionar_colores /es/docs/Tools/Page_Inspector/How_to/Inspect_and_select_colors +/es/docs/Tools/Page_Inspector/How_to/Reposicionando_elementos_en_la_pagina /es/docs/Tools/Page_Inspector/How_to/Reposition_elements_in_the_page +/es/docs/Tools/Profiler /es/docs/conflicting/Tools/Performance +/es/docs/Tools/Remote_Debugging/Debugging_over_a_network /es/docs/conflicting/Tools/about:debugging +/es/docs/Tools/Remote_Debugging/Firefox_para_Android /es/docs/Tools/Remote_Debugging/Firefox_for_Android +/es/docs/Tools/Responsive_Design_View /es/docs/Tools/Responsive_Design_Mode +/es/docs/Tools/Tomar_capturas_de_pantalla /es/docs/Tools/Taking_screenshots +/es/docs/Tools/Web_Console/Iniciando_la_Consola_Web /es/docs/Tools/Web_Console/UI_Tour +/es/docs/Tools/Web_Console/La_línea_de_comandos_del_intérprete /es/docs/Tools/Web_Console/The_command_line_interpreter +/es/docs/Traducir_las_descripciones_de_las_extensiones /es/docs/orphaned/Traducir_las_descripciones_de_las_extensiones +/es/docs/Traducir_una_extensión /es/docs/orphaned/Traducir_una_extensión +/es/docs/Transformando_XML_con_XSLT /es/docs/Web/XSLT/Transforming_XML_with_XSLT +/es/docs/Trazado_de_una_tabla_HTML_mediante_JavaScript_y_la_Interface_DOM /es/docs/Web/API/Document_Object_Model/Traversing_an_HTML_table_with_JavaScript_and_DOM_Interfaces +/es/docs/Usando_archivos_desde_aplicaciones_web /es/docs/orphaned/Usando_archivos_desde_aplicaciones_web +/es/docs/Usando_audio_y_video_con_HTML5 /es/docs/conflicting/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content +/es/docs/Usando_audio_y_video_en_Firefox /es/docs/conflicting/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content /es/docs/Usando_módulos_de_código_JavaScript /es/docs/JavaScript_code_modules/Using -/es/docs/Usar_audio_y_vídeo_en_Firefox /es/docs/Web/HTML/Usando_audio_y_video_con_HTML5 -/es/docs/Usar_gradientes /es/docs/CSS/Using_CSS_gradients -/es/docs/Usar_la_Geolocalización /es/docs/WebAPI/Using_geolocation +/es/docs/Usar_XPInstall_para_instalar_plugins /es/docs/orphaned/Usar_XPInstall_para_instalar_plugins +/es/docs/Usar_audio_y_vídeo_en_Firefox /es/docs/conflicting/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content +/es/docs/Usar_código_de_Mozilla_en_otros_proyectos /es/docs/orphaned/Usar_código_de_Mozilla_en_otros_proyectos +/es/docs/Usar_gradientes /es/docs/Web/CSS/CSS_Images/Using_CSS_gradients +/es/docs/Usar_la_Geolocalización /es/docs/Web/API/Geolocation_API +/es/docs/Usar_web_workers /es/docs/orphaned/Usar_web_workers /es/docs/Using_files_from_web_applications /es/docs/Web/API/File/Using_files_from_web_applications -/es/docs/Using_geolocation /es/docs/WebAPI/Using_geolocation -/es/docs/Uso_de_URL_como_valor_de_la_propiedad_cursor /es/docs/Web/CSS/cursor/Uso_de_URL_como_valor_de_la_propiedad_cursor -/es/docs/Vigilando_complementos /es/docs/Vigilar_plugins +/es/docs/Using_geolocation /es/docs/Web/API/Geolocation_API +/es/docs/Using_the_W3C_DOM_Level_1_Core /es/docs/Web/API/Document_object_model/Using_the_W3C_DOM_Level_1_Core +/es/docs/Uso_de_URL_como_valor_de_la_propiedad_cursor /es/docs/Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property +/es/docs/Uso_del_núcleo_del_nivel_1_del_DOM /es/docs/orphaned/Uso_del_núcleo_del_nivel_1_del_DOM +/es/docs/Vigilando_complementos /es/docs/orphaned/Vigilar_plugins /es/docs/Vigilando_descargas /es/docs/Vigilar_descargas -/es/docs/Vigilando_plugins /es/docs/Vigilar_plugins +/es/docs/Vigilando_plugins /es/docs/orphaned/Vigilar_plugins +/es/docs/Vigilar_plugins /es/docs/orphaned/Vigilar_plugins +/es/docs/Web/API/API_de_almacenamiento_web /es/docs/Web/API/Web_Storage_API +/es/docs/Web/API/API_de_almacenamiento_web/Usando_la_API_de_almacenamiento_web /es/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API +/es/docs/Web/API/API_del_portapapeles /es/docs/Web/API/Clipboard_API +/es/docs/Web/API/Animation/Animación /es/docs/Web/API/Animation/Animation +/es/docs/Web/API/Animation/terminado /es/docs/Web/API/Animation/finished +/es/docs/Web/API/Animation/tiempoActual /es/docs/Web/API/Animation/currentTime /es/docs/Web/API/Apps.checkInstalled /es/docs/Web/API/DOMApplicationsRegistry/checkInstalled /es/docs/Web/API/Apps.getInstalled /es/docs/Web/API/DOMApplicationsRegistry/getInstalled /es/docs/Web/API/Apps.install /es/docs/Web/API/DOMApplicationsRegistry/install @@ -1422,62 +1782,220 @@ /es/docs/Web/API/CSSStyleSheet.insertRule /es/docs/Web/API/CSSStyleSheet/insertRule /es/docs/Web/API/CameraCapabilities.maxExposureCompensation /es/docs/Web/API/CameraCapabilities/maxExposureCompensation /es/docs/Web/API/CameraCapabilities.maxFocusAreas /es/docs/Web/API/CameraCapabilities/maxFocusAreas +/es/docs/Web/API/Canvas_API/Tutorial/Compositing/Ejemplo /es/docs/Web/API/Canvas_API/Tutorial/Compositing/Example +/es/docs/Web/API/Console/tabla /es/docs/Web/API/Console/table /es/docs/Web/API/Constraint_validation/invalid_event /es/docs/Web/API/HTMLInputElement/invalid_event /es/docs/Web/API/Coordinates /es/docs/Web/API/GeolocationCoordinates /es/docs/Web/API/Coordinates/latitude /es/docs/Web/API/GeolocationCoordinates/latitude +/es/docs/Web/API/DOMString/Cadenas_binarias /es/docs/Web/API/DOMString/Binary +/es/docs/Web/API/Document/abrir /es/docs/Web/API/Document/open +/es/docs/Web/API/Document/async /es/docs/Web/API/XMLDocument/async +/es/docs/Web/API/Document/crearAtributo /es/docs/Web/API/Document/createAttribute +/es/docs/Web/API/Document/getSelection /es/docs/Web/API/DocumentOrShadowRoot/getSelection +/es/docs/Web/API/Document/pointerLockElement /es/docs/Web/API/DocumentOrShadowRoot/pointerLockElement +/es/docs/Web/API/Document/styleSheets /es/docs/Web/API/DocumentOrShadowRoot/styleSheets +/es/docs/Web/API/Element/accessKey /es/docs/Web/API/HTMLElement/accessKey +/es/docs/Web/API/Element/name /es/docs/conflicting/Web/API +/es/docs/Web/API/Element/ongotpointercapture /es/docs/Web/API/GlobalEventHandlers/ongotpointercapture +/es/docs/Web/API/Element/onlostpointercapture /es/docs/Web/API/GlobalEventHandlers/onlostpointercapture +/es/docs/Web/API/Element/onwheel /es/docs/Web/API/GlobalEventHandlers/onwheel +/es/docs/Web/API/ElementosHTMLparaVideo /es/docs/Web/API/HTMLVideoElement +/es/docs/Web/API/Event/createEvent /es/docs/Web/API/Document/createEvent +/es/docs/Web/API/Fetch_API/Conceptos_basicos /es/docs/Web/API/Fetch_API/Basic_concepts +/es/docs/Web/API/Fetch_API/Utilizando_Fetch /es/docs/Web/API/Fetch_API/Using_Fetch /es/docs/Web/API/Geolocalización /es/docs/Web/API/Geolocation /es/docs/Web/API/Geolocation.clearWatch /es/docs/Web/API/Geolocation/clearWatch /es/docs/Web/API/Geolocation.getCurrentPosition /es/docs/Web/API/Geolocation/getCurrentPosition /es/docs/Web/API/Geolocation.watchPosition /es/docs/Web/API/Geolocation/watchPosition +/es/docs/Web/API/GlobalEventHandlers/onunload /es/docs/Web/API/WindowEventHandlers/onunload +/es/docs/Web/API/HTMLElement/dataset /es/docs/Web/API/HTMLOrForeignElement/dataset +/es/docs/Web/API/HTMLElement/focus /es/docs/Web/API/HTMLOrForeignElement/focus /es/docs/Web/API/HTMLElement/invalid_event /es/docs/Web/API/HTMLInputElement/invalid_event +/es/docs/Web/API/HTMLElement/style /es/docs/Web/API/ElementCSSInlineStyle/style /es/docs/Web/API/IDBObjectStore.add /es/docs/Web/API/IDBObjectStore/add +/es/docs/Web/API/IndexedDB_API/Conceptos_Basicos_Detras_De_IndexedDB /es/docs/Web/API/IndexedDB_API/Basic_Concepts_Behind_IndexedDB +/es/docs/Web/API/IndexedDB_API/Usando_IndexedDB /es/docs/Web/API/IndexedDB_API/Using_IndexedDB /es/docs/Web/API/Navigator.getUserMedia /es/docs/Web/API/Navigator/getUserMedia +/es/docs/Web/API/NavigatorGeolocation /es/docs/conflicting/Web/API/Geolocation +/es/docs/Web/API/NavigatorGeolocation/geolocation /es/docs/Web/API/Navigator/geolocation +/es/docs/Web/API/NavigatorOnLine/Eventos_online_y_offline /es/docs/Web/API/NavigatorOnLine/Online_and_offline_events /es/docs/Web/API/Node.nextSibling /es/docs/Web/API/Node/nextSibling +/es/docs/Web/API/Node/elementoPadre /es/docs/Web/API/Node/parentElement +/es/docs/Web/API/Node/insertarAntes /es/docs/Web/API/Node/insertBefore +/es/docs/Web/API/Node/nodoPrincipal /es/docs/conflicting/Web/API/Node +/es/docs/Web/API/Notifications_API/Usando_la_API_de_Notificaciones /es/docs/Web/API/Notifications_API/Using_the_Notifications_API /es/docs/Web/API/Position /es/docs/Web/API/GeolocationPosition +/es/docs/Web/API/Push_API/Using_the_Push_API /es/docs/conflicting/Web/API/Push_API +/es/docs/Web/API/RandomSource /es/docs/conflicting/Web/API/Crypto/getRandomValues +/es/docs/Web/API/RandomSource/Obtenervaloresaleatorios /es/docs/Web/API/Crypto/getRandomValues +/es/docs/Web/API/Storage/LocalStorage /es/docs/conflicting/Web/API/Window/localStorage +/es/docs/Web/API/SubtleCrypto/encrypt /es/docs/Web/HTTP/Headers/Digest /es/docs/Web/API/WebGL_API/Animating_objects_with_WebGL /es/docs/Web/API/WebGL_API/Tutorial/Animating_objects_with_WebGL /es/docs/Web/API/WebGL_API/Getting_started_with_WebGL /es/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL -/es/docs/Web/API/Window.clearTimeout /es/docs/Web/API/WindowTimers/clearTimeout +/es/docs/Web/API/WebGL_API/Tutorial/Objetos_3D_utilizando_WebGL /es/docs/Web/API/WebGL_API/Tutorial/Creating_3D_objects_using_WebGL +/es/docs/Web/API/WebGL_API/Tutorial/Wtilizando_texturas_en_WebGL /es/docs/Web/API/WebGL_API/Tutorial/Using_textures_in_WebGL +/es/docs/Web/API/WebSockets_API/Escribiendo_servidor_WebSocket /es/docs/Web/API/WebSockets_API/Writing_WebSocket_server +/es/docs/Web/API/WebSockets_API/Escribiendo_servidores_con_WebSocket /es/docs/Web/API/WebSockets_API/Writing_WebSocket_servers +/es/docs/Web/API/Web_Crypto_API/Checking_authenticity_with_password /es/docs/orphaned/Web/API/Web_Crypto_API/Checking_authenticity_with_password +/es/docs/Web/API/Web_Speech_API/Uso_de_la_Web_Speech_API /es/docs/Web/API/Web_Speech_API/Using_the_Web_Speech_API +/es/docs/Web/API/Window.clearTimeout /es/docs/Web/API/WindowOrWorkerGlobalScope/clearTimeout /es/docs/Web/API/Window.navigator /es/docs/Web/API/Window/navigator /es/docs/Web/API/Window.onbeforeunload /es/docs/Web/API/WindowEventHandlers/onbeforeunload -/es/docs/Web/API/Window.setTimeout /es/docs/Web/API/WindowTimers/setTimeout -/es/docs/Web/API/WindowBase64.atob /es/docs/Web/API/WindowBase64/atob +/es/docs/Web/API/Window.setTimeout /es/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout +/es/docs/Web/API/Window/URL /es/docs/conflicting/Web/API/URL +/es/docs/Web/API/WindowBase64 /es/docs/conflicting/Web/API/WindowOrWorkerGlobalScope +/es/docs/Web/API/WindowBase64.atob /es/docs/Web/API/WindowOrWorkerGlobalScope/atob +/es/docs/Web/API/WindowBase64/Base64_codificando_y_decodificando /es/docs/Glossary/Base64 +/es/docs/Web/API/WindowBase64/atob /es/docs/Web/API/WindowOrWorkerGlobalScope/atob +/es/docs/Web/API/WindowTimers /es/docs/conflicting/Web/API/WindowOrWorkerGlobalScope_e2691f7ad05781a30c5fc5bb3b3f633a +/es/docs/Web/API/WindowTimers/clearInterval /es/docs/Web/API/WindowOrWorkerGlobalScope/clearInterval +/es/docs/Web/API/WindowTimers/clearTimeout /es/docs/Web/API/WindowOrWorkerGlobalScope/clearTimeout +/es/docs/Web/API/WindowTimers/setInterval /es/docs/Web/API/WindowOrWorkerGlobalScope/setInterval +/es/docs/Web/API/WindowTimers/setTimeout /es/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout +/es/docs/Web/API/XMLHttpRequest/FormData /es/docs/Web/API/FormData /es/docs/Web/API/event.defaultPrevented /es/docs/Web/API/Event/defaultPrevented /es/docs/Web/API/event.which /es/docs/Web/API/KeyboardEvent/which +/es/docs/Web/Accesibilidad /es/docs/Web/Accessibility +/es/docs/Web/Accesibilidad/Comunidad /es/docs/Web/Accessibility/Community +/es/docs/Web/Accesibilidad/Understanding_WCAG /es/docs/Web/Accessibility/Understanding_WCAG +/es/docs/Web/Accesibilidad/Understanding_WCAG/Etiquetas_de_texto_y_nombres /es/docs/Web/Accessibility/Understanding_WCAG/Text_labels_and_names +/es/docs/Web/Accesibilidad/Understanding_WCAG/Perceivable /es/docs/Web/Accessibility/Understanding_WCAG/Perceivable +/es/docs/Web/Accesibilidad/Understanding_WCAG/Perceivable/Color_contraste /es/docs/Web/Accessibility/Understanding_WCAG/Perceivable/Color_contrast +/es/docs/Web/Accesibilidad/Understanding_WCAG/Teclado /es/docs/Web/Accessibility/Understanding_WCAG/Keyboard +/es/docs/Web/Accessibility/ARIA/ARIA_Techniques/Usando_el_atributo_aria-required /es/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-required_attribute +/es/docs/Web/Accessibility/ARIA/ARIA_Techniques/Usando_el_rol_alertdialog /es/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_alertdialog_role +/es/docs/Web/Accessibility/ARIA/forms/Etiquetas_complejas /es/docs/Web/Accessibility/ARIA/forms/Multipart_labels +/es/docs/Web/Accessibility/ARIA/forms/alertas /es/docs/Web/Accessibility/ARIA/forms/alerts +/es/docs/Web/Accessibility/ARIA/forms/consejos_basicos_para_formularios /es/docs/Web/Accessibility/ARIA/forms/Basic_form_hints /es/docs/Web/Aplicaciones/Progressive /es/docs/Web/Progressive_web_apps /es/docs/Web/Aplicaciones/Progressive/Introduction /es/docs/Web/Progressive_web_apps/Introduction /es/docs/Web/CSS/-moz-appearance /es/docs/Web/CSS/appearance +/es/docs/Web/CSS/-moz-box-flex /es/docs/Web/CSS/box-flex +/es/docs/Web/CSS/-moz-box-ordinal-group /es/docs/Web/CSS/box-ordinal-group +/es/docs/Web/CSS/-moz-box-pack /es/docs/Web/CSS/box-pack +/es/docs/Web/CSS/-moz-cell /es/docs/conflicting/Web/CSS/cursor +/es/docs/Web/CSS/-moz-font-language-override /es/docs/Web/CSS/font-language-override +/es/docs/Web/CSS/-moz-user-modify /es/docs/Web/CSS/user-modify +/es/docs/Web/CSS/-webkit-mask /es/docs/Web/CSS/mask +/es/docs/Web/CSS/-webkit-mask-clip /es/docs/Web/CSS/mask-clip +/es/docs/Web/CSS/-webkit-mask-image /es/docs/Web/CSS/mask-image +/es/docs/Web/CSS/-webkit-mask-origin /es/docs/Web/CSS/mask-origin +/es/docs/Web/CSS/-webkit-mask-position /es/docs/Web/CSS/mask-position +/es/docs/Web/CSS/-webkit-mask-repeat /es/docs/Web/CSS/mask-repeat +/es/docs/Web/CSS/:-moz-placeholder /es/docs/conflicting/Web/CSS/:placeholder-shown +/es/docs/Web/CSS/:-moz-ui-invalid /es/docs/Web/CSS/:user-invalid +/es/docs/Web/CSS/:-ms-input-placeholder /es/docs/conflicting/Web/CSS/:placeholder-shown_f20b6cc785f9fd133a0f9fb582f36891 +/es/docs/Web/CSS/:-webkit-autofill /es/docs/Web/CSS/:autofill +/es/docs/Web/CSS/::-moz-placeholder /es/docs/conflicting/Web/CSS/::placeholder +/es/docs/Web/CSS/::-webkit-file-upload-button /es/docs/Web/CSS/::file-selector-button +/es/docs/Web/CSS/::-webkit-input-placeholder /es/docs/conflicting/Web/CSS/::placeholder_70bda352bb504ebdd6cd3362879e2479 +/es/docs/Web/CSS/:any /es/docs/Web/CSS/:is +/es/docs/Web/CSS/:not() /es/docs/Web/CSS/:not +/es/docs/Web/CSS/@media/altura /es/docs/Web/CSS/@media/height +/es/docs/Web/CSS/@media/resolución /es/docs/Web/CSS/@media/resolution +/es/docs/Web/CSS/@viewport/height /es/docs/conflicting/Web/CSS/@viewport +/es/docs/Web/CSS/@viewport/width /es/docs/conflicting/Web/CSS/@viewport_c925ec0506b352ea1185248b874f7848 +/es/docs/Web/CSS/CSS_Animations/Detectar_soporte_de_animación_CSS /es/docs/Web/CSS/CSS_Animations/Detecting_CSS_animation_support +/es/docs/Web/CSS/CSS_Animations/Usando_animaciones_CSS /es/docs/Web/CSS/CSS_Animations/Using_CSS_animations +/es/docs/Web/CSS/CSS_Background_and_Borders /es/docs/Web/CSS/CSS_Backgrounds_and_Borders +/es/docs/Web/CSS/CSS_Background_and_Borders/Border-image_generador /es/docs/Web/CSS/CSS_Background_and_Borders/Border-image_generator +/es/docs/Web/CSS/CSS_Background_and_Borders/Using_CSS_multiple_backgrounds /es/docs/Web/CSS/CSS_Backgrounds_and_Borders/Using_multiple_backgrounds +/es/docs/Web/CSS/CSS_Colors /es/docs/Web/CSS/CSS_Color +/es/docs/Web/CSS/CSS_Colors/Herramienta_para_seleccionar_color /es/docs/Web/CSS/CSS_Colors/Color_picker_tool +/es/docs/Web/CSS/CSS_Flexible_Box_Layout/Casos_de_uso_tipicos_de_Flexbox. /es/docs/Web/CSS/CSS_Flexible_Box_Layout/Typical_Use_Cases_of_Flexbox +/es/docs/Web/CSS/CSS_Flexible_Box_Layout/Conceptos_Basicos_de_Flexbox /es/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox +/es/docs/Web/CSS/CSS_Flexible_Box_Layout/Usando_flexbox_para_componer_aplicaciones_web /es/docs/conflicting/Web/CSS/CSS_Flexible_Box_Layout/Typical_Use_Cases_of_Flexbox +/es/docs/Web/CSS/CSS_Flexible_Box_Layout/Usando_las_cajas_flexibles_CSS /es/docs/conflicting/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox +/es/docs/Web/CSS/CSS_Grid_Layout/Conceptos_Básicos_del_Posicionamiento_con_Rejillas /es/docs/Web/CSS/CSS_Grid_Layout/Basic_Concepts_of_Grid_Layout +/es/docs/Web/CSS/CSS_Grid_Layout/Relacion_de_Grid_Layout /es/docs/Web/CSS/CSS_Grid_Layout/Relationship_of_Grid_Layout +/es/docs/Web/CSS/CSS_Logical_Properties/Dimensionamiento /es/docs/Web/CSS/CSS_Logical_Properties/Sizing +/es/docs/Web/CSS/CSS_Modelo_Caja /es/docs/Web/CSS/CSS_Box_Model +/es/docs/Web/CSS/CSS_Modelo_Caja/Introducción_al_modelo_de_caja_de_CSS /es/docs/Web/CSS/CSS_Box_Model/Introduction_to_the_CSS_box_model +/es/docs/Web/CSS/CSS_Modelo_Caja/Mastering_margin_collapsing /es/docs/Web/CSS/CSS_Box_Model/Mastering_margin_collapsing +/es/docs/Web/CSS/CSS_Positioning/entendiendo_z_index /es/docs/Web/CSS/CSS_Positioning/Understanding_z_index +/es/docs/Web/CSS/CSS_Positioning/entendiendo_z_index/Agregando_z-index /es/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index +/es/docs/Web/CSS/CSS_Positioning/entendiendo_z_index/Apilamiento_y_float /es/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_and_float +/es/docs/Web/CSS/CSS_Positioning/entendiendo_z_index/El_contexto_de_apilamiento /es/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context +/es/docs/Web/CSS/CSS_Positioning/entendiendo_z_index/Stacking_without_z-index /es/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index +/es/docs/Web/CSS/CSS_Positioning/entendiendo_z_index/ejemplo_1_del_contexto_de_apilamiento /es/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1 +/es/docs/Web/CSS/CSS_Positioning/entendiendo_z_index/ejemplo_2_del_contexto_de_apilamiento /es/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_2 +/es/docs/Web/CSS/CSS_Positioning/entendiendo_z_index/ejemplo_3_del_contexto_de_apilamiento /es/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_3 +/es/docs/Web/CSS/CSS_Reglas_Condicionales /es/docs/Web/CSS/CSS_Conditional_Rules /es/docs/Web/CSS/Child_selectors /es/docs/Web/CSS/Child_combinator -/es/docs/Web/CSS/Como_iniciar/Porqué_usar_CSS /es/docs/Web/CSS/Como_iniciar/Por_que_usar_CSS -/es/docs/Web/CSS/Consultas_multimedia /es/docs/CSS/Media_queries +/es/docs/Web/CSS/Columnas_CSS /es/docs/Web/CSS/CSS_Columns +/es/docs/Web/CSS/Comentarios /es/docs/Web/CSS/Comments +/es/docs/Web/CSS/Comenzando_(tutorial_CSS) /es/docs/orphaned/Web/CSS/Comenzando_(tutorial_CSS) +/es/docs/Web/CSS/Como_iniciar /es/docs/orphaned/Web/CSS/Como_iniciar +/es/docs/Web/CSS/Como_iniciar/Por_que_usar_CSS /es/docs/conflicting/Learn/CSS/First_steps/How_CSS_works +/es/docs/Web/CSS/Como_iniciar/Porqué_usar_CSS /es/docs/conflicting/Learn/CSS/First_steps/How_CSS_works +/es/docs/Web/CSS/Como_iniciar/Que_es_CSS /es/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_a460b5a76c3c2e7fc9b8da464dfd0c22 +/es/docs/Web/CSS/Consultas_multimedia /es/docs/Web/CSS/Media_Queries/Using_media_queries /es/docs/Web/CSS/Descendant_selectors /es/docs/Web/CSS/Descendant_combinator -/es/docs/Web/CSS/Getting_Started /es/docs/Web/CSS/Comenzando_(tutorial_CSS) -/es/docs/Web/CSS/Introducción/Content /es/docs/Learn/CSS/Sábercomo/Generated_content +/es/docs/Web/CSS/Elemento_reemplazo /es/docs/Web/CSS/Replaced_element +/es/docs/Web/CSS/Especificidad /es/docs/Web/CSS/Specificity +/es/docs/Web/CSS/Getting_Started /es/docs/orphaned/Web/CSS/Comenzando_(tutorial_CSS) +/es/docs/Web/CSS/Gradiente /es/docs/Web/CSS/gradient +/es/docs/Web/CSS/Herramientas /es/docs/Web/CSS/Tools +/es/docs/Web/CSS/Herramientas/Cubic_Bezier_Generator /es/docs/Web/CSS/Tools/Cubic_Bezier_Generator +/es/docs/Web/CSS/Introducción /es/docs/conflicting/Learn/CSS/First_steps +/es/docs/Web/CSS/Introducción/Boxes /es/docs/conflicting/Learn/CSS/Building_blocks +/es/docs/Web/CSS/Introducción/Cascading_and_inheritance /es/docs/conflicting/Learn/CSS/Building_blocks/Cascade_and_inheritance +/es/docs/Web/CSS/Introducción/Color /es/docs/conflicting/Learn/CSS/Building_blocks/Values_and_units +/es/docs/Web/CSS/Introducción/Content /es/docs/Learn/CSS/Howto/Generated_content +/es/docs/Web/CSS/Introducción/How_CSS_works /es/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_194e34e451d4ace023d98021c00b3cfd +/es/docs/Web/CSS/Introducción/Layout /es/docs/conflicting/Learn/CSS/CSS_layout +/es/docs/Web/CSS/Introducción/Los:estilos_de_texto /es/docs/conflicting/Learn/CSS/Styling_text/Fundamentals +/es/docs/Web/CSS/Introducción/Media /es/docs/Web/Progressive_web_apps/Responsive/Media_types +/es/docs/Web/CSS/Introducción/Selectors /es/docs/conflicting/Learn/CSS/Building_blocks/Selectors +/es/docs/Web/CSS/Preguntas_frecuentes_sobre_CSS /es/docs/Learn/CSS/Howto/CSS_FAQ +/es/docs/Web/CSS/Primeros_pasos /es/docs/orphaned/Web/CSS/Primeros_pasos +/es/docs/Web/CSS/Pseudoelementos /es/docs/Web/CSS/Pseudo-elements +/es/docs/Web/CSS/Referencia_CSS /es/docs/Web/CSS/Reference /es/docs/Web/CSS/Referencia_CSS/Extensiones_CSS_Mozilla /es/docs/Web/CSS/Mozilla_Extensions /es/docs/Web/CSS/Referencia_CSS/Extensiones_Mozilla /es/docs/Web/CSS/Mozilla_Extensions /es/docs/Web/CSS/Referencia_CSS/background-blend-mode /es/docs/Web/CSS/background-blend-mode -/es/docs/Web/CSS/Usando_animaciones_CSS /es/docs/Web/CSS/CSS_Animations/Usando_animaciones_CSS +/es/docs/Web/CSS/Referencia_CSS/mix-blend-mode /es/docs/Web/CSS/mix-blend-mode +/es/docs/Web/CSS/Selectores_CSS /es/docs/Web/CSS/CSS_Selectors +/es/docs/Web/CSS/Selectores_CSS/Usando_la_pseudo-clase_:target_en_selectores /es/docs/Web/CSS/CSS_Selectors/Using_the_:target_pseudo-class_in_selectors +/es/docs/Web/CSS/Selectores_atributo /es/docs/Web/CSS/Attribute_selectors +/es/docs/Web/CSS/Selectores_hermanos_adyacentes /es/docs/Web/CSS/Adjacent_sibling_combinator +/es/docs/Web/CSS/Selectores_hermanos_generales /es/docs/Web/CSS/General_sibling_combinator +/es/docs/Web/CSS/Sintaxis_definición_de_valor /es/docs/Web/CSS/Value_definition_syntax +/es/docs/Web/CSS/Texto_CSS /es/docs/Web/CSS/CSS_Text +/es/docs/Web/CSS/Transiciones_de_CSS /es/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions +/es/docs/Web/CSS/Usando_animaciones_CSS /es/docs/Web/CSS/CSS_Animations/Using_CSS_animations /es/docs/Web/CSS/Using_CSS_transforms /es/docs/Web/CSS/CSS_Transforms/Using_CSS_transforms /es/docs/Web/CSS/Using_CSS_variables /es/docs/Web/CSS/Using_CSS_custom_properties +/es/docs/Web/CSS/Valor_calculado /es/docs/Web/CSS/computed_value +/es/docs/Web/CSS/Valor_inicial /es/docs/Web/CSS/initial_value /es/docs/Web/CSS/after /es/docs/Web/CSS/::after /es/docs/Web/CSS/animacion-iteracion-cuenta /es/docs/Web/CSS/animation-iteration-count /es/docs/Web/CSS/animacion-nombre /es/docs/Web/CSS/animation-name /es/docs/Web/CSS/attr /es/docs/Web/CSS/attr() +/es/docs/Web/CSS/auto /es/docs/conflicting/Web/CSS/width /es/docs/Web/CSS/before /es/docs/Web/CSS/::before /es/docs/Web/CSS/calc /es/docs/Web/CSS/calc() /es/docs/Web/CSS/capacidad_de_animacion_de_propiedades_CSS /es/docs/Web/CSS -/es/docs/Web/CSS/computed_value /es/docs/Web/CSS/Valor_calculado +/es/docs/Web/CSS/cursor/Uso_de_URL_como_valor_de_la_propiedad_cursor /es/docs/Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property /es/docs/Web/CSS/env /es/docs/Web/CSS/env() /es/docs/Web/CSS/filter-function/blur /es/docs/Web/CSS/filter-function/blur() /es/docs/Web/CSS/filter-function/brightness /es/docs/Web/CSS/filter-function/brightness() +/es/docs/Web/CSS/filter-function/url /es/docs/Web/CSS/url() /es/docs/Web/CSS/filtro /es/docs/Web/CSS/filter +/es/docs/Web/CSS/grid-column-gap /es/docs/Web/CSS/column-gap +/es/docs/Web/CSS/grid-gap /es/docs/Web/CSS/gap /es/docs/Web/CSS/kerning /en-US/docs/Web/CSS/font-kerning /es/docs/Web/CSS/linear-gradient /es/docs/Web/CSS/linear-gradient() /es/docs/Web/CSS/min /es/docs/Web/CSS/min() /es/docs/Web/CSS/minmax /es/docs/Web/CSS/minmax() /es/docs/Web/CSS/none /es/docs/Web/CSS/float +/es/docs/Web/CSS/normal /es/docs/conflicting/Web/CSS/font-variant /es/docs/Web/CSS/padding_paspartu /es/docs/Web/CSS/padding +/es/docs/Web/CSS/porcentaje /es/docs/Web/CSS/percentage /es/docs/Web/CSS/radial-gradient /es/docs/Web/CSS/radial-gradient() /es/docs/Web/CSS/repeat /es/docs/Web/CSS/repeat() +/es/docs/Web/CSS/resolución /es/docs/Web/CSS/resolution +/es/docs/Web/CSS/rtl /es/docs/orphaned/Web/CSS/rtl /es/docs/Web/CSS/transform-function/rotate /es/docs/Web/CSS/transform-function/rotate() /es/docs/Web/CSS/transform-function/rotate3d /es/docs/Web/CSS/transform-function/rotate3d() /es/docs/Web/CSS/transform-function/scale /es/docs/Web/CSS/transform-function/scale() @@ -1485,49 +2003,285 @@ /es/docs/Web/CSS/transform-function/translateY /es/docs/Web/CSS/transform-function/translateY() /es/docs/Web/CSS/transform-function/translateZ /es/docs/Web/CSS/transform-function/translateZ() /es/docs/Web/CSS/var /es/docs/Web/CSS/var() +/es/docs/Web/Events/DOMContentLoaded /es/docs/Web/API/Window/DOMContentLoaded_event +/es/docs/Web/Events/abort /es/docs/Web/API/HTMLMediaElement/abort_event +/es/docs/Web/Events/animationend /es/docs/Web/API/HTMLElement/animationend_event +/es/docs/Web/Events/beforeunload /es/docs/Web/API/Window/beforeunload_event +/es/docs/Web/Events/blur /es/docs/Web/API/Element/blur_event /es/docs/Web/Events/canplay /es/docs/Web/API/HTMLMediaElement/canplay_event /es/docs/Web/Events/click /es/docs/Web/API/Element/click_event /es/docs/Web/Events/close_websocket /es/docs/Web/API/WebSocket/close_event /es/docs/Web/Events/dragover /es/docs/Web/API/Document/dragover_event /es/docs/Web/Events/hashchange /es/docs/Web/API/Window/hashchange_event /es/docs/Web/Events/keydown /es/docs/Web/API/Document/keydown_event +/es/docs/Web/Events/load /es/docs/Web/API/Window/load_event +/es/docs/Web/Events/loadend /es/docs/Web/API/XMLHttpRequest/loadend_event /es/docs/Web/Events/mousedown /es/docs/Web/API/Element/mousedown_event /es/docs/Web/Events/offline /es/docs/Web/API/Window/offline_event +/es/docs/Web/Events/pointerlockchange /es/docs/Web/API/Document/pointerlockchange_event /es/docs/Web/Events/scroll /es/docs/Web/API/Document/scroll_event /es/docs/Web/Events/tecla /es/docs/Web/API/Document/keyup_event /es/docs/Web/Events/timeupdate /es/docs/Web/API/HTMLMediaElement/timeupdate_event +/es/docs/Web/Events/transitioncancel /es/docs/Web/API/HTMLElement/transitioncancel_event +/es/docs/Web/Events/transitionend /es/docs/Web/API/HTMLElement/transitionend_event /es/docs/Web/Events/wheel /es/docs/Web/API/Element/wheel_event +/es/docs/Web/Guide/AJAX/Comunidad /es/docs/Web/Guide/AJAX/Community +/es/docs/Web/Guide/AJAX/Primeros_Pasos /es/docs/Web/Guide/AJAX/Getting_Started +/es/docs/Web/Guide/API/DOM/Events/Orientation_and_motion_data_explained/Orientation_and_motion_data_explained /es/docs/Web/Guide/Events/Orientation_and_motion_data_explained +/es/docs/Web/Guide/API/Vibration /es/docs/Web/API/Vibration_API /es/docs/Web/Guide/CSS /es/docs/Learn/CSS -/es/docs/Web/Guide/CSS/Cajas_flexibles /es/docs/Web/CSS/CSS_Flexible_Box_Layout/Usando_las_cajas_flexibles_CSS -/es/docs/Web/Guide/DOM/Events/Orientation_and_motion_data_explained /es/docs/Web/Guide/API/DOM/Events/Orientation_and_motion_data_explained/Orientation_and_motion_data_explained +/es/docs/Web/Guide/CSS/Cajas_flexibles /es/docs/conflicting/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox +/es/docs/Web/Guide/CSS/probando_media_queries /es/docs/Web/CSS/Media_Queries/Testing_media_queries +/es/docs/Web/Guide/DOM /es/docs/conflicting/Web/API/Document_Object_Model_656f0e51418b39c498011268be9b3a10 +/es/docs/Web/Guide/DOM/Events /es/docs/Web/Guide/Events +/es/docs/Web/Guide/DOM/Events/Creacion_y_Activación_Eventos /es/docs/Web/Guide/Events/Creating_and_triggering_events +/es/docs/Web/Guide/DOM/Events/Orientation_and_motion_data_explained /es/docs/Web/Guide/Events/Orientation_and_motion_data_explained +/es/docs/Web/Guide/DOM/Events/eventos_controlador /es/docs/Web/Guide/Events/Event_handlers /es/docs/Web/Guide/HTML /es/docs/Learn/HTML -/es/docs/Web/Guide/HTML/Forms /es/docs/Learn/HTML/Forms -/es/docs/Web/Guide/HTML/Forms/How_to_structure_an_HTML_form /es/docs/Learn/HTML/Forms/How_to_structure_an_HTML_form -/es/docs/Web/Guide/HTML/Forms/My_first_HTML_form /es/docs/Learn/HTML/Forms/Your_first_HTML_form -/es/docs/Web/Guide/HTML/Forms/Sending_and_retrieving_form_data /es/docs/Learn/HTML/Forms/Sending_and_retrieving_form_data -/es/docs/Web/Guide/HTML/Forms/Styling_HTML_forms /es/docs/Learn/HTML/Forms/Styling_HTML_forms -/es/docs/Web/Guide/HTML/Introduction_alhtml /es/docs/Learn/HTML/Introduccion_a_HTML -/es/docs/Web/HTML/Elemento/Audio2 /es/docs/Web/HTML/Elemento/audio -/es/docs/Web/HTML/Elemento/Progreso /es/docs/Web/HTML/Elemento/progress -/es/docs/Web/HTML/Elemento/etiqueta /es/docs/Web/HTML/Elemento/label -/es/docs/Web/HTML/Elemento/h2 /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/Web/HTML/Elemento/h3 /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/Web/HTML/Elemento/h4 /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/Web/HTML/Elemento/h5 /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/Web/HTML/Elemento/h6 /es/docs/Web/HTML/Elemento/Elementos_títulos -/es/docs/Web/HTML/Elemento/preformato /es/docs/Web/HTML/Elemento/pre +/es/docs/Web/Guide/HTML/Canvas_tutorial /es/docs/Web/API/Canvas_API/Tutorial +/es/docs/Web/Guide/HTML/Canvas_tutorial/Advanced_animations /es/docs/Web/API/Canvas_API/Tutorial/Advanced_animations +/es/docs/Web/Guide/HTML/Canvas_tutorial/Applying_styles_and_colors /es/docs/Web/API/Canvas_API/Tutorial/Applying_styles_and_colors +/es/docs/Web/Guide/HTML/Canvas_tutorial/Basic_animations /es/docs/Web/API/Canvas_API/Tutorial/Basic_animations +/es/docs/Web/Guide/HTML/Canvas_tutorial/Basic_usage /es/docs/Web/API/Canvas_API/Tutorial/Basic_usage +/es/docs/Web/Guide/HTML/Canvas_tutorial/Dibujando_formas /es/docs/Web/API/Canvas_API/Tutorial/Drawing_shapes +/es/docs/Web/Guide/HTML/Canvas_tutorial/Hit_regions_and_accessibility /es/docs/Web/API/Canvas_API/Tutorial/Hit_regions_and_accessibility +/es/docs/Web/Guide/HTML/Canvas_tutorial/Optimizing_canvas /es/docs/Web/API/Canvas_API/Tutorial/Optimizing_canvas +/es/docs/Web/Guide/HTML/Canvas_tutorial/Pixel_manipulation_with_canvas /es/docs/Web/API/Canvas_API/Tutorial/Pixel_manipulation_with_canvas +/es/docs/Web/Guide/HTML/Forms /es/docs/conflicting/Learn/Forms +/es/docs/Web/Guide/HTML/Forms/How_to_structure_an_HTML_form /es/docs/Learn/Forms/How_to_structure_a_web_form +/es/docs/Web/Guide/HTML/Forms/My_first_HTML_form /es/docs/Learn/Forms/Your_first_form +/es/docs/Web/Guide/HTML/Forms/Sending_and_retrieving_form_data /es/docs/Learn/Forms/Sending_and_retrieving_form_data +/es/docs/Web/Guide/HTML/Forms/Styling_HTML_forms /es/docs/Learn/Forms/Styling_web_forms +/es/docs/Web/Guide/HTML/Introduction_alhtml /es/docs/Learn/HTML/Introduction_to_HTML +/es/docs/Web/Guide/HTML/Introduction_alhtml_clone /es/docs/orphaned/Web/Guide/HTML/Introduction_alhtml_clone +/es/docs/Web/Guide/HTML/categorias_de_contenido /es/docs/Web/Guide/HTML/Content_categories +/es/docs/Web/Guide/Movil /es/docs/Web/Guide/Mobile +/es/docs/Web/Guide/Performance/Usando_web_workers /es/docs/Web/API/Web_Workers_API/Using_web_workers +/es/docs/Web/Guide/Usando_Objetos_FormData /es/docs/Web/API/FormData/Using_FormData_Objects +/es/docs/Web/HTML/Atributos /es/docs/Web/HTML/Attributes +/es/docs/Web/HTML/Atributos/accept /es/docs/Web/HTML/Attributes/accept +/es/docs/Web/HTML/Atributos/autocomplete /es/docs/Web/HTML/Attributes/autocomplete +/es/docs/Web/HTML/Atributos/min /es/docs/Web/HTML/Attributes/min +/es/docs/Web/HTML/Atributos/minlength /es/docs/Web/HTML/Attributes/minlength +/es/docs/Web/HTML/Atributos/multiple /es/docs/Web/HTML/Attributes/multiple +/es/docs/Web/HTML/Atributos_Globales /es/docs/Web/HTML/Global_attributes +/es/docs/Web/HTML/Atributos_Globales/accesskey /es/docs/Web/HTML/Global_attributes/accesskey +/es/docs/Web/HTML/Atributos_Globales/autocapitalize /es/docs/Web/HTML/Global_attributes/autocapitalize +/es/docs/Web/HTML/Atributos_Globales/class /es/docs/Web/HTML/Global_attributes/class +/es/docs/Web/HTML/Atributos_Globales/contenteditable /es/docs/Web/HTML/Global_attributes/contenteditable +/es/docs/Web/HTML/Atributos_Globales/contextmenu /es/docs/Web/HTML/Global_attributes/contextmenu +/es/docs/Web/HTML/Atributos_Globales/data-* /es/docs/Web/HTML/Global_attributes/data-* +/es/docs/Web/HTML/Atributos_Globales/dir /es/docs/Web/HTML/Global_attributes/dir +/es/docs/Web/HTML/Atributos_Globales/draggable /es/docs/Web/HTML/Global_attributes/draggable +/es/docs/Web/HTML/Atributos_Globales/dropzone /es/docs/orphaned/Web/HTML/Global_attributes/dropzone +/es/docs/Web/HTML/Atributos_Globales/hidden /es/docs/Web/HTML/Global_attributes/hidden +/es/docs/Web/HTML/Atributos_Globales/id /es/docs/Web/HTML/Global_attributes/id +/es/docs/Web/HTML/Atributos_Globales/is /es/docs/Web/HTML/Global_attributes/is +/es/docs/Web/HTML/Atributos_Globales/itemid /es/docs/Web/HTML/Global_attributes/itemid +/es/docs/Web/HTML/Atributos_Globales/itemprop /es/docs/Web/HTML/Global_attributes/itemprop +/es/docs/Web/HTML/Atributos_Globales/itemref /es/docs/Web/HTML/Global_attributes/itemref +/es/docs/Web/HTML/Atributos_Globales/itemscope /es/docs/Web/HTML/Global_attributes/itemscope +/es/docs/Web/HTML/Atributos_Globales/lang /es/docs/Web/HTML/Global_attributes/lang +/es/docs/Web/HTML/Atributos_Globales/slot /es/docs/Web/HTML/Global_attributes/slot +/es/docs/Web/HTML/Atributos_Globales/spellcheck /es/docs/Web/HTML/Global_attributes/spellcheck +/es/docs/Web/HTML/Atributos_Globales/style /es/docs/Web/HTML/Global_attributes/style +/es/docs/Web/HTML/Atributos_Globales/tabindex /es/docs/Web/HTML/Global_attributes/tabindex +/es/docs/Web/HTML/Atributos_Globales/title /es/docs/Web/HTML/Global_attributes/title +/es/docs/Web/HTML/Atributos_Globales/translate /es/docs/Web/HTML/Global_attributes/translate +/es/docs/Web/HTML/Atributos_Globales/x-ms-acceleratorkey /es/docs/Web/HTML/Global_attributes/x-ms-acceleratorkey +/es/docs/Web/HTML/Atributos_de_configuracion_CORS /es/docs/Web/HTML/Attributes/crossorigin +/es/docs/Web/HTML/Canvas /es/docs/Web/API/Canvas_API +/es/docs/Web/HTML/Canvas/A_basic_ray-caster /es/docs/Web/API/Canvas_API/A_basic_ray-caster +/es/docs/Web/HTML/Canvas/Drawing_graphics_with_canvas /es/docs/conflicting/Web/API/Canvas_API/Tutorial +/es/docs/Web/HTML/Consejos_para_la_creación_de_páginas_HTML_de_carga_rápida /es/docs/Learn/HTML/Howto/Author_fast-loading_HTML_pages +/es/docs/Web/HTML/Elemento /es/docs/Web/HTML/Element +/es/docs/Web/HTML/Elemento/Audio2 /es/docs/Web/HTML/Element/audio +/es/docs/Web/HTML/Elemento/Elementos_títulos /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/Web/HTML/Elemento/Etiqueta_Personalizada_HTML5 /es/docs/orphaned/Web/HTML/Elemento/Etiqueta_Personalizada_HTML5 +/es/docs/Web/HTML/Elemento/Progreso /es/docs/Web/HTML/Element/progress +/es/docs/Web/HTML/Elemento/Shadow /es/docs/Web/HTML/Element/shadow +/es/docs/Web/HTML/Elemento/Tipos_de_elementos /es/docs/orphaned/Web/HTML/Elemento/Tipos_de_elementos +/es/docs/Web/HTML/Elemento/a /es/docs/Web/HTML/Element/a +/es/docs/Web/HTML/Elemento/abbr /es/docs/Web/HTML/Element/abbr +/es/docs/Web/HTML/Elemento/acronym /es/docs/Web/HTML/Element/acronym +/es/docs/Web/HTML/Elemento/address /es/docs/Web/HTML/Element/address +/es/docs/Web/HTML/Elemento/applet /es/docs/Web/HTML/Element/applet +/es/docs/Web/HTML/Elemento/area /es/docs/Web/HTML/Element/area +/es/docs/Web/HTML/Elemento/article /es/docs/Web/HTML/Element/article +/es/docs/Web/HTML/Elemento/aside /es/docs/Web/HTML/Element/aside +/es/docs/Web/HTML/Elemento/audio /es/docs/Web/HTML/Element/audio +/es/docs/Web/HTML/Elemento/b /es/docs/Web/HTML/Element/b +/es/docs/Web/HTML/Elemento/base /es/docs/Web/HTML/Element/base +/es/docs/Web/HTML/Elemento/basefont /es/docs/Web/HTML/Element/basefont +/es/docs/Web/HTML/Elemento/bdi /es/docs/Web/HTML/Element/bdi +/es/docs/Web/HTML/Elemento/bdo /es/docs/Web/HTML/Element/bdo +/es/docs/Web/HTML/Elemento/bgsound /es/docs/Web/HTML/Element/bgsound +/es/docs/Web/HTML/Elemento/big /es/docs/Web/HTML/Element/big +/es/docs/Web/HTML/Elemento/blink /es/docs/Web/HTML/Element/blink +/es/docs/Web/HTML/Elemento/blockquote /es/docs/Web/HTML/Element/blockquote +/es/docs/Web/HTML/Elemento/body /es/docs/Web/HTML/Element/body +/es/docs/Web/HTML/Elemento/br /es/docs/Web/HTML/Element/br +/es/docs/Web/HTML/Elemento/button /es/docs/Web/HTML/Element/button +/es/docs/Web/HTML/Elemento/canvas /es/docs/Web/HTML/Element/canvas +/es/docs/Web/HTML/Elemento/caption /es/docs/Web/HTML/Element/caption +/es/docs/Web/HTML/Elemento/center /es/docs/Web/HTML/Element/center +/es/docs/Web/HTML/Elemento/cite /es/docs/Web/HTML/Element/cite +/es/docs/Web/HTML/Elemento/code /es/docs/Web/HTML/Element/code +/es/docs/Web/HTML/Elemento/col /es/docs/Web/HTML/Element/col +/es/docs/Web/HTML/Elemento/colgroup /es/docs/Web/HTML/Element/colgroup +/es/docs/Web/HTML/Elemento/command /es/docs/orphaned/Web/HTML/Element/command +/es/docs/Web/HTML/Elemento/content /es/docs/Web/HTML/Element/content +/es/docs/Web/HTML/Elemento/data /es/docs/Web/HTML/Element/data +/es/docs/Web/HTML/Elemento/datalist /es/docs/Web/HTML/Element/datalist +/es/docs/Web/HTML/Elemento/dd /es/docs/Web/HTML/Element/dd +/es/docs/Web/HTML/Elemento/del /es/docs/Web/HTML/Element/del +/es/docs/Web/HTML/Elemento/details /es/docs/Web/HTML/Element/details +/es/docs/Web/HTML/Elemento/dfn /es/docs/Web/HTML/Element/dfn +/es/docs/Web/HTML/Elemento/dialog /es/docs/Web/HTML/Element/dialog +/es/docs/Web/HTML/Elemento/dir /es/docs/Web/HTML/Element/dir +/es/docs/Web/HTML/Elemento/div /es/docs/Web/HTML/Element/div +/es/docs/Web/HTML/Elemento/dl /es/docs/Web/HTML/Element/dl +/es/docs/Web/HTML/Elemento/dt /es/docs/Web/HTML/Element/dt +/es/docs/Web/HTML/Elemento/element /es/docs/orphaned/Web/HTML/Element/element +/es/docs/Web/HTML/Elemento/em /es/docs/Web/HTML/Element/em +/es/docs/Web/HTML/Elemento/embed /es/docs/Web/HTML/Element/embed +/es/docs/Web/HTML/Elemento/etiqueta /es/docs/Web/HTML/Element/label +/es/docs/Web/HTML/Elemento/fieldset /es/docs/Web/HTML/Element/fieldset +/es/docs/Web/HTML/Elemento/figcaption /es/docs/Web/HTML/Element/figcaption +/es/docs/Web/HTML/Elemento/figure /es/docs/Web/HTML/Element/figure +/es/docs/Web/HTML/Elemento/font /es/docs/Web/HTML/Element/font +/es/docs/Web/HTML/Elemento/footer /es/docs/Web/HTML/Element/footer +/es/docs/Web/HTML/Elemento/form /es/docs/Web/HTML/Element/form +/es/docs/Web/HTML/Elemento/frame /es/docs/Web/HTML/Element/frame +/es/docs/Web/HTML/Elemento/frameset /es/docs/Web/HTML/Element/frameset +/es/docs/Web/HTML/Elemento/h2 /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/Web/HTML/Elemento/h3 /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/Web/HTML/Elemento/h4 /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/Web/HTML/Elemento/h5 /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/Web/HTML/Elemento/h6 /es/docs/Web/HTML/Element/Heading_Elements +/es/docs/Web/HTML/Elemento/head /es/docs/Web/HTML/Element/head +/es/docs/Web/HTML/Elemento/header /es/docs/Web/HTML/Element/header +/es/docs/Web/HTML/Elemento/hgroup /es/docs/Web/HTML/Element/hgroup +/es/docs/Web/HTML/Elemento/hr /es/docs/Web/HTML/Element/hr +/es/docs/Web/HTML/Elemento/html /es/docs/Web/HTML/Element/html +/es/docs/Web/HTML/Elemento/i /es/docs/Web/HTML/Element/i +/es/docs/Web/HTML/Elemento/iframe /es/docs/Web/HTML/Element/iframe +/es/docs/Web/HTML/Elemento/image /es/docs/Web/HTML/Element/image +/es/docs/Web/HTML/Elemento/img /es/docs/Web/HTML/Element/img +/es/docs/Web/HTML/Elemento/input /es/docs/Web/HTML/Element/input +/es/docs/Web/HTML/Elemento/input/Botón /es/docs/Web/HTML/Element/input/button +/es/docs/Web/HTML/Elemento/input/checkbox /es/docs/Web/HTML/Element/input/checkbox +/es/docs/Web/HTML/Elemento/input/color /es/docs/Web/HTML/Element/input/color +/es/docs/Web/HTML/Elemento/input/date /es/docs/Web/HTML/Element/input/date +/es/docs/Web/HTML/Elemento/input/datetime /es/docs/Web/HTML/Element/input/datetime +/es/docs/Web/HTML/Elemento/input/email /es/docs/Web/HTML/Element/input/email +/es/docs/Web/HTML/Elemento/input/hidden /es/docs/Web/HTML/Element/input/hidden +/es/docs/Web/HTML/Elemento/input/number /es/docs/Web/HTML/Element/input/number +/es/docs/Web/HTML/Elemento/input/password /es/docs/Web/HTML/Element/input/password +/es/docs/Web/HTML/Elemento/input/range /es/docs/Web/HTML/Element/input/range +/es/docs/Web/HTML/Elemento/input/text /es/docs/Web/HTML/Element/input/text +/es/docs/Web/HTML/Elemento/ins /es/docs/Web/HTML/Element/ins +/es/docs/Web/HTML/Elemento/isindex /es/docs/Web/HTML/Element/isindex +/es/docs/Web/HTML/Elemento/kbd /es/docs/Web/HTML/Element/kbd +/es/docs/Web/HTML/Elemento/keygen /es/docs/Web/HTML/Element/keygen +/es/docs/Web/HTML/Elemento/label /es/docs/Web/HTML/Element/label +/es/docs/Web/HTML/Elemento/legend /es/docs/Web/HTML/Element/legend +/es/docs/Web/HTML/Elemento/li /es/docs/Web/HTML/Element/li +/es/docs/Web/HTML/Elemento/link /es/docs/Web/HTML/Element/link +/es/docs/Web/HTML/Elemento/main /es/docs/Web/HTML/Element/main +/es/docs/Web/HTML/Elemento/map /es/docs/Web/HTML/Element/map +/es/docs/Web/HTML/Elemento/mark /es/docs/Web/HTML/Element/mark +/es/docs/Web/HTML/Elemento/marquee /es/docs/Web/HTML/Element/marquee +/es/docs/Web/HTML/Elemento/menu /es/docs/Web/HTML/Element/menu +/es/docs/Web/HTML/Elemento/meta /es/docs/Web/HTML/Element/meta +/es/docs/Web/HTML/Elemento/multicol /es/docs/Web/HTML/Element/multicol +/es/docs/Web/HTML/Elemento/nav /es/docs/Web/HTML/Element/nav +/es/docs/Web/HTML/Elemento/nobr /es/docs/Web/HTML/Element/nobr +/es/docs/Web/HTML/Elemento/noframes /es/docs/Web/HTML/Element/noframes +/es/docs/Web/HTML/Elemento/noscript /es/docs/Web/HTML/Element/noscript +/es/docs/Web/HTML/Elemento/object /es/docs/Web/HTML/Element/object +/es/docs/Web/HTML/Elemento/ol /es/docs/Web/HTML/Element/ol +/es/docs/Web/HTML/Elemento/option /es/docs/Web/HTML/Element/option +/es/docs/Web/HTML/Elemento/p /es/docs/Web/HTML/Element/p +/es/docs/Web/HTML/Elemento/param /es/docs/Web/HTML/Element/param +/es/docs/Web/HTML/Elemento/picture /es/docs/Web/HTML/Element/picture +/es/docs/Web/HTML/Elemento/pre /es/docs/Web/HTML/Element/pre +/es/docs/Web/HTML/Elemento/preformato /es/docs/Web/HTML/Element/pre +/es/docs/Web/HTML/Elemento/progress /es/docs/Web/HTML/Element/progress +/es/docs/Web/HTML/Elemento/q /es/docs/Web/HTML/Element/q +/es/docs/Web/HTML/Elemento/s /es/docs/Web/HTML/Element/s +/es/docs/Web/HTML/Elemento/samp /es/docs/Web/HTML/Element/samp +/es/docs/Web/HTML/Elemento/script /es/docs/Web/SVG/Element/script +/es/docs/Web/HTML/Elemento/section /es/docs/Web/HTML/Element/section +/es/docs/Web/HTML/Elemento/select /es/docs/Web/HTML/Element/select +/es/docs/Web/HTML/Elemento/slot /es/docs/Web/HTML/Element/slot +/es/docs/Web/HTML/Elemento/small /es/docs/Web/HTML/Element/small +/es/docs/Web/HTML/Elemento/source /es/docs/Web/HTML/Element/source +/es/docs/Web/HTML/Elemento/span /es/docs/Web/HTML/Element/span +/es/docs/Web/HTML/Elemento/strike /es/docs/Web/HTML/Element/strike +/es/docs/Web/HTML/Elemento/strong /es/docs/Web/HTML/Element/strong +/es/docs/Web/HTML/Elemento/style /es/docs/Web/HTML/Element/style +/es/docs/Web/HTML/Elemento/sub /es/docs/Web/HTML/Element/sub +/es/docs/Web/HTML/Elemento/sup /es/docs/Web/HTML/Element/sup +/es/docs/Web/HTML/Elemento/table /es/docs/Web/HTML/Element/table +/es/docs/Web/HTML/Elemento/td /es/docs/Web/HTML/Element/td +/es/docs/Web/HTML/Elemento/template /es/docs/Web/HTML/Element/template +/es/docs/Web/HTML/Elemento/textarea /es/docs/Web/HTML/Element/textarea +/es/docs/Web/HTML/Elemento/th /es/docs/Web/HTML/Element/th +/es/docs/Web/HTML/Elemento/time /es/docs/Web/HTML/Element/time +/es/docs/Web/HTML/Elemento/title /es/docs/Web/HTML/Element/title +/es/docs/Web/HTML/Elemento/tr /es/docs/Web/HTML/Element/tr +/es/docs/Web/HTML/Elemento/track /es/docs/Web/HTML/Element/track +/es/docs/Web/HTML/Elemento/tt /es/docs/Web/HTML/Element/tt +/es/docs/Web/HTML/Elemento/u /es/docs/Web/HTML/Element/u +/es/docs/Web/HTML/Elemento/ul /es/docs/Web/HTML/Element/ul +/es/docs/Web/HTML/Elemento/var /es/docs/Web/HTML/Element/var +/es/docs/Web/HTML/Elemento/video /es/docs/Web/HTML/Element/video /es/docs/Web/HTML/Elemento/video/canplay_event /es/docs/Web/API/HTMLMediaElement/canplay_event /es/docs/Web/HTML/Elemento/video/timeupdate_event /es/docs/Web/API/HTMLMediaElement/timeupdate_event +/es/docs/Web/HTML/Elemento/wbr /es/docs/Web/HTML/Element/wbr +/es/docs/Web/HTML/Elemento/xmp /es/docs/Web/HTML/Element/xmp +/es/docs/Web/HTML/Elementos_en_línea /es/docs/Web/HTML/Inline_elements +/es/docs/Web/HTML/Formatos_admitidos_de_audio_y_video_en_html5 /es/docs/conflicting/Web/Media/Formats /es/docs/Web/HTML/Gestión_del_foco_en_HTML /es/docs/Web/API/Document/hasFocus +/es/docs/Web/HTML/Imagen_con_CORS_habilitado /es/docs/Web/HTML/CORS_enabled_image +/es/docs/Web/HTML/La_importancia_de_comentar_correctamente /es/docs/conflicting/Learn/HTML/Introduction_to_HTML/Getting_started +/es/docs/Web/HTML/Microdatos /es/docs/Web/HTML/Microdata +/es/docs/Web/HTML/Optimizing_your_pages_for_speculative_parsing /es/docs/Glossary/speculative_parsing +/es/docs/Web/HTML/Recursos_offline_en_firefox /es/docs/Web/HTML/Using_the_application_cache +/es/docs/Web/HTML/Referencia /es/docs/Web/HTML/Reference +/es/docs/Web/HTML/Tipos_de_enlaces /es/docs/Web/HTML/Link_types +/es/docs/Web/HTML/Transision_adaptativa_DASH /es/docs/Web/Media/DASH_Adaptive_Streaming_for_HTML_5_Video +/es/docs/Web/HTML/Usando_audio_y_video_con_HTML5 /es/docs/conflicting/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content +/es/docs/Web/HTML/anipular_video_por_medio_de_canvas /es/docs/Web/API/Canvas_API/Manipulating_video_using_canvas +/es/docs/Web/HTML/microformatos /es/docs/Web/HTML/microformats +/es/docs/Web/HTML/Índice /es/docs/Web/HTML/Index +/es/docs/Web/HTTP/Access_control_CORS /es/docs/Web/HTTP/CORS +/es/docs/Web/HTTP/Basics_of_HTTP/Datos_URIs /es/docs/Web/HTTP/Basics_of_HTTP/Data_URIs +/es/docs/Web/HTTP/Basics_of_HTTP/Identificación_recursos_en_la_Web /es/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web /es/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Lista_completa_de_tipos_MIME /es/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types -/es/docs/Web/JavaScript/Guide/AcercaDe /es/docs/Web/JavaScript/Guide/Introducción +/es/docs/Web/HTTP/Gestion_de_la_conexion_en_HTTP_1.x /es/docs/Web/HTTP/Connection_management_in_HTTP_1.x +/es/docs/Web/HTTP/Peticiones_condicionales /es/docs/Web/HTTP/Conditional_requests +/es/docs/Web/HTTP/Sesión /es/docs/Web/HTTP/Session +/es/docs/Web/HTTP/Status/8080 /es/docs/Web/HTTP/Status/413 +/es/docs/Web/HTTP/mecanismo_actualizacion_protocolo /es/docs/Web/HTTP/Protocol_upgrade_mechanism +/es/docs/Web/HTTP/recursos_y_especificaciones /es/docs/Web/HTTP/Resources_and_specifications +/es/docs/Web/JavaScript/Acerca_de_JavaScript /es/docs/Web/JavaScript/About_JavaScript +/es/docs/Web/JavaScript/Descripción_de_las_tecnologías_JavaScript /es/docs/Web/JavaScript/JavaScript_technologies_overview +/es/docs/Web/JavaScript/Gestion_de_Memoria /es/docs/Web/JavaScript/Memory_Management +/es/docs/Web/JavaScript/Guide/AcercaDe /es/docs/Web/JavaScript/Guide/Introduction +/es/docs/Web/JavaScript/Guide/Bucles_e_iteración /es/docs/Web/JavaScript/Guide/Loops_and_iteration /es/docs/Web/JavaScript/Guide/Closures /es/docs/Web/JavaScript/Closures -/es/docs/Web/JavaScript/Guide/JavaScript_Overview /es/docs/Web/JavaScript/Guide/Introducción +/es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores /es/docs/Web/JavaScript/Guide/Control_flow_and_error_handling +/es/docs/Web/JavaScript/Guide/Funciones /es/docs/Web/JavaScript/Guide/Functions +/es/docs/Web/JavaScript/Guide/Introducción /es/docs/Web/JavaScript/Guide/Introduction +/es/docs/Web/JavaScript/Guide/JavaScript_Overview /es/docs/Web/JavaScript/Guide/Introduction +/es/docs/Web/JavaScript/Guide/Módulos /es/docs/Web/JavaScript/Guide/Modules /es/docs/Web/JavaScript/Guide/Obsolete_Pages /es/docs/Web/JavaScript/Guide /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5 /es/docs/Web/JavaScript/Guide -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Acerca_de_esta_guía /es/docs/Web/JavaScript/Guide/Introducción -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Concepto_de_JavaScript /es/docs/Web/JavaScript/Guide/Introducción -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Constantes /es/docs/Web/JavaScript/Referencia/Sentencias/const +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Acerca_de_esta_guía /es/docs/Web/JavaScript/Guide/Introduction +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Concepto_de_JavaScript /es/docs/Web/JavaScript/Guide/Introduction +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Constantes /es/docs/Web/JavaScript/Reference/Statements/const /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Constructores_más_flexibles /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Constructores_mas_flexibles /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Crear_nuevos_objetos /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#Creando_nuevos_objetos /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Crear_nuevos_objetos/Borrando_propiedades /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#Eliminando_propiedades @@ -1540,7 +2294,7 @@ /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Crear_nuevos_objetos/Using_Object_Initializers /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#El_uso_de_inicializadores_de_objeto /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Crear_nuevos_objetos/Utilizando_Objetos_Iniciadores /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#El_uso_de_inicializadores_de_objeto /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Crear_una_expresión_regular /es/docs/Web/JavaScript/Guide/Regular_Expressions -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Definiendo_Funciones /es/docs/Web/JavaScript/Guide/Funciones +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Definiendo_Funciones /es/docs/Web/JavaScript/Guide/Functions /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/El_ejemplo_Empleado /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Ejemplo.3A_employee /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/El_ejemplo_Employee /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Ejemplo.3A_employee /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/El_ejemplo_Employee/Creando_la_jerarquía /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Creacion_de_la_jerarquia @@ -1566,15 +2320,15 @@ /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Más_sobre_la_herencia_de_propiedades/Herencia_no_múltiple /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#No_existe_herencia_multiple /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Más_sobre_la_herencia_de_propiedades/Información_global_en_los_constructores /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Informacion_global_en_los_constructores /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Más_sobre_la_herencia_de_propiedades/Valores_locales_frente_a_los_heredados /es/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Valores_locales_frente_a_valores_heredados -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos /es/docs/Web/JavaScript/Referencia -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Array /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Boolean /es/docs/Web/JavaScript/Referencia/Objetos_globales/Boolean -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Date /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Function /es/docs/Web/JavaScript/Referencia/Objetos_globales/Function -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Math /es/docs/Web/JavaScript/Referencia/Objetos_globales/Math -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Number /es/docs/Web/JavaScript/Referencia/Objetos_globales/Number -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_RegExp /es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_String /es/docs/Web/JavaScript/Referencia/Objetos_globales/String +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos /es/docs/Web/JavaScript/Reference +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Array /es/docs/Web/JavaScript/Reference/Global_Objects/Array +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Boolean /es/docs/Web/JavaScript/Reference/Global_Objects/Boolean +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Date /es/docs/Web/JavaScript/Reference/Global_Objects/Date +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Function /es/docs/Web/JavaScript/Reference/Global_Objects/Function +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Math /es/docs/Web/JavaScript/Reference/Global_Objects/Math +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_Number /es/docs/Web/JavaScript/Reference/Global_Objects/Number +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_RegExp /es/docs/Web/JavaScript/Reference/Global_Objects/RegExp +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_base_predefinidos/Objeto_String /es/docs/Web/JavaScript/Reference/Global_Objects/String /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Objetos_y_propiedades /es/docs/Web/JavaScript/Guide/Trabajando_con_objectos#Objetos_y_propiedades /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Operadores /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operadores /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Operadores/Operadores_aritméticos /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operadores_aritm.C3.A9ticos @@ -1584,10 +2338,10 @@ /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Operadores/Operadores_especiales /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Special_operators /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Operadores/Operadores_lógicos /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operadores_l.C3.B3gicos /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Operadores/Operadores_sobre_bits /es/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operadores_Bit-a-bit -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Predefined_Functions /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Predefined_Functions/eval_Function /es/docs/Web/JavaScript/Referencia/Objetos_globales/eval +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Predefined_Functions /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Predefined_Functions/eval_Function /es/docs/Web/JavaScript/Reference/Global_Objects/eval /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Sentencia_condicional /es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores#Condicionales -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Sentencia_de_bloque /es/docs/Web/JavaScript/Referencia/Sentencias/block +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Sentencia_de_bloque /es/docs/Web/JavaScript/Reference/Statements/block /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Sentencias_de_manejo_de_excepciones /es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores#Utilizing_Error_objects /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Sentencias_de_manejo_de_excepciones/throw /es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores#throw_statement /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Sentencias_de_manejo_de_excepciones/try...catch /es/docs/Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores#try...catch_statement @@ -1598,193 +2352,703 @@ /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Trabajar_con_expresiones_regulares/Ejemplos_de_expresiones_regulares /es/docs/Web/JavaScript/Guide/Regular_Expressions /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Trabajar_con_expresiones_regulares/Usar_coincidencias_de_subcadenas_parentizadas /es/docs/Web/JavaScript/Guide/Regular_Expressions /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Unicode /en-US/docs/Web/JavaScript/Reference/Lexical_grammar -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Usando_el_objeto_arguments /es/docs/Web/JavaScript/Guide/Funciones -/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Using_the_arguments_object /es/docs/Web/JavaScript/Guide/Funciones +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Usando_el_objeto_arguments /es/docs/Web/JavaScript/Guide/Functions +/es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Using_the_arguments_object /es/docs/Web/JavaScript/Guide/Functions /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Valores /es/docs/Web/JavaScript/Guide/Grammar_and_types /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Guía_JavaScript_1.5/Variables /es/docs/Web/JavaScript/Guide/Grammar_and_types /es/docs/Web/JavaScript/Guide/Obsolete_Pages/Predefined_Functions /en-US/docs/Web/JavaScript/Guide/Functions /es/docs/Web/JavaScript/Guide/Obsolete_Pages/The_Employee_Example /en-US/docs/Web/JavaScript/Guide/Details_of_the_Object_Model +/es/docs/Web/JavaScript/Guide/Regular_Expressions/Aserciones /es/docs/Web/JavaScript/Guide/Regular_Expressions/Assertions +/es/docs/Web/JavaScript/Guide/Regular_Expressions/Clases_de_caracteres /es/docs/Web/JavaScript/Guide/Regular_Expressions/Character_Classes +/es/docs/Web/JavaScript/Guide/Regular_Expressions/Cuantificadores /es/docs/Web/JavaScript/Guide/Regular_Expressions/Quantifiers +/es/docs/Web/JavaScript/Guide/Regular_Expressions/Escapes_de_propiedades_Unicode /es/docs/Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes +/es/docs/Web/JavaScript/Guide/Regular_Expressions/Grupos_y_rangos /es/docs/Web/JavaScript/Guide/Regular_Expressions/Groups_and_Ranges +/es/docs/Web/JavaScript/Guide/Regular_Expressions/Hoja_de_referencia /es/docs/Web/JavaScript/Guide/Regular_Expressions/Cheatsheet +/es/docs/Web/JavaScript/Guide/Trabajando_con_objectos /es/docs/Web/JavaScript/Guide/Working_with_Objects +/es/docs/Web/JavaScript/Guide/Usar_promesas /es/docs/Web/JavaScript/Guide/Using_promises /es/docs/Web/JavaScript/Guide/Valores,_variables_y_literales /es/docs/Web/JavaScript/Guide/Grammar_and_types +/es/docs/Web/JavaScript/Guide/colecciones_indexadas /es/docs/Web/JavaScript/Guide/Indexed_collections +/es/docs/Web/JavaScript/Herencia_y_la_cadena_de_protipos /es/docs/Web/JavaScript/Inheritance_and_the_prototype_chain +/es/docs/Web/JavaScript/Introducción_a_JavaScript_orientado_a_objetos /es/docs/conflicting/Learn/JavaScript/Objects +/es/docs/Web/JavaScript/Introduction_to_using_XPath_in_JavaScript /es/docs/Web/XPath/Introduction_to_using_XPath_in_JavaScript /es/docs/Web/JavaScript/New_in_JavaScript /es/docs/Web/JavaScript/Novedades_en_JavaScript /es/docs/Web/JavaScript/Primeros_Pasos /es/docs/Learn/Getting_started_with_the_web/JavaScript_basics -/es/docs/Web/JavaScript/Reference/Classes /es/docs/Web/JavaScript/Referencia/Classes -/es/docs/Web/JavaScript/Reference/Classes/static /es/docs/Web/JavaScript/Referencia/Classes/static -/es/docs/Web/JavaScript/Reference/Global_Objects/JSON /es/docs/Web/JavaScript/Referencia/Objetos_globales/JSON -/es/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify /es/docs/Web/JavaScript/Referencia/Objetos_globales/JSON/stringify -/es/docs/Web/JavaScript/Reference/Global_Objects/TypedArray /es/docs/Web/JavaScript/Referencia/Objetos_globales/TypedArray -/es/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/buffer /es/docs/Web/JavaScript/Referencia/Objetos_globales/TypedArray/buffer -/es/docs/Web/JavaScript/Reference/Statements /es/docs/Web/JavaScript/Referencia/Sentencias -/es/docs/Web/JavaScript/Reference/Statements/const /es/docs/Web/JavaScript/Referencia/Sentencias/const -/es/docs/Web/JavaScript/Referencia/Características_Despreciadas /es/docs/Web/JavaScript/Referencia/Características_Desaprobadas -/es/docs/Web/JavaScript/Referencia/Funciones/String /es/docs/Web/JavaScript/Referencia/Objetos_globales/String -/es/docs/Web/JavaScript/Referencia/Funciones_globales /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/Web/JavaScript/Referencia/Funciones_globales/Boolean /es/docs/Web/JavaScript/Referencia/Objetos_globales/Boolean -/es/docs/Web/JavaScript/Referencia/Funciones_globales/Date /es/docs/Web/JavaScript/Referencia/Objetos_globales/Date -/es/docs/Web/JavaScript/Referencia/Funciones_globales/Object /es/docs/Web/JavaScript/Referencia/Objetos_globales/Object -/es/docs/Web/JavaScript/Referencia/Funciones_globales/String /es/docs/Web/JavaScript/Referencia/Objetos_globales/String -/es/docs/Web/JavaScript/Referencia/Funciones_globales/decodeURI /es/docs/Web/JavaScript/Referencia/Objetos_globales/decodeURI -/es/docs/Web/JavaScript/Referencia/Funciones_globales/decodeURIComponent /es/docs/Web/JavaScript/Referencia/Objetos_globales/decodeURIComponent -/es/docs/Web/JavaScript/Referencia/Funciones_globales/encodeURI /es/docs/Web/JavaScript/Referencia/Objetos_globales/encodeURI -/es/docs/Web/JavaScript/Referencia/Funciones_globales/encodeURIComponent /es/docs/Web/JavaScript/Referencia/Objetos_globales/encodeURIComponent -/es/docs/Web/JavaScript/Referencia/Funciones_globales/isFinite /es/docs/Web/JavaScript/Referencia/Objetos_globales/isFinite -/es/docs/Web/JavaScript/Referencia/Funciones_globales/isNaN /es/docs/Web/JavaScript/Referencia/Objetos_globales/isNaN -/es/docs/Web/JavaScript/Referencia/Funciones_globales/parseInt /es/docs/Web/JavaScript/Referencia/Objetos_globales/parseInt -/es/docs/Web/JavaScript/Referencia/Methods_Index /es/docs/Web/JavaScript/Referencia -/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/flatten /es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/flat -/es/docs/Web/JavaScript/Referencia/Objetos_globales/NumberFormat /es/docs/Web/JavaScript/Referencia/Objetos_globales/Intl/NumberFormat -/es/docs/Web/JavaScript/Referencia/Objetos_globales/NumberFormat/format /es/docs/Web/JavaScript/Referencia/Objetos_globales/Intl/NumberFormat/format -/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promesa /es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise -/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promesa/all /es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise/all -/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promesa/race /es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise/race -/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/constructor /es/docs/Web/JavaScript/Referencia/Objetos_globales/String -/es/docs/Web/JavaScript/Referencia/Objetos_globales/decodeUR /es/docs/Web/JavaScript/Referencia/Objetos_globales/decodeURI -/es/docs/Web/JavaScript/Referencia/Objetos_globales/isFinite_ /es/docs/Web/JavaScript/Referencia/Objetos_globales/isFinite -/es/docs/Web/JavaScript/Referencia/Objetos_globlales /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/Web/JavaScript/Referencia/Operadores/Especiales /es/docs/Web/JavaScript/Referencia/Operadores -/es/docs/Web/JavaScript/Referencia/Operadores/Especiales/function /es/docs/Web/JavaScript/Referencia/Operadores/function -/es/docs/Web/JavaScript/Referencia/Operadores/Operadores_especiales /es/docs/Web/JavaScript/Referencia/Operadores -/es/docs/Web/JavaScript/Referencia/Operadores/Operadores_especiales/Operador_this /es/docs/Web/JavaScript/Referencia/Operadores/this -/es/docs/Web/JavaScript/Referencia/Operadores/String /es/docs/Web/JavaScript/Referencia/Operadores/Aritméticos -/es/docs/Web/JavaScript/Referencia/Operadores/get /es/docs/Web/JavaScript/Referencia/Funciones/get -/es/docs/Web/JavaScript/Referencia/Properties_Index /es/docs/Web/JavaScript/Referencia -/es/docs/Web/JavaScript/Referencia/Propiedades_globales /es/docs/Web/JavaScript/Referencia/Objetos_globales -/es/docs/Web/JavaScript/Referencia/Propiedades_globales/Infinity /es/docs/Web/JavaScript/Referencia/Objetos_globales/Infinity -/es/docs/Web/JavaScript/Referencia/Propiedades_globales/NaN /es/docs/Web/JavaScript/Referencia/Objetos_globales/NaN -/es/docs/Web/JavaScript/Referencia/Propiedades_globales/undefined /es/docs/Web/JavaScript/Referencia/Objetos_globales/undefined -/es/docs/Web/JavaScript/Una_nueva_introducción_a_JavaScript /es/docs/Web/JavaScript/Una_re-introducción_a_JavaScript +/es/docs/Web/JavaScript/Reference/Errors/Falta_puntoycoma_antes_de_declaracion /es/docs/Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement +/es/docs/Web/JavaScript/Reference/Errors/Indicador_regexp_no-val /es/docs/Web/JavaScript/Reference/Errors/Bad_regexp_flag +/es/docs/Web/JavaScript/Reference/Errors/Strict_y_parámetros_complejos /es/docs/Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params +/es/docs/Web/JavaScript/Reference/Errors/caracter_ilegal /es/docs/Web/JavaScript/Reference/Errors/Illegal_character +/es/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler /es/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy +/es/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/getOwnPropertyDescriptor /es/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor +/es/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/set /es/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set +/es/docs/Web/JavaScript/Reference/Global_Objects/RangeError/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/RangeError +/es/docs/Web/JavaScript/Referencia /es/docs/Web/JavaScript/Reference +/es/docs/Web/JavaScript/Referencia/Acerca_de /es/docs/Web/JavaScript/Reference/About +/es/docs/Web/JavaScript/Referencia/Características_Desaprobadas /es/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features +/es/docs/Web/JavaScript/Referencia/Características_Desaprobadas/The_legacy_Iterator_protocol /es/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features/The_legacy_Iterator_protocol +/es/docs/Web/JavaScript/Referencia/Características_Despreciadas /es/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features +/es/docs/Web/JavaScript/Referencia/Classes /es/docs/Web/JavaScript/Reference/Classes +/es/docs/Web/JavaScript/Referencia/Classes/Class_fields /es/docs/Web/JavaScript/Reference/Classes/Public_class_fields +/es/docs/Web/JavaScript/Referencia/Classes/Private_class_fields /es/docs/Web/JavaScript/Reference/Classes/Private_class_fields +/es/docs/Web/JavaScript/Referencia/Classes/constructor /es/docs/Web/JavaScript/Reference/Classes/constructor +/es/docs/Web/JavaScript/Referencia/Classes/extends /es/docs/Web/JavaScript/Reference/Classes/extends +/es/docs/Web/JavaScript/Referencia/Classes/static /es/docs/Web/JavaScript/Reference/Classes/static +/es/docs/Web/JavaScript/Referencia/Funciones /es/docs/Web/JavaScript/Reference/Functions +/es/docs/Web/JavaScript/Referencia/Funciones/Arrow_functions /es/docs/Web/JavaScript/Reference/Functions/Arrow_functions +/es/docs/Web/JavaScript/Referencia/Funciones/Method_definitions /es/docs/Web/JavaScript/Reference/Functions/Method_definitions +/es/docs/Web/JavaScript/Referencia/Funciones/Parametros_por_defecto /es/docs/Web/JavaScript/Reference/Functions/Default_parameters +/es/docs/Web/JavaScript/Referencia/Funciones/String /es/docs/Web/JavaScript/Reference/Global_Objects/String +/es/docs/Web/JavaScript/Referencia/Funciones/arguments /es/docs/Web/JavaScript/Reference/Functions/arguments +/es/docs/Web/JavaScript/Referencia/Funciones/arguments/callee /es/docs/Web/JavaScript/Reference/Functions/arguments/callee +/es/docs/Web/JavaScript/Referencia/Funciones/arguments/length /es/docs/Web/JavaScript/Reference/Functions/arguments/length +/es/docs/Web/JavaScript/Referencia/Funciones/get /es/docs/Web/JavaScript/Reference/Functions/get +/es/docs/Web/JavaScript/Referencia/Funciones/parametros_rest /es/docs/Web/JavaScript/Reference/Functions/rest_parameters +/es/docs/Web/JavaScript/Referencia/Funciones/set /es/docs/Web/JavaScript/Reference/Functions/set +/es/docs/Web/JavaScript/Referencia/Funciones_globales /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/Web/JavaScript/Referencia/Funciones_globales/Boolean /es/docs/Web/JavaScript/Reference/Global_Objects/Boolean +/es/docs/Web/JavaScript/Referencia/Funciones_globales/Date /es/docs/Web/JavaScript/Reference/Global_Objects/Date +/es/docs/Web/JavaScript/Referencia/Funciones_globales/Object /es/docs/Web/JavaScript/Reference/Global_Objects/Object +/es/docs/Web/JavaScript/Referencia/Funciones_globales/String /es/docs/Web/JavaScript/Reference/Global_Objects/String +/es/docs/Web/JavaScript/Referencia/Funciones_globales/decodeURI /es/docs/Web/JavaScript/Reference/Global_Objects/decodeURI +/es/docs/Web/JavaScript/Referencia/Funciones_globales/decodeURIComponent /es/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent +/es/docs/Web/JavaScript/Referencia/Funciones_globales/encodeURI /es/docs/Web/JavaScript/Reference/Global_Objects/encodeURI +/es/docs/Web/JavaScript/Referencia/Funciones_globales/encodeURIComponent /es/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent +/es/docs/Web/JavaScript/Referencia/Funciones_globales/isFinite /es/docs/Web/JavaScript/Reference/Global_Objects/isFinite +/es/docs/Web/JavaScript/Referencia/Funciones_globales/isNaN /es/docs/Web/JavaScript/Reference/Global_Objects/isNaN +/es/docs/Web/JavaScript/Referencia/Funciones_globales/parseInt /es/docs/Web/JavaScript/Reference/Global_Objects/parseInt +/es/docs/Web/JavaScript/Referencia/Gramatica_lexica /es/docs/Web/JavaScript/Reference/Lexical_grammar +/es/docs/Web/JavaScript/Referencia/Iteration_protocols /es/docs/Web/JavaScript/Reference/Iteration_protocols +/es/docs/Web/JavaScript/Referencia/Methods_Index /es/docs/Web/JavaScript/Reference +/es/docs/Web/JavaScript/Referencia/Modo_estricto /es/docs/Web/JavaScript/Reference/Strict_mode +/es/docs/Web/JavaScript/Referencia/Objetos_globales /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/Web/JavaScript/Referencia/Objetos_globales/AggregateError /es/docs/Web/JavaScript/Reference/Global_Objects/AggregateError +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array /es/docs/Web/JavaScript/Reference/Global_Objects/Array +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/@@iterator /es/docs/Web/JavaScript/Reference/Global_Objects/Array/@@iterator +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/@@species /es/docs/Web/JavaScript/Reference/Global_Objects/Array/@@species +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/@@unscopables /es/docs/Web/JavaScript/Reference/Global_Objects/Array/@@unscopables +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/concat /es/docs/Web/JavaScript/Reference/Global_Objects/Array/concat +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/copyWithin /es/docs/Web/JavaScript/Reference/Global_Objects/Array/copyWithin +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/entries /es/docs/Web/JavaScript/Reference/Global_Objects/Array/entries +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/every /es/docs/Web/JavaScript/Reference/Global_Objects/Array/every +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/fill /es/docs/Web/JavaScript/Reference/Global_Objects/Array/fill +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/filter /es/docs/Web/JavaScript/Reference/Global_Objects/Array/filter +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/find /es/docs/Web/JavaScript/Reference/Global_Objects/Array/find +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/findIndex /es/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/flat /es/docs/Web/JavaScript/Reference/Global_Objects/Array/flat +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/flatMap /es/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/flatten /es/docs/Web/JavaScript/Reference/Global_Objects/Array/flat +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/forEach /es/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/from /es/docs/Web/JavaScript/Reference/Global_Objects/Array/from +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/includes /es/docs/Web/JavaScript/Reference/Global_Objects/Array/includes +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/indexOf /es/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/isArray /es/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/join /es/docs/Web/JavaScript/Reference/Global_Objects/Array/join +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/keys /es/docs/Web/JavaScript/Reference/Global_Objects/Array/keys +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/lastIndexOf /es/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/length /es/docs/Web/JavaScript/Reference/Global_Objects/Array/length +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/map /es/docs/Web/JavaScript/Reference/Global_Objects/Array/map +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/of /es/docs/Web/JavaScript/Reference/Global_Objects/Array/of +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/pop /es/docs/Web/JavaScript/Reference/Global_Objects/Array/pop +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/prototype /es/docs/orphaned/Web/JavaScript/Reference/Global_Objects/Array/prototype +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/push /es/docs/Web/JavaScript/Reference/Global_Objects/Array/push +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/reduce /es/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/reduceRight /es/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/reverse /es/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/shift /es/docs/Web/JavaScript/Reference/Global_Objects/Array/shift +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/slice /es/docs/Web/JavaScript/Reference/Global_Objects/Array/slice +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/some /es/docs/Web/JavaScript/Reference/Global_Objects/Array/some +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/sort /es/docs/Web/JavaScript/Reference/Global_Objects/Array/sort +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/splice /es/docs/Web/JavaScript/Reference/Global_Objects/Array/splice +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/toLocaleString /es/docs/Web/JavaScript/Reference/Global_Objects/Array/toLocaleString +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/toSource /es/docs/Web/JavaScript/Reference/Global_Objects/Array/toSource +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/toString /es/docs/Web/JavaScript/Reference/Global_Objects/Array/toString +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/unshift /es/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/values /es/docs/Web/JavaScript/Reference/Global_Objects/Array/values +/es/docs/Web/JavaScript/Referencia/Objetos_globales/ArrayBuffer /es/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer +/es/docs/Web/JavaScript/Referencia/Objetos_globales/ArrayBuffer/@@species /es/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/@@species +/es/docs/Web/JavaScript/Referencia/Objetos_globales/ArrayBuffer/byteLength /es/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/byteLength +/es/docs/Web/JavaScript/Referencia/Objetos_globales/ArrayBuffer/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/ArrayBuffer +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Boolean /es/docs/Web/JavaScript/Reference/Global_Objects/Boolean +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Boolean/Boolean /es/docs/Web/JavaScript/Reference/Global_Objects/Boolean/Boolean +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Boolean/toSource /es/docs/Web/JavaScript/Reference/Global_Objects/Boolean/toSource +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date /es/docs/Web/JavaScript/Reference/Global_Objects/Date +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/UTC /es/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/getDate /es/docs/Web/JavaScript/Reference/Global_Objects/Date/getDate +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/getDay /es/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/getFullYear /es/docs/Web/JavaScript/Reference/Global_Objects/Date/getFullYear +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/getHours /es/docs/Web/JavaScript/Reference/Global_Objects/Date/getHours +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/getMilliseconds /es/docs/Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/getMinutes /es/docs/Web/JavaScript/Reference/Global_Objects/Date/getMinutes +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/getMonth /es/docs/Web/JavaScript/Reference/Global_Objects/Date/getMonth +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/getSeconds /es/docs/Web/JavaScript/Reference/Global_Objects/Date/getSeconds +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/getTime /es/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/getUTCFullYear /es/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/getUTCHours /es/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCHours +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/now /es/docs/Web/JavaScript/Reference/Global_Objects/Date/now +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/parse /es/docs/Web/JavaScript/Reference/Global_Objects/Date/parse +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Date +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/setFullYear /es/docs/Web/JavaScript/Reference/Global_Objects/Date/setFullYear +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/setMonth /es/docs/Web/JavaScript/Reference/Global_Objects/Date/setMonth +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/toDateString /es/docs/Web/JavaScript/Reference/Global_Objects/Date/toDateString +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/toISOString /es/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/toJSON /es/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/toLocaleDateString /es/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/toLocaleString /es/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/toLocaleTimeString /es/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date/toUTCString /es/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Error /es/docs/Web/JavaScript/Reference/Global_Objects/Error +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Error/constructor_Error /es/docs/Web/JavaScript/Reference/Global_Objects/Error/Error +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Error/fileName /es/docs/Web/JavaScript/Reference/Global_Objects/Error/fileName +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Error/lineNumber /es/docs/Web/JavaScript/Reference/Global_Objects/Error/lineNumber +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Error/message /es/docs/Web/JavaScript/Reference/Global_Objects/Error/message +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Error/name /es/docs/Web/JavaScript/Reference/Global_Objects/Error/name +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Error/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Error +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Error/toSource /es/docs/Web/JavaScript/Reference/Global_Objects/Error/toSource +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Error/toString /es/docs/Web/JavaScript/Reference/Global_Objects/Error/toString +/es/docs/Web/JavaScript/Referencia/Objetos_globales/EvalError /es/docs/Web/JavaScript/Reference/Global_Objects/EvalError +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Funcionesasíncronas /es/docs/Web/JavaScript/Reference/Global_Objects/AsyncFunction +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Function /es/docs/Web/JavaScript/Reference/Global_Objects/Function +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/Función /es/docs/Web/JavaScript/Reference/Global_Objects/Function/Function +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/apply /es/docs/Web/JavaScript/Reference/Global_Objects/Function/apply +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/arguments /es/docs/Web/JavaScript/Reference/Global_Objects/Function/arguments +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/bind /es/docs/Web/JavaScript/Reference/Global_Objects/Function/bind +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/call /es/docs/Web/JavaScript/Reference/Global_Objects/Function/call +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/caller /es/docs/Web/JavaScript/Reference/Global_Objects/Function/caller +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/displayName /es/docs/Web/JavaScript/Reference/Global_Objects/Function/displayName +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/length /es/docs/Web/JavaScript/Reference/Global_Objects/Function/length +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/name /es/docs/Web/JavaScript/Reference/Global_Objects/Function/name +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Function +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/toSource /es/docs/Web/JavaScript/Reference/Global_Objects/Function/toSource +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Function/toString /es/docs/Web/JavaScript/Reference/Global_Objects/Function/toString +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Generador /es/docs/Web/JavaScript/Reference/Global_Objects/Generator +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Generador/next /es/docs/Web/JavaScript/Reference/Global_Objects/Generator/next +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Generador/return /es/docs/Web/JavaScript/Reference/Global_Objects/Generator/return +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Generador/throw /es/docs/Web/JavaScript/Reference/Global_Objects/Generator/throw +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Infinity /es/docs/Web/JavaScript/Reference/Global_Objects/Infinity +/es/docs/Web/JavaScript/Referencia/Objetos_globales/InternalError /es/docs/Web/JavaScript/Reference/Global_Objects/InternalError +/es/docs/Web/JavaScript/Referencia/Objetos_globales/InternalError/Constructor_InternalError /es/docs/Web/JavaScript/Reference/Global_Objects/InternalError/InternalError +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Intl /es/docs/Web/JavaScript/Reference/Global_Objects/Intl +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Intl/NumberFormat /es/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Intl/NumberFormat/format /es/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Intl/RelativeTimeFormat /es/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat +/es/docs/Web/JavaScript/Referencia/Objetos_globales/JSON /es/docs/Web/JavaScript/Reference/Global_Objects/JSON +/es/docs/Web/JavaScript/Referencia/Objetos_globales/JSON/parse /es/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse +/es/docs/Web/JavaScript/Referencia/Objetos_globales/JSON/stringify /es/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Map /es/docs/Web/JavaScript/Reference/Global_Objects/Map +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Map/clear /es/docs/Web/JavaScript/Reference/Global_Objects/Map/clear +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Map/delete /es/docs/Web/JavaScript/Reference/Global_Objects/Map/delete +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Map/entries /es/docs/Web/JavaScript/Reference/Global_Objects/Map/entries +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Map/forEach /es/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Map/get /es/docs/Web/JavaScript/Reference/Global_Objects/Map/get +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Map/has /es/docs/Web/JavaScript/Reference/Global_Objects/Map/has +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Map/keys /es/docs/Web/JavaScript/Reference/Global_Objects/Map/keys +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Map/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Map +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Map/set /es/docs/Web/JavaScript/Reference/Global_Objects/Map/set +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Map/size /es/docs/Web/JavaScript/Reference/Global_Objects/Map/size +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Map/values /es/docs/Web/JavaScript/Reference/Global_Objects/Map/values +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math /es/docs/Web/JavaScript/Reference/Global_Objects/Math +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/E /es/docs/Web/JavaScript/Reference/Global_Objects/Math/E +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/LN10 /es/docs/Web/JavaScript/Reference/Global_Objects/Math/LN10 +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/LN2 /es/docs/Web/JavaScript/Reference/Global_Objects/Math/LN2 +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/LOG10E /es/docs/Web/JavaScript/Reference/Global_Objects/Math/LOG10E +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/LOG2E /es/docs/Web/JavaScript/Reference/Global_Objects/Math/LOG2E +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/PI /es/docs/Web/JavaScript/Reference/Global_Objects/Math/PI +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/SQRT1_2 /es/docs/Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2 +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/SQRT2 /es/docs/Web/JavaScript/Reference/Global_Objects/Math/SQRT2 +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/abs /es/docs/Web/JavaScript/Reference/Global_Objects/Math/abs +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/acos /es/docs/Web/JavaScript/Reference/Global_Objects/Math/acos +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/acosh /es/docs/Web/JavaScript/Reference/Global_Objects/Math/acosh +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/asin /es/docs/Web/JavaScript/Reference/Global_Objects/Math/asin +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/asinh /es/docs/Web/JavaScript/Reference/Global_Objects/Math/asinh +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/atan /es/docs/Web/JavaScript/Reference/Global_Objects/Math/atan +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/atan2 /es/docs/Web/JavaScript/Reference/Global_Objects/Math/atan2 +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/atanh /es/docs/Web/JavaScript/Reference/Global_Objects/Math/atanh +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/cbrt /es/docs/Web/JavaScript/Reference/Global_Objects/Math/cbrt +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/ceil /es/docs/Web/JavaScript/Reference/Global_Objects/Math/ceil +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/cos /es/docs/Web/JavaScript/Reference/Global_Objects/Math/cos +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/exp /es/docs/Web/JavaScript/Reference/Global_Objects/Math/exp +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/expm1 /es/docs/Web/JavaScript/Reference/Global_Objects/Math/expm1 +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/floor /es/docs/Web/JavaScript/Reference/Global_Objects/Math/floor +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/fround /es/docs/Web/JavaScript/Reference/Global_Objects/Math/fround +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/hypot /es/docs/Web/JavaScript/Reference/Global_Objects/Math/hypot +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/log /es/docs/Web/JavaScript/Reference/Global_Objects/Math/log +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/log10 /es/docs/Web/JavaScript/Reference/Global_Objects/Math/log10 +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/log2 /es/docs/Web/JavaScript/Reference/Global_Objects/Math/log2 +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/max /es/docs/Web/JavaScript/Reference/Global_Objects/Math/max +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/min /es/docs/Web/JavaScript/Reference/Global_Objects/Math/min +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/pow /es/docs/Web/JavaScript/Reference/Global_Objects/Math/pow +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/random /es/docs/Web/JavaScript/Reference/Global_Objects/Math/random +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/round /es/docs/Web/JavaScript/Reference/Global_Objects/Math/round +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/seno /es/docs/Web/JavaScript/Reference/Global_Objects/Math/sin +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/sign /es/docs/Web/JavaScript/Reference/Global_Objects/Math/sign +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/sqrt /es/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrt +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/tan /es/docs/Web/JavaScript/Reference/Global_Objects/Math/tan +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/tanh /es/docs/Web/JavaScript/Reference/Global_Objects/Math/tanh +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/trunc /es/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc +/es/docs/Web/JavaScript/Referencia/Objetos_globales/NaN /es/docs/Web/JavaScript/Reference/Global_Objects/NaN +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number /es/docs/Web/JavaScript/Reference/Global_Objects/Number +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/MAX_SAFE_INTEGER /es/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/MAX_VALUE /es/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/MIN_VALUE /es/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/NEGATIVE_INFINITY /es/docs/Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/NaN /es/docs/Web/JavaScript/Reference/Global_Objects/Number/NaN +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/POSITIVE_INFINITY /es/docs/Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/isFinite /es/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/isInteger /es/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/isNaN /es/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/isSafeInteger /es/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/parseFloat /es/docs/Web/JavaScript/Reference/Global_Objects/Number/parseFloat +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/parseInt /es/docs/Web/JavaScript/Reference/Global_Objects/Number/parseInt +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Number +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/toFixed /es/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/toLocaleString /es/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/toPrecision /es/docs/Web/JavaScript/Reference/Global_Objects/Number/toPrecision +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/toString /es/docs/Web/JavaScript/Reference/Global_Objects/Number/toString +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Number/valueOf /es/docs/Web/JavaScript/Reference/Global_Objects/Number/valueOf +/es/docs/Web/JavaScript/Referencia/Objetos_globales/NumberFormat /es/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat +/es/docs/Web/JavaScript/Referencia/Objetos_globales/NumberFormat/format /es/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object /es/docs/Web/JavaScript/Reference/Global_Objects/Object +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/__defineGetter__ /es/docs/Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__ +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/__lookupGetter__ /es/docs/Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__ +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/assign /es/docs/Web/JavaScript/Reference/Global_Objects/Object/assign +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/constructor /es/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/create /es/docs/Web/JavaScript/Reference/Global_Objects/Object/create +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/defineProperties /es/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/defineProperty /es/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/entries /es/docs/Web/JavaScript/Reference/Global_Objects/Object/entries +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/freeze /es/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/fromEntries /es/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/getOwnPropertyDescriptor /es/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/getOwnPropertyDescriptors /es/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/getOwnPropertyNames /es/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/getOwnPropertySymbols /es/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/getPrototypeOf /es/docs/Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/hasOwnProperty /es/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/is /es/docs/Web/JavaScript/Reference/Global_Objects/Object/is +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/isExtensible /es/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/isFrozen /es/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/isPrototypeOf /es/docs/Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/isSealed /es/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/keys /es/docs/Web/JavaScript/Reference/Global_Objects/Object/keys +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/preventExtensions /es/docs/Web/JavaScript/Reference/Global_Objects/Object/preventExtensions +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/propertyIsEnumerable /es/docs/Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/proto /es/docs/Web/JavaScript/Reference/Global_Objects/Object/proto +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Object +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/seal /es/docs/Web/JavaScript/Reference/Global_Objects/Object/seal +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/setPrototypeOf /es/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/toLocaleString /es/docs/Web/JavaScript/Reference/Global_Objects/Object/toLocaleString +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/toSource /es/docs/Web/JavaScript/Reference/Global_Objects/Object/toSource +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/toString /es/docs/Web/JavaScript/Reference/Global_Objects/Object/toString +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/valueOf /es/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/values /es/docs/Web/JavaScript/Reference/Global_Objects/Object/values +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promesa /es/docs/Web/JavaScript/Reference/Global_Objects/Promise +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promesa/all /es/docs/Web/JavaScript/Reference/Global_Objects/Promise/all +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promesa/race /es/docs/Web/JavaScript/Reference/Global_Objects/Promise/race +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise /es/docs/Web/JavaScript/Reference/Global_Objects/Promise +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise/all /es/docs/Web/JavaScript/Reference/Global_Objects/Promise/all +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise/catch /es/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise/finally /es/docs/Web/JavaScript/Reference/Global_Objects/Promise/finally +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Promise +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise/race /es/docs/Web/JavaScript/Reference/Global_Objects/Promise/race +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise/reject /es/docs/Web/JavaScript/Reference/Global_Objects/Promise/reject +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise/resolve /es/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise/then /es/docs/Web/JavaScript/Reference/Global_Objects/Promise/then +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Proxy /es/docs/Web/JavaScript/Reference/Global_Objects/Proxy +/es/docs/Web/JavaScript/Referencia/Objetos_globales/ReferenceError /es/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError +/es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp /es/docs/Web/JavaScript/Reference/Global_Objects/RegExp +/es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp/RegExp /es/docs/Web/JavaScript/Reference/Global_Objects/RegExp/RegExp +/es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp/compile /es/docs/Web/JavaScript/Reference/Global_Objects/RegExp/compile +/es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp/exec /es/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec +/es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp/ignoreCase /es/docs/Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase +/es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp/rightContext /es/docs/Web/JavaScript/Reference/Global_Objects/RegExp/rightContext +/es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp/test /es/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test +/es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp/toString /es/docs/Web/JavaScript/Reference/Global_Objects/RegExp/toString +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Set /es/docs/Web/JavaScript/Reference/Global_Objects/Set +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Set/@@iterator /es/docs/Web/JavaScript/Reference/Global_Objects/Set/@@iterator +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Set/add /es/docs/Web/JavaScript/Reference/Global_Objects/Set/add +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Set/clear /es/docs/Web/JavaScript/Reference/Global_Objects/Set/clear +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Set/delete /es/docs/Web/JavaScript/Reference/Global_Objects/Set/delete +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Set/entries /es/docs/Web/JavaScript/Reference/Global_Objects/Set/entries +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Set/has /es/docs/Web/JavaScript/Reference/Global_Objects/Set/has +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Set/size /es/docs/Web/JavaScript/Reference/Global_Objects/Set/size +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Set/values /es/docs/Web/JavaScript/Reference/Global_Objects/Set/values +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String /es/docs/Web/JavaScript/Reference/Global_Objects/String +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/Trim /es/docs/Web/JavaScript/Reference/Global_Objects/String/Trim +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/anchor /es/docs/Web/JavaScript/Reference/Global_Objects/String/anchor +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/big /es/docs/Web/JavaScript/Reference/Global_Objects/String/big +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/blink /es/docs/Web/JavaScript/Reference/Global_Objects/String/blink +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/bold /es/docs/Web/JavaScript/Reference/Global_Objects/String/bold +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/charAt /es/docs/Web/JavaScript/Reference/Global_Objects/String/charAt +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/charCodeAt /es/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/codePointAt /es/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/concat /es/docs/Web/JavaScript/Reference/Global_Objects/String/concat +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/constructor /es/docs/Web/JavaScript/Reference/Global_Objects/String +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/endsWith /es/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/fixed /es/docs/Web/JavaScript/Reference/Global_Objects/String/fixed +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/fontcolor /es/docs/Web/JavaScript/Reference/Global_Objects/String/fontcolor +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/fontsize /es/docs/Web/JavaScript/Reference/Global_Objects/String/fontsize +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/fromCharCode /es/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/fromCodePoint /es/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/includes /es/docs/Web/JavaScript/Reference/Global_Objects/String/includes +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/indexOf /es/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/italics /es/docs/Web/JavaScript/Reference/Global_Objects/String/italics +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/lastIndexOf /es/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/length /es/docs/Web/JavaScript/Reference/Global_Objects/String/length +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/link /es/docs/Web/JavaScript/Reference/Global_Objects/String/link +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/localeCompare /es/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/match /es/docs/Web/JavaScript/Reference/Global_Objects/String/match +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/matchAll /es/docs/Web/JavaScript/Reference/Global_Objects/String/matchAll +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/normalize /es/docs/Web/JavaScript/Reference/Global_Objects/String/normalize +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/padStart /es/docs/Web/JavaScript/Reference/Global_Objects/String/padStart +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/String +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/raw /es/docs/Web/JavaScript/Reference/Global_Objects/String/raw +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/repeat /es/docs/Web/JavaScript/Reference/Global_Objects/String/repeat +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/replace /es/docs/Web/JavaScript/Reference/Global_Objects/String/replace +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/search /es/docs/Web/JavaScript/Reference/Global_Objects/String/search +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/slice /es/docs/Web/JavaScript/Reference/Global_Objects/String/slice +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/small /es/docs/Web/JavaScript/Reference/Global_Objects/String/small +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/split /es/docs/Web/JavaScript/Reference/Global_Objects/String/split +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/startsWith /es/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/strike /es/docs/Web/JavaScript/Reference/Global_Objects/String/strike +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/sub /es/docs/Web/JavaScript/Reference/Global_Objects/String/sub +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/substr /es/docs/Web/JavaScript/Reference/Global_Objects/String/substr +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/substring /es/docs/Web/JavaScript/Reference/Global_Objects/String/substring +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/sup /es/docs/Web/JavaScript/Reference/Global_Objects/String/sup +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/toLocaleLowerCase /es/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/toLocaleUpperCase /es/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/toLowerCase /es/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/toSource /es/docs/Web/JavaScript/Reference/Global_Objects/String/toSource +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/toString /es/docs/Web/JavaScript/Reference/Global_Objects/String/toString +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/toUpperCase /es/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/trimEnd /es/docs/Web/JavaScript/Reference/Global_Objects/String/trimEnd +/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/valueOf /es/docs/Web/JavaScript/Reference/Global_Objects/String/valueOf +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Symbol /es/docs/Web/JavaScript/Reference/Global_Objects/Symbol +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Symbol/for /es/docs/Web/JavaScript/Reference/Global_Objects/Symbol/for +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Symbol/hasInstance /es/docs/Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Symbol/iterator /es/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator +/es/docs/Web/JavaScript/Referencia/Objetos_globales/SyntaxError /es/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError +/es/docs/Web/JavaScript/Referencia/Objetos_globales/SyntaxError/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/SyntaxError +/es/docs/Web/JavaScript/Referencia/Objetos_globales/TypedArray /es/docs/Web/JavaScript/Reference/Global_Objects/TypedArray +/es/docs/Web/JavaScript/Referencia/Objetos_globales/TypedArray/buffer /es/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/buffer +/es/docs/Web/JavaScript/Referencia/Objetos_globales/URIError /es/docs/Web/JavaScript/Reference/Global_Objects/URIError +/es/docs/Web/JavaScript/Referencia/Objetos_globales/Uint8Array /es/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array +/es/docs/Web/JavaScript/Referencia/Objetos_globales/WeakMap /es/docs/Web/JavaScript/Reference/Global_Objects/WeakMap +/es/docs/Web/JavaScript/Referencia/Objetos_globales/WeakMap/clear /es/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/clear +/es/docs/Web/JavaScript/Referencia/Objetos_globales/WeakMap/delete /es/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/delete +/es/docs/Web/JavaScript/Referencia/Objetos_globales/WeakMap/get /es/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/get +/es/docs/Web/JavaScript/Referencia/Objetos_globales/WeakMap/has /es/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/has +/es/docs/Web/JavaScript/Referencia/Objetos_globales/WeakMap/prototype /es/docs/conflicting/Web/JavaScript/Reference/Global_Objects/WeakMap +/es/docs/Web/JavaScript/Referencia/Objetos_globales/WeakMap/set /es/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/set +/es/docs/Web/JavaScript/Referencia/Objetos_globales/WeakSet /es/docs/Web/JavaScript/Reference/Global_Objects/WeakSet +/es/docs/Web/JavaScript/Referencia/Objetos_globales/WebAssembly /es/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly +/es/docs/Web/JavaScript/Referencia/Objetos_globales/decodeUR /es/docs/Web/JavaScript/Reference/Global_Objects/decodeURI +/es/docs/Web/JavaScript/Referencia/Objetos_globales/decodeURI /es/docs/Web/JavaScript/Reference/Global_Objects/decodeURI +/es/docs/Web/JavaScript/Referencia/Objetos_globales/decodeURIComponent /es/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent +/es/docs/Web/JavaScript/Referencia/Objetos_globales/encodeURI /es/docs/Web/JavaScript/Reference/Global_Objects/encodeURI +/es/docs/Web/JavaScript/Referencia/Objetos_globales/encodeURIComponent /es/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent +/es/docs/Web/JavaScript/Referencia/Objetos_globales/escape /es/docs/Web/JavaScript/Reference/Global_Objects/escape +/es/docs/Web/JavaScript/Referencia/Objetos_globales/eval /es/docs/Web/JavaScript/Reference/Global_Objects/eval +/es/docs/Web/JavaScript/Referencia/Objetos_globales/isFinite /es/docs/Web/JavaScript/Reference/Global_Objects/isFinite +/es/docs/Web/JavaScript/Referencia/Objetos_globales/isFinite_ /es/docs/Web/JavaScript/Reference/Global_Objects/isFinite +/es/docs/Web/JavaScript/Referencia/Objetos_globales/isNaN /es/docs/Web/JavaScript/Reference/Global_Objects/isNaN +/es/docs/Web/JavaScript/Referencia/Objetos_globales/null /es/docs/Web/JavaScript/Reference/Global_Objects/null +/es/docs/Web/JavaScript/Referencia/Objetos_globales/parseFloat /es/docs/Web/JavaScript/Reference/Global_Objects/parseFloat +/es/docs/Web/JavaScript/Referencia/Objetos_globales/parseInt /es/docs/Web/JavaScript/Reference/Global_Objects/parseInt +/es/docs/Web/JavaScript/Referencia/Objetos_globales/undefined /es/docs/Web/JavaScript/Reference/Global_Objects/undefined +/es/docs/Web/JavaScript/Referencia/Objetos_globales/unescape /es/docs/Web/JavaScript/Reference/Global_Objects/unescape +/es/docs/Web/JavaScript/Referencia/Objetos_globlales /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/Web/JavaScript/Referencia/Operadores /es/docs/Web/JavaScript/Reference/Operators +/es/docs/Web/JavaScript/Referencia/Operadores/Adición /es/docs/Web/JavaScript/Reference/Operators/Addition +/es/docs/Web/JavaScript/Referencia/Operadores/Aritméticos /es/docs/conflicting/Web/JavaScript/Reference/Operators +/es/docs/Web/JavaScript/Referencia/Operadores/Asignacion /es/docs/Web/JavaScript/Reference/Operators/Assignment +/es/docs/Web/JavaScript/Referencia/Operadores/Assignment_Operators /es/docs/conflicting/Web/JavaScript/Reference/Operators_d3958587a3d3dd644852ad397eb5951b +/es/docs/Web/JavaScript/Referencia/Operadores/Bitwise_Operators /es/docs/conflicting/Web/JavaScript/Reference/Operators_5c44e7d07c463ff1a5a63654f4bda87b +/es/docs/Web/JavaScript/Referencia/Operadores/Comparacion /es/docs/Web/JavaScript/Reference/Operators/Equality +/es/docs/Web/JavaScript/Referencia/Operadores/Comparison_Operators /es/docs/conflicting/Web/JavaScript/Reference/Operators_5a0acbbb60ea37d0fdc52e3bd4c3fae8 +/es/docs/Web/JavaScript/Referencia/Operadores/Conditional_Operator /es/docs/Web/JavaScript/Reference/Operators/Conditional_Operator +/es/docs/Web/JavaScript/Referencia/Operadores/Decremento /es/docs/Web/JavaScript/Reference/Operators/Decrement +/es/docs/Web/JavaScript/Referencia/Operadores/Destructuring_assignment /es/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment +/es/docs/Web/JavaScript/Referencia/Operadores/Division /es/docs/Web/JavaScript/Reference/Operators/Division +/es/docs/Web/JavaScript/Referencia/Operadores/Encadenamiento_opcional /es/docs/Web/JavaScript/Reference/Operators/Optional_chaining +/es/docs/Web/JavaScript/Referencia/Operadores/Especiales /es/docs/Web/JavaScript/Reference/Operators +/es/docs/Web/JavaScript/Referencia/Operadores/Especiales/function /es/docs/Web/JavaScript/Reference/Operators/function +/es/docs/Web/JavaScript/Referencia/Operadores/Grouping /es/docs/Web/JavaScript/Reference/Operators/Grouping +/es/docs/Web/JavaScript/Referencia/Operadores/Miembros /es/docs/Web/JavaScript/Reference/Operators/Property_Accessors +/es/docs/Web/JavaScript/Referencia/Operadores/Operadores_especiales /es/docs/Web/JavaScript/Reference/Operators +/es/docs/Web/JavaScript/Referencia/Operadores/Operadores_especiales/Operador_this /es/docs/Web/JavaScript/Reference/Operators/this +/es/docs/Web/JavaScript/Referencia/Operadores/Operadores_lógicos /es/docs/conflicting/Web/JavaScript/Reference/Operators_e72d8790e25513408a18a5826660f704 +/es/docs/Web/JavaScript/Referencia/Operadores/Operator_Precedence /es/docs/Web/JavaScript/Reference/Operators/Operator_Precedence +/es/docs/Web/JavaScript/Referencia/Operadores/Pipeline_operator /es/docs/Web/JavaScript/Reference/Operators/Pipeline_operator +/es/docs/Web/JavaScript/Referencia/Operadores/Resto /es/docs/Web/JavaScript/Reference/Operators/Remainder +/es/docs/Web/JavaScript/Referencia/Operadores/Sintaxis_Spread /es/docs/Web/JavaScript/Reference/Operators/Spread_syntax +/es/docs/Web/JavaScript/Referencia/Operadores/Spread_operator /es/docs/conflicting/Web/JavaScript/Reference/Operators/Spread_syntax +/es/docs/Web/JavaScript/Referencia/Operadores/Strict_equality /es/docs/Web/JavaScript/Reference/Operators/Strict_equality +/es/docs/Web/JavaScript/Referencia/Operadores/String /es/docs/conflicting/Web/JavaScript/Reference/Operators +/es/docs/Web/JavaScript/Referencia/Operadores/Sustracción /es/docs/Web/JavaScript/Reference/Operators/Subtraction +/es/docs/Web/JavaScript/Referencia/Operadores/async_function /es/docs/Web/JavaScript/Reference/Operators/async_function +/es/docs/Web/JavaScript/Referencia/Operadores/await /es/docs/Web/JavaScript/Reference/Operators/await +/es/docs/Web/JavaScript/Referencia/Operadores/class /es/docs/Web/JavaScript/Reference/Operators/class +/es/docs/Web/JavaScript/Referencia/Operadores/delete /es/docs/Web/JavaScript/Reference/Operators/delete +/es/docs/Web/JavaScript/Referencia/Operadores/function /es/docs/Web/JavaScript/Reference/Operators/function +/es/docs/Web/JavaScript/Referencia/Operadores/function* /es/docs/Web/JavaScript/Reference/Operators/function* +/es/docs/Web/JavaScript/Referencia/Operadores/get /es/docs/Web/JavaScript/Reference/Functions/get +/es/docs/Web/JavaScript/Referencia/Operadores/in /es/docs/Web/JavaScript/Reference/Operators/in +/es/docs/Web/JavaScript/Referencia/Operadores/instanceof /es/docs/Web/JavaScript/Reference/Operators/instanceof +/es/docs/Web/JavaScript/Referencia/Operadores/new /es/docs/Web/JavaScript/Reference/Operators/new +/es/docs/Web/JavaScript/Referencia/Operadores/new.target /es/docs/Web/JavaScript/Reference/Operators/new.target +/es/docs/Web/JavaScript/Referencia/Operadores/operador_coma /es/docs/Web/JavaScript/Reference/Operators/Comma_Operator +/es/docs/Web/JavaScript/Referencia/Operadores/super /es/docs/Web/JavaScript/Reference/Operators/super +/es/docs/Web/JavaScript/Referencia/Operadores/this /es/docs/Web/JavaScript/Reference/Operators/this +/es/docs/Web/JavaScript/Referencia/Operadores/typeof /es/docs/Web/JavaScript/Reference/Operators/typeof +/es/docs/Web/JavaScript/Referencia/Operadores/void /es/docs/Web/JavaScript/Reference/Operators/void +/es/docs/Web/JavaScript/Referencia/Operadores/yield /es/docs/Web/JavaScript/Reference/Operators/yield +/es/docs/Web/JavaScript/Referencia/Operadores/yield* /es/docs/Web/JavaScript/Reference/Operators/yield* +/es/docs/Web/JavaScript/Referencia/Palabras_Reservadas /es/docs/conflicting/Web/JavaScript/Reference/Lexical_grammar +/es/docs/Web/JavaScript/Referencia/Properties_Index /es/docs/Web/JavaScript/Reference +/es/docs/Web/JavaScript/Referencia/Propiedades_globales /es/docs/Web/JavaScript/Reference/Global_Objects +/es/docs/Web/JavaScript/Referencia/Propiedades_globales/Infinity /es/docs/Web/JavaScript/Reference/Global_Objects/Infinity +/es/docs/Web/JavaScript/Referencia/Propiedades_globales/NaN /es/docs/Web/JavaScript/Reference/Global_Objects/NaN +/es/docs/Web/JavaScript/Referencia/Propiedades_globales/undefined /es/docs/Web/JavaScript/Reference/Global_Objects/undefined +/es/docs/Web/JavaScript/Referencia/Sentencias /es/docs/Web/JavaScript/Reference/Statements +/es/docs/Web/JavaScript/Referencia/Sentencias/Empty /es/docs/Web/JavaScript/Reference/Statements/Empty +/es/docs/Web/JavaScript/Referencia/Sentencias/block /es/docs/Web/JavaScript/Reference/Statements/block +/es/docs/Web/JavaScript/Referencia/Sentencias/break /es/docs/Web/JavaScript/Reference/Statements/break +/es/docs/Web/JavaScript/Referencia/Sentencias/class /es/docs/Web/JavaScript/Reference/Statements/class +/es/docs/Web/JavaScript/Referencia/Sentencias/const /es/docs/Web/JavaScript/Reference/Statements/const +/es/docs/Web/JavaScript/Referencia/Sentencias/continue /es/docs/Web/JavaScript/Reference/Statements/continue +/es/docs/Web/JavaScript/Referencia/Sentencias/debugger /es/docs/Web/JavaScript/Reference/Statements/debugger +/es/docs/Web/JavaScript/Referencia/Sentencias/default /es/docs/conflicting/Web/JavaScript/Reference/Statements/switch +/es/docs/Web/JavaScript/Referencia/Sentencias/do...while /es/docs/Web/JavaScript/Reference/Statements/do...while +/es/docs/Web/JavaScript/Referencia/Sentencias/export /es/docs/Web/JavaScript/Reference/Statements/export +/es/docs/Web/JavaScript/Referencia/Sentencias/for /es/docs/Web/JavaScript/Reference/Statements/for +/es/docs/Web/JavaScript/Referencia/Sentencias/for-await...of /es/docs/Web/JavaScript/Reference/Statements/for-await...of +/es/docs/Web/JavaScript/Referencia/Sentencias/for...in /es/docs/Web/JavaScript/Reference/Statements/for...in +/es/docs/Web/JavaScript/Referencia/Sentencias/for...of /es/docs/Web/JavaScript/Reference/Statements/for...of +/es/docs/Web/JavaScript/Referencia/Sentencias/funcion_asincrona /es/docs/Web/JavaScript/Reference/Statements/async_function +/es/docs/Web/JavaScript/Referencia/Sentencias/function /es/docs/Web/JavaScript/Reference/Statements/function +/es/docs/Web/JavaScript/Referencia/Sentencias/function* /es/docs/Web/JavaScript/Reference/Statements/function* +/es/docs/Web/JavaScript/Referencia/Sentencias/if...else /es/docs/Web/JavaScript/Reference/Statements/if...else +/es/docs/Web/JavaScript/Referencia/Sentencias/import /es/docs/Web/JavaScript/Reference/Statements/import +/es/docs/Web/JavaScript/Referencia/Sentencias/import.meta /es/docs/Web/JavaScript/Reference/Statements/import.meta +/es/docs/Web/JavaScript/Referencia/Sentencias/label /es/docs/Web/JavaScript/Reference/Statements/label +/es/docs/Web/JavaScript/Referencia/Sentencias/let /es/docs/Web/JavaScript/Reference/Statements/let +/es/docs/Web/JavaScript/Referencia/Sentencias/return /es/docs/Web/JavaScript/Reference/Statements/return +/es/docs/Web/JavaScript/Referencia/Sentencias/switch /es/docs/Web/JavaScript/Reference/Statements/switch +/es/docs/Web/JavaScript/Referencia/Sentencias/throw /es/docs/Web/JavaScript/Reference/Statements/throw +/es/docs/Web/JavaScript/Referencia/Sentencias/try...catch /es/docs/Web/JavaScript/Reference/Statements/try...catch +/es/docs/Web/JavaScript/Referencia/Sentencias/var /es/docs/Web/JavaScript/Reference/Statements/var +/es/docs/Web/JavaScript/Referencia/Sentencias/while /es/docs/Web/JavaScript/Reference/Statements/while +/es/docs/Web/JavaScript/Referencia/Sentencias/with /es/docs/Web/JavaScript/Reference/Statements/with +/es/docs/Web/JavaScript/Referencia/template_strings /es/docs/Web/JavaScript/Reference/Template_literals +/es/docs/Web/JavaScript/Una_nueva_introducción_a_JavaScript /es/docs/Web/JavaScript/A_re-introduction_to_JavaScript +/es/docs/Web/JavaScript/Una_re-introducción_a_JavaScript /es/docs/Web/JavaScript/A_re-introduction_to_JavaScript +/es/docs/Web/JavaScript/Vectores_tipados /es/docs/Web/JavaScript/Typed_arrays +/es/docs/Web/JavaScript/enumeracion_y_propietario_de_propiedades /es/docs/Web/JavaScript/Enumerability_and_ownership_of_properties +/es/docs/Web/MathML/Elemento /es/docs/Web/MathML/Element +/es/docs/Web/MathML/Elemento/math /es/docs/Web/MathML/Element/math +/es/docs/Web/Performance/mejorando_rendimienot_inicial /es/docs/Web/Performance/Optimizing_startup_performance +/es/docs/Web/Progressive_web_apps/Developer_guide/Instalar /es/docs/Web/Progressive_web_apps/Developer_guide/Installing +/es/docs/Web/Progressive_web_apps/Ventajas /es/docs/conflicting/Web/Progressive_web_apps/Introduction /es/docs/Web/Reference/Events /es/docs/Web/Events -/es/docs/Web/Reference/Events/DOMContentLoaded /es/docs/Web/Events/DOMContentLoaded +/es/docs/Web/Reference/Events/DOMContentLoaded /es/docs/Web/API/Window/DOMContentLoaded_event /es/docs/Web/Reference/Events/DOMSubtreeModified /es/docs/Web/Events/DOMSubtreeModified -/es/docs/Web/Reference/Events/abort /es/docs/Web/Events/abort -/es/docs/Web/Reference/Events/animationend /es/docs/Web/Events/animationend -/es/docs/Web/Reference/Events/beforeunload /es/docs/Web/Events/beforeunload -/es/docs/Web/Reference/Events/blur /es/docs/Web/Events/blur +/es/docs/Web/Reference/Events/abort /es/docs/Web/API/HTMLMediaElement/abort_event +/es/docs/Web/Reference/Events/animationend /es/docs/Web/API/HTMLElement/animationend_event +/es/docs/Web/Reference/Events/beforeunload /es/docs/Web/API/Window/beforeunload_event +/es/docs/Web/Reference/Events/blur /es/docs/Web/API/Element/blur_event /es/docs/Web/Reference/Events/canplay /es/docs/Web/API/HTMLMediaElement/canplay_event /es/docs/Web/Reference/Events/click /es/docs/Web/API/Element/click_event /es/docs/Web/Reference/Events/close_websocket /es/docs/Web/API/WebSocket/close_event /es/docs/Web/Reference/Events/dragover /es/docs/Web/API/Document/dragover_event /es/docs/Web/Reference/Events/hashchange /es/docs/Web/API/Window/hashchange_event /es/docs/Web/Reference/Events/keydown /es/docs/Web/API/Document/keydown_event -/es/docs/Web/Reference/Events/load /es/docs/Web/Events/load -/es/docs/Web/Reference/Events/loadend /es/docs/Web/Events/loadend +/es/docs/Web/Reference/Events/load /es/docs/Web/API/Window/load_event +/es/docs/Web/Reference/Events/loadend /es/docs/Web/API/XMLHttpRequest/loadend_event /es/docs/Web/Reference/Events/mousedown /es/docs/Web/API/Element/mousedown_event -/es/docs/Web/Reference/Events/pointerlockchange /es/docs/Web/Events/pointerlockchange +/es/docs/Web/Reference/Events/pointerlockchange /es/docs/Web/API/Document/pointerlockchange_event /es/docs/Web/Reference/Events/scroll /es/docs/Web/API/Document/scroll_event /es/docs/Web/Reference/Events/tecla /es/docs/Web/API/Document/keyup_event /es/docs/Web/Reference/Events/timeupdate /es/docs/Web/API/HTMLMediaElement/timeupdate_event -/es/docs/Web/Reference/Events/transitioncancel /es/docs/Web/Events/transitioncancel -/es/docs/Web/Reference/Events/transitionend /es/docs/Web/Events/transitionend +/es/docs/Web/Reference/Events/transitioncancel /es/docs/Web/API/HTMLElement/transitioncancel_event +/es/docs/Web/Reference/Events/transitionend /es/docs/Web/API/HTMLElement/transitionend_event /es/docs/Web/Reference/Events/wheel /es/docs/Web/API/Element/wheel_event +/es/docs/Web/SVG/Element/glifo /es/docs/Web/SVG/Element/glyph +/es/docs/Web/SVG/SVG_en_Firefox_1.5 /es/docs/orphaned/Web/SVG/SVG_en_Firefox_1.5 +/es/docs/Web/SVG/Tutorial/Introducción /es/docs/Web/SVG/Tutorial/Introduction +/es/docs/Web/Security/CSP /es/docs/conflicting/Web/HTTP/CSP +/es/docs/Web/Security/CSP/CSP_policy_directives /es/docs/conflicting/Web/HTTP/Headers/Content-Security-Policy +/es/docs/Web/Security/CSP/Introducing_Content_Security_Policy /es/docs/conflicting/Web/HTTP/CSP_aeae68a149c6fbe64e541cbdcd6ed5c5 +/es/docs/Web/Security/Same-origin_politica /es/docs/Web/Security/Same-origin_policy +/es/docs/Web/Security/Securing_your_site/desactivar_autocompletado_formulario /es/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion +/es/docs/Web/Tutoriales /es/docs/Web/Tutorials /es/docs/Web/WebGL /es/docs/Web/API/WebGL_API /es/docs/Web/WebGL/Animating_objects_with_WebGL /es/docs/Web/API/WebGL_API/Tutorial/Animating_objects_with_WebGL /es/docs/Web/WebGL/Getting_started_with_WebGL /es/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL +/es/docs/Web/Web_Components/Custom_Elements /es/docs/conflicting/Web/Web_Components/Using_custom_elements +/es/docs/Web/XML/Introducción_a_XML /es/docs/Web/XML/XML_introduction +/es/docs/Web/XPath/Ejes /es/docs/Web/XPath/Axes +/es/docs/Web/XPath/Ejes/ancestor /es/docs/Web/XPath/Axes/ancestor +/es/docs/Web/XPath/Ejes/ancestor-or-self /es/docs/Web/XPath/Axes/ancestor-or-self +/es/docs/Web/XPath/Ejes/attribute /es/docs/Web/XPath/Axes/attribute +/es/docs/Web/XPath/Ejes/child /es/docs/Web/XPath/Axes/child +/es/docs/Web/XPath/Ejes/descendant /es/docs/Web/XPath/Axes/descendant +/es/docs/Web/XPath/Ejes/descendant-or-self /es/docs/Web/XPath/Axes/descendant-or-self +/es/docs/Web/XPath/Ejes/following /es/docs/Web/XPath/Axes/following +/es/docs/Web/XPath/Ejes/following-sibling /es/docs/Web/XPath/Axes/following-sibling +/es/docs/Web/XPath/Ejes/namespace /es/docs/Web/XPath/Axes/namespace +/es/docs/Web/XPath/Ejes/parent /es/docs/Web/XPath/Axes/parent +/es/docs/Web/XPath/Ejes/preceding /es/docs/Web/XPath/Axes/preceding +/es/docs/Web/XPath/Ejes/preceding-sibling /es/docs/Web/XPath/Axes/preceding-sibling +/es/docs/Web/XPath/Funciones /es/docs/Web/XPath/Functions +/es/docs/Web/XPath/Funciones/contains /es/docs/Web/XPath/Functions/contains +/es/docs/Web/XPath/Funciones/substring /es/docs/Web/XPath/Functions/substring +/es/docs/Web/XPath/Funciones/true /es/docs/Web/XPath/Functions/true /es/docs/Web/XSLT/Elementos /es/docs/Web/XSLT/Element /es/docs/Web/XSLT/Elementos/element /es/docs/Web/XSLT/Element/element +/es/docs/Web/XSLT/Transformando_XML_con_XSLT /es/docs/Web/XSLT/Transforming_XML_with_XSLT +/es/docs/Web/XSLT/apply-imports /es/docs/Web/XSLT/Element/apply-imports +/es/docs/Web/XSLT/apply-templates /es/docs/Web/XSLT/Element/apply-templates +/es/docs/Web/XSLT/attribute /es/docs/Web/XSLT/Element/attribute +/es/docs/Web/XSLT/attribute-set /es/docs/Web/XSLT/Element/attribute-set +/es/docs/Web/XSLT/call-template /es/docs/Web/XSLT/Element/call-template +/es/docs/Web/XSLT/choose /es/docs/Web/XSLT/Element/choose +/es/docs/Web/XSLT/comment /es/docs/Web/XSLT/Element/comment +/es/docs/Web/XSLT/copy /es/docs/Web/XSLT/Element/copy +/es/docs/Web/XSLT/copy-of /es/docs/Web/XSLT/Element/copy-of +/es/docs/Web/XSLT/decimal-format /es/docs/Web/XSLT/Element/decimal-format +/es/docs/Web/XSLT/fallback /es/docs/Web/XSLT/Element/fallback +/es/docs/Web/XSLT/for-each /es/docs/Web/XSLT/Element/for-each +/es/docs/Web/XSLT/if /es/docs/Web/XSLT/Element/if +/es/docs/Web/XSLT/import /es/docs/Web/XSLT/Element/import +/es/docs/Web/XSLT/include /es/docs/Web/XSLT/Element/include +/es/docs/Web/XSLT/key /es/docs/Web/XSLT/Element/key +/es/docs/Web/XSLT/message /es/docs/Web/XSLT/Element/message +/es/docs/Web/XSLT/namespace-alias /es/docs/Web/XSLT/Element/namespace-alias +/es/docs/Web/XSLT/number /es/docs/Web/XSLT/Element/number +/es/docs/Web/XSLT/otherwise /es/docs/Web/XSLT/Element/otherwise +/es/docs/Web/XSLT/when /es/docs/Web/XSLT/Element/when +/es/docs/Web/XSLT/with-param /es/docs/Web/XSLT/Element/with-param +/es/docs/WebAPI /es/docs/conflicting/Web/API_dd04ca1265cb79b990b8120e5f5070d3 +/es/docs/WebAPI/Estado_de_Bateria /es/docs/Web/API/Battery_Status_API +/es/docs/WebAPI/Pointer_Lock /es/docs/Web/API/Pointer_Lock_API +/es/docs/WebAPI/Using_geolocation /es/docs/Web/API/Geolocation_API /es/docs/WebGL /es/docs/Web/API/WebGL_API /es/docs/WebGL/Animating_objects_with_WebGL /es/docs/Web/API/WebGL_API/Tutorial/Animating_objects_with_WebGL +/es/docs/WebRTC /es/docs/conflicting/Web/API/WebRTC_API +/es/docs/WebRTC/Introduction /es/docs/Web/API/WebRTC_API/Session_lifetime +/es/docs/WebRTC/MediaStream_API /es/docs/Web/API/Media_Streams_API +/es/docs/WebRTC/Peer-to-peer_communications_with_WebRTC /es/docs/Web/Guide/API/WebRTC/Peer-to-peer_communications_with_WebRTC +/es/docs/WebRTC/Taking_webcam_photos /es/docs/Web/API/WebRTC_API/Taking_still_photos +/es/docs/WebSockets /es/docs/conflicting/Web/API/WebSockets_API /es/docs/WebSockets-840092-dup /es/docs/Web/API/WebSockets_API -/es/docs/WebSockets-840092-dup/Escribiendo_servidor_WebSocket /es/docs/Web/API/WebSockets_API/Escribiendo_servidor_WebSocket -/es/docs/WebSockets-840092-dup/Escribiendo_servidores_con_WebSocket /es/docs/Web/API/WebSockets_API/Escribiendo_servidores_con_WebSocket +/es/docs/WebSockets-840092-dup/Escribiendo_servidor_WebSocket /es/docs/Web/API/WebSockets_API/Writing_WebSocket_server +/es/docs/WebSockets-840092-dup/Escribiendo_servidores_con_WebSocket /es/docs/Web/API/WebSockets_API/Writing_WebSocket_servers /es/docs/WebSockets-840092-dup/Writing_WebSocket_client_applications /es/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications +/es/docs/Web_Audio_API /es/docs/Web/API/Web_Audio_API +/es/docs/Web_Development/Mobile /es/docs/conflicting/Web/Guide/Mobile +/es/docs/Web_Development/Mobile/Diseño_responsivo /es/docs/conflicting/Web/Progressive_web_apps /es/docs/XForms:Soporte_en_Mozilla /es/docs/XForms/Soporte_en_Mozilla +/es/docs/XHTML /es/docs/Glossary/XHTML /es/docs/XMLHttpRequest /es/docs/Web/API/XMLHttpRequest -/es/docs/XMLHttpRequest/FormData /es/docs/Web/API/XMLHttpRequest/FormData +/es/docs/XMLHttpRequest/FormData /es/docs/Web/API/FormData /es/docs/XMLHttpRequest/Using_XMLHttpRequest /es/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest /es/docs/XMLHttpRequest/abort /es/docs/Web/API/XMLHttpRequest/abort /es/docs/XMLHttpRequest/onreadystatechange /es/docs/Web/API/XMLHttpRequest/onreadystatechange +/es/docs/XPInstall_API_Reference /es/docs/orphaned/XPInstall_API_Reference /es/docs/XPath /es/docs/Web/XPath -/es/docs/XPath/Ejes /es/docs/Web/XPath/Ejes -/es/docs/XPath/Ejes/ancestor /es/docs/Web/XPath/Ejes/ancestor -/es/docs/XPath/Ejes/ancestor-or-self /es/docs/Web/XPath/Ejes/ancestor-or-self -/es/docs/XPath/Ejes/attribute /es/docs/Web/XPath/Ejes/attribute -/es/docs/XPath/Ejes/child /es/docs/Web/XPath/Ejes/child -/es/docs/XPath/Ejes/descendant /es/docs/Web/XPath/Ejes/descendant -/es/docs/XPath/Ejes/descendant-or-self /es/docs/Web/XPath/Ejes/descendant-or-self -/es/docs/XPath/Ejes/following /es/docs/Web/XPath/Ejes/following -/es/docs/XPath/Ejes/following-sibling /es/docs/Web/XPath/Ejes/following-sibling -/es/docs/XPath/Ejes/namespace /es/docs/Web/XPath/Ejes/namespace -/es/docs/XPath/Ejes/parent /es/docs/Web/XPath/Ejes/parent -/es/docs/XPath/Ejes/preceding /es/docs/Web/XPath/Ejes/preceding -/es/docs/XPath/Ejes/preceding-sibling /es/docs/Web/XPath/Ejes/preceding-sibling -/es/docs/XPath/Funciones /es/docs/Web/XPath/Funciones -/es/docs/XPath/Funciones-XPath/true /es/docs/Web/XPath/Funciones/true -/es/docs/XPath/Funciones/contains /es/docs/Web/XPath/Funciones/contains -/es/docs/XPath/Funciones/substring /es/docs/Web/XPath/Funciones/substring -/es/docs/XPath/Funciones/true /es/docs/Web/XPath/Funciones/true -/es/docs/XPath/funciones-xpath /es/docs/Web/XPath/Funciones -/es/docs/XPath/funciones-xpath/contains /es/docs/Web/XPath/Funciones/contains -/es/docs/XPath/funciones-xpath/substring /es/docs/Web/XPath/Funciones/substring -/es/docs/XPath:Ejes /es/docs/Web/XPath/Ejes -/es/docs/XPath:Ejes:ancestor /es/docs/Web/XPath/Ejes/ancestor -/es/docs/XPath:Ejes:ancestor-or-self /es/docs/Web/XPath/Ejes/ancestor-or-self -/es/docs/XPath:Ejes:attribute /es/docs/Web/XPath/Ejes/attribute -/es/docs/XPath:Ejes:child /es/docs/Web/XPath/Ejes/child -/es/docs/XPath:Ejes:descendant /es/docs/Web/XPath/Ejes/descendant -/es/docs/XPath:Ejes:descendant-or-self /es/docs/Web/XPath/Ejes/descendant-or-self -/es/docs/XPath:Ejes:following /es/docs/Web/XPath/Ejes/following -/es/docs/XPath:Ejes:following-sibling /es/docs/Web/XPath/Ejes/following-sibling -/es/docs/XPath:Ejes:namespace /es/docs/Web/XPath/Ejes/namespace -/es/docs/XPath:Ejes:parent /es/docs/Web/XPath/Ejes/parent -/es/docs/XPath:Ejes:preceding /es/docs/Web/XPath/Ejes/preceding -/es/docs/XPath:Ejes:preceding-sibling /es/docs/Web/XPath/Ejes/preceding-sibling -/es/docs/XPath:Funciones:contains /es/docs/Web/XPath/Funciones/contains -/es/docs/XPath:Funciones:substring /es/docs/Web/XPath/Funciones/substring -/es/docs/XPath:Funciones:true /es/docs/Web/XPath/Funciones/true +/es/docs/XPath/Ejes /es/docs/Web/XPath/Axes +/es/docs/XPath/Ejes/ancestor /es/docs/Web/XPath/Axes/ancestor +/es/docs/XPath/Ejes/ancestor-or-self /es/docs/Web/XPath/Axes/ancestor-or-self +/es/docs/XPath/Ejes/attribute /es/docs/Web/XPath/Axes/attribute +/es/docs/XPath/Ejes/child /es/docs/Web/XPath/Axes/child +/es/docs/XPath/Ejes/descendant /es/docs/Web/XPath/Axes/descendant +/es/docs/XPath/Ejes/descendant-or-self /es/docs/Web/XPath/Axes/descendant-or-self +/es/docs/XPath/Ejes/following /es/docs/Web/XPath/Axes/following +/es/docs/XPath/Ejes/following-sibling /es/docs/Web/XPath/Axes/following-sibling +/es/docs/XPath/Ejes/namespace /es/docs/Web/XPath/Axes/namespace +/es/docs/XPath/Ejes/parent /es/docs/Web/XPath/Axes/parent +/es/docs/XPath/Ejes/preceding /es/docs/Web/XPath/Axes/preceding +/es/docs/XPath/Ejes/preceding-sibling /es/docs/Web/XPath/Axes/preceding-sibling +/es/docs/XPath/Funciones /es/docs/Web/XPath/Functions +/es/docs/XPath/Funciones-XPath/true /es/docs/Web/XPath/Functions/true +/es/docs/XPath/Funciones/contains /es/docs/Web/XPath/Functions/contains +/es/docs/XPath/Funciones/substring /es/docs/Web/XPath/Functions/substring +/es/docs/XPath/Funciones/true /es/docs/Web/XPath/Functions/true +/es/docs/XPath/funciones-xpath /es/docs/Web/XPath/Functions +/es/docs/XPath/funciones-xpath/contains /es/docs/Web/XPath/Functions/contains +/es/docs/XPath/funciones-xpath/substring /es/docs/Web/XPath/Functions/substring +/es/docs/XPath:Ejes /es/docs/Web/XPath/Axes +/es/docs/XPath:Ejes:ancestor /es/docs/Web/XPath/Axes/ancestor +/es/docs/XPath:Ejes:ancestor-or-self /es/docs/Web/XPath/Axes/ancestor-or-self +/es/docs/XPath:Ejes:attribute /es/docs/Web/XPath/Axes/attribute +/es/docs/XPath:Ejes:child /es/docs/Web/XPath/Axes/child +/es/docs/XPath:Ejes:descendant /es/docs/Web/XPath/Axes/descendant +/es/docs/XPath:Ejes:descendant-or-self /es/docs/Web/XPath/Axes/descendant-or-self +/es/docs/XPath:Ejes:following /es/docs/Web/XPath/Axes/following +/es/docs/XPath:Ejes:following-sibling /es/docs/Web/XPath/Axes/following-sibling +/es/docs/XPath:Ejes:namespace /es/docs/Web/XPath/Axes/namespace +/es/docs/XPath:Ejes:parent /es/docs/Web/XPath/Axes/parent +/es/docs/XPath:Ejes:preceding /es/docs/Web/XPath/Axes/preceding +/es/docs/XPath:Ejes:preceding-sibling /es/docs/Web/XPath/Axes/preceding-sibling +/es/docs/XPath:Funciones:contains /es/docs/Web/XPath/Functions/contains +/es/docs/XPath:Funciones:substring /es/docs/Web/XPath/Functions/substring +/es/docs/XPath:Funciones:true /es/docs/Web/XPath/Functions/true /es/docs/XSLT /es/docs/Web/XSLT /es/docs/XSLT/Elementos /es/docs/Web/XSLT/Element -/es/docs/XSLT/apply-imports /es/docs/Web/XSLT/apply-imports -/es/docs/XSLT/apply-templates /es/docs/Web/XSLT/apply-templates -/es/docs/XSLT/attribute /es/docs/Web/XSLT/attribute -/es/docs/XSLT/attribute-set /es/docs/Web/XSLT/attribute-set -/es/docs/XSLT/call-template /es/docs/Web/XSLT/call-template -/es/docs/XSLT/choose /es/docs/Web/XSLT/choose -/es/docs/XSLT/comment /es/docs/Web/XSLT/comment -/es/docs/XSLT/copy /es/docs/Web/XSLT/copy -/es/docs/XSLT/copy-of /es/docs/Web/XSLT/copy-of -/es/docs/XSLT/decimal-format /es/docs/Web/XSLT/decimal-format +/es/docs/XSLT/apply-imports /es/docs/Web/XSLT/Element/apply-imports +/es/docs/XSLT/apply-templates /es/docs/Web/XSLT/Element/apply-templates +/es/docs/XSLT/attribute /es/docs/Web/XSLT/Element/attribute +/es/docs/XSLT/attribute-set /es/docs/Web/XSLT/Element/attribute-set +/es/docs/XSLT/call-template /es/docs/Web/XSLT/Element/call-template +/es/docs/XSLT/choose /es/docs/Web/XSLT/Element/choose +/es/docs/XSLT/comment /es/docs/Web/XSLT/Element/comment +/es/docs/XSLT/copy /es/docs/Web/XSLT/Element/copy +/es/docs/XSLT/copy-of /es/docs/Web/XSLT/Element/copy-of +/es/docs/XSLT/decimal-format /es/docs/Web/XSLT/Element/decimal-format /es/docs/XSLT/element /es/docs/Web/XSLT/Element/element -/es/docs/XSLT/fallback /es/docs/Web/XSLT/fallback -/es/docs/XSLT/for-each /es/docs/Web/XSLT/for-each -/es/docs/XSLT/if /es/docs/Web/XSLT/if -/es/docs/XSLT/import /es/docs/Web/XSLT/import -/es/docs/XSLT/include /es/docs/Web/XSLT/include -/es/docs/XSLT/key /es/docs/Web/XSLT/key -/es/docs/XSLT/message /es/docs/Web/XSLT/message -/es/docs/XSLT/namespace-alias /es/docs/Web/XSLT/namespace-alias -/es/docs/XSLT/number /es/docs/Web/XSLT/number -/es/docs/XSLT/otherwise /es/docs/Web/XSLT/otherwise -/es/docs/XSLT/when /es/docs/Web/XSLT/when -/es/docs/XSLT/with-param /es/docs/Web/XSLT/with-param +/es/docs/XSLT/fallback /es/docs/Web/XSLT/Element/fallback +/es/docs/XSLT/for-each /es/docs/Web/XSLT/Element/for-each +/es/docs/XSLT/if /es/docs/Web/XSLT/Element/if +/es/docs/XSLT/import /es/docs/Web/XSLT/Element/import +/es/docs/XSLT/include /es/docs/Web/XSLT/Element/include +/es/docs/XSLT/key /es/docs/Web/XSLT/Element/key +/es/docs/XSLT/message /es/docs/Web/XSLT/Element/message +/es/docs/XSLT/namespace-alias /es/docs/Web/XSLT/Element/namespace-alias +/es/docs/XSLT/number /es/docs/Web/XSLT/Element/number +/es/docs/XSLT/otherwise /es/docs/Web/XSLT/Element/otherwise +/es/docs/XSLT/when /es/docs/Web/XSLT/Element/when +/es/docs/XSLT/with-param /es/docs/Web/XSLT/Element/with-param /es/docs/XSLT:Elementos /es/docs/Web/XSLT/Element -/es/docs/XSLT:apply-imports /es/docs/Web/XSLT/apply-imports -/es/docs/XSLT:apply-templates /es/docs/Web/XSLT/apply-templates -/es/docs/XSLT:attribute /es/docs/Web/XSLT/attribute -/es/docs/XSLT:attribute-set /es/docs/Web/XSLT/attribute-set -/es/docs/XSLT:call-template /es/docs/Web/XSLT/call-template -/es/docs/XSLT:choose /es/docs/Web/XSLT/choose -/es/docs/XSLT:comment /es/docs/Web/XSLT/comment -/es/docs/XSLT:copy /es/docs/Web/XSLT/copy -/es/docs/XSLT:copy-of /es/docs/Web/XSLT/copy-of -/es/docs/XSLT:decimal-format /es/docs/Web/XSLT/decimal-format +/es/docs/XSLT:apply-imports /es/docs/Web/XSLT/Element/apply-imports +/es/docs/XSLT:apply-templates /es/docs/Web/XSLT/Element/apply-templates +/es/docs/XSLT:attribute /es/docs/Web/XSLT/Element/attribute +/es/docs/XSLT:attribute-set /es/docs/Web/XSLT/Element/attribute-set +/es/docs/XSLT:call-template /es/docs/Web/XSLT/Element/call-template +/es/docs/XSLT:choose /es/docs/Web/XSLT/Element/choose +/es/docs/XSLT:comment /es/docs/Web/XSLT/Element/comment +/es/docs/XSLT:copy /es/docs/Web/XSLT/Element/copy +/es/docs/XSLT:copy-of /es/docs/Web/XSLT/Element/copy-of +/es/docs/XSLT:decimal-format /es/docs/Web/XSLT/Element/decimal-format /es/docs/XSLT:element /es/docs/Web/XSLT/Element/element -/es/docs/XSLT:fallback /es/docs/Web/XSLT/fallback -/es/docs/XSLT:for-each /es/docs/Web/XSLT/for-each -/es/docs/XSLT:if /es/docs/Web/XSLT/if -/es/docs/XSLT:import /es/docs/Web/XSLT/import -/es/docs/XSLT:include /es/docs/Web/XSLT/include -/es/docs/XSLT:key /es/docs/Web/XSLT/key -/es/docs/XSLT:message /es/docs/Web/XSLT/message -/es/docs/XSLT:namespace-alias /es/docs/Web/XSLT/namespace-alias -/es/docs/XSLT:number /es/docs/Web/XSLT/number -/es/docs/XSLT:otherwise /es/docs/Web/XSLT/otherwise -/es/docs/XSLT:when /es/docs/Web/XSLT/when -/es/docs/XSLT:with-param /es/docs/Web/XSLT/with-param +/es/docs/XSLT:fallback /es/docs/Web/XSLT/Element/fallback +/es/docs/XSLT:for-each /es/docs/Web/XSLT/Element/for-each +/es/docs/XSLT:if /es/docs/Web/XSLT/Element/if +/es/docs/XSLT:import /es/docs/Web/XSLT/Element/import +/es/docs/XSLT:include /es/docs/Web/XSLT/Element/include +/es/docs/XSLT:key /es/docs/Web/XSLT/Element/key +/es/docs/XSLT:message /es/docs/Web/XSLT/Element/message +/es/docs/XSLT:namespace-alias /es/docs/Web/XSLT/Element/namespace-alias +/es/docs/XSLT:number /es/docs/Web/XSLT/Element/number +/es/docs/XSLT:otherwise /es/docs/Web/XSLT/Element/otherwise +/es/docs/XSLT:when /es/docs/Web/XSLT/Element/when +/es/docs/XSLT:with-param /es/docs/Web/XSLT/Element/with-param +/es/docs/Zoom_a_página_completa /es/docs/Mozilla/Firefox/Releases/3/Full_page_zoom /es/docs/controladores_protocolos_web /es/docs/Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers /es/docs/en /en-US/ /es/docs/firefox_Web_Developer_(externo) https://addons.mozilla.org/firefox/60/ /es/docs/lugares /es/docs/Catálogo /es/docs/mozilla-central /es/docs/Mozilla/Developer_guide/mozilla-central +/es/docs/nsDirectoryService /es/docs/orphaned/nsDirectoryService /es/docs/nsISupports:AddRef /es/docs/nsISupports/AddRef /es/docs/nsISupports:QueryInterface /es/docs/nsISupports/QueryInterface /es/docs/nsISupports:Release /es/docs/nsISupports/Release -/es/docs/video /es/docs/Web/HTML/Elemento/video +/es/docs/video /es/docs/Web/HTML/Element/video diff --git a/files/es/_wikihistory.json b/files/es/_wikihistory.json index ed848eb960..c388d8a6cd 100644 --- a/files/es/_wikihistory.json +++ b/files/es/_wikihistory.json @@ -1,16691 +1,17020 @@ { - "Acerca_del_Modelo_de_Objetos_del_Documento": { - "modified": "2019-03-24T00:02:47.149Z", + "Games": { + "modified": "2019-09-09T15:31:15.455Z", "contributors": [ + "SphinxKnight", + "isocialweb", + "wbamberg", "fscholz", - "Mgjbot", - "Nathymig", - "Jorolo" + "ajspadial", + "Arudb79", + "atlas7jean", + "chrisdavidmills" ] }, - "Actualizar_aplicaciones_web_para_Firefox_3": { - "modified": "2019-03-23T23:58:06.668Z", + "Games/Anatomy": { + "modified": "2019-01-16T22:18:47.235Z", "contributors": [ "wbamberg", + "cnaucler" + ] + }, + "Games/Publishing_games": { + "modified": "2019-03-18T21:22:03.542Z", + "contributors": [ + "carlosgocereceda", + "mikelmg", "SphinxKnight", - "Sheppy", - "trada", - "manueljrs", - "flaviog", - "Rafavs", - "Marcomavil", - "Mgjbot" + "wbamberg" ] }, - "Actualizar_extensiones_para_Firefox_3": { - "modified": "2019-03-23T23:58:10.215Z", + "Games/Publishing_games/Game_distribution": { + "modified": "2020-08-09T16:02:37.394Z", + "contributors": [ + "katherincorredor", + "WilsonIsAliveClone", + "carlosgocereceda" + ] + }, + "Games/Techniques": { + "modified": "2019-01-17T02:01:32.309Z", "contributors": [ "wbamberg", - "SphinxKnight", - "Pgulijczuk", - "deimidis", - "flaviog", - "Nukeador", - "Giovanisf13", - "Firewordy", - "Dfier", - "Rumont", - "Wrongloop", - "Mgjbot" + "chrisdavidmills" ] }, - "Actualizar_extensiones_para_Firefox_3/Actualizar_extensiones_para_Firefox_3": { - "modified": "2019-12-13T20:34:57.052Z", + "Games/Techniques/2D_collision_detection": { + "modified": "2019-01-17T02:34:23.543Z", "contributors": [ "wbamberg", - "lajaso", - "teoli", - "Sheppy", - "Pgulijczuk", - "deimidis", - "Nukeador", - "Ffranz", - "HenryGR" + "SuperHostile" ] }, - "Actualizar_una_extensión_para_que_soporte_múltiples_aplicaciones_de_Mozilla": { - "modified": "2019-01-16T14:53:56.551Z", + "Games/Techniques/3D_on_the_web": { + "modified": "2019-03-18T21:23:46.780Z", "contributors": [ - "DoctorRomi", - "Superruzafa" + "wbamberg" ] }, - "Applying_SVG_effects_to_HTML_content": { - "modified": "2019-03-24T00:09:04.196Z", + "Games/Techniques/WebRTC_data_channels": { + "modified": "2019-03-23T22:04:08.435Z", "contributors": [ - "elPatox" + "wbamberg", + "J4MP" ] }, - "Añadir_lectores_de_canales_a_Firefox": { - "modified": "2019-03-23T23:54:31.423Z", + "Games/Tutorials/2D_breakout_game_Phaser": { + "modified": "2019-03-18T21:43:09.977Z", "contributors": [ "wbamberg", - "Mgjbot", - "RickieesES", - "Nukeador", - "Anyulled" + "chrisdavidmills" ] }, - "Añadir_motores_de_búsqueda_desde_páginas_web": { - "modified": "2019-01-16T15:27:59.157Z", + "Games/Tutorials/2D_breakout_game_Phaser/Animations_and_tweens": { + "modified": "2019-03-18T21:18:57.095Z", "contributors": [ - "Mgjbot", - "Superruzafa", - "Lesmo sft", - "Nukeador" + "WilsonIsAliveClone", + "serarroy" ] }, - "Bugs_importantes_solucionados_en_Firefox_3": { - "modified": "2019-03-23T23:53:21.447Z", + "Games/Tutorials/2D_breakout_game_Phaser/Collision_detection": { + "modified": "2019-03-18T21:21:35.455Z", "contributors": [ - "wbamberg", - "Mgjbot", - "Nathymig", - "Nukeador", - "HenryGR", - "RickieesES", - "Ciberman osman" + "WilsonIsAliveClone", + "serarroy" ] }, - "Building_an_Extension": { - "modified": "2019-03-23T23:19:24.053Z", + "Games/Tutorials/2D_breakout_game_Phaser/Extra_lives": { + "modified": "2019-03-18T21:21:17.358Z", "contributors": [ - "martin.weingart", - "Josele89" + "carlosgocereceda", + "WilsonIsAliveClone", + "serarroy" ] }, - "CSS/Media_queries": { - "modified": "2019-10-03T11:52:26.928Z", + "Games/Tutorials/2D_breakout_game_Phaser/Game_over": { + "modified": "2019-03-18T21:20:23.610Z", "contributors": [ - "danielblazquez", - "brunonra-dev", - "kitab15", - "Sebastianz", - "jsx", - "carlossuarez", - "mrstork", - "malayaleecoder", - "seeker8", - "Xaviju", - "sinfallas", - "maedca" + "mikelmg", + "carlosgocereceda", + "WilsonIsAliveClone" ] }, - "CSS/Using_CSS_gradients": { - "modified": "2019-06-03T20:30:31.836Z", + "Games/Tutorials/2D_breakout_game_Phaser/Initialize_the_framework": { + "modified": "2019-01-17T02:28:59.298Z", "contributors": [ - "GasGen", - "undest", - "Sebastianz", - "Eneagrama" + "wbamberg", + "proncaglia" ] }, - "CSS_dinámico": { - "modified": "2019-01-16T14:14:46.881Z", + "Games/Tutorials/2D_breakout_game_Phaser/Move_the_ball": { + "modified": "2019-03-18T21:21:15.950Z", "contributors": [ - "RickieesES", - "Jorolo", - "Peperoni", - "Hande", - "Nukeador" + "WilsonIsAliveClone", + "serarroy" ] }, - "Cadenas_del_User_Agent_de_Gecko": { - "modified": "2019-03-23T23:45:27.069Z", + "Games/Tutorials/2D_breakout_game_Phaser/Scaling": { + "modified": "2019-01-17T02:28:53.459Z", "contributors": [ - "teoli", - "Orestesleal13022" + "wbamberg", + "proncaglia" ] }, - "Code_snippets": { - "modified": "2019-01-16T13:52:37.564Z", + "Games/Tutorials/2D_breakout_game_Phaser/The_score": { + "modified": "2019-03-18T21:21:15.588Z", "contributors": [ - "ffox" + "mikelmg", + "WilsonIsAliveClone", + "serarroy" ] }, - "Code_snippets/Pestañas_del_navegador": { - "modified": "2019-01-16T13:52:57.159Z", + "Games/Tutorials/2D_breakout_game_Phaser/Win_the_game": { + "modified": "2020-04-05T22:13:29.758Z", "contributors": [ - "ffox" + "KevinPiola", + "carlosgocereceda", + "serarroy" ] }, - "Columnas_con_CSS-3": { - "modified": "2019-03-23T23:43:23.940Z", + "Glossary": { + "modified": "2020-10-07T11:08:11.871Z", "contributors": [ - "Mgjbot", - "Jorolo", - "Nukeador" + "peterbe", + "joseluisq", + "SphinxKnight", + "wbamberg", + "raecillacastellana", + "LauraHilliger" ] }, - "Compilar_e_instalar": { - "modified": "2019-03-23T23:58:55.256Z", + "Glossary/404": { + "modified": "2019-03-23T22:37:45.365Z", "contributors": [ - "teoli", - "DoctorRomi", - "Mgjbot", - "Blank zero" + "pekechis" ] }, - "Configurar_correctamente_los_tipos_MIME_del_servidor": { - "modified": "2020-07-16T22:36:04.341Z", + "Glossary/502": { + "modified": "2019-03-23T22:37:47.150Z", "contributors": [ - "Nukeador", - "Kroatan", - "Mtiscordio", - "Hostar", - "Iwa1", - "Markens", - "Brayan Habid" + "pekechis" ] }, - "Control_de_la_corrección_ortográfica_en_formularios_HTML": { - "modified": "2019-03-23T23:54:20.583Z", + "Glossary/AJAX": { + "modified": "2020-08-03T01:24:29.370Z", "contributors": [ - "raecillacastellana", - "vltamara", - "MxJ3susDi4z", - "teoli", - "Mgjbot", - "Jorolo", - "Omnisilver", - "Nukeador" + "zgreco2000", + "hello", + "hectoraldairah", + "tonyrodrigues", + "memotronix", + "ekros" ] }, - "Creacion_de_plugins_OpenSearch_para_Firefox": { - "modified": "2019-03-24T00:00:08.096Z", + "Glossary/API": { + "modified": "2019-03-23T23:14:34.833Z", "contributors": [ "teoli", - "Etrigan", - "tbusca", - "Nukeador", - "Rodrigoknascimento", - "Citora", - "Mgjbot", - "Fenomeno" + "AngelFQC" ] }, - "Creación_de_Componentes_XPCOM/Interior_del_Componente": { - "modified": "2019-04-20T03:45:43.371Z", + "Glossary/ARIA": { + "modified": "2019-03-23T22:15:41.387Z", "contributors": [ - "wbamberg", - "Maharba" + "gparra989" ] }, - "Creación_de_Componentes_XPCOM/Prefacio": { - "modified": "2019-04-20T03:45:45.365Z", + "Glossary/ARPA": { + "modified": "2019-03-18T21:31:13.320Z", "contributors": [ - "wbamberg", - "Maharba" + "dcantomo" ] }, - "Creando_una_extensión": { - "modified": "2019-03-24T00:13:16.401Z", + "Glossary/ASCII": { + "modified": "2019-03-23T22:15:33.120Z", "contributors": [ - "teoli", - "ethertank", - "Sheppy", - "athesto", - "StripTM", - "myfcr", - "DoctorRomi", - "Mgjbot", - "M4ur170", - "Nukeador", - "Wayner", - "El Hacker", - "Arcangelhak", - "Psanz", - "Victor-27-", - "Arteadonis", - "Gadolinio", - "Opevelyn", - "Verruckt", - "Spg2006", - "Gbulfon", - "Damien", - "Peperoni", - "CD77", - "Ordep", - "Indigo", - "Jp1", - "GMG", - "Ateneo", - "Doctormanfer", - "A Morenazo", - "Trace2x", - "Odo", - "Hatch", - "Jorolo", - "Lastjuan", - "Ulntux" + "lajaso", + "gparra989" ] }, - "Crear_una_extensión_personalizada_de_Firefox_con_el_Mozilla_Build_System": { - "modified": "2019-04-26T15:53:18.603Z", + "Glossary/ATAG": { + "modified": "2019-03-23T22:15:44.329Z", "contributors": [ - "cantineoqueteveo", - "2stapps", - "teoli", - "DoctorRomi", - "Carok", - "Gustavo Ruiz", - "Nukeador", - "JuninhoBoy95", - "Kuriboh", - "Mgjbot", - "RickieesES", - "Geomorillo", - "Blank zero", - "Haelmx", - "Superruzafa" + "gparra989" ] }, - "DHTML": { - "modified": "2019-03-23T23:44:54.880Z", + "Glossary/Abstraction": { + "modified": "2019-03-23T22:24:49.785Z", "contributors": [ - "Mgjbot", - "Jorolo", - "Jos" + "feliperomero3", + "israel-munoz", + "ekros" ] }, - "DHTML_Demostraciones_del_uso_de_DOM_Style": { - "modified": "2019-01-16T16:07:51.712Z", + "Glossary/Accessibility": { + "modified": "2019-03-23T22:25:00.142Z", "contributors": [ - "Mgjbot", - "Superruzafa", - "Trace2x", - "Fedora-core", - "Nukeador" + "ekros" ] }, - "DOM": { - "modified": "2019-03-24T00:03:50.113Z", + "Glossary/Accessibility_tree": { + "modified": "2020-10-23T07:47:20.142Z", "contributors": [ - "ethertank", - "fscholz", - "Mgjbot", - "Nukeador", - "Jorolo", - "Takenbot", - "julionc", - "Versae" + "chrisdavidmills", + "caro-oviedo" ] }, - "DOM/Almacenamiento": { - "modified": "2019-03-24T00:11:21.014Z", + "Glossary/Adobe_Flash": { + "modified": "2019-03-18T20:57:35.400Z", "contributors": [ - "AshfaqHossain", - "StripTM", - "RickieesES", - "inma_610", - "Mgjbot", - "Superruzafa", - "Nukeador" + "yoshimii", + "ekros" ] }, - "DOM/Manipulando_el_historial_del_navegador": { - "modified": "2019-09-07T17:44:48.428Z", + "Glossary/Apple_Safari": { + "modified": "2020-08-30T09:41:20.026Z", "contributors": [ - "seaug", - "HerniHdez", - "AlePerez92", - "SphinxKnight", - "talo242", - "mauroc8", - "javiernunez", - "dongerardor", - "StripTM", - "Galsas", - "teoli", - "Izel", - "Sheppy", - "translatoon" + "mastertrooper", + "ekros" ] }, - "DOM/Manipulando_el_historial_del_navegador/Ejemplo": { - "modified": "2019-03-23T22:29:32.414Z", + "Glossary/Arpanet": { + "modified": "2020-03-15T22:50:09.715Z", "contributors": [ - "maitret" + "kev8in", + "gparra989" ] }, - "DOM/Touch_events": { - "modified": "2019-03-23T23:35:01.361Z", + "Glossary/Bandwidth": { + "modified": "2019-03-23T22:15:45.908Z", "contributors": [ - "wbamberg", - "wffranco", - "fscholz", - "teoli", - "Fjaguero", - "jvmjunior", - "maedca" + "gparra989" ] }, - "DOM/document.cookie": { - "modified": "2020-04-15T13:31:17.928Z", + "Glossary/BigInt": { + "modified": "2020-09-25T04:27:46.263Z", "contributors": [ - "atiliopereira", - "Skattspa", - "aralvarez", - "SphinxKnight", - "khalid32", - "Ogquir", - "strongville", - "Ciencia Al Poder", - "Markens", - "DR" + "4rturd13" ] }, - "DOM_Inspector": { - "modified": "2020-07-16T22:36:24.191Z", + "Glossary/Blink": { + "modified": "2019-03-18T21:44:06.201Z", "contributors": [ - "Mgjbot", - "Jorolo", - "Tatan", - "TETSUO" + "ferlopezcarr" ] }, - "Desarrollando_Mozilla": { - "modified": "2019-01-16T14:32:31.515Z", + "Glossary/Block": { + "modified": "2019-03-18T21:41:49.707Z", "contributors": [ - "another_sam", - "Mgjbot", - "Jorolo", - "Nukeador", - "Turin" + "Esteban" ] }, - "Desarrollo_Web": { - "modified": "2019-03-23T23:43:57.691Z", + "Glossary/Block/CSS": { + "modified": "2020-06-24T23:38:45.496Z", "contributors": [ - "Mgjbot", - "Jorolo" + "LinkStrifer", + "BubuAnabelas", + "Esteban" ] }, - "Detectar_la_orientación_del_dispositivo": { - "modified": "2019-03-24T00:07:57.131Z", + "Glossary/Boolean": { + "modified": "2019-03-23T22:58:03.390Z", "contributors": [ - "inma_610" + "Cleon" ] }, - "Dibujando_Gráficos_con_Canvas": { - "modified": "2019-01-16T20:01:59.575Z", + "Glossary/Browser": { + "modified": "2019-03-18T21:43:56.678Z", "contributors": [ - "Firegooploer" + "Maletil", + "ferlopezcarr" ] }, - "Dibujar_texto_usando_canvas": { - "modified": "2019-01-16T15:31:41.845Z", + "Glossary/Browsing_context": { + "modified": "2019-04-04T14:36:22.033Z", "contributors": [ - "Mgjbot", - "HenryGR", - "Nukeador", - "RickieesES", - "Debianpc" + "danielblazquez" ] }, - "DragDrop": { - "modified": "2019-03-23T23:18:26.504Z", + "Glossary/Buffer": { + "modified": "2019-03-18T21:18:59.378Z", "contributors": [ - "drewp" + "diegorhs" ] }, - "DragDrop/Drag_and_Drop": { - "modified": "2019-03-24T00:07:57.845Z", + "Glossary/CDN": { + "modified": "2020-05-28T16:24:22.721Z", "contributors": [ - "ethertank", - "inma_610" + "jaimefdezmv", + "quirinolemanches" ] }, - "DragDrop/Drag_and_Drop/drag_and_drop_archivo": { - "modified": "2020-11-01T11:34:07.543Z", + "Glossary/CRUD": { + "modified": "2019-03-23T22:03:05.724Z", "contributors": [ - "juanrueda", - "davidpala.dev", - "brahAraya", - "ajuni880", - "israteneda", - "RVidalki", - "clarii", - "rgomez" + "velizluisma" ] }, - "DragDrop/Recommended_Drag_Types": { - "modified": "2019-03-23T23:18:24.597Z", + "Glossary/CSRF": { + "modified": "2019-03-18T21:19:22.851Z", "contributors": [ - "Evinton" + "sergiomgm" ] }, - "Estructura_de_directorios_de_código_fuente_de_Mozilla": { - "modified": "2019-03-24T00:17:11.569Z", + "Glossary/CSS": { + "modified": "2020-06-20T09:41:42.032Z", "contributors": [ - "ethertank", - "MiguelFRomeroR", - "Sheppy" + "hello", + "Maletil", + "cawilff", + "Sergio_Gonzalez_Collado", + "analia.antenucci", + "sergio_p_d", + "memotronix" ] }, - "Etiquetas_audio_y_video_en_Firefox": { - "modified": "2019-03-23T23:59:36.294Z", + "Glossary/Callback_function": { + "modified": "2019-04-22T16:14:36.669Z", "contributors": [ - "Nukeador", - "deimidis" + "faustom721", + "lcassettai", + "yomar-dev" ] }, - "Extensiones/Actualización_de_extensiones_para_Firefox_4": { - "modified": "2019-03-24T00:05:58.390Z", + "Glossary/Canvas": { + "modified": "2020-09-21T20:35:53.439Z", "contributors": [ - "inma_610" + "Alejo1417", + "jorgeluispedro16" ] }, - "FAQ_Incrustando_Mozilla": { - "modified": "2019-01-16T16:20:13.874Z", + "Glossary/Chrome": { + "modified": "2019-03-18T21:42:29.056Z", "contributors": [ - "Lastjuan" + "amirtorrez" ] }, - "Firefox_1.5_para_Desarrolladores": { - "modified": "2019-03-23T23:47:34.365Z", + "Glossary/Class": { + "modified": "2019-03-18T21:18:45.753Z", "contributors": [ - "wbamberg", - "SphinxKnight", - "Rubenbae", - "Pachtonio", - "Sheppy", - "Mgjbot", - "Jorolo", - "Fedora-core", - "Nukeador", - "Takenbot", - "Willyaranda", - "Pasky", - "Angelr04", - "Epaclon" + "PabloDeTorre", + "carlosCharlie" ] }, - "Firefox_19_para_desarrolladores": { - "modified": "2019-03-18T20:54:04.568Z", + "Glossary/Codec": { + "modified": "2019-03-18T21:19:01.793Z", "contributors": [ - "ulisestrujillo", - "wbamberg", - "Sebastianz", - "mannyatico" + "diegorhs" ] }, - "Firefox_2_para_desarrolladores": { - "modified": "2019-03-23T23:58:56.168Z", + "Glossary/Compile": { + "modified": "2019-03-18T21:19:15.661Z", "contributors": [ - "wbamberg", - "DoctorRomi", - "Markens", - "Mgjbot", - "Nukeador", - "Superruzafa", - "Guis", - "StripTM", - "Jorolo" + "PabloDeTorre", + "carlosCharlie" ] }, - "Firefox_3.5_para_desarrolladores": { - "modified": "2019-03-24T00:03:16.036Z", + "Glossary/Computer_Programming": { + "modified": "2019-03-23T22:02:08.531Z", "contributors": [ - "wbamberg", - "ethertank", - "another_sam", - "deimidis", - "Nukeador" + "israel-munoz" ] }, - "Firefox_3_para_desarrolladores": { - "modified": "2019-03-24T00:04:08.312Z", + "Glossary/Constructor": { + "modified": "2019-03-23T22:15:36.356Z", "contributors": [ - "wbamberg", - "teoli", - "fscholz", - "Mgjbot", - "Nukeador", - "Surferosx", - "Nathymig", - "Dfier", - "Wrongloop", - "Garlock", - "Brahiam", - "Mariano", - "HenryGR", - "Jseldon" + "untilbit", + "gparra989" ] }, - "Firefox_addons_developer_guide/Introduction_to_Extensions": { - "modified": "2019-03-23T23:37:41.632Z", + "Glossary/Cookie": { + "modified": "2019-03-18T21:19:00.075Z", "contributors": [ - "pacommozilla", - "AgustinAlvia" + "diegorhs" ] }, - "Firefox_addons_developer_guide/Technologies_used_in_developing_extensions": { - "modified": "2019-03-18T21:16:06.336Z", + "Glossary/Copyleft": { + "modified": "2019-03-18T21:43:43.180Z", "contributors": [ - "AgustinAlvia" + "ferlopezcarr" ] }, - "Formatos_multimedia_admitidos_por_los_elementos_de_video_y_audio": { - "modified": "2019-01-16T14:22:48.165Z", + "Glossary/Cross-site_scripting": { + "modified": "2020-04-13T08:31:08.536Z", "contributors": [ - "inma_610" + "Luiggy", + "qwerty726" ] }, - "Fragmentos_de_código": { - "modified": "2019-01-16T13:52:44.049Z", + "Glossary/DOM": { + "modified": "2019-03-18T21:10:52.251Z", "contributors": [ - "ffox" + "ChrisMHM", + "PabloDeTorre", + "vinyetcg", + "ferlopezcarr", + "HerberWest" ] }, - "Funciones": { - "modified": "2019-01-16T16:18:04.260Z", + "Glossary/Doctype": { + "modified": "2019-03-23T22:07:28.155Z", "contributors": [ - "Jorolo" + "omertafox" ] }, - "Games": { - "modified": "2019-09-09T15:31:15.455Z", + "Glossary/Domain": { + "modified": "2019-03-18T21:19:17.838Z", "contributors": [ - "SphinxKnight", - "isocialweb", - "wbamberg", - "fscholz", - "ajspadial", - "Arudb79", - "atlas7jean", - "chrisdavidmills" + "PabloDeTorre" ] }, - "Games/Anatomy": { - "modified": "2019-01-16T22:18:47.235Z", + "Glossary/Dynamic_programming_language": { + "modified": "2020-09-12T18:21:07.076Z", "contributors": [ - "wbamberg", - "cnaucler" + "IsraFloores", + "DaniNz" ] }, - "Games/Herramients": { - "modified": "2019-01-16T19:29:51.696Z", + "Glossary/ECMAScript": { + "modified": "2020-08-31T05:49:16.882Z", "contributors": [ - "wbamberg", - "atlas7jean" + "Nachec", + "anaturrillo", + "Cleon" ] }, - "Games/Herramients/asm.js": { - "modified": "2019-03-18T21:21:31.919Z", + "Glossary/Element": { + "modified": "2019-03-18T21:31:18.857Z", "contributors": [ - "WilsonIsAliveClone", - "serarroy" + "eddieurbina", + "carllewisc" ] }, - "Games/Introduccion": { - "modified": "2020-11-28T21:23:49.961Z", + "Glossary/Empty_element": { + "modified": "2019-03-23T22:10:52.378Z", "contributors": [ - "rayrojas", - "titox", - "gauchoscript", - "wbamberg", - "Mancux2", - "Albizures", - "atlas7jean" + "juanmmendez", + "DaniNz" ] }, - "Games/Introducción_al_desarrollo_de_juegos_HTML5_(resumen)": { - "modified": "2019-08-05T12:49:59.324Z", + "Glossary/Encapsulation": { + "modified": "2019-03-18T21:19:13.092Z", "contributors": [ - "WilsonIsAliveClone" + "PabloDeTorre" ] }, - "Games/Publishing_games": { - "modified": "2019-03-18T21:22:03.542Z", + "Glossary/FPS": { + "modified": "2020-08-19T14:42:01.823Z", "contributors": [ - "carlosgocereceda", - "mikelmg", - "SphinxKnight", - "wbamberg" + "ianaya89" ] }, - "Games/Publishing_games/Game_distribution": { - "modified": "2020-08-09T16:02:37.394Z", + "Glossary/FTP": { + "modified": "2020-06-22T03:59:10.085Z", "contributors": [ - "katherincorredor", - "WilsonIsAliveClone", - "carlosgocereceda" + "Maose" ] }, - "Games/Publishing_games/Monetización_de_los_juegos": { - "modified": "2019-03-18T21:22:04.540Z", + "Glossary/Flex": { + "modified": "2020-10-03T01:09:13.365Z", "contributors": [ - "mikelmg", - "carlosgocereceda", - "WilsonIsAliveClone" + "duduindo", + "FlashAmarillo" ] }, - "Games/Techniques": { - "modified": "2019-01-17T02:01:32.309Z", + "Glossary/Flex_Container": { + "modified": "2019-11-21T16:42:31.273Z", "contributors": [ - "wbamberg", - "chrisdavidmills" + "scaloner" ] }, - "Games/Techniques/2D_collision_detection": { - "modified": "2019-01-17T02:34:23.543Z", + "Glossary/Flexbox": { + "modified": "2019-03-18T21:23:56.502Z", "contributors": [ - "wbamberg", - "SuperHostile" + "danpaltor", + "ericksonespejo" ] }, - "Games/Techniques/3D_on_the_web": { - "modified": "2019-03-18T21:23:46.780Z", + "Glossary/GPL": { + "modified": "2019-03-18T21:43:50.897Z", "contributors": [ - "wbamberg" + "ferlopezcarr" ] }, - "Games/Techniques/WebRTC_data_channels": { - "modified": "2019-03-23T22:04:08.435Z", + "Glossary/Git": { + "modified": "2019-03-18T21:19:20.412Z", "contributors": [ - "wbamberg", - "J4MP" + "PabloDeTorre", + "sergiomgm" ] }, - "Games/Tutorials/2D_breakout_game_Phaser": { - "modified": "2019-03-18T21:43:09.977Z", + "Glossary/Google_Chrome": { + "modified": "2019-03-18T21:44:29.185Z", "contributors": [ - "wbamberg", - "chrisdavidmills" + "ferlopezcarr" ] }, - "Games/Tutorials/2D_breakout_game_Phaser/Animations_and_tweens": { - "modified": "2019-03-18T21:18:57.095Z", + "Glossary/Grid": { + "modified": "2019-03-23T22:10:55.372Z", "contributors": [ - "WilsonIsAliveClone", - "serarroy" + "ocamachor", + "tipoqueno", + "welm" ] }, - "Games/Tutorials/2D_breakout_game_Phaser/Botones": { - "modified": "2019-11-03T00:22:01.318Z", + "Glossary/Grid_Areas": { + "modified": "2019-03-18T21:46:28.612Z", "contributors": [ - "AdryDev92", - "carlosgocereceda", - "serarroy" + "tipoqueno" ] }, - "Games/Tutorials/2D_breakout_game_Phaser/Collision_detection": { - "modified": "2019-03-18T21:21:35.455Z", + "Glossary/Grid_Column": { + "modified": "2020-05-19T18:27:14.068Z", "contributors": [ - "WilsonIsAliveClone", - "serarroy" + "biclope13", + "amaiafilo" ] }, - "Games/Tutorials/2D_breakout_game_Phaser/Extra_lives": { - "modified": "2019-03-18T21:21:17.358Z", + "Glossary/Grid_Lines": { + "modified": "2019-05-27T03:46:29.561Z", "contributors": [ - "carlosgocereceda", - "WilsonIsAliveClone", - "serarroy" + "asael2" ] }, - "Games/Tutorials/2D_breakout_game_Phaser/Game_over": { - "modified": "2019-03-18T21:20:23.610Z", + "Glossary/Grid_Rows": { + "modified": "2019-03-18T21:23:35.644Z", "contributors": [ - "mikelmg", - "carlosgocereceda", - "WilsonIsAliveClone" + "Xino" ] }, - "Games/Tutorials/2D_breakout_game_Phaser/Initialize_the_framework": { - "modified": "2019-01-17T02:28:59.298Z", + "Glossary/HTML": { + "modified": "2020-01-23T12:51:04.156Z", "contributors": [ - "wbamberg", - "proncaglia" - ] - }, - "Games/Tutorials/2D_breakout_game_Phaser/Move_the_ball": { - "modified": "2019-03-18T21:21:15.950Z", - "contributors": [ - "WilsonIsAliveClone", - "serarroy" + "editorUOC", + "edsonv", + "jpmontoya182", + "sergio_p_d", + "raecillacastellana" ] }, - "Games/Tutorials/2D_breakout_game_Phaser/Rebotar_en_las_paredes": { - "modified": "2019-03-18T21:18:55.239Z", + "Glossary/HTML5": { + "modified": "2020-06-22T04:32:17.508Z", "contributors": [ - "WilsonIsAliveClone" + "Maose" ] }, - "Games/Tutorials/2D_breakout_game_Phaser/Scaling": { - "modified": "2019-01-17T02:28:53.459Z", + "Glossary/HTTP": { + "modified": "2019-07-01T03:11:50.434Z", "contributors": [ - "wbamberg", - "proncaglia" + "SphinxKnight", + "unaivalle", + "sdelrio", + "sergio_p_d" ] }, - "Games/Tutorials/2D_breakout_game_Phaser/The_score": { - "modified": "2019-03-18T21:21:15.588Z", + "Glossary/Head": { + "modified": "2020-06-22T04:54:37.023Z", "contributors": [ - "mikelmg", - "WilsonIsAliveClone", - "serarroy" + "Maose" ] }, - "Games/Tutorials/2D_breakout_game_Phaser/Win_the_game": { - "modified": "2020-04-05T22:13:29.758Z", + "Glossary/Hoisting": { + "modified": "2019-05-15T21:40:52.256Z", "contributors": [ - "KevinPiola", - "carlosgocereceda", - "serarroy" + "jevvilla", + "IsaacAaron", + "sminutoli" ] }, - "Games/Workflows": { - "modified": "2019-01-16T19:25:39.809Z", + "Glossary/Host": { + "modified": "2020-12-10T07:42:38.267Z", "contributors": [ - "wbamberg", - "groovecoder" + "ojgarciab" ] }, - "Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro": { - "modified": "2019-03-23T22:19:39.385Z", + "Glossary/Hyperlink": { + "modified": "2019-03-18T21:44:07.373Z", "contributors": [ - "wbamberg", - "profesooooor", - "emolinerom", - "jolosan" + "ferlopezcarr" ] }, - "Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Bounce_off_the_walls": { - "modified": "2019-03-23T22:19:43.884Z", + "Glossary/Hypertext": { + "modified": "2019-03-18T21:30:26.239Z", "contributors": [ - "wbamberg", - "regisdark", - "profesooooor", - "emolinerom" + "12g" ] }, - "Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Construye_grupo_bloques": { - "modified": "2019-01-17T00:34:48.662Z", + "Glossary/IDE": { + "modified": "2019-03-18T21:18:59.913Z", "contributors": [ - "wbamberg", - "profesooooor", - "emolinerom" + "PabloDeTorre", + "carlosCharlie" ] }, - "Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Control_pala_y_teclado": { - "modified": "2019-01-17T00:34:24.542Z", + "Glossary/IIFE": { + "modified": "2019-03-18T20:50:02.318Z", "contributors": [ - "wbamberg", - "profesooooor", - "emolinerom" + "danyparc", + "Efrain", + "bluesky11117", + "emorc" ] }, - "Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Controles_raton": { - "modified": "2019-01-17T00:34:40.600Z", + "Glossary/IP_Address": { + "modified": "2020-06-22T03:38:12.516Z", "contributors": [ - "wbamberg", - "profesooooor", - "emolinerom" + "Maose" ] }, - "Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Create_the_Canvas_and_draw_on_it": { - "modified": "2019-01-17T00:33:08.752Z", + "Glossary/IPv6": { + "modified": "2020-06-03T01:33:08.312Z", "contributors": [ - "wbamberg", - "profesooooor", - "jolosan" + "geryescalier" ] }, - "Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Deteccion_colisiones": { - "modified": "2019-03-18T20:48:38.662Z", + "Glossary/IRC": { + "modified": "2020-12-03T00:37:27.868Z", "contributors": [ - "juanedsa", - "wbamberg", - "profesooooor", - "emolinerom" + "devil64-dev" ] }, - "Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Fin_del_juego": { - "modified": "2019-03-23T22:17:05.460Z", + "Glossary/ISP": { + "modified": "2020-06-22T04:21:55.362Z", "contributors": [ - "wbamberg", - "regisdark", - "profesooooor", - "jolosan" + "Maose" ] }, - "Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Mueve_la_bola": { - "modified": "2019-03-23T22:19:10.641Z", + "Glossary/IndexedDB": { + "modified": "2019-03-23T22:36:07.366Z", "contributors": [ - "wbamberg", - "profesooooor", - "jolosan", - "emolinerom" + "Loque" ] }, - "Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Terminando": { - "modified": "2019-01-17T01:08:54.537Z", + "Glossary/Internet": { + "modified": "2020-04-27T00:09:14.977Z", "contributors": [ - "wbamberg", - "profesooooor" + "candepineyro2015", + "r2cris", + "cawilff" ] }, - "Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Track_the_score_and_win": { - "modified": "2019-01-17T01:08:23.453Z", + "Glossary/JSON": { + "modified": "2019-05-24T12:44:54.639Z", "contributors": [ - "wbamberg", - "profesooooor" + "EstebanRK", + "chavesrdj", + "LeonardoDG" ] }, - "Games/Workflows/HTML5_Gamedev_Phaser_Device_Orientation": { - "modified": "2019-03-23T23:11:29.148Z", + "Glossary/Java": { + "modified": "2019-03-18T21:19:11.310Z", "contributors": [ - "wbamberg", - "lauttttaro", - "chebit" + "PabloDeTorre", + "carlosCharlie" ] }, - "Generación_de_GUIDs": { - "modified": "2019-03-24T00:06:07.388Z", + "Glossary/JavaScript": { + "modified": "2020-09-01T00:56:53.463Z", "contributors": [ - "ibnkhaldun" + "Nachec", + "c9009", + "missmakita", + "sergio_p_d", + "gorrotowi" ] }, - "Glossary": { - "modified": "2020-10-07T11:08:11.871Z", + "Glossary/Keyword": { + "modified": "2020-05-04T10:31:29.902Z", "contributors": [ - "peterbe", - "joseluisq", - "SphinxKnight", - "wbamberg", - "raecillacastellana", - "LauraHilliger" + "jorgeCaster", + "blanchart", + "DaniNz" ] }, - "Glossary/404": { - "modified": "2019-03-23T22:37:45.365Z", + "Glossary/LGPL": { + "modified": "2019-03-18T21:43:48.377Z", "contributors": [ - "pekechis" + "ferlopezcarr" ] }, - "Glossary/502": { - "modified": "2019-03-23T22:37:47.150Z", + "Glossary/Long_task": { + "modified": "2020-08-08T01:38:15.029Z", "contributors": [ - "pekechis" + "Nachec" ] }, - "Glossary/AJAX": { - "modified": "2020-08-03T01:24:29.370Z", + "Glossary/MVC": { + "modified": "2020-01-31T17:55:57.978Z", "contributors": [ - "zgreco2000", - "hello", - "hectoraldairah", - "tonyrodrigues", - "memotronix", - "ekros" + "deit", + "IsaacAlvrt" ] }, - "Glossary/API": { - "modified": "2019-03-23T23:14:34.833Z", + "Glossary/MitM": { + "modified": "2019-03-18T21:25:35.556Z", "contributors": [ - "teoli", - "AngelFQC" + "lcastrosaez" ] }, - "Glossary/ARIA": { - "modified": "2019-03-23T22:15:41.387Z", + "Glossary/Mixin": { + "modified": "2019-03-23T22:37:38.011Z", "contributors": [ - "gparra989" + "josepaez2", + "raecillacastellana", + "kramery" ] }, - "Glossary/ARPA": { - "modified": "2019-03-18T21:31:13.320Z", + "Glossary/Mobile_First": { + "modified": "2019-07-02T17:22:58.448Z", "contributors": [ - "dcantomo" + "JuanMaRuiz" ] }, - "Glossary/ASCII": { - "modified": "2019-03-23T22:15:33.120Z", + "Glossary/Mozilla_Firefox": { + "modified": "2019-03-23T22:06:36.476Z", "contributors": [ - "lajaso", - "gparra989" + "BrodaNoel" ] }, - "Glossary/ATAG": { - "modified": "2019-03-23T22:15:44.329Z", + "Glossary/Node": { + "modified": "2019-05-17T13:24:16.608Z", "contributors": [ - "gparra989" + "GUEROZ", + "untilbit", + "klez" ] }, - "Glossary/Abstraction": { - "modified": "2019-03-23T22:24:49.785Z", + "Glossary/Node.js": { + "modified": "2020-10-24T17:01:45.516Z", "contributors": [ - "feliperomero3", - "israel-munoz", - "ekros" + "oism28", + "rlopezAyala", + "malonson", + "migdonio1" ] }, - "Glossary/Accessibility": { - "modified": "2019-03-23T22:25:00.142Z", + "Glossary/Node/DOM": { + "modified": "2019-03-23T22:27:35.877Z", "contributors": [ - "ekros" + "malonson" ] }, - "Glossary/Accessibility_tree": { - "modified": "2020-10-23T07:47:20.142Z", + "Glossary/Null": { + "modified": "2019-03-23T22:58:02.167Z", "contributors": [ - "chrisdavidmills", - "caro-oviedo" + "Cleon" ] }, - "Glossary/Adobe_Flash": { - "modified": "2019-03-18T20:57:35.400Z", + "Glossary/OOP": { + "modified": "2019-03-18T21:19:20.278Z", "contributors": [ - "yoshimii", - "ekros" + "PabloDeTorre", + "carlosCharlie" ] }, - "Glossary/Algoritmo": { - "modified": "2019-01-17T00:09:54.063Z", + "Glossary/PHP": { + "modified": "2020-05-07T14:37:16.100Z", "contributors": [ - "ekros" + "pascual143" ] }, - "Glossary/Apple_Safari": { - "modified": "2020-08-30T09:41:20.026Z", + "Glossary/POP": { + "modified": "2020-04-18T03:21:04.687Z", "contributors": [ - "mastertrooper", - "ekros" + "itrjwyss" ] }, - "Glossary/Argumento": { - "modified": "2019-03-23T22:15:34.303Z", + "Glossary/Parse": { + "modified": "2020-12-05T08:25:54.330Z", "contributors": [ - "gparra989" + "StripTM" ] }, - "Glossary/Arpanet": { - "modified": "2020-03-15T22:50:09.715Z", + "Glossary/Polyfill": { + "modified": "2019-03-18T21:24:24.118Z", "contributors": [ - "kev8in", - "gparra989" + "viabadia" ] }, - "Glossary/Arquitectura_de_la_información": { - "modified": "2020-09-06T16:32:32.362Z", + "Glossary/Port": { + "modified": "2020-04-18T03:24:57.722Z", "contributors": [ - "Nachec" + "itrjwyss", + "malonson" ] }, - "Glossary/Arreglos": { - "modified": "2020-05-28T13:51:10.546Z", + "Glossary/Progressive_Enhancement": { + "modified": "2019-07-07T08:35:50.920Z", "contributors": [ - "fedoroffs", - "BubuAnabelas", - "Davids-Devel", - "Daniel_Martin", - "gparra989" + "JuanMaRuiz" ] }, - "Glossary/Asíncrono": { - "modified": "2020-05-04T10:40:03.360Z", + "Glossary/Promise": { + "modified": "2019-03-18T21:18:47.852Z", "contributors": [ - "jorgeCaster", - "fjluengo", - "gparra989" + "PabloDeTorre", + "carlosCharlie" ] }, - "Glossary/Atributo": { - "modified": "2019-03-23T22:15:46.319Z", + "Glossary/Protocol": { + "modified": "2020-12-10T11:56:54.768Z", "contributors": [ - "gparra989" + "ojgarciab", + "Maose", + "itrjwyss", + "PabloDeTorre", + "carlosCharlie" ] }, - "Glossary/Atributo_global": { - "modified": "2019-03-18T21:19:21.658Z", + "Glossary/Prototype": { + "modified": "2019-03-28T18:50:47.544Z", "contributors": [ - "PabloDeTorre" + "maruskina" ] }, - "Glossary/Bandwidth": { - "modified": "2019-03-23T22:15:45.908Z", + "Glossary/Prototype-based_programming": { + "modified": "2020-08-25T19:45:44.389Z", "contributors": [ - "gparra989" + "duduindo", + "paolazaratem" ] }, - "Glossary/BigInt": { - "modified": "2020-09-25T04:27:46.263Z", + "Glossary/Public-key_cryptography": { + "modified": "2019-03-18T21:18:41.396Z", "contributors": [ - "4rturd13" + "GCF7" ] }, - "Glossary/Blink": { - "modified": "2019-03-18T21:44:06.201Z", + "Glossary/Python": { + "modified": "2019-01-17T03:26:06.615Z", "contributors": [ - "ferlopezcarr" + "Guzmanr1", + "ax16mr" ] }, - "Glossary/Block": { - "modified": "2019-03-18T21:41:49.707Z", + "Glossary/REST": { + "modified": "2019-03-18T21:19:06.376Z", "contributors": [ - "Esteban" + "PabloDeTorre", + "carlosCharlie" ] }, - "Glossary/Block/CSS": { - "modified": "2020-06-24T23:38:45.496Z", + "Glossary/RGB": { + "modified": "2019-03-18T21:19:01.657Z", "contributors": [ - "LinkStrifer", - "BubuAnabelas", - "Esteban" + "PabloDeTorre" ] }, - "Glossary/Boolean": { - "modified": "2019-03-23T22:58:03.390Z", + "Glossary/RSS": { + "modified": "2019-03-18T21:43:45.312Z", "contributors": [ - "Cleon" + "ferlopezcarr" ] }, - "Glossary/Browser": { - "modified": "2019-03-18T21:43:56.678Z", + "Glossary/Reflow": { + "modified": "2020-11-16T21:27:00.470Z", "contributors": [ - "Maletil", - "ferlopezcarr" + "ccamiloo" ] }, - "Glossary/Browsing_context": { - "modified": "2019-04-04T14:36:22.033Z", + "Glossary/Regular_expression": { + "modified": "2019-03-23T22:27:50.421Z", "contributors": [ - "danielblazquez" + "lurkinboss81", + "malonson" ] }, - "Glossary/Buffer": { - "modified": "2019-03-18T21:18:59.378Z", + "Glossary/Responsive_web_design": { + "modified": "2019-03-18T21:36:04.998Z", "contributors": [ - "diegorhs" + "lajaso" ] }, - "Glossary/CDN": { - "modified": "2020-05-28T16:24:22.721Z", + "Glossary/Ruby": { + "modified": "2019-03-18T21:18:51.137Z", "contributors": [ - "jaimefdezmv", - "quirinolemanches" + "diegorhs" ] }, - "Glossary/CID": { - "modified": "2019-03-18T21:19:22.724Z", + "Glossary/SEO": { + "modified": "2019-03-23T22:38:01.994Z", "contributors": [ - "PabloDeTorre", - "sergiomgm" + "carlossuarez" ] }, - "Glossary/CRUD": { - "modified": "2019-03-23T22:03:05.724Z", + "Glossary/SGML": { + "modified": "2019-03-18T21:43:11.251Z", "contributors": [ - "velizluisma" + "Undigon", + "cawilff" ] }, - "Glossary/CSRF": { - "modified": "2019-03-18T21:19:22.851Z", + "Glossary/SIMD": { + "modified": "2019-03-18T21:18:44.939Z", "contributors": [ - "sergiomgm" + "PabloDeTorre", + "carlosCharlie" ] }, - "Glossary/CSS": { - "modified": "2020-06-20T09:41:42.032Z", + "Glossary/SISD": { + "modified": "2019-03-18T21:18:56.313Z", "contributors": [ - "hello", - "Maletil", - "cawilff", - "Sergio_Gonzalez_Collado", - "analia.antenucci", - "sergio_p_d", - "memotronix" + "carlosCharlie" ] }, - "Glossary/Cabecera_general": { - "modified": "2019-03-18T21:34:28.155Z", + "Glossary/SLD": { + "modified": "2019-04-30T13:59:51.577Z", "contributors": [ - "Watermelonnable" + "manfredosanchez" ] }, - "Glossary/Caché": { - "modified": "2019-03-18T21:19:00.217Z", + "Glossary/SMTP": { + "modified": "2020-04-18T03:31:14.904Z", "contributors": [ - "diegorhs" + "itrjwyss" ] }, - "Glossary/Callback_function": { - "modified": "2019-04-22T16:14:36.669Z", + "Glossary/SQL": { + "modified": "2019-03-18T21:18:56.658Z", "contributors": [ - "faustom721", - "lcassettai", - "yomar-dev" + "diegorhs" ] }, - "Glossary/Canvas": { - "modified": "2020-09-21T20:35:53.439Z", + "Glossary/SVG": { + "modified": "2019-03-18T21:35:52.789Z", "contributors": [ - "Alejo1417", - "jorgeluispedro16" + "lajaso" ] }, - "Glossary/Caracter": { - "modified": "2020-08-23T05:27:25.056Z", + "Glossary/SVN": { + "modified": "2019-03-18T21:19:01.509Z", "contributors": [ - "Nachec" + "PabloDeTorre" ] }, - "Glossary/Chrome": { - "modified": "2019-03-18T21:42:29.056Z", + "Glossary/Scope": { + "modified": "2019-07-02T17:59:48.762Z", "contributors": [ - "amirtorrez" + "Angel10050" ] }, - "Glossary/Cifrado": { - "modified": "2019-03-18T21:19:02.237Z", + "Glossary/Sloppy_mode": { + "modified": "2020-08-31T05:32:49.321Z", "contributors": [ - "PabloDeTorre", - "sergiomgm" + "Nachec", + "dcarmal-dayvo" ] }, - "Glossary/Clasificación_por_tarjetas_(card_sorting)": { - "modified": "2019-03-18T21:19:20.709Z", + "Glossary/Slug": { + "modified": "2019-03-18T21:43:51.297Z", "contributors": [ - "PabloDeTorre" + "LSanchez697" ] }, - "Glossary/Class": { - "modified": "2019-03-18T21:18:45.753Z", + "Glossary/String": { + "modified": "2019-03-23T22:58:03.956Z", "contributors": [ - "PabloDeTorre", - "carlosCharlie" + "Cleon" ] }, - "Glossary/Clausura": { - "modified": "2020-08-12T18:07:27.330Z", + "Glossary/Symbol": { + "modified": "2019-03-23T22:57:59.274Z", "contributors": [ - "l1oret" + "Cleon" ] }, - "Glossary/Clave": { - "modified": "2020-02-18T06:49:22.148Z", + "Glossary/Symmetric-key_cryptography": { + "modified": "2019-03-18T21:18:28.720Z", "contributors": [ - "joseluisq", "sergiomgm", "GCF7" ] }, - "Glossary/Codec": { - "modified": "2019-03-18T21:19:01.793Z", + "Glossary/TCP": { + "modified": "2020-12-10T12:12:08.342Z", "contributors": [ - "diegorhs" + "ojgarciab", + "itrjwyss", + "DaniNz" ] }, - "Glossary/Compile": { - "modified": "2019-03-18T21:19:15.661Z", + "Glossary/Tag": { + "modified": "2020-05-04T10:24:41.308Z", "contributors": [ - "PabloDeTorre", - "carlosCharlie" + "jorgeCaster", + "DaniNz" ] }, - "Glossary/Computer_Programming": { - "modified": "2019-03-23T22:02:08.531Z", + "Glossary/Three_js": { + "modified": "2020-11-09T17:44:33.436Z", "contributors": [ - "israel-munoz" + "Plumas" ] }, - "Glossary/Constante": { - "modified": "2019-03-18T21:19:15.794Z", + "Glossary/Truthy": { + "modified": "2019-03-18T21:45:50.903Z", "contributors": [ - "PabloDeTorre" + "AlePerez92", + "VlixesItaca", + "juandata" ] }, - "Glossary/Constructor": { - "modified": "2019-03-23T22:15:36.356Z", - "contributors": [ - "untilbit", - "gparra989" - ] - }, - "Glossary/Cookie": { - "modified": "2019-03-18T21:19:00.075Z", + "Glossary/Type": { + "modified": "2019-03-18T21:19:01.358Z", "contributors": [ - "diegorhs" + "PabloDeTorre" ] }, - "Glossary/Copyleft": { - "modified": "2019-03-18T21:43:43.180Z", + "Glossary/URI": { + "modified": "2019-03-18T21:33:53.970Z", "contributors": [ - "ferlopezcarr" + "DaniNz" ] }, - "Glossary/Criptoanálisis": { - "modified": "2019-03-18T21:18:36.783Z", + "Glossary/URL": { + "modified": "2020-09-05T02:39:54.712Z", "contributors": [ - "sergiomgm", - "GCF7" + "Nachec", + "BubuAnabelas", + "Jabi" ] }, - "Glossary/Criptografía": { - "modified": "2019-03-23T22:02:58.447Z", + "Glossary/UTF-8": { + "modified": "2020-08-28T17:54:39.004Z", "contributors": [ - "velizluisma" + "Nachec", + "PabloDeTorre", + "carlosCharlie" ] }, - "Glossary/Cross-site_scripting": { - "modified": "2020-04-13T08:31:08.536Z", + "Glossary/UX": { + "modified": "2020-11-10T01:47:49.876Z", "contributors": [ - "Luiggy", - "qwerty726" + "rockoldo" ] }, - "Glossary/DOM": { - "modified": "2019-03-18T21:10:52.251Z", + "Glossary/Unicode": { + "modified": "2020-08-28T17:48:20.454Z", "contributors": [ - "ChrisMHM", - "PabloDeTorre", - "vinyetcg", - "ferlopezcarr", - "HerberWest" + "Nachec" ] }, - "Glossary/DTD": { - "modified": "2019-01-17T00:20:06.485Z", + "Glossary/Variable": { + "modified": "2020-09-01T08:00:19.523Z", "contributors": [ - "wilfridoSantos" + "Nachec", + "Oscarloray" ] }, - "Glossary/Descifrado": { - "modified": "2019-03-18T21:19:11.476Z", + "Glossary/Vendor_Prefix": { + "modified": "2019-03-18T21:21:31.446Z", "contributors": [ - "sergiomgm", - "GCF7" + "Carlos_Gutierrez" ] }, - "Glossary/Doctype": { - "modified": "2019-03-23T22:07:28.155Z", + "Glossary/Viewport": { + "modified": "2019-07-22T14:35:59.639Z", "contributors": [ - "omertafox" + "EBregains", + "ffcc" ] }, - "Glossary/Domain": { - "modified": "2019-03-18T21:19:17.838Z", + "Glossary/WCAG": { + "modified": "2019-03-18T21:19:06.839Z", "contributors": [ "PabloDeTorre" ] }, - "Glossary/Dynamic_programming_language": { - "modified": "2020-09-12T18:21:07.076Z", + "Glossary/WHATWG": { + "modified": "2019-03-18T21:43:10.212Z", "contributors": [ - "IsraFloores", - "DaniNz" + "cawilff" ] }, - "Glossary/ECMAScript": { - "modified": "2020-08-31T05:49:16.882Z", + "Glossary/WebKit": { + "modified": "2019-03-18T21:43:49.861Z", "contributors": [ - "Nachec", - "anaturrillo", - "Cleon" + "ferlopezcarr" ] }, - "Glossary/Element": { - "modified": "2019-03-18T21:31:18.857Z", + "Glossary/WebSockets": { + "modified": "2019-03-23T22:10:09.047Z", "contributors": [ - "eddieurbina", - "carllewisc" + "spachecojimenez" ] }, - "Glossary/Empty_element": { - "modified": "2019-03-23T22:10:52.378Z", + "Glossary/WebVTT": { + "modified": "2020-08-13T17:05:43.218Z", "contributors": [ - "juanmmendez", - "DaniNz" + "Pablo-No" ] }, - "Glossary/Encapsulation": { - "modified": "2019-03-18T21:19:13.092Z", + "Glossary/World_Wide_Web": { + "modified": "2020-07-07T13:22:38.798Z", "contributors": [ - "PabloDeTorre" + "pauli.rodriguez.c", + "camsa", + "SphinxKnight", + "r2cris", + "sergio_p_d" ] }, - "Glossary/Encriptación": { - "modified": "2019-03-18T21:19:07.209Z", + "Glossary/Wrapper": { + "modified": "2019-03-18T21:18:59.254Z", "contributors": [ "PabloDeTorre", - "carlosCharlie", - "sergiomgm" + "carlosCharlie" ] }, - "Glossary/Entidad": { - "modified": "2020-07-08T14:34:06.256Z", + "Glossary/XML": { + "modified": "2019-03-18T21:43:43.021Z", "contributors": [ - "lucasreta" + "ferlopezcarr" ] }, - "Glossary/Espacio_en_blanco": { - "modified": "2020-08-24T04:59:10.953Z", + "Glossary/application_context": { + "modified": "2019-03-23T22:22:51.795Z", "contributors": [ - "Nachec" + "ekros" ] }, - "Glossary/Estructura_de_datos": { - "modified": "2019-03-18T21:24:31.453Z", + "Glossary/cacheable": { + "modified": "2019-10-03T19:16:28.937Z", "contributors": [ - "edsonv" + "htmike" ] }, - "Glossary/FPS": { - "modified": "2020-08-19T14:42:01.823Z", + "Glossary/challenge": { + "modified": "2019-03-23T22:03:38.845Z", "contributors": [ - "ianaya89" + "_deiberchacon" ] }, - "Glossary/FTP": { - "modified": "2020-06-22T03:59:10.085Z", + "Glossary/character_encoding": { + "modified": "2019-03-18T21:19:17.489Z", "contributors": [ - "Maose" + "PabloDeTorre", + "carlosCharlie" ] }, - "Glossary/Flex": { - "modified": "2020-10-03T01:09:13.365Z", + "Glossary/compile_time": { + "modified": "2020-12-05T08:34:39.507Z", "contributors": [ - "duduindo", - "FlashAmarillo" + "StripTM" ] }, - "Glossary/Flex_Container": { - "modified": "2019-11-21T16:42:31.273Z", + "Glossary/event": { + "modified": "2019-03-18T21:19:03.177Z", "contributors": [ - "scaloner" + "PabloDeTorre" ] }, - "Glossary/Flexbox": { - "modified": "2019-03-18T21:23:56.502Z", + "Glossary/gif": { + "modified": "2019-03-18T21:44:23.965Z", "contributors": [ - "danpaltor", - "ericksonespejo" + "lajaso", + "ferlopezcarr" ] }, - "Glossary/Funcion_de_primera_clase": { - "modified": "2020-05-14T19:36:29.513Z", + "Glossary/https": { + "modified": "2019-03-18T21:20:16.521Z", "contributors": [ - "l1oret", - "hmorv", - "LaloHao" + "mikelmg", + "BubuAnabelas" ] }, - "Glossary/Función": { - "modified": "2019-03-18T21:19:19.995Z", + "Glossary/jQuery": { + "modified": "2019-03-23T22:02:49.153Z", "contributors": [ - "PabloDeTorre" + "yancarq", + "velizluisma" ] }, - "Glossary/GPL": { - "modified": "2019-03-18T21:43:50.897Z", + "Glossary/jpeg": { + "modified": "2019-03-23T22:15:35.380Z", "contributors": [ - "ferlopezcarr" + "gparra989" ] }, - "Glossary/Git": { - "modified": "2019-03-18T21:19:20.412Z", + "Glossary/undefined": { + "modified": "2019-03-23T22:58:03.590Z", "contributors": [ - "PabloDeTorre", - "sergiomgm" + "teoli", + "Cleon" ] }, - "Glossary/Google_Chrome": { - "modified": "2019-03-18T21:44:29.185Z", + "Learn": { + "modified": "2020-10-06T09:14:51.258Z", "contributors": [ - "ferlopezcarr" + "blanchart", + "Nachec", + "Maose", + "methodx", + "npcsayfail", + "GilbertoHernan", + "ivanagui2", + "svarlamov", + "clarii", + "hamfree", + "raul782", + "astrapotro", + "karlalhdz", + "sillo01", + "carlosmartinezfyd", + "carlo.romero1991", + "nelruk", + "merol-dad", + "Pablo_Ivan", + "Da_igual", + "jhapik", + "cgsramirez", + "PedroFumero", + "Yanlu", + "Jenny-T-Type", + "Jeremie" ] }, - "Glossary/Grid": { - "modified": "2019-03-23T22:10:55.372Z", + "Learn/Accessibility": { + "modified": "2020-07-16T22:39:56.491Z", "contributors": [ - "ocamachor", - "tipoqueno", - "welm" + "adiccb", + "WilsonIsAliveClone", + "mikelmg" ] }, - "Glossary/Grid_Areas": { - "modified": "2019-03-18T21:46:28.612Z", + "Learn/Accessibility/Accessibility_troubleshooting": { + "modified": "2020-09-27T07:55:30.040Z", "contributors": [ - "tipoqueno" + "UOCccorcoles", + "adiccb" ] }, - "Glossary/Grid_Column": { - "modified": "2020-05-19T18:27:14.068Z", + "Learn/Accessibility/CSS_and_JavaScript": { + "modified": "2020-09-25T04:23:21.491Z", "contributors": [ - "biclope13", - "amaiafilo" + "UOCccorcoles" ] }, - "Glossary/Grid_Lines": { - "modified": "2019-05-27T03:46:29.561Z", + "Learn/Accessibility/HTML": { + "modified": "2020-09-24T10:25:02.383Z", "contributors": [ - "asael2" - ] - }, - "Glossary/Grid_Rows": { - "modified": "2019-03-18T21:23:35.644Z", - "contributors": [ - "Xino" + "UOCccorcoles", + "diegocastillogz", + "jeronimonunez", + "WilsonIsAliveClone" ] }, - "Glossary/HTML": { - "modified": "2020-01-23T12:51:04.156Z", + "Learn/Accessibility/Mobile": { + "modified": "2020-07-16T22:40:29.507Z", "contributors": [ - "editorUOC", - "edsonv", - "jpmontoya182", - "sergio_p_d", - "raecillacastellana" + "Adorta4", + "mikelmg" ] }, - "Glossary/HTML5": { - "modified": "2020-06-22T04:32:17.508Z", + "Learn/CSS": { + "modified": "2020-07-16T22:25:33.047Z", "contributors": [ - "Maose" + "welm", + "javierpolit", + "TomatoSenpai", + "andrpueb", + "Aglezabad", + "RaulHernandez" ] }, - "Glossary/HTTP": { - "modified": "2019-07-01T03:11:50.434Z", + "Learn/CSS/Building_blocks": { + "modified": "2020-10-02T00:43:44.395Z", "contributors": [ + "johanfvn", + "capitanzealot", + "Enesimus", "SphinxKnight", - "unaivalle", - "sdelrio", - "sergio_p_d" + "inwm", + "edixonMoreno", + "rayrojas", + "chrisdavidmills" ] }, - "Glossary/Head": { - "modified": "2020-06-22T04:54:37.023Z", + "Learn/CSS/Building_blocks/Styling_tables": { + "modified": "2020-09-14T09:45:44.143Z", "contributors": [ - "Maose" + "UOCccorcoles", + "editorUOC", + "chrisdavidmills", + "otheym", + "wbamberg", + "IXTRUnai" ] }, - "Glossary/Hilo_principal": { - "modified": "2020-03-12T06:05:36.693Z", + "Learn/CSS/CSS_layout": { + "modified": "2020-07-31T15:01:33.453Z", "contributors": [ - "elimperiodelaweb" + "AndrewSKV", + "untilbit", + "pantuflo", + "chrisdavidmills" ] }, - "Glossary/Hoisting": { - "modified": "2019-05-15T21:40:52.256Z", + "Learn/CSS/CSS_layout/Flexbox": { + "modified": "2020-09-15T16:36:01.723Z", "contributors": [ - "jevvilla", - "IsaacAaron", - "sminutoli" + "UOCccorcoles", + "nachopo", + "chrisdavidmills", + "editorUOC", + "facundogqr", + "felixgomez", + "LuisL", + "amaiafilo", + "spachecojimenez" ] }, - "Glossary/Host": { - "modified": "2020-12-10T07:42:38.267Z", + "Learn/CSS/CSS_layout/Floats": { + "modified": "2020-10-16T12:52:48.804Z", "contributors": [ - "ojgarciab" + "zuruckzugehen", + "chrisdavidmills" ] }, - "Glossary/Hyperlink": { - "modified": "2019-03-18T21:44:07.373Z", + "Learn/CSS/CSS_layout/Grids": { + "modified": "2020-07-16T22:26:58.625Z", "contributors": [ - "ferlopezcarr" + "editorUOC", + "chrisdavidmills", + "Luis_Calvo" ] }, - "Glossary/Hypertext": { - "modified": "2019-03-18T21:30:26.239Z", + "Learn/CSS/CSS_layout/Positioning": { + "modified": "2020-07-16T22:26:42.380Z", "contributors": [ - "12g" + "fr3dth" ] }, - "Glossary/IDE": { - "modified": "2019-03-18T21:18:59.913Z", + "Learn/CSS/First_steps": { + "modified": "2020-07-16T22:27:38.921Z", "contributors": [ - "PabloDeTorre", - "carlosCharlie" + "GiuMagnani", + "Enesimus", + "cinthylli", + "BiP00", + "jesquintero" ] }, - "Glossary/IIFE": { - "modified": "2019-03-18T20:50:02.318Z", + "Learn/CSS/Styling_text": { + "modified": "2020-07-16T22:25:57.799Z", "contributors": [ - "danyparc", - "Efrain", - "bluesky11117", - "emorc" + "laatcode", + "wilton-cruz" ] }, - "Glossary/IP_Address": { - "modified": "2020-06-22T03:38:12.516Z", + "Learn/CSS/Styling_text/Fundamentals": { + "modified": "2020-09-18T08:01:18.738Z", "contributors": [ - "Maose" + "UOCccorcoles", + "editorUOC", + "laatcode", + "joseanpg" ] }, - "Glossary/IPv6": { - "modified": "2020-06-03T01:33:08.312Z", + "Learn/CSS/Styling_text/Styling_links": { + "modified": "2020-09-18T08:20:17.759Z", "contributors": [ - "geryescalier" + "UOCccorcoles", + "editorUOC", + "Tull666" ] }, - "Glossary/IRC": { - "modified": "2020-12-03T00:37:27.868Z", + "Learn/CSS/Styling_text/Styling_lists": { + "modified": "2020-09-01T06:14:44.024Z", "contributors": [ - "devil64-dev" + "UOCccorcoles", + "editorUOC", + "MARKO75", + "Tull666", + "laatcode", + "jmcavanzo" ] }, - "Glossary/ISP": { - "modified": "2020-06-22T04:21:55.362Z", + "Learn/Common_questions": { + "modified": "2020-07-16T22:35:23.102Z", "contributors": [ - "Maose" + "eduardo-estrada", + "balderasric", + "soedrego", + "astrapotro", + "Miguelank", + "chrisdavidmills" ] }, - "Glossary/IU": { - "modified": "2019-03-18T21:18:49.573Z", + "Learn/Common_questions/How_does_the_Internet_work": { + "modified": "2020-09-07T00:56:10.834Z", "contributors": [ - "diegorhs" + "IsraFloores", + "Pau_Vera_S", + "Yel-Martinez-Consultor-Seo", + "Creasick", + "Tan_", + "punkyh", + "krthr", + "DaniNz" ] }, - "Glossary/Identificador": { - "modified": "2020-08-28T17:30:13.071Z", + "Learn/Common_questions/Pages_sites_servers_and_search_engines": { + "modified": "2020-07-16T22:35:39.645Z", "contributors": [ - "Nachec" + "benelliraul", + "MarcosN", + "DaniNz" ] }, - "Glossary/IndexedDB": { - "modified": "2019-03-23T22:36:07.366Z", + "Learn/Common_questions/Thinking_before_coding": { + "modified": "2020-07-16T22:35:34.085Z", "contributors": [ - "Loque" + "Beatriz_Ortega_Valdes", + "LourFabiM", + "DaniNz" ] }, - "Glossary/Inmutable": { - "modified": "2019-03-18T21:19:12.385Z", + "Learn/Common_questions/What_are_browser_developer_tools": { + "modified": "2020-09-13T07:49:07.373Z", "contributors": [ - "PabloDeTorre" + "rockoldo", + "IsraFloores", + "Nachec", + "John19D", + "DaniNz" ] }, - "Glossary/Internet": { - "modified": "2020-04-27T00:09:14.977Z", + "Learn/Common_questions/What_are_hyperlinks": { + "modified": "2020-07-16T22:35:42.995Z", "contributors": [ - "candepineyro2015", - "r2cris", - "cawilff" + "ezzep66" ] }, - "Glossary/JSON": { - "modified": "2019-05-24T12:44:54.639Z", + "Learn/Common_questions/What_is_a_domain_name": { + "modified": "2020-07-16T22:35:43.888Z", "contributors": [ - "EstebanRK", - "chavesrdj", - "LeonardoDG" + "Beatriz_Ortega_Valdes", + "hmendezm90" ] }, - "Glossary/Java": { - "modified": "2019-03-18T21:19:11.310Z", + "Learn/Common_questions/set_up_a_local_testing_server": { + "modified": "2020-07-16T22:35:52.759Z", "contributors": [ - "PabloDeTorre", - "carlosCharlie" + "rjpu24", + "iseafa", + "DaniNz" ] }, - "Glossary/JavaScript": { - "modified": "2020-09-01T00:56:53.463Z", + "Learn/Getting_started_with_the_web": { + "modified": "2020-09-22T16:37:42.904Z", "contributors": [ "Nachec", - "c9009", - "missmakita", - "sergio_p_d", - "gorrotowi" + "IsraFloores", + "Enesimus", + "rodririobo", + "escalant3", + "jimmypazos", + "ingridc", + "hamfree", + "npcsayfail", + "BrodaNoel", + "israel-munoz", + "Da_igual", + "welm", + "Diio", + "darbalma", + "chrisdavidmills" ] }, - "Glossary/Keyword": { - "modified": "2020-05-04T10:31:29.902Z", + "Learn/Getting_started_with_the_web/CSS_basics": { + "modified": "2020-11-10T20:04:05.272Z", "contributors": [ - "jorgeCaster", - "blanchart", - "DaniNz" - ] - }, - "Glossary/LGPL": { - "modified": "2019-03-18T21:43:48.377Z", - "contributors": [ - "ferlopezcarr" + "rockoldo", + "Maose", + "JaviGonLope", + "hamfree", + "juanluis", + "montygabe", + "mamptecnocrata", + "juanqui", + "welm" ] }, - "Glossary/Long_task": { - "modified": "2020-08-08T01:38:15.029Z", + "Learn/Getting_started_with_the_web/HTML_basics": { + "modified": "2020-12-10T12:30:46.714Z", "contributors": [ - "Nachec" + "ojgarciab", + "SphinxKnight", + "cesarmolina.sdb", + "egonzalez", + "Maose", + "Axes", + "NataliaCba", + "Armando-Cruz", + "hamfree", + "BrodaNoel", + "PhantomDemon", + "DaniNz", + "SandraMoreH", + "HeberRojo", + "welm", + "JoaquinBedoian", + "Huarseral" ] }, - "Glossary/MVC": { - "modified": "2020-01-31T17:55:57.978Z", + "Learn/Getting_started_with_the_web/JavaScript_basics": { + "modified": "2020-08-17T06:23:11.691Z", "contributors": [ - "deit", - "IsaacAlvrt" + "Nachec", + "Enesimus", + "Maose", + "John19D", + "yavemu", + "pablopennisi", + "Sergio_Gonzalez_Collado", + "hamfree", + "Bluterg", + "jpmontoya182", + "sillo01", + "lfrasae", + "bartolocarrasco", + "nhuamani", + "ricardormeza", + "fcojgodoy", + "soulminato", + "chech", + "juanqui", + "RaulHernandez", + "joelomar", + "welm", + "derplak", + "sin_nombre365", + "germanfr", + "cgsramirez", + "nekludov" ] }, - "Glossary/Metadato": { - "modified": "2019-03-18T21:19:04.572Z", + "Learn/Getting_started_with_the_web/Publishing_your_website": { + "modified": "2020-11-11T14:35:28.910Z", "contributors": [ - "PabloDeTorre" + "Yuunichi", + "Maose", + "IrwinAcosta", + "rjpu24", + "ingridc", + "binariosistemas", + "emermao", + "Michelangeur", + "javierdelpino", + "krthr", + "DaniNz", + "Rivo23", + "alexguerrero", + "MaurooRen", + "Da_igual", + "welm", + "Yadira" ] }, - "Glossary/MitM": { - "modified": "2019-03-18T21:25:35.556Z", + "Learn/Getting_started_with_the_web/What_will_your_website_look_like": { + "modified": "2020-09-22T18:59:15.940Z", "contributors": [ - "lcastrosaez" + "Nachec", + "Maose", + "jimmy_ml", + "NataliaCba", + "vact", + "israel-munoz", + "DaniNz", + "7eacemaker", + "mads0306", + "Da_igual", + "Davixe", + "Chrixos", + "diazwatson", + "omar.fiscal" ] }, - "Glossary/Mixin": { - "modified": "2019-03-23T22:37:38.011Z", + "Learn/HTML": { + "modified": "2020-12-10T12:33:09.889Z", "contributors": [ - "josepaez2", - "raecillacastellana", - "kramery" + "ojgarciab", + "Nachec", + "Enesimus", + "mppfiles", + "titox", + "patoezequiel", + "mitodamabra", + "crispragmatico", + "chancherokerido", + "Athene2RM", + "Alejandra.B", + "welm", + "jpazos" ] }, - "Glossary/Mobile_First": { - "modified": "2019-07-02T17:22:58.448Z", + "Learn/HTML/Multimedia_and_embedding": { + "modified": "2020-08-08T01:15:36.731Z", "contributors": [ - "JuanMaRuiz" + "Nachec", + "Loba25", + "emibena75", + "tomandech", + "rayrojas", + "SphinxKnight", + "rickygutim", + "luchiano199", + "jonasmreza", + "vHarz", + "hell0h0la", + "J0rgeMG", + "yarochewsky" ] }, - "Glossary/Mozilla_Firefox": { - "modified": "2019-03-23T22:06:36.476Z", + "Learn/HTML/Multimedia_and_embedding/Adding_vector_graphics_to_the_Web": { + "modified": "2020-08-13T15:11:41.992Z", "contributors": [ - "BrodaNoel" + "JuanMejia" ] }, - "Glossary/Método": { - "modified": "2020-07-21T21:37:11.109Z", + "Learn/HTML/Multimedia_and_embedding/Images_in_HTML": { + "modified": "2020-09-01T08:06:52.329Z", "contributors": [ - "Assael02", - "Davids-Devel" + "UOCccorcoles", + "jmalsar", + "editorUOC", + "ccorcoles", + "acvidelaa", + "BubuAnabelas", + "Alpha3-Developer", + "Makinita", + "Parziva_1", + "luchiano199", + "calvearc", + "soedrego", + "JuniorBO", + "JoseCuestas" ] }, - "Glossary/Node": { - "modified": "2019-05-17T13:24:16.608Z", + "Learn/HTML/Multimedia_and_embedding/Mozilla_splash_page": { + "modified": "2020-07-16T22:25:06.606Z", "contributors": [ - "GUEROZ", - "untilbit", - "klez" + "Loba25", + "henardemiguel" ] }, - "Glossary/Node.js": { - "modified": "2020-10-24T17:01:45.516Z", + "Learn/HTML/Multimedia_and_embedding/Other_embedding_technologies": { + "modified": "2020-07-16T22:25:00.943Z", "contributors": [ - "oism28", - "rlopezAyala", - "malonson", - "migdonio1" + "Ismael_Diaz", + "cinthylli", + "duduindo", + "soedrego", + "luchiano199", + "SphinxKnight", + "dylanroman03" ] }, - "Glossary/Node/DOM": { - "modified": "2019-03-23T22:27:35.877Z", + "Learn/HTML/Multimedia_and_embedding/Responsive_images": { + "modified": "2020-11-02T15:27:00.386Z", "contributors": [ - "malonson" + "Daniel_Martin", + "LuisCA", + "baumannzone", + "JuanMejia", + "lucasan", + "pipe01", + "sebaLinares", + "kuntur-studio", + "iiegor", + "malonson", + "javierarcheni", + "alexuy51", + "SigridMonsalve", + "arnoldobr", + "anfuca" ] }, - "Glossary/Nombre_de_dominio": { - "modified": "2019-03-18T21:19:21.120Z", + "Learn/HTML/Multimedia_and_embedding/Video_and_audio_content": { + "modified": "2020-12-07T13:00:58.885Z", "contributors": [ - "PabloDeTorre" + "occu29", + "Leiner.lop", + "pabdani", + "Enesimus", + "soedrego", + "jesusgirao", + "acvidelaa", + "rayrojas" ] }, - "Glossary/Nombre_de_encabezado_prohibido": { - "modified": "2019-03-23T22:02:11.147Z", + "Learn/JavaScript": { + "modified": "2020-08-08T12:13:32.547Z", "contributors": [ - "Luiggy", - "tonialfaro" + "Nachec", + "chrisdavidmills", + "NavetsArev", + "ivanagui2", + "Makinita", + "hamfree", + "tonymedrano", + "0sc4rR4v3l0" ] }, - "Glossary/Null": { - "modified": "2019-03-23T22:58:02.167Z", + "Learn/JavaScript/Asynchronous": { + "modified": "2020-08-07T20:26:22.020Z", "contributors": [ - "Cleon" + "Nachec", + "PatoDeTuring", + "duduindo", + "madmaxdios" ] }, - "Glossary/Numero": { - "modified": "2019-03-23T22:58:03.851Z", + "Learn/JavaScript/Asynchronous/Async_await": { + "modified": "2020-11-12T21:09:30.375Z", "contributors": [ - "Cleon" + "sargentogato", + "oscartzgz", + "SphinxKnight" ] }, - "Glossary/OOP": { - "modified": "2019-03-18T21:19:20.278Z", - "contributors": [ - "PabloDeTorre", - "carlosCharlie" - ] - }, - "Glossary/Objecto": { - "modified": "2019-03-23T22:58:05.221Z", + "Learn/JavaScript/Asynchronous/Concepts": { + "modified": "2020-11-19T20:30:13.091Z", "contributors": [ - "Cleon" + "AndresSalomon1990", + "marcusdesantis" ] }, - "Glossary/Operador": { - "modified": "2019-03-23T22:53:20.989Z", + "Learn/JavaScript/Building_blocks": { + "modified": "2020-07-17T01:46:33.034Z", "contributors": [ - "germanfr" + "Enesimus", + "InmobAli", + "rodririobo", + "josecampo", + "ivanagui2", + "ldeth", + "Makinita", + "jhonattanbenitez", + "Sergio_Gonzalez_Collado", + "Michelangeur", + "Elicar", + "chrisdavidmills" ] }, - "Glossary/Operando": { - "modified": "2020-09-05T17:33:42.415Z", + "Learn/JavaScript/Building_blocks/Functions": { + "modified": "2020-10-10T22:09:39.322Z", "contributors": [ - "brayan-orellanos" + "GianGuerra", + "pmusetti", + "pablorebora", + "blanchart", + "Alessa", + "DanielAgustinTradito" ] }, - "Glossary/PHP": { - "modified": "2020-05-07T14:37:16.100Z", + "Learn/JavaScript/Building_blocks/Return_values": { + "modified": "2020-07-17T01:43:24.262Z", "contributors": [ - "pascual143" + "Enesimus", + "EnekoOdoo" ] }, - "Glossary/POP": { - "modified": "2020-04-18T03:21:04.687Z", + "Learn/JavaScript/Building_blocks/conditionals": { + "modified": "2020-11-28T22:20:55.059Z", "contributors": [ - "itrjwyss" + "willian593", + "Enesimus", + "InmobAli", + "BorisQF", + "markosaav", + "Atabord", + "jhonattanbenitez" ] }, - "Glossary/Parse": { - "modified": "2020-12-05T08:25:54.330Z", + "Learn/JavaScript/Client-side_web_APIs": { + "modified": "2020-07-16T22:32:38.714Z", "contributors": [ - "StripTM" + "rayrojas", + "FedeRacun", + "dvincent" ] }, - "Glossary/Pila_llamadas": { - "modified": "2020-04-26T12:00:35.332Z", + "Learn/JavaScript/Client-side_web_APIs/Client-side_storage": { + "modified": "2020-09-22T05:14:27.901Z", "contributors": [ - "l1oret" + "Nachec", + "Enesimus" ] }, - "Glossary/Polyfill": { - "modified": "2019-03-18T21:24:24.118Z", + "Learn/JavaScript/Client-side_web_APIs/Fetching_data": { + "modified": "2020-07-16T22:32:57.121Z", "contributors": [ - "viabadia" + "Dsabillon" ] }, - "Glossary/Port": { - "modified": "2020-04-18T03:24:57.722Z", + "Learn/JavaScript/First_steps": { + "modified": "2020-09-22T14:49:32.194Z", "contributors": [ - "itrjwyss", - "malonson" + "Nachec", + "IsraFloores", + "mvuljevas", + "Mario-new", + "lalaggv2", + "rodrigocruz13", + "antonygiomarx", + "rickygutim", + "ivanagui2", + "EliasMCaja", + "Creasick", + "Aussith_9NT", + "sergioqa123", + "RayPL", + "ernestomr", + "eliud-c-delgado", + "chrisdavidmills" ] }, - "Glossary/Preflight_peticion": { - "modified": "2019-03-18T21:29:47.773Z", + "Learn/JavaScript/First_steps/A_first_splash": { + "modified": "2020-08-09T09:51:52.684Z", "contributors": [ - "daviddelamo" + "Nachec", + "zgreco2000", + "Enesimus", + "jacobo.delgado", + "xisco", + "Creasick", + "JaviMartain", + "Alfacoy", + "bosspetta", + "NataliaCba", + "arnaldop10", + "recortes", + "Darkiring", + "oscarkb24", + "roberbnd", + "joosemi02" ] }, - "Glossary/Preprocesador_CSS": { - "modified": "2019-03-23T22:02:54.782Z", + "Learn/JavaScript/First_steps/Arrays": { + "modified": "2020-07-16T22:30:53.191Z", "contributors": [ - "ealch", - "velizluisma" + "InmobAli", + "amIsmael", + "Creasick", + "DaniNz" ] }, - "Glossary/Primitivo": { - "modified": "2020-09-17T22:06:17.504Z", + "Learn/JavaScript/First_steps/Strings": { + "modified": "2020-09-06T21:18:25.448Z", "contributors": [ + "brayan-orellanos", "Nachec", - "cocososo", - "abaracedo", - "Cleon" + "Enesimus", + "keskyle17", + "wajari", + "Ale87GG", + "Creasick", + "malonson", + "punkcuadecuc" ] }, - "Glossary/Progressive_Enhancement": { - "modified": "2019-07-07T08:35:50.920Z", + "Learn/JavaScript/First_steps/Test_your_skills:_Math": { + "modified": "2020-10-27T13:03:04.825Z", "contributors": [ - "JuanMaRuiz" + "mediodepan", + "FabianBeltran96", + "syntaxter" ] }, - "Glossary/Promise": { - "modified": "2019-03-18T21:18:47.852Z", + "Learn/JavaScript/First_steps/Test_your_skills:_variables": { + "modified": "2020-09-05T01:09:05.732Z", "contributors": [ - "PabloDeTorre", - "carlosCharlie" + "FabianBeltran96", + "Nachec" ] }, - "Glossary/Protocol": { - "modified": "2020-12-10T11:56:54.768Z", + "Learn/JavaScript/First_steps/Useful_string_methods": { + "modified": "2020-10-19T12:56:16.453Z", "contributors": [ - "ojgarciab", - "Maose", - "itrjwyss", - "PabloDeTorre", - "carlosCharlie" + "chrisdavidmills", + "yeyskalyn", + "Enesimus", + "Rtf747", + "InmobAli", + "keskyle17", + "enekate", + "Creasick", + "DaniNz" ] }, - "Glossary/Prototype": { - "modified": "2019-03-28T18:50:47.544Z", + "Learn/JavaScript/First_steps/Variables": { + "modified": "2020-08-22T08:01:38.443Z", "contributors": [ - "maruskina" + "Nachec", + "Enesimus", + "jacobo.delgado", + "pmusetti", + "keskyle17", + "amIsmael", + "enekate", + "xisco", + "Creasick", + "TheJarX", + "hchelbat", + "JaviMartain", + "Dhelarius" ] }, - "Glossary/Prototype-based_programming": { - "modified": "2020-08-25T19:45:44.389Z", + "Learn/JavaScript/First_steps/What_went_wrong": { + "modified": "2020-08-10T05:39:33.652Z", "contributors": [ - "duduindo", - "paolazaratem" + "Nachec", + "Enesimus", + "CarlesBou", + "enekate", + "amIsmael", + "xisco", + "mamjerez", + "Creasick", + "Alfacoy", + "NataliaCba", + "esencialinux" ] }, - "Glossary/Pseudo-clase": { - "modified": "2019-03-23T22:38:49.143Z", + "Learn/JavaScript/Howto": { + "modified": "2020-07-16T22:33:09.029Z", "contributors": [ - "VictorAbdon" + "FelipeAndrade" ] }, - "Glossary/Pseudocódigo": { - "modified": "2019-03-18T21:19:15.497Z", + "Learn/JavaScript/Objects": { + "modified": "2020-11-12T18:14:51.703Z", "contributors": [ - "PabloDeTorre" + "alejandro.fca", + "pablojp", + "ivanagui2", + "clarii", + "Irwin1985", + "jsanpedror", + "blaipas", + "Tzikin100", + "edu1464", + "chrisdavidmills" ] }, - "Glossary/Public-key_cryptography": { - "modified": "2019-03-18T21:18:41.396Z", + "Learn/JavaScript/Objects/Adding_bouncing_balls_features": { + "modified": "2020-07-16T22:32:34.341Z", "contributors": [ - "GCF7" + "Enesimus", + "serarroy", + "carlosgocereceda" ] }, - "Glossary/Python": { - "modified": "2019-01-17T03:26:06.615Z", + "Learn/JavaScript/Objects/Basics": { + "modified": "2020-08-08T03:12:26.699Z", "contributors": [ - "Guzmanr1", - "ax16mr" + "Nachec", + "Fernando-Funes", + "pmusetti", + "ivanagui2", + "djdouta", + "seba2305", + "B1tF8er", + "kevin-loal98" ] }, - "Glossary/REST": { - "modified": "2019-03-18T21:19:06.376Z", - "contributors": [ - "PabloDeTorre", - "carlosCharlie" - ] - }, - "Glossary/RGB": { - "modified": "2019-03-18T21:19:01.657Z", + "Learn/JavaScript/Objects/Inheritance": { + "modified": "2020-07-28T01:53:21.821Z", "contributors": [ - "PabloDeTorre" + "Fernando-Funes", + "darkarth80", + "ivanagui2", + "cvillafraz", + "Adrian-Cuellar", + "B1tF8er" ] }, - "Glossary/RSS": { - "modified": "2019-03-18T21:43:45.312Z", + "Learn/JavaScript/Objects/JSON": { + "modified": "2020-07-16T22:32:24.819Z", "contributors": [ - "ferlopezcarr" + "jorgeCaster", + "pmiranda-geo", + "Enesimus" ] }, - "Glossary/Recursión": { - "modified": "2019-03-18T21:19:02.064Z", + "Learn/JavaScript/Objects/Object-oriented_JS": { + "modified": "2020-08-08T09:41:13.386Z", "contributors": [ - "PabloDeTorre", - "sergiomgm" + "Nachec", + "andyesp", + "Fernando-Funes", + "jhonarielgj", + "rimbener", + "ReneAG", + "EnekoOdoo", + "ivanagui2", + "cristianmarquezp", + "djdouta", + "paulaco", + "martinGerez", + "anyruizd", + "Michelangeur" ] }, - "Glossary/Reflow": { - "modified": "2020-11-16T21:27:00.470Z", + "Learn/JavaScript/Objects/Object_prototypes": { + "modified": "2020-11-22T14:56:33.662Z", "contributors": [ - "ccamiloo" + "VictoriaRamirezCharles", + "TextC0de", + "Cesaraugp", + "Fernando-Funes", + "joooni1998", + "kevin_Luna", + "asamajamasa", + "ddavalos", + "JuanMaRuiz", + "ivanagui2", + "salpreh", + "djangoJosele" ] }, - "Glossary/Regular_expression": { - "modified": "2019-03-23T22:27:50.421Z", + "Learn/Performance": { + "modified": "2020-07-16T22:40:38.336Z", "contributors": [ - "lurkinboss81", - "malonson" + "mikelmg" ] }, - "Glossary/Responsive_web_design": { - "modified": "2019-03-18T21:36:04.998Z", + "Learn/Server-side": { + "modified": "2020-07-16T22:35:56.070Z", "contributors": [ - "lajaso" + "davidenriq11", + "javierdelpino", + "IXTRUnai" ] }, - "Glossary/Ruby": { - "modified": "2019-03-18T21:18:51.137Z", + "Learn/Server-side/Django": { + "modified": "2020-07-16T22:36:31.705Z", "contributors": [ - "diegorhs" + "jlpb97", + "javierdelpino", + "oscvic", + "faustinoloeza" ] }, - "Glossary/SCV": { - "modified": "2019-03-18T21:19:21.440Z", + "Learn/Server-side/Django/Admin_site": { + "modified": "2020-07-16T22:37:02.726Z", "contributors": [ - "carlosCharlie", - "sergiomgm" + "ricardo-soria", + "cristianaguilarvelozo", + "SgtSteiner", + "javierdelpino" ] }, - "Glossary/SEO": { - "modified": "2019-03-23T22:38:01.994Z", + "Learn/Server-side/Django/Authentication": { + "modified": "2020-07-29T13:34:31.552Z", "contributors": [ - "carlossuarez" + "rayrojas", + "quijot", + "gatopadre", + "zelkovar", + "cbayonao", + "DTaiD", + "Carlosmgs111", + "ricardo-soria", + "GankerDev", + "javierdelpino" ] }, - "Glossary/SGML": { - "modified": "2019-03-18T21:43:11.251Z", + "Learn/Server-side/Django/Deployment": { + "modified": "2020-09-29T05:31:27.175Z", "contributors": [ - "Undigon", - "cawilff" + "chrisdavidmills", + "LIBIDORI", + "taponato", + "joanvasa", + "banideus", + "LUISCR", + "ricardo-soria", + "javierdelpino" ] }, - "Glossary/SIMD": { - "modified": "2019-03-18T21:18:44.939Z", + "Learn/Server-side/Django/Forms": { + "modified": "2020-09-03T20:14:00.959Z", "contributors": [ - "PabloDeTorre", - "carlosCharlie" + "FoulMangoPY", + "joserojas1270", + "panpy-web", + "taponato", + "gatopadre", + "gt67ma", + "soberanes", + "ricardo-soria", + "boleklolek", + "SgtSteiner", + "javierdelpino" ] }, - "Glossary/SISD": { - "modified": "2019-03-18T21:18:56.313Z", + "Learn/Server-side/Django/Generic_views": { + "modified": "2020-07-16T22:37:14.516Z", "contributors": [ - "carlosCharlie" + "ricardo-soria", + "javierdelpino" ] }, - "Glossary/SLD": { - "modified": "2019-04-30T13:59:51.577Z", + "Learn/Server-side/Django/Home_page": { + "modified": "2020-07-16T22:37:08.036Z", "contributors": [ - "manfredosanchez" + "dr2d4", + "MatiasJAco", + "ricardo-soria", + "cristianaguilarvelozo", + "AnPlandolit", + "javierdelpino" ] }, - "Glossary/SMTP": { - "modified": "2020-04-18T03:31:14.904Z", + "Learn/Server-side/Django/Models": { + "modified": "2020-08-27T11:46:51.559Z", "contributors": [ - "itrjwyss" + "FoulMangoPY", + "dr2d4", + "Kalisto", + "cuantosoft", + "cruzito626", + "ricardo-soria", + "CristianFonseca03", + "cristianaguilarvelozo", + "iehurtado", + "SgtSteiner", + "javierdelpino", + "Panchosama", + "MatiMateo" ] }, - "Glossary/SQL": { - "modified": "2019-03-18T21:18:56.658Z", + "Learn/Server-side/Django/Sessions": { + "modified": "2020-09-02T12:56:54.473Z", "contributors": [ - "diegorhs" + "FoulMangoPY", + "franpandol", + "ricardo-soria", + "tonyrodrigues", + "javierdelpino" ] }, - "Glossary/SVG": { - "modified": "2019-03-18T21:35:52.789Z", + "Learn/Server-side/Django/Testing": { + "modified": "2020-11-25T15:32:01.505Z", "contributors": [ - "lajaso" + "JanoVZ", + "joserojas1270", + "rayrojas", + "julyaann", + "ferxohn", + "ricardo-soria", + "R4v3n15", + "javierdelpino" ] }, - "Glossary/SVN": { - "modified": "2019-03-18T21:19:01.509Z", + "Learn/Server-side/Django/Tutorial_local_library_website": { + "modified": "2020-07-16T22:36:48.653Z", "contributors": [ - "PabloDeTorre" + "dr2d4", + "jfpIE16", + "ricardo-soria", + "javierdelpino" ] }, - "Glossary/Scope": { - "modified": "2019-07-02T17:59:48.762Z", + "Learn/Server-side/Django/development_environment": { + "modified": "2020-07-16T22:36:43.747Z", "contributors": [ - "Angel10050" + "sign4l", + "cruzito626", + "ricardo-soria", + "javierdelpino" ] }, - "Glossary/Sentencias": { - "modified": "2019-03-23T22:57:58.260Z", + "Learn/Server-side/Django/django_assessment_blog": { + "modified": "2020-07-16T22:37:48.773Z", "contributors": [ - "abaracedo", - "Cleon" + "ricardo-soria", + "matiexe", + "javierdelpino" ] }, - "Glossary/Sincronico": { - "modified": "2020-11-14T06:15:42.366Z", + "Learn/Server-side/Django/skeleton_website": { + "modified": "2020-07-16T22:36:52.017Z", "contributors": [ - "Yuunichi" + "dr2d4", + "cuantosoft", + "gozarrojas", + "ricardo-soria", + "javierdelpino" ] }, - "Glossary/Sistema_gestion_contenidos": { - "modified": "2020-05-23T07:15:12.062Z", + "Learn/Server-side/Django/web_application_security": { + "modified": "2020-07-16T22:37:45.102Z", "contributors": [ - "l1oret" + "sebastianmr6", + "ricardo-soria", + "javierdelpino" ] }, - "Glossary/Sloppy_mode": { - "modified": "2020-08-31T05:32:49.321Z", + "Learn/Server-side/Express_Nodejs": { + "modified": "2020-07-16T22:37:51.529Z", "contributors": [ - "Nachec", - "dcarmal-dayvo" + "GUEROZ", + "deit", + "rmon_vfer", + "sergiodiezdepedro", + "javierdelpino", + "sergionunez" ] }, - "Glossary/Slug": { - "modified": "2019-03-18T21:43:51.297Z", + "Learn/Server-side/Express_Nodejs/Introduction": { + "modified": "2020-07-16T22:38:09.037Z", "contributors": [ - "LSanchez697" + "evaferreira", + "threevanny", + "hernanfloresramirez1987", + "jorgesqm95", + "GUEROZ", + "Slb-Sbsz", + "tec.josec", + "crisaragon", + "Sergio_Gonzalez_Collado", + "fedechiappero", + "RigobertoUlloa", + "javierdelpino", + "SphinxKnight" ] }, - "Glossary/String": { - "modified": "2019-03-23T22:58:03.956Z", + "Learn/Server-side/Express_Nodejs/Tutorial_local_library_website": { + "modified": "2020-07-16T22:38:15.482Z", "contributors": [ - "Cleon" + "acasco", + "antiepoke" ] }, - "Glossary/Symbol": { - "modified": "2019-03-23T22:57:59.274Z", + "Learn/Server-side/Express_Nodejs/development_environment": { + "modified": "2020-07-16T22:37:58.161Z", "contributors": [ - "Cleon" + "sandromedina", + "threevanny", + "pajaro5", + "GUEROZ", + "maringenio" ] }, - "Glossary/Symmetric-key_cryptography": { - "modified": "2019-03-18T21:18:28.720Z", + "Learn/Server-side/Express_Nodejs/mongoose": { + "modified": "2020-07-16T22:38:20.335Z", "contributors": [ - "sergiomgm", - "GCF7" + "danimrprofe", + "rmon_vfer" ] }, - "Glossary/TCP": { - "modified": "2020-12-10T12:12:08.342Z", + "Learn/Server-side/Express_Nodejs/skeleton_website": { + "modified": "2020-07-16T22:38:03.936Z", "contributors": [ - "ojgarciab", - "itrjwyss", - "DaniNz" + "juancorbacho", + "tec.josec", + "maringenio", + "mimz2563" ] }, - "Glossary/Tag": { - "modified": "2020-05-04T10:24:41.308Z", + "Learn/Server-side/Node_server_without_framework": { + "modified": "2020-07-16T22:36:05.239Z", "contributors": [ - "jorgeCaster", - "DaniNz" + "javierdelpino" ] }, - "Glossary/TextoCifrado": { - "modified": "2019-03-18T21:19:21.003Z", + "MDN": { + "modified": "2020-07-08T14:43:57.058Z", "contributors": [ - "sergiomgm", - "GCF7" + "Maose", + "jswisher", + "SphinxKnight", + "Riszin", + "Beatriz_Ortega_Valdes", + "facufacu3789", + "wbamberg", + "0zxo", + "Jeremie", + "raecillacastellana", + "DonPrime", + "GersonLazaro", + "Arudb79", + "MauricioGil", + "Sheppy" ] }, - "Glossary/TextoSimple": { - "modified": "2019-03-18T21:19:20.138Z", + "MDN/About": { + "modified": "2020-05-03T01:47:58.469Z", "contributors": [ - "sergiomgm", - "GCF7" + "Beatriz_Ortega_Valdes", + "ecedenyo", + "wbamberg", + "jswisher", + "hecaxmmx", + "SoftwareRVG", + "Jeremie", + "carloslazaro", + "cosmesantos", + "wilo", + "LuisArt", + "sinfallas", + "maedca" ] }, - "Glossary/Three_js": { - "modified": "2020-11-09T17:44:33.436Z", + "MDN/Contribute": { + "modified": "2019-03-22T01:52:35.495Z", "contributors": [ - "Plumas" + "Beatriz_Ortega_Valdes", + "wbamberg", + "Rrxxxx", + "Ibrahim1997", + "LeoHirsch", + "MauricioGil", + "Mars" ] }, - "Glossary/Tipado_dinámico": { - "modified": "2020-05-04T14:10:14.107Z", + "MDN/Contribute/Feedback": { + "modified": "2020-12-02T14:04:57.487Z", "contributors": [ - "Caav98" + "SphinxKnight", + "abcserviki", + "chrisdavidmills", + "Rafasu", + "jswisher", + "yohanolmedo", + "alex16jpv", + "wbamberg", + "astrapotro", + "Jabi", + "Sergio_Gonzalez_Collado", + "karl_", + "MARVINFLORENTINO", + "aresth+", + "DracotMolver" ] }, - "Glossary/Tipificación_estática": { - "modified": "2019-11-22T03:17:09.186Z", + "MDN/Contribute/Getting_started": { + "modified": "2020-12-02T19:26:24.923Z", "contributors": [ - "HugolJumex" + "chrisdavidmills", + "Anibalismo", + "MIKE1203", + "gcjuan", + "clarii", + "wbamberg", + "0zxo", + "dariomaim", + "grover.velasquez", + "Primo18", + "maubarbetti", + "Arukantara", + "jsx", + "fraph", + "teoli", + "aguilaindomable", + "LeoHirsch", + "cototion" ] }, - "Glossary/Truthy": { - "modified": "2019-03-18T21:45:50.903Z", + "MDN/Contribute/Howto": { + "modified": "2019-01-16T18:56:52.965Z", "contributors": [ - "AlePerez92", - "VlixesItaca", - "juandata" + "wbamberg", + "0zxo", + "astrapotro", + "MauricioGil", + "Sheppy" ] }, - "Glossary/Type": { - "modified": "2019-03-18T21:19:01.358Z", + "MDN/Contribute/Howto/Convert_code_samples_to_be_live": { + "modified": "2019-01-16T19:10:19.469Z", "contributors": [ - "PabloDeTorre" + "wbamberg", + "javierdp", + "gpadilla", + "RoxPulido", + "LeoHirsch" ] }, - "Glossary/URI": { - "modified": "2019-03-18T21:33:53.970Z", + "MDN/Contribute/Howto/Document_a_CSS_property": { + "modified": "2020-02-19T19:43:18.253Z", "contributors": [ - "DaniNz" + "jswisher", + "SphinxKnight", + "wbamberg", + "teoli", + "stephaniehobson", + "MauricioGil" ] }, - "Glossary/URL": { - "modified": "2020-09-05T02:39:54.712Z", + "MDN/Contribute/Howto/Tag": { + "modified": "2019-03-23T23:15:01.953Z", "contributors": [ - "Nachec", - "BubuAnabelas", - "Jabi" + "wbamberg", + "Creasick", + "blanchart", + "meCarrion17", + "rafamagno", + "teoli", + "PepeAntonio", + "CristianMar25", + "anmartinez", + "LeoHirsch" ] }, - "Glossary/UTF-8": { - "modified": "2020-08-28T17:54:39.004Z", + "MDN/Contribute/Howto/Write_a_new_entry_in_the_Glossary": { + "modified": "2019-03-23T23:09:23.417Z", "contributors": [ - "Nachec", - "PabloDeTorre", - "carlosCharlie" + "wbamberg", + "astrapotro", + "teoli", + "L_e_o" ] }, - "Glossary/UX": { - "modified": "2020-11-10T01:47:49.876Z", + "MDN/Guidelines": { + "modified": "2020-09-30T15:28:55.816Z", "contributors": [ - "rockoldo" + "chrisdavidmills", + "wbamberg", + "Jeremie", + "LeoHirsch" ] }, - "Glossary/Unicode": { - "modified": "2020-08-28T17:48:20.454Z", + "MDN/Structures": { + "modified": "2020-09-30T09:06:15.403Z", "contributors": [ - "Nachec" + "chrisdavidmills", + "wbamberg", + "jswisher" ] }, - "Glossary/Validador": { - "modified": "2019-03-18T21:19:01.934Z", + "MDN/Structures/Macros": { + "modified": "2020-09-30T09:06:16.658Z", "contributors": [ - "PabloDeTorre", - "carlosCharlie", - "sergiomgm" + "chrisdavidmills", + "Nachec", + "wbamberg" ] }, - "Glossary/Valor": { - "modified": "2020-09-01T08:20:32.500Z", + "MDN/Structures/Macros/Commonly-used_macros": { + "modified": "2020-09-30T09:06:17.138Z", "contributors": [ + "chrisdavidmills", "Nachec" ] }, - "Glossary/Variable": { - "modified": "2020-09-01T08:00:19.523Z", + "MDN/Tools": { + "modified": "2020-09-30T16:48:18.728Z", "contributors": [ - "Nachec", - "Oscarloray" + "chrisdavidmills", + "wbamberg", + "Jeremie", + "Arudb79", + "atlas7jean" ] }, - "Glossary/Vendor_Prefix": { - "modified": "2019-03-18T21:21:31.446Z", + "Mozilla": { + "modified": "2019-01-16T13:16:23.082Z", "contributors": [ - "Carlos_Gutierrez" - ] + "cosmesantos", + "andersonvc89", + "Vladi05", + "Granpichi", + "yesypsb", + "Getachi", + "Izel" + ] }, - "Glossary/Viewport": { - "modified": "2019-07-22T14:35:59.639Z", + "Mozilla/Add-ons": { + "modified": "2019-03-18T21:08:47.524Z", "contributors": [ - "EBregains", - "ffcc" + "hecaxmmx", + "hamfree", + "Aldrin508", + "Arudb79", + "Psy", + "RaulVisa", + "LeoHirsch", + "rojo32" ] }, - "Glossary/WCAG": { - "modified": "2019-03-18T21:19:06.839Z", + "Mozilla/Add-ons/WebExtensions": { + "modified": "2019-07-18T20:39:33.007Z", "contributors": [ - "PabloDeTorre" + "hecaxmmx", + "ivanruvalcaba", + "AngelFQC", + "yuniers" ] }, - "Glossary/WHATWG": { - "modified": "2019-03-18T21:43:10.212Z", + "Mozilla/Add-ons/WebExtensions/API": { + "modified": "2019-05-09T20:52:57.986Z", "contributors": [ - "cawilff" + "Micronine", + "BubuAnabelas", + "chicocoulomb", + "yuniers" ] }, - "Glossary/WebKit": { - "modified": "2019-03-18T21:43:49.861Z", + "Mozilla/Add-ons/WebExtensions/API/i18n": { + "modified": "2020-10-15T21:39:41.302Z", "contributors": [ - "ferlopezcarr" + "wbamberg", + "fitojb", + "yuniers" ] }, - "Glossary/WebSockets": { - "modified": "2019-03-23T22:10:09.047Z", + "Mozilla/Add-ons/WebExtensions/API/storage": { + "modified": "2020-10-15T22:13:52.747Z", "contributors": [ - "spachecojimenez" + "SphinxKnight", + "wbamberg", + "grxdipgra" ] }, - "Glossary/WebVTT": { - "modified": "2020-08-13T17:05:43.218Z", + "Mozilla/Add-ons/WebExtensions/API/storage/local": { + "modified": "2020-10-15T22:13:52.742Z", "contributors": [ - "Pablo-No" + "wbamberg", + "grxdipgra" ] }, - "Glossary/World_Wide_Web": { - "modified": "2020-07-07T13:22:38.798Z", + "Mozilla/Add-ons/WebExtensions/API/storage/sync": { + "modified": "2020-10-15T22:13:52.602Z", "contributors": [ - "pauli.rodriguez.c", - "camsa", - "SphinxKnight", - "r2cris", - "sergio_p_d" + "wbamberg", + "grxdipgra" ] }, - "Glossary/Wrapper": { - "modified": "2019-03-18T21:18:59.254Z", + "Mozilla/Add-ons/WebExtensions/API/webNavigation": { + "modified": "2020-10-15T21:52:47.862Z", "contributors": [ - "PabloDeTorre", - "carlosCharlie" + "wbamberg", + "tanclony" ] }, - "Glossary/XForm": { - "modified": "2019-03-23T22:15:44.959Z", + "Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar": { + "modified": "2019-03-18T21:05:11.701Z", "contributors": [ - "gparra989" + "roberbnd" ] }, - "Glossary/XML": { - "modified": "2019-03-18T21:43:43.021Z", + "Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs": { + "modified": "2020-10-15T20:55:02.467Z", "contributors": [ - "ferlopezcarr" + "rossc90" ] }, - "Glossary/application_context": { - "modified": "2019-03-23T22:22:51.795Z", + "Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities": { + "modified": "2019-03-23T22:45:10.191Z", "contributors": [ - "ekros" + "Nitram_G", + "yuniers" ] }, - "Glossary/cacheable": { - "modified": "2019-10-03T19:16:28.937Z", + "Mozilla/Add-ons/WebExtensions/Examples": { + "modified": "2019-03-18T21:06:01.388Z", "contributors": [ - "htmike" + "hecaxmmx" ] }, - "Glossary/challenge": { - "modified": "2019-03-23T22:03:38.845Z", + "Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools": { + "modified": "2020-09-27T05:32:44.293Z", "contributors": [ - "_deiberchacon" + "omaralonsog" ] }, - "Glossary/character_encoding": { - "modified": "2019-03-18T21:19:17.489Z", + "Mozilla/Add-ons/WebExtensions/Implement_a_settings_page": { + "modified": "2019-03-18T21:06:46.901Z", "contributors": [ - "PabloDeTorre", - "carlosCharlie" + "SoftwareRVG" ] }, - "Glossary/coercion": { - "modified": "2020-02-29T16:57:08.213Z", + "Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests": { + "modified": "2019-03-18T21:06:03.133Z", "contributors": [ - "frankynztein" + "juanbrujo", + "regisdark", + "hecaxmmx" ] }, - "Glossary/compile_time": { - "modified": "2020-12-05T08:34:39.507Z", + "Mozilla/Add-ons/WebExtensions/Internationalization": { + "modified": "2020-06-29T22:25:32.104Z", "contributors": [ - "StripTM" + "hugojavierduran9" ] }, - "Glossary/conjunto_de_caracteres": { - "modified": "2020-08-28T18:09:05.836Z", + "Mozilla/Add-ons/WebExtensions/Modify_a_web_page": { + "modified": "2019-03-18T21:02:55.354Z", "contributors": [ - "Nachec" + "alexgilsoncampi" ] }, - "Glossary/elemento": { - "modified": "2019-01-16T19:38:18.287Z", + "Mozilla/Add-ons/WebExtensions/What_next_": { + "modified": "2019-03-18T20:43:00.251Z", "contributors": [ - "BubuAnabelas", - "HerberWest" + "chicocoulomb" ] }, - "Glossary/event": { - "modified": "2019-03-18T21:19:03.177Z", + "Mozilla/Add-ons/WebExtensions/manifest.json": { + "modified": "2020-10-15T21:39:41.879Z", "contributors": [ - "PabloDeTorre" + "wachunei", + "legomolina", + "yuniers" ] }, - "Glossary/gif": { - "modified": "2019-03-18T21:44:23.965Z", + "Mozilla/Add-ons/WebExtensions/manifest.json/icons": { + "modified": "2020-10-15T22:27:24.193Z", "contributors": [ - "lajaso", - "ferlopezcarr" + "qwerty726" ] }, - "Glossary/https": { - "modified": "2019-03-18T21:20:16.521Z", + "Mozilla/Add-ons/WebExtensions/user_interface": { + "modified": "2019-03-18T21:03:49.876Z", "contributors": [ - "mikelmg", - "BubuAnabelas" + "rebloor" ] }, - "Glossary/jQuery": { - "modified": "2019-03-23T22:02:49.153Z", + "Mozilla/Add-ons/WebExtensions/user_interface/Page_actions": { + "modified": "2019-08-12T17:02:44.540Z", "contributors": [ - "yancarq", - "velizluisma" + "rayrojas" ] }, - "Glossary/jpeg": { - "modified": "2019-03-23T22:15:35.380Z", + "Mozilla/Developer_guide": { + "modified": "2019-03-23T23:34:39.883Z", "contributors": [ - "gparra989" + "chrisdavidmills", + "Etruscco" ] }, - "Glossary/miga-de-pan": { - "modified": "2020-02-02T10:51:21.098Z", + "Mozilla/Developer_guide/Source_Code": { + "modified": "2020-03-01T17:19:51.307Z", "contributors": [ - "blanchart" + "IngrownMink4", + "Allamc11", + "chrisdavidmills", + "jntesteves" ] }, - "Glossary/propiedad": { - "modified": "2020-08-28T18:32:40.804Z", + "Mozilla/Developer_guide/mozilla-central": { + "modified": "2019-03-18T21:11:07.718Z", "contributors": [ - "Nachec" + "duduindo", + "chrisdavidmills", + "fscholz", + "RickieesES" ] }, - "Glossary/seguro": { - "modified": "2019-03-18T21:18:23.904Z", + "Mozilla/Firefox": { + "modified": "2020-01-18T13:20:40.065Z", "contributors": [ - "SackmannDV" + "leela52452", + "SphinxKnight", + "wbamberg", + "jonasmreza", + "avelper", + "regisdark", + "AlmondCupcake", + "hecaxmmx", + "SecurityResearcher", + "Pablo_Ivan", + "Alejandro_Blanco", + "gabpull", + "nekside" ] }, - "Glossary/undefined": { - "modified": "2019-03-23T22:58:03.590Z", + "Mozilla/Firefox/Experimental_features": { + "modified": "2019-04-01T12:56:43.181Z", "contributors": [ - "teoli", - "Cleon" + "johnboy-99", + "wbamberg", + "Maletil" ] }, - "Guía_para_el_desarrollador_de_agregados_para_Firefox": { - "modified": "2019-01-16T14:29:03.747Z", + "Mozilla/Firefox/Releases": { + "modified": "2019-03-23T23:27:32.191Z", "contributors": [ - "teoli", - "Sheppy", - "Eloy" + "wbamberg", + "thzunder", + "Sheppy" ] }, - "Guía_para_el_desarrollador_de_agregados_para_Firefox/Introducción_a_las_extensiones": { - "modified": "2019-03-24T00:04:44.724Z", + "Mozilla/Firefox/Releases/30": { + "modified": "2019-03-23T23:06:34.308Z", "contributors": [ - "christopherccg", - "Sheppy", - "Eloy" + "wbamberg", + "mrbyte007" ] }, - "Guía_para_la_migración_a_catálogo": { - "modified": "2019-01-16T15:34:19.890Z", + "Mozilla/Firefox/Releases/50": { + "modified": "2019-03-18T21:11:07.358Z", "contributors": [ - "HenryGR", - "Mgjbot" + "duduindo", + "wbamberg", + "frank-orellana", + "raiosxdxd" ] }, - "HTML/Elemento/datalist": { - "modified": "2019-01-16T19:13:20.868Z", + "Mozilla/Firefox/Releases/57": { + "modified": "2019-03-23T22:03:40.720Z", "contributors": [ - "Darkgyro", - "teoli" + "wbamberg", + "fitojb" ] }, - "HTML/Elemento/form": { - "modified": "2019-01-16T21:24:44.882Z", - "contributors": [ - "eincioch" + "Mozilla/Firefox/Releases/61": { + "modified": "2019-03-18T21:34:25.134Z", + "contributors": [ + "wbamberg", + "JoaLop" ] }, - "HTML/Elemento/section": { - "modified": "2019-03-23T23:08:59.333Z", + "Mozilla/Firefox/Releases/62": { + "modified": "2019-03-18T21:26:40.295Z", "contributors": [ - "Raulpascual2", - "carllewisc", - "GeorgeAviateur" + "laptou" ] }, - "HTML/HTML5": { - "modified": "2020-05-16T09:08:08.720Z", + "Mozilla/Firefox/Releases/63": { + "modified": "2019-03-18T21:22:18.650Z", "contributors": [ - "jonasdamher", "SphinxKnight", - "anibalymariacantantes60", - "AzulMartin", - "264531666", - "fracp", - "damianed", - "alfredotemiquel", - "rossettistone", - "carlossuarez", - "teoli", - "JosueMolina", - "Pablo_Ivan", - "welm", - "bicentenario", - "jesusruiz", - "pierre_alfonso", - "pitufo_cabron", - "cesar_ortiz_elPatox", - "inma_610", - "vigia122", - "StripTM", - "deimidis", - "Izel" + "Dev-MADJ" ] }, - "HTML/HTML5/Forms_in_HTML5": { - "modified": "2019-03-24T00:17:58.788Z", + "Mozilla/Firefox/Releases/66": { + "modified": "2019-05-09T17:56:10.878Z", "contributors": [ - "DGarCam", - "teoli", - "prieto.any", - "deibyod", - "Ces", - "hugohabel", - "deimidis" + "Smartloony" ] }, - "HTML/HTML5/Formularios_en_HTML5": { - "modified": "2019-03-24T00:07:51.068Z", + "Mozilla/Firefox/Releases/67": { + "modified": "2019-06-27T23:25:44.498Z", "contributors": [ - "inma_610", - "Izel", - "StripTM", - "deimidis" + "erickton", + "marcorichetta" ] }, - "HTML/HTML5/HTML5_Parser": { - "modified": "2019-03-24T00:07:09.448Z", + "Mozilla/Firefox/Releases/68": { + "modified": "2019-07-14T03:15:02.367Z", "contributors": [ - "teoli", - "RickieesES", - "inma_610", - "StripTM", - "juanb", - "Izel" + "Gummox" ] }, - "HTML/HTML5/HTML5_lista_elementos": { - "modified": "2020-01-21T22:36:54.135Z", + "Mozilla/Firefox/Releases/9": { + "modified": "2019-12-13T20:33:17.732Z", "contributors": [ - "losfroger", - "cocoletzimata", - "Duque61", - "raecillacastellana", - "maymaury", - "squidjam", - "on3_g" + "wbamberg", + "fscholz" ] }, - "HTML/HTML5/Introducción_a_HTML5": { - "modified": "2019-03-24T00:05:36.058Z", + "Mozilla/Firefox/Releases/9/Updating_add-ons": { + "modified": "2019-03-23T23:09:25.426Z", "contributors": [ - "teoli", - "inma_610" + "wbamberg", + "Rickatomato" ] }, - "HTML/HTML5/Validacion_de_restricciones": { - "modified": "2020-08-11T08:06:04.309Z", + "Tools": { + "modified": "2020-07-16T22:44:14.436Z", "contributors": [ - "gerardo750711", - "israel-munoz" + "SphinxKnight", + "wbamberg", + "sprodrigues", + "Bugrtn", + "guillermocamon", + "mautematico", + "superrebe", + "mishelashala", + "juan-castano", + "Joker_DC", + "rossif", + "ArcangelZith", + "adri1993", + "zota", + "danielUFO", + "Arudb79", + "Jacqueline", + "@Perlyshh_76", + "ivanlopez", + "Gusvar", + "cristel.ariana", + "jesusruiz", + "PabloDev", + "gorrotowi", + "SebastianRave", + "Houseboyzgz", + "hjaguen", + "foxtro", + "reoo", + "dinoop.p1" ] }, - "Herramientas": { - "modified": "2019-01-16T13:52:37.109Z", + "Tools/3D_View": { + "modified": "2020-07-16T22:34:25.151Z", "contributors": [ - "teoli", - "StripTM", - "inma_610", - "camilourd" + "rmilano" ] }, - "How_to_create_a_DOM_tree": { - "modified": "2019-03-23T23:22:26.711Z", + "Tools/Browser_Console": { + "modified": "2020-07-16T22:35:42.205Z", "contributors": [ - "carrillog.luis" + "AldoSantiago", + "almozara" ] }, - "Incrustando_Mozilla/Comunidad": { - "modified": "2019-03-23T22:39:14.279Z", + "Tools/Browser_Toolbox": { + "modified": "2020-07-16T22:35:55.417Z", "contributors": [ - "vamm1981" + "norwie" ] }, - "IndexedDB": { - "modified": "2019-03-18T21:11:08.379Z", + "Tools/Debugger": { + "modified": "2020-09-13T21:00:58.239Z", "contributors": [ - "duduindo", - "teoli", - "semptrion", - "CHORVAT", - "inma_610" + "luuiizzaa9060", + "Juanchoib", + "jcmarcfloress", + "eroto", + "wbamberg", + "nacholereu", + "Pablo_Ivan", + "trevorh", + "cgsramirez", + "stephaniehobson", + "Jacqueline", + "C.E." ] }, - "Instalación_de_motores_de_búsqueda_desde_páginas_web": { - "modified": "2019-01-16T16:13:53.798Z", + "Tools/Debugger/How_to": { + "modified": "2020-07-16T22:35:07.255Z", "contributors": [ - "teoli", - "Nukeador", - "Jorolo" + "wbamberg" ] }, - "Learn": { - "modified": "2020-10-06T09:14:51.258Z", + "Tools/Debugger/How_to/Disable_breakpoints": { + "modified": "2020-07-16T22:35:11.175Z", "contributors": [ - "blanchart", - "Nachec", - "Maose", - "methodx", - "npcsayfail", - "GilbertoHernan", - "ivanagui2", - "svarlamov", - "clarii", - "hamfree", - "raul782", - "astrapotro", - "karlalhdz", - "sillo01", - "carlosmartinezfyd", - "carlo.romero1991", - "nelruk", - "merol-dad", - "Pablo_Ivan", - "Da_igual", - "jhapik", - "cgsramirez", - "PedroFumero", - "Yanlu", - "Jenny-T-Type", - "Jeremie" + "drdavi7@hotmail.com" ] }, - "Learn/Accessibility": { - "modified": "2020-07-16T22:39:56.491Z", + "Tools/Debugger/How_to/Set_a_breakpoint": { + "modified": "2020-07-16T22:35:09.854Z", "contributors": [ - "adiccb", - "WilsonIsAliveClone", - "mikelmg" + "erickton" ] }, - "Learn/Accessibility/Accessibility_troubleshooting": { - "modified": "2020-09-27T07:55:30.040Z", + "Tools/Debugger/Source_map_errors": { + "modified": "2020-07-16T22:35:19.165Z", "contributors": [ - "UOCccorcoles", - "adiccb" + "Makinita" ] }, - "Learn/Accessibility/CSS_and_JavaScript": { - "modified": "2020-09-25T04:23:21.491Z", + "Tools/Page_Inspector": { + "modified": "2020-07-16T22:34:27.363Z", "contributors": [ - "UOCccorcoles" + "amaiafilo", + "SoftwareRVG", + "maybe", + "webmaster", + "Jacqueline", + "MauricioGil" ] }, - "Learn/Accessibility/HTML": { - "modified": "2020-09-24T10:25:02.383Z", + "Tools/Page_Inspector/How_to": { + "modified": "2020-07-16T22:34:30.977Z", "contributors": [ - "UOCccorcoles", - "diegocastillogz", - "jeronimonunez", - "WilsonIsAliveClone" + "sidgan" ] }, - "Learn/Accessibility/Mobile": { - "modified": "2020-07-16T22:40:29.507Z", + "Tools/Page_Inspector/How_to/Examine_and_edit_CSS": { + "modified": "2020-07-16T22:34:42.117Z", "contributors": [ - "Adorta4", - "mikelmg" + "amaiafilo" ] }, - "Learn/Accessibility/Qué_es_la_accesibilidad": { - "modified": "2020-07-16T22:40:03.734Z", + "Tools/Page_Inspector/How_to/Examine_grid_layouts": { + "modified": "2020-07-16T22:34:47.093Z", "contributors": [ - "editorUOC" + "welm" ] }, - "Learn/Aprender_y_obtener_ayuda": { - "modified": "2020-09-02T21:15:54.167Z", + "Tools/Page_Inspector/How_to/Select_an_element": { + "modified": "2020-07-16T22:34:33.474Z", "contributors": [ - "Nachec" + "amaiafilo" ] }, - "Learn/CSS": { - "modified": "2020-07-16T22:25:33.047Z", - "contributors": [ - "welm", - "javierpolit", - "TomatoSenpai", - "andrpueb", - "Aglezabad", - "RaulHernandez" + "Tools/Page_Inspector/How_to/Work_with_animations": { + "modified": "2020-07-16T22:34:36.333Z", + "contributors": [ + "lyono666", + "angelmillan", + "fmagrosoto" ] }, - "Learn/CSS/Building_blocks": { - "modified": "2020-10-02T00:43:44.395Z", + "Tools/Page_Inspector/UI_Tour": { + "modified": "2020-07-16T22:34:48.922Z", "contributors": [ - "johanfvn", - "capitanzealot", - "Enesimus", - "SphinxKnight", - "inwm", - "edixonMoreno", - "rayrojas", - "chrisdavidmills" + "maruskina", + "amaiafilo" ] }, - "Learn/CSS/Building_blocks/Cascada_y_herencia": { - "modified": "2020-09-10T08:32:11.848Z", + "Tools/Remote_Debugging": { + "modified": "2020-07-16T22:35:37.186Z", "contributors": [ - "renatico", - "UOCccorcoles", - "Enesimus", - "editorUOC" + "sonidos", + "mando", + "Xorgius", + "CesarS", + "Fani100", + "Patriposa", + "awbruna190", + "aguntinito" ] }, - "Learn/CSS/Building_blocks/Contenido_desbordado": { - "modified": "2020-09-07T07:36:40.422Z", + "Tools/Settings": { + "modified": "2020-07-16T22:36:34.818Z", "contributors": [ - "UOCccorcoles", - "editorUOC" + "amaiafilo" ] }, - "Learn/CSS/Building_blocks/Depurar_el_CSS": { - "modified": "2020-10-15T22:26:23.448Z", + "Tools/Storage_Inspector": { + "modified": "2020-07-16T22:36:09.696Z", "contributors": [ - "UOCccorcoles", - "editorUOC" + "Sebastianz" ] }, - "Learn/CSS/Building_blocks/Dimensionar_elementos_en_CSS": { - "modified": "2020-07-16T22:29:20.704Z", + "Tools/Storage_Inspector/Cookies": { + "modified": "2020-07-16T22:36:11.000Z", "contributors": [ - "editorUOC" + "Enesimus" ] }, - "Learn/CSS/Building_blocks/El_modelo_de_caja": { - "modified": "2020-09-06T15:07:38.107Z", + "Tools/Tools_Toolbox": { + "modified": "2020-07-16T22:35:26.877Z", "contributors": [ - "UOCccorcoles", - "capitanzealot", - "editorUOC" + "amaiafilo", + "Papicorito", + "am.garcia" ] }, - "Learn/CSS/Building_blocks/Fondos_y_bordes": { - "modified": "2020-09-06T17:26:53.330Z", + "Tools/View_source": { + "modified": "2020-07-16T22:35:02.649Z", "contributors": [ - "UOCccorcoles", - "psotresc", - "editorUOC" + "StripTM" ] }, - "Learn/CSS/Building_blocks/Imágenes_medios_y_elementos_de_formulario": { - "modified": "2020-07-16T22:29:24.707Z", + "Tools/Web_Console": { + "modified": "2020-07-16T22:34:05.366Z", "contributors": [ - "editorUOC" + "elias_ramirez_elriso", + "cgsramirez", + "bassam", + "wbamberg" ] }, - "Learn/CSS/Building_blocks/Manejando_diferentes_direcciones_de_texto": { - "modified": "2020-07-31T14:48:40.359Z", + "Tools/Web_Console/Console_messages": { + "modified": "2020-07-16T22:34:14.880Z", "contributors": [ - "AndrewSKV", - "Enesimus" + "Enesimus", + "pacommozilla", + "JeidyVega" ] }, - "Learn/CSS/Building_blocks/Selectores_CSS": { - "modified": "2020-09-06T12:41:53.412Z", + "Tools/Working_with_iframes": { + "modified": "2020-07-16T22:36:11.768Z", "contributors": [ - "UOCccorcoles", - "VichoReyes", - "editorUOC" + "carpasse" ] }, - "Learn/CSS/Building_blocks/Selectores_CSS/Combinadores": { - "modified": "2020-09-06T14:09:26.839Z", + "Tools/about:debugging": { + "modified": "2020-07-30T13:12:25.833Z", "contributors": [ - "UOCccorcoles", - "editorUOC" + "Anibalismo" ] }, - "Learn/CSS/Building_blocks/Selectores_CSS/Pseudo-clases_y_pseudo-elementos": { - "modified": "2020-09-06T13:58:30.411Z", + "Web": { + "modified": "2020-11-28T21:26:15.631Z", "contributors": [ - "UOCccorcoles", - "editorUOC" + "gabrielazambrano307", + "Nachec", + "Enesimus", + "blanchart", + "SoftwareRVG", + "danieldelvillar", + "raecillacastellana", + "jcbp", + "BubuAnabelas", + "Jacqueline", + "igualar.com", + "atlas7jean", + "luisgm76", + "Sheppy" ] }, - "Learn/CSS/Building_blocks/Selectores_CSS/Selectores_de_atributos": { - "modified": "2020-09-06T13:34:27.599Z", + "Web/API": { + "modified": "2020-08-08T02:17:57.801Z", "contributors": [ - "UOCccorcoles", - "psotresc", - "editorUOC" + "Nachec", + "Enesimus", + "fscholz", + "AJMG", + "tecniloco", + "teoli", + "maedca", + "ethertank", + "Sheppy" ] }, - "Learn/CSS/Building_blocks/Selectores_CSS/Selectores_de_tipo_clase_e_ID": { - "modified": "2020-09-06T13:13:47.580Z", + "Web/API/AbstractWorker": { + "modified": "2019-12-20T01:50:52.328Z", "contributors": [ - "UOCccorcoles", - "editorUOC" + "Kaliu", + "Gustavo_Armoa", + "AshWilliams" ] }, - "Learn/CSS/Building_blocks/Styling_tables": { - "modified": "2020-09-14T09:45:44.143Z", + "Web/API/Ambient_Light_Events": { + "modified": "2019-03-23T22:33:31.225Z", "contributors": [ - "UOCccorcoles", - "editorUOC", - "chrisdavidmills", - "otheym", - "wbamberg", - "IXTRUnai" + "BubuAnabelas", + "RockoDev", + "guiller1998" ] }, - "Learn/CSS/Building_blocks/Valores_y_unidades_CSS": { - "modified": "2020-09-07T09:35:00.652Z", + "Web/API/AnalyserNode": { + "modified": "2019-03-23T22:51:59.371Z", "contributors": [ - "UOCccorcoles", - "editorUOC" + "teoli", + "CarlosLinares" ] }, - "Learn/CSS/CSS_layout": { - "modified": "2020-07-31T15:01:33.453Z", + "Web/API/Animation": { + "modified": "2020-10-15T21:57:43.283Z", "contributors": [ - "AndrewSKV", - "untilbit", - "pantuflo", - "chrisdavidmills" + "AlePerez92", + "evaferreira", + "IngoBongo" ] }, - "Learn/CSS/CSS_layout/Diseño_receptivo": { - "modified": "2020-07-16T22:27:27.257Z", + "Web/API/Animation/cancel": { + "modified": "2019-03-23T22:04:37.170Z", "contributors": [ - "editorUOC" + "IngoBongo" ] }, - "Learn/CSS/CSS_layout/Flexbox": { - "modified": "2020-09-15T16:36:01.723Z", + "Web/API/Animation/effect": { + "modified": "2019-03-18T21:15:31.270Z", "contributors": [ - "UOCccorcoles", - "nachopo", - "chrisdavidmills", - "editorUOC", - "facundogqr", - "felixgomez", - "LuisL", - "amaiafilo", - "spachecojimenez" + "IngoBongo" ] }, - "Learn/CSS/CSS_layout/Floats": { - "modified": "2020-10-16T12:52:48.804Z", + "Web/API/Animation/finish": { + "modified": "2019-03-23T22:04:33.125Z", "contributors": [ - "zuruckzugehen", - "chrisdavidmills" + "IngoBongo" ] }, - "Learn/CSS/CSS_layout/Flujo_normal": { - "modified": "2020-07-16T22:27:20.728Z", + "Web/API/Animation/id": { + "modified": "2019-03-18T21:15:30.202Z", "contributors": [ - "editorUOC" + "IngoBongo" ] }, - "Learn/CSS/CSS_layout/Grids": { - "modified": "2020-07-16T22:26:58.625Z", + "Web/API/Animation/oncancel": { + "modified": "2019-03-23T22:05:09.237Z", "contributors": [ - "editorUOC", - "chrisdavidmills", - "Luis_Calvo" + "IngoBongo" ] }, - "Learn/CSS/CSS_layout/Introducción": { - "modified": "2020-09-15T13:39:37.384Z", + "Web/API/Animation/onfinish": { + "modified": "2019-03-23T22:05:11.188Z", "contributors": [ - "UOCccorcoles", - "AndrewSKV", - "editorUOC", - "Jhonaz" + "IngoBongo" ] }, - "Learn/CSS/CSS_layout/Positioning": { - "modified": "2020-07-16T22:26:42.380Z", + "Web/API/Animation/pause": { + "modified": "2020-10-15T21:58:07.078Z", "contributors": [ - "fr3dth" + "AlePerez92", + "IngoBongo" ] }, - "Learn/CSS/CSS_layout/Soporte_a_navegadores_antiguos": { - "modified": "2020-07-16T22:27:17.501Z", + "Web/API/Animation/play": { + "modified": "2019-03-23T22:04:30.047Z", "contributors": [ - "editorUOC" + "IngoBongo" ] }, - "Learn/CSS/First_steps": { - "modified": "2020-07-16T22:27:38.921Z", + "Web/API/Animation/playState": { + "modified": "2019-03-23T22:05:06.415Z", "contributors": [ - "GiuMagnani", - "Enesimus", - "cinthylli", - "BiP00", - "jesquintero" + "IngoBongo" ] }, - "Learn/CSS/First_steps/Comenzando_CSS": { - "modified": "2020-08-31T14:16:45.193Z", + "Web/API/Animation/playbackRate": { + "modified": "2019-03-23T22:05:12.184Z", "contributors": [ - "UOCccorcoles", - "AndrewSKV", - "tito-ramirez", - "editorUOC" + "IngoBongo" ] }, - "Learn/CSS/First_steps/Como_funciona_CSS": { - "modified": "2020-09-18T07:47:46.630Z", + "Web/API/Animation/ready": { + "modified": "2019-03-23T22:04:55.912Z", "contributors": [ - "UOCccorcoles", - "editorUOC" + "IngoBongo" ] }, - "Learn/CSS/First_steps/Como_se_estructura_CSS": { - "modified": "2020-08-31T16:55:37.346Z", + "Web/API/Animation/reverse": { + "modified": "2019-03-23T22:04:31.837Z", "contributors": [ - "UOCccorcoles", - "editorUOC" + "IngoBongo" ] }, - "Learn/CSS/First_steps/Qué_es_CSS": { - "modified": "2020-10-15T22:25:30.119Z", + "Web/API/Animation/startTime": { + "modified": "2019-03-23T22:04:36.769Z", "contributors": [ - "UOCccorcoles", - "Enesimus", - "editorUOC" + "IngoBongo" ] }, - "Learn/CSS/First_steps/Usa_tu_nuevo_conocimiento": { - "modified": "2020-08-23T19:45:30.596Z", + "Web/API/Animation/timeline": { + "modified": "2019-03-23T22:04:30.790Z", "contributors": [ - "capitanzealot", - "AndrewSKV", - "Enesimus" + "IngoBongo" ] }, - "Learn/CSS/Introduction_to_CSS/Fundamental_CSS_comprehension": { - "modified": "2020-07-16T22:28:11.693Z", + "Web/API/AnimationEvent": { + "modified": "2019-03-23T22:31:58.545Z", "contributors": [ - "Creasick", - "Enesimus", - "javierpolit", - "DennisM" + "fscholz", + "jzatarain", + "Vanessa85" ] }, - "Learn/CSS/Styling_text": { - "modified": "2020-07-16T22:25:57.799Z", + "Web/API/AnimationEvent/animationName": { + "modified": "2019-03-23T22:29:49.749Z", "contributors": [ - "laatcode", - "wilton-cruz" + "jzatarain" ] }, - "Learn/CSS/Styling_text/Fuentes_web": { - "modified": "2020-09-01T07:26:18.054Z", + "Web/API/Attr": { + "modified": "2020-04-04T11:16:16.397Z", "contributors": [ - "UOCccorcoles", - "editorUOC" + "MiguelHG2351", + "rayrojas", + "AlePerez92" ] }, - "Learn/CSS/Styling_text/Fundamentals": { - "modified": "2020-09-18T08:01:18.738Z", + "Web/API/AudioBuffer": { + "modified": "2020-10-15T22:15:24.740Z", "contributors": [ - "UOCccorcoles", - "editorUOC", - "laatcode", - "joseanpg" + "rayrojas" ] }, - "Learn/CSS/Styling_text/Styling_links": { - "modified": "2020-09-18T08:20:17.759Z", + "Web/API/AudioNode": { + "modified": "2020-10-15T22:15:25.198Z", "contributors": [ - "UOCccorcoles", - "editorUOC", - "Tull666" + "rayrojas" ] }, - "Learn/CSS/Styling_text/Styling_lists": { - "modified": "2020-09-01T06:14:44.024Z", + "Web/API/BaseAudioContext": { + "modified": "2019-03-18T21:00:34.809Z", "contributors": [ - "UOCccorcoles", - "editorUOC", - "MARKO75", - "Tull666", - "laatcode", - "jmcavanzo" + "SphinxKnight", + "miguelonce", + "chrisdavidmills" ] }, - "Learn/CSS/Sábercomo": { - "modified": "2020-07-16T22:25:42.139Z", + "Web/API/BaseAudioContext/createBiquadFilter": { + "modified": "2019-03-23T22:04:57.563Z", "contributors": [ - "alebarbaja", - "abestrad1" + "GersonRosales" ] }, - "Learn/CSS/Sábercomo/Generated_content": { - "modified": "2020-07-16T22:25:47.515Z", + "Web/API/BatteryManager": { + "modified": "2019-03-23T23:24:54.302Z", "contributors": [ - "chrisdavidmills", - "Juansereina", - "lavilofam1" + "David_Marcos", + "maedca", + "sinfallas" ] }, - "Learn/Common_questions": { - "modified": "2020-07-16T22:35:23.102Z", + "Web/API/BatteryManager/charging": { + "modified": "2019-03-23T23:27:11.890Z", "contributors": [ - "eduardo-estrada", - "balderasric", - "soedrego", - "astrapotro", - "Miguelank", - "chrisdavidmills" + "fscholz", + "Hasilt", + "LuisE" ] }, - "Learn/Common_questions/Cuanto_cuesta": { - "modified": "2020-07-16T22:35:45.385Z", + "Web/API/BatteryManager/chargingTime": { + "modified": "2019-03-23T23:25:12.194Z", "contributors": [ - "Beatriz_Ortega_Valdes" + "fscholz", + "palfrei" ] }, - "Learn/Common_questions/How_does_the_Internet_work": { - "modified": "2020-09-07T00:56:10.834Z", + "Web/API/BatteryManager/dischargingTime": { + "modified": "2019-03-23T23:27:15.312Z", "contributors": [ - "IsraFloores", - "Pau_Vera_S", - "Yel-Martinez-Consultor-Seo", - "Creasick", - "Tan_", - "punkyh", - "krthr", - "DaniNz" + "fscholz", + "khalid32", + "LuisE" ] }, - "Learn/Common_questions/Pages_sites_servers_and_search_engines": { - "modified": "2020-07-16T22:35:39.645Z", + "Web/API/BatteryManager/level": { + "modified": "2019-03-23T23:25:16.177Z", "contributors": [ - "benelliraul", - "MarcosN", - "DaniNz" + "fscholz", + "eliezerb", + "maedca", + "David_Marcos", + "sinfallas", + "voylinux" ] }, - "Learn/Common_questions/Que_es_un_servidor_WEB": { - "modified": "2020-10-27T18:34:43.608Z", + "Web/API/BatteryManager/onchargingchange": { + "modified": "2019-03-23T23:25:06.308Z", "contributors": [ - "noksenberg", - "Yel-Martinez-Consultor-Seo", - "Spectrum369", - "Luisk955", - "Sebaspaco", - "flaki53", - "welm" + "fscholz", + "Pau_Ilargia", + "voylinux" ] }, - "Learn/Common_questions/Que_software_necesito": { - "modified": "2020-07-16T22:35:32.855Z", + "Web/API/BatteryManager/onlevelchange": { + "modified": "2019-03-23T23:25:08.174Z", "contributors": [ - "Beatriz_Ortega_Valdes" + "fscholz", + "teoli", + "eliezerb", + "robertoasq", + "voylinux" ] }, - "Learn/Common_questions/Qué_es_una_URL": { - "modified": "2020-07-16T22:35:29.126Z", + "Web/API/BeforeUnloadEvent": { + "modified": "2020-10-15T22:19:49.552Z", "contributors": [ - "ezzep66", - "BubuAnabelas" + "tuamigoxavi", + "matias981" ] }, - "Learn/Common_questions/Thinking_before_coding": { - "modified": "2020-07-16T22:35:34.085Z", + "Web/API/Blob": { + "modified": "2019-03-23T23:07:07.610Z", "contributors": [ - "Beatriz_Ortega_Valdes", - "LourFabiM", - "DaniNz" + "parzibyte", + "japho", + "fscholz", + "degrammer" ] }, - "Learn/Common_questions/What_are_browser_developer_tools": { - "modified": "2020-09-13T07:49:07.373Z", + "Web/API/Blob/Blob": { + "modified": "2020-10-15T21:31:45.424Z", "contributors": [ - "rockoldo", - "IsraFloores", - "Nachec", - "John19D", - "DaniNz" + "IsraelFloresDGA", + "BrodaNoel", + "fscholz", + "matajm" ] }, - "Learn/Common_questions/What_are_hyperlinks": { - "modified": "2020-07-16T22:35:42.995Z", + "Web/API/Blob/type": { + "modified": "2019-03-23T22:06:34.982Z", "contributors": [ - "ezzep66" + "BrodaNoel" ] }, - "Learn/Common_questions/What_is_a_domain_name": { - "modified": "2020-07-16T22:35:43.888Z", + "Web/API/BlobBuilder": { + "modified": "2019-03-23T22:49:30.131Z", "contributors": [ - "Beatriz_Ortega_Valdes", - "hmendezm90" + "BrodaNoel", + "japho" ] }, - "Learn/Common_questions/diseños_web_comunes": { - "modified": "2020-07-16T22:35:42.298Z", + "Web/API/Body": { + "modified": "2020-10-15T22:17:35.545Z", "contributors": [ - "Beatriz_Ortega_Valdes" + "SphinxKnight", + "bigblair81" ] }, - "Learn/Common_questions/set_up_a_local_testing_server": { - "modified": "2020-07-16T22:35:52.759Z", + "Web/API/Body/formData": { + "modified": "2020-10-15T22:17:33.164Z", "contributors": [ - "rjpu24", - "iseafa", - "DaniNz" + "brauni800" ] }, - "Learn/Como_Contribuir": { - "modified": "2020-07-16T22:33:43.206Z", + "Web/API/Body/json": { + "modified": "2020-10-15T22:29:20.361Z", "contributors": [ - "SphinxKnight", - "Code118", - "dervys19", - "javierdelpino", - "axgeon", - "Leonardo_Valdez", - "cgsramirez" + "camsa" ] }, - "Learn/Desarrollo_web_Front-end": { - "modified": "2020-11-18T03:33:37.370Z", + "Web/API/CSSRule": { + "modified": "2019-03-23T23:58:11.498Z", "contributors": [ "SphinxKnight", - "marquezpedro151", - "andresf.duran", - "Nachec" + "fscholz", + "khalid32", + "teoli", + "HenryGR" ] }, - "Learn/Getting_started_with_the_web": { - "modified": "2020-09-22T16:37:42.904Z", + "Web/API/CSSRule/cssText": { + "modified": "2019-03-23T23:58:05.630Z", "contributors": [ - "Nachec", - "IsraFloores", - "Enesimus", - "rodririobo", - "escalant3", - "jimmypazos", - "ingridc", - "hamfree", - "npcsayfail", - "BrodaNoel", - "israel-munoz", - "Da_igual", - "welm", - "Diio", - "darbalma", - "chrisdavidmills" + "fscholz", + "arunpandianp", + "teoli", + "HenryGR" ] }, - "Learn/Getting_started_with_the_web/CSS_basics": { - "modified": "2020-11-10T20:04:05.272Z", + "Web/API/CSSRule/parentStyleSheet": { + "modified": "2019-03-23T23:58:10.522Z", "contributors": [ - "rockoldo", - "Maose", - "JaviGonLope", - "hamfree", - "juanluis", - "montygabe", - "mamptecnocrata", - "juanqui", - "welm" + "fscholz", + "arunpandianp", + "teoli", + "HenryGR" ] }, - "Learn/Getting_started_with_the_web/Cómo_funciona_la_Web": { - "modified": "2020-07-16T22:33:59.672Z", + "Web/API/CSSStyleDeclaration": { + "modified": "2019-03-23T22:44:46.721Z", "contributors": [ - "Enesimus", - "Maose", - "rulo_diaz", - "SphinxKnight" + "guerratron" ] }, - "Learn/Getting_started_with_the_web/HTML_basics": { - "modified": "2020-12-10T12:30:46.714Z", + "Web/API/CSSStyleRule": { + "modified": "2019-03-23T23:01:37.512Z", "contributors": [ - "ojgarciab", - "SphinxKnight", - "cesarmolina.sdb", - "egonzalez", - "Maose", - "Axes", - "NataliaCba", - "Armando-Cruz", - "hamfree", - "BrodaNoel", - "PhantomDemon", - "DaniNz", - "SandraMoreH", - "HeberRojo", - "welm", - "JoaquinBedoian", - "Huarseral" + "darioperez", + "fscholz" ] }, - "Learn/Getting_started_with_the_web/Instalacion_de_software_basico": { - "modified": "2020-11-10T01:28:22.294Z", + "Web/API/CSSStyleRule/selectorText": { + "modified": "2019-03-23T23:58:12.055Z", "contributors": [ - "rockoldo", - "Nachec", - "Maose", - "Anyito", - "ingridc", - "Enesimus", - "israel-munoz", - "Neto2412", - "AngelFQC", - "mads0306", - "Da_igual", - "Chrixos", - "darbalma" + "fscholz", + "jsx", + "teoli", + "HenryGR" ] }, - "Learn/Getting_started_with_the_web/JavaScript_basics": { - "modified": "2020-08-17T06:23:11.691Z", + "Web/API/CSSStyleSheet": { + "modified": "2019-03-23T23:58:09.423Z", "contributors": [ - "Nachec", - "Enesimus", - "Maose", - "John19D", - "yavemu", - "pablopennisi", - "Sergio_Gonzalez_Collado", - "hamfree", - "Bluterg", - "jpmontoya182", - "sillo01", - "lfrasae", - "bartolocarrasco", - "nhuamani", - "ricardormeza", - "fcojgodoy", - "soulminato", - "chech", - "juanqui", - "RaulHernandez", - "joelomar", - "welm", - "derplak", - "sin_nombre365", - "germanfr", - "cgsramirez", - "nekludov" + "fscholz", + "khalid32", + "teoli", + "HenryGR" ] }, - "Learn/Getting_started_with_the_web/La_web_y_los_estandares_web": { - "modified": "2020-09-03T04:02:22.375Z", + "Web/API/CSSStyleSheet/deleteRule": { + "modified": "2019-03-23T23:58:10.847Z", "contributors": [ - "Nachec" + "fscholz", + "khalid32", + "teoli", + "HenryGR" ] }, - "Learn/Getting_started_with_the_web/Manejando_los_archivos": { - "modified": "2020-09-23T03:12:43.364Z", + "Web/API/CSSStyleSheet/insertRule": { + "modified": "2019-03-23T23:16:46.847Z", "contributors": [ - "Nachec", - "chrisdavidmills", - "NavetsArev", - "Maose", - "airmind97", - "hamfree", - "israel-munoz", - "GuilleMiranda", - "merol-dad", - "samshara1", - "mads0306", - "mamptecnocrata", - "Huarseral", - "diazwatson" + "fscholz", + "LeoHirsch" ] }, - "Learn/Getting_started_with_the_web/Publishing_your_website": { - "modified": "2020-11-11T14:35:28.910Z", + "Web/API/CSSStyleSheet/ownerRule": { + "modified": "2019-03-23T23:58:08.873Z", "contributors": [ - "Yuunichi", - "Maose", - "IrwinAcosta", - "rjpu24", - "ingridc", - "binariosistemas", - "emermao", - "Michelangeur", - "javierdelpino", - "krthr", - "DaniNz", - "Rivo23", - "alexguerrero", - "MaurooRen", - "Da_igual", - "welm", - "Yadira" + "fscholz", + "khalid32", + "HenryGR" ] }, - "Learn/Getting_started_with_the_web/What_will_your_website_look_like": { - "modified": "2020-09-22T18:59:15.940Z", + "Web/API/CSS_Object_Model": { + "modified": "2019-03-23T22:01:23.472Z", "contributors": [ - "Nachec", - "Maose", - "jimmy_ml", - "NataliaCba", - "vact", - "israel-munoz", - "DaniNz", - "7eacemaker", - "mads0306", - "Da_igual", - "Davixe", - "Chrixos", - "diazwatson", - "omar.fiscal" + "dmelian" ] }, - "Learn/HTML": { - "modified": "2020-12-10T12:33:09.889Z", + "Web/API/CacheStorage": { + "modified": "2020-10-15T22:30:42.396Z", "contributors": [ - "ojgarciab", - "Nachec", - "Enesimus", - "mppfiles", - "titox", - "patoezequiel", - "mitodamabra", - "crispragmatico", - "chancherokerido", - "Athene2RM", - "Alejandra.B", - "welm", - "jpazos" + "AprilSylph" ] }, - "Learn/HTML/Forms": { - "modified": "2020-07-16T22:20:56.050Z", + "Web/API/CacheStorage/keys": { + "modified": "2020-10-15T22:30:42.056Z", "contributors": [ - "xyvs", - "mikiangel10", - "chrisdavidmills", - "eljonims", - "sjmiles" + "duduindo", + "ph4538157" ] }, - "Learn/HTML/Forms/How_to_structure_an_HTML_form": { - "modified": "2020-09-18T11:13:13.645Z", + "Web/API/CanvasImageSource": { + "modified": "2019-03-23T22:09:10.185Z", "contributors": [ - "UOCccorcoles", - "UOCjcanovasi", - "editorUOC", - "chrisdavidmills", - "eljonims" + "alinarezrangel" ] }, - "Learn/HTML/Forms/Property_compatibility_table_for_form_controls": { - "modified": "2020-08-30T01:12:52.090Z", + "Web/API/CanvasRenderingContext2D": { + "modified": "2019-03-23T22:54:41.294Z", "contributors": [ - "edchasw" + "rrodrigo", + "JoSaGuDu", + "iamwao", + "geodracs" ] }, - "Learn/HTML/Forms/Prueba_tus_habilidades:_Otros_controles": { - "modified": "2020-07-16T22:22:12.140Z", + "Web/API/CanvasRenderingContext2D/arc": { + "modified": "2019-04-15T00:25:11.182Z", "contributors": [ - "Enesimus" + "Rodrigo-Sanchez", + "Mancux2" ] }, - "Learn/HTML/Forms/Prueba_tus_habilidades:_controles_HTML5": { - "modified": "2020-07-16T22:22:11.445Z", + "Web/API/CanvasRenderingContext2D/beginPath": { + "modified": "2019-03-23T22:47:39.451Z", "contributors": [ - "Enesimus" + "PepeBeat" ] }, - "Learn/HTML/Forms/Sending_and_retrieving_form_data": { - "modified": "2020-07-16T22:21:26.056Z", + "Web/API/CanvasRenderingContext2D/clearRect": { + "modified": "2019-03-23T22:19:13.064Z", "contributors": [ - "Rafasu", - "rocioDEV", - "MrGreen", - "OseChez", - "DaniNz", - "peternerd", - "SphinxKnight", - "chrisdavidmills", - "Ricky_Lomax" + "andrpueb" ] }, - "Learn/HTML/Forms/Styling_HTML_forms": { - "modified": "2020-07-16T22:21:30.546Z", + "Web/API/CanvasRenderingContext2D/drawImage": { + "modified": "2019-03-23T22:47:09.124Z", "contributors": [ - "OMEGAYALFA", - "chrisdavidmills", - "cizquierdof" + "iamwao" ] }, - "Learn/HTML/Forms/The_native_form_widgets": { - "modified": "2020-09-15T08:02:23.197Z", + "Web/API/CanvasRenderingContext2D/fillRect": { + "modified": "2019-03-23T22:32:43.881Z", "contributors": [ - "UOCccorcoles", - "editorUOC", - "rayrojas" + "eljonims" ] }, - "Learn/HTML/Forms/Tipos_input_HTML5": { - "modified": "2020-10-30T10:06:35.877Z", + "Web/API/CanvasRenderingContext2D/getImageData": { + "modified": "2020-10-15T22:03:53.553Z", "contributors": [ - "alejandro0619", - "panpy-web" + "LEUGIM99" ] }, - "Learn/HTML/Forms/Validacion_formulario_datos": { - "modified": "2020-11-19T13:12:47.854Z", + "Web/API/CanvasRenderingContext2D/lineCap": { + "modified": "2020-10-15T22:18:19.205Z", "contributors": [ - "tcebrian", - "UOCccorcoles", - "UOCjcanovasi", - "editorUOC", - "blanchart", - "israel-munoz" + "Ricardo_F." ] }, - "Learn/HTML/Forms/Your_first_HTML_form": { - "modified": "2020-09-15T05:57:07.460Z", + "Web/API/CanvasRenderingContext2D/rotate": { + "modified": "2020-10-15T22:12:15.546Z", "contributors": [ - "UOCccorcoles", - "editorUOC", - "BraisOliveira", - "OMEGAYALFA", - "OrlandoDeJesusCuxinYama", - "Giikah", - "chrisdavidmills", - "HGARZON" + "albertor21" ] }, - "Learn/HTML/Forms/como_crear_widgets_de_formularios_personalizados": { - "modified": "2020-07-16T22:21:55.231Z", + "Web/API/CanvasRenderingContext2D/save": { + "modified": "2020-10-15T22:23:30.799Z", "contributors": [ - "laatcode" + "feiss" ] }, - "Learn/HTML/Introduccion_a_HTML": { - "modified": "2020-09-03T05:18:15.831Z", + "Web/API/Canvas_API/Tutorial/Compositing": { + "modified": "2020-08-27T21:09:19.590Z", "contributors": [ - "Nachec", - "Enesimus", - "ivanagui2", - "Sergio_Gonzalez_Collado", - "cizquierdof", - "AngelFQC" + "mastertrooper", + "stephaniehobson" ] }, - "Learn/HTML/Introduccion_a_HTML/Advanced_text_formatting": { - "modified": "2020-09-05T21:21:55.228Z", + "Web/API/ChildNode": { + "modified": "2019-03-29T14:12:39.589Z", "contributors": [ - "Nachec", - "UOCccorcoles", - "Enesimus", - "jmalsar", - "editorUOC", - "RG52", - "luchiano199", - "AlieYin" + "jpmedley" ] }, - "Learn/HTML/Introduccion_a_HTML/Creating_hyperlinks": { - "modified": "2020-09-05T04:27:29.218Z", + "Web/API/ChildNode/after": { + "modified": "2020-10-15T21:50:39.528Z", "contributors": [ - "Nachec", - "UOCccorcoles", - "juan.grred", - "Enesimus", - "jmalsar", - "blanchart", - "editorUOC", - "Myuel", - "MichaelMejiaMora", - "ferlopezcarr", - "javierpolit" + "AlePerez92", + "SoftwareRVG" ] }, - "Learn/HTML/Introduccion_a_HTML/Debugging_HTML": { - "modified": "2020-08-31T12:17:08.843Z", + "Web/API/ChildNode/before": { + "modified": "2019-03-23T22:23:28.772Z", "contributors": [ - "UOCccorcoles", - "editorUOC", - "javierpolit" + "SoftwareRVG" ] }, - "Learn/HTML/Introduccion_a_HTML/Estructuración_de_una_página_de_contenido": { - "modified": "2020-07-16T22:24:18.388Z", + "Web/API/ChildNode/remove": { + "modified": "2020-10-15T21:50:43.901Z", "contributors": [ + "daniel.arango", + "teffcode", + "AlePerez92", "SoftwareRVG" ] }, - "Learn/HTML/Introduccion_a_HTML/Marking_up_a_letter": { - "modified": "2020-07-16T22:23:11.881Z", + "Web/API/ChildNode/replaceWith": { + "modified": "2019-03-23T22:23:34.633Z", "contributors": [ - "jmalsar", - "luchiano199", - "javierpolit" + "SoftwareRVG" ] }, - "Learn/HTML/Introduccion_a_HTML/Metados_en": { - "modified": "2020-11-07T18:07:55.376Z", + "Web/API/ClipboardEvent": { + "modified": "2020-10-15T22:14:15.464Z", "contributors": [ - "nilo15", - "Nachec", - "UOCccorcoles", - "ccorcoles", - "editorUOC", - "hector080", - "clarii", - "Myuel", - "dmipaguirre", - "Armando-Cruz", - "MichaelMejiaMora", - "soedrego", - "absaucedo", - "venomdj2011", - "CarlosJose" + "fscholz" ] }, - "Learn/HTML/Introduccion_a_HTML/Prueba_tus_habilidades:_Enlaces": { - "modified": "2020-07-16T22:24:22.922Z", + "Web/API/ClipboardEvent/clipboardData": { + "modified": "2020-10-15T22:14:15.340Z", "contributors": [ - "Enesimus" + "Bumxu" ] }, - "Learn/HTML/Introduccion_a_HTML/Prueba_tus_habilidades:_Texto_básico_HTML": { - "modified": "2020-07-16T22:24:21.949Z", + "Web/API/CloseEvent": { + "modified": "2020-11-24T05:35:48.408Z", "contributors": [ - "Enesimus" + "netizen", + "jpmontoya182" ] }, - "Learn/HTML/Introduccion_a_HTML/Test_your_skills:_Advanced_HTML_text": { - "modified": "2020-09-05T23:06:12.474Z", + "Web/API/Comment": { + "modified": "2020-10-15T22:24:21.833Z", "contributors": [ - "walter.boba79" + "pablorebora" ] }, - "Learn/HTML/Introduccion_a_HTML/estructura": { - "modified": "2020-09-06T16:55:31.460Z", + "Web/API/Console": { + "modified": "2019-08-30T08:42:12.082Z", "contributors": [ - "Nachec", - "UOCccorcoles", - "editorUOC", - "chaerf", - "AlidaContreras", - "javierpolit", - "SoftwareRVG", - "welm" + "ajuanjojjj", + "fcanellas", + "vlguerrero", + "chrisdavidmills" ] }, - "Learn/HTML/Introduccion_a_HTML/iniciar": { - "modified": "2020-11-24T21:57:47.560Z", + "Web/API/Console/count": { + "modified": "2019-03-23T22:07:26.644Z", "contributors": [ - "nilo15", - "Nachec", - "UOCccorcoles", - "maodecolombia", - "Enesimus", - "editorUOC", - "narvmtz", - "dmipaguirre", - "BubuAnabelas", - "marlabarbz", - "erllanosr", - "r2fv", - "jonasmreza", - "Cjpertuz", - "yan-vega", - "Armando-Cruz", - "felixgomez", - "olvap", - "emermao", - "soedrego", - "Abihu", - "mitocondriaco", - "nahuelsotelo", - "dayamll", - "JimP99", - "EdwinTorres", - "salvarez1988", - "cizquierdof", - "juanluis", - "welm" + "deluxury", + "roberbnd" ] }, - "Learn/HTML/Introduccion_a_HTML/texto": { - "modified": "2020-09-04T15:00:09.675Z", + "Web/API/Console/dir": { + "modified": "2020-11-11T11:46:41.122Z", "contributors": [ - "Nachec", - "UOCccorcoles", - "Enesimus", - "Maose", - "ccorcoles", - "editorUOC", - "hector080", - "JulianMahecha", - "BubuAnabelas", - "RafaelVentura", - "jadiosc", - "dcarmal-dayvo", - "Owildfox", - "Myuel", - "dmipaguirre", - "Dany07", - "welm" + "jomoji", + "laloptk" ] }, - "Learn/HTML/Multimedia_and_embedding": { - "modified": "2020-08-08T01:15:36.731Z", + "Web/API/Console/dirxml": { + "modified": "2019-03-23T22:18:03.809Z", "contributors": [ - "Nachec", - "Loba25", - "emibena75", - "tomandech", - "rayrojas", - "SphinxKnight", - "rickygutim", - "luchiano199", - "jonasmreza", - "vHarz", - "hell0h0la", - "J0rgeMG", - "yarochewsky" + "aeroxmotion" ] }, - "Learn/HTML/Multimedia_and_embedding/Adding_vector_graphics_to_the_Web": { - "modified": "2020-08-13T15:11:41.992Z", + "Web/API/Console/error": { + "modified": "2019-03-23T22:06:32.134Z", "contributors": [ - "JuanMejia" + "BrodaNoel" ] }, - "Learn/HTML/Multimedia_and_embedding/Images_in_HTML": { - "modified": "2020-09-01T08:06:52.329Z", + "Web/API/Console/info": { + "modified": "2019-03-23T22:12:32.604Z", "contributors": [ - "UOCccorcoles", - "jmalsar", - "editorUOC", - "ccorcoles", - "acvidelaa", - "BubuAnabelas", - "Alpha3-Developer", - "Makinita", - "Parziva_1", - "luchiano199", - "calvearc", - "soedrego", - "JuniorBO", - "JoseCuestas" + "Lwissitoon" ] }, - "Learn/HTML/Multimedia_and_embedding/Mozilla_splash_page": { - "modified": "2020-07-16T22:25:06.606Z", + "Web/API/Console/log": { + "modified": "2019-03-23T22:19:48.741Z", "contributors": [ - "Loba25", - "henardemiguel" + "BrodaNoel", + "fcanellas" ] }, - "Learn/HTML/Multimedia_and_embedding/Other_embedding_technologies": { - "modified": "2020-07-16T22:25:00.943Z", + "Web/API/Console/time": { + "modified": "2019-03-18T21:42:22.745Z", "contributors": [ - "Ismael_Diaz", - "cinthylli", - "duduindo", - "soedrego", - "luchiano199", - "SphinxKnight", - "dylanroman03" + "jotaoncode" ] }, - "Learn/HTML/Multimedia_and_embedding/Responsive_images": { - "modified": "2020-11-02T15:27:00.386Z", + "Web/API/Console/timeEnd": { + "modified": "2020-10-15T22:13:11.825Z", "contributors": [ - "Daniel_Martin", - "LuisCA", - "baumannzone", - "JuanMejia", - "lucasan", - "pipe01", - "sebaLinares", - "kuntur-studio", - "iiegor", - "malonson", - "javierarcheni", - "alexuy51", - "SigridMonsalve", - "arnoldobr", - "anfuca" + "xlhector10" ] }, - "Learn/HTML/Multimedia_and_embedding/Video_and_audio_content": { - "modified": "2020-12-07T13:00:58.885Z", + "Web/API/Console/trace": { + "modified": "2019-03-23T22:22:51.545Z", "contributors": [ - "occu29", - "Leiner.lop", - "pabdani", - "Enesimus", - "soedrego", - "jesusgirao", - "acvidelaa", - "rayrojas" + "Axl-Nolasco" ] }, - "Learn/HTML/Tablas": { - "modified": "2020-07-16T22:25:11.000Z", + "Web/API/Console/warn": { + "modified": "2020-10-15T21:53:36.780Z", "contributors": [ - "Drathveloper", - "IXTRUnai" + "juanluisrp", + "oderflaj" ] }, - "Learn/HTML/Tablas/Conceptos_básicos_de_las_tablas_HTML": { - "modified": "2020-09-09T11:52:38.720Z", + "Web/API/Constraint_validation": { + "modified": "2019-04-22T15:33:44.796Z" + }, + "Web/API/Crypto": { + "modified": "2020-10-15T22:27:12.417Z", "contributors": [ - "UOCccorcoles", - "editorUOC" + "joseluisq" ] }, - "Learn/HTML/Tablas/Funciones_avanzadas_de_las_tablas_HTML_y_accesibilidad": { - "modified": "2020-09-14T06:33:13.790Z", + "Web/API/Crypto/subtle": { + "modified": "2020-10-15T22:27:11.548Z", "contributors": [ - "UOCccorcoles", - "editorUOC" + "joseluisq" ] }, - "Learn/HTML/Tablas/Structuring_planet_data": { - "modified": "2020-07-16T22:25:29.339Z", + "Web/API/CustomElementRegistry": { + "modified": "2020-10-15T22:29:44.444Z", "contributors": [ - "IXTRUnai" + "alattalatta" ] }, - "Learn/HTML/como": { - "modified": "2020-07-16T22:22:28.075Z", + "Web/API/CustomElementRegistry/define": { + "modified": "2020-10-15T22:29:45.200Z", "contributors": [ - "Loba25", - "blanchart", - "welm" + "aguilerajl" ] }, - "Learn/HTML/como/Usando_atributos_de_datos": { - "modified": "2020-10-29T15:52:03.444Z", + "Web/API/CustomEvent": { + "modified": "2020-10-15T21:56:03.240Z", "contributors": [ - "angeljpa95", - "camsa", - "laatcode" + "fscholz", + "AlePerez92", + "daniville" ] }, - "Learn/Herramientas_y_pruebas": { - "modified": "2020-07-16T22:38:54.378Z", + "Web/API/DOMError": { + "modified": "2020-10-15T21:34:32.594Z", "contributors": [ - "WilsonIsAliveClone", - "carlosgocereceda", - "mikelmg" + "fscholz", + "MauroEldritch" ] }, - "Learn/Herramientas_y_pruebas/Cross_browser_testing": { - "modified": "2020-07-16T22:38:59.665Z", + "Web/API/DOMParser": { + "modified": "2019-03-23T22:20:06.466Z", "contributors": [ - "arnoldobr" + "rferraris" ] }, - "Learn/Herramientas_y_pruebas/GitHub": { - "modified": "2020-10-01T17:01:32.394Z", + "Web/API/DOMString": { + "modified": "2019-03-18T21:41:05.316Z", "contributors": [ - "IsraFloores", - "Nachec" + "jagomf" ] }, - "Learn/Herramientas_y_pruebas/Lado-del-cliente_JavaScript_frameworks": { - "modified": "2020-08-22T19:34:32.519Z", + "Web/API/DataTransfer": { + "modified": "2019-03-23T23:17:03.398Z", "contributors": [ - "spaceinvadev", - "jhonarielgj" + "wbamberg", + "nmarmon", + "vmv", + "fscholz", + "yonatanalexis22" ] }, - "Learn/Herramientas_y_pruebas/Lado-del-cliente_JavaScript_frameworks/React_getting_started": { - "modified": "2020-08-22T19:52:35.580Z", + "Web/API/Detecting_device_orientation": { + "modified": "2020-08-11T08:30:00.189Z", "contributors": [ - "spaceinvadev" + "juancarlos.rmr", + "rayrojas", + "jairopezlo" ] }, - "Learn/Herramientas_y_pruebas/Lado-del-cliente_JavaScript_frameworks/Vue_primeros_pasos": { - "modified": "2020-09-17T18:53:24.146Z", + "Web/API/DeviceMotionEvent": { + "modified": "2020-10-15T22:22:26.832Z", "contributors": [ - "Faem0220" + "miguelaup" ] }, - "Learn/Herramientas_y_pruebas/Understanding_client-side_tools": { - "modified": "2020-07-28T15:51:57.413Z", + "Web/API/Document": { + "modified": "2019-10-10T16:52:49.015Z", "contributors": [ - "b3m3bi" + "luis.iglesias", + "AlejandroCordova", + "fscholz", + "Crash", + "DoctorRomi", + "Mgjbot", + "DR", + "Carlosds", + "Nathymig" ] }, - "Learn/JavaScript": { - "modified": "2020-08-08T12:13:32.547Z", + "Web/API/Document/URL": { + "modified": "2020-10-15T21:18:01.820Z", "contributors": [ - "Nachec", - "chrisdavidmills", - "NavetsArev", - "ivanagui2", - "Makinita", - "hamfree", - "tonymedrano", - "0sc4rR4v3l0" + "AlePerez92", + "fscholz", + "DR" ] }, - "Learn/JavaScript/Asynchronous": { - "modified": "2020-08-07T20:26:22.020Z", + "Web/API/Document/adoptNode": { + "modified": "2020-10-15T22:06:16.900Z", "contributors": [ - "Nachec", - "PatoDeTuring", - "duduindo", - "madmaxdios" + "AlePerez92", + "InfaSysKey", + "ANDRUS74" ] }, - "Learn/JavaScript/Asynchronous/Async_await": { - "modified": "2020-11-12T21:09:30.375Z", + "Web/API/Document/alinkColor": { + "modified": "2019-03-23T23:46:52.743Z", "contributors": [ - "sargentogato", - "oscartzgz", - "SphinxKnight" + "fscholz", + "DR" ] }, - "Learn/JavaScript/Asynchronous/Concepts": { - "modified": "2020-11-19T20:30:13.091Z", + "Web/API/Document/anchors": { + "modified": "2020-10-15T21:18:02.380Z", "contributors": [ - "AndresSalomon1990", - "marcusdesantis" + "roocce", + "fscholz", + "DR" ] }, - "Learn/JavaScript/Building_blocks": { - "modified": "2020-07-17T01:46:33.034Z", + "Web/API/Document/applets": { + "modified": "2019-03-23T23:46:53.464Z", "contributors": [ - "Enesimus", - "InmobAli", - "rodririobo", - "josecampo", - "ivanagui2", - "ldeth", - "Makinita", - "jhonattanbenitez", - "Sergio_Gonzalez_Collado", - "Michelangeur", - "Elicar", - "chrisdavidmills" + "fscholz", + "DR" ] }, - "Learn/JavaScript/Building_blocks/Bucle_codigo": { - "modified": "2020-10-10T18:54:10.014Z", + "Web/API/Document/bgColor": { + "modified": "2019-03-23T23:46:48.550Z", "contributors": [ - "GianGuerra", - "Enesimus", - "josecampo", - "jesusvillalta", - "yohanolmedo", - "Zenchy", - "SebastianMaciel" + "fscholz", + "DR" ] }, - "Learn/JavaScript/Building_blocks/Construyendo_tu_propia_funcion": { - "modified": "2020-07-16T22:31:28.751Z", + "Web/API/Document/body": { + "modified": "2019-03-23T23:47:18.556Z", "contributors": [ - "InmobAli", - "serarroy", - "carlosgocereceda" + "MauroEldritch", + "fscholz", + "Markens", + "DR" ] }, - "Learn/JavaScript/Building_blocks/Eventos": { - "modified": "2020-07-16T22:31:37.027Z", + "Web/API/Document/characterSet": { + "modified": "2019-03-23T23:46:47.961Z", "contributors": [ - "jhonarielgj", - "sebastiananea", - "maximilianotulian", - "ismamz" + "fscholz", + "Mgjbot", + "DR" ] }, - "Learn/JavaScript/Building_blocks/Functions": { - "modified": "2020-10-10T22:09:39.322Z", + "Web/API/Document/clear": { + "modified": "2019-03-23T22:27:12.101Z", "contributors": [ - "GianGuerra", - "pmusetti", - "pablorebora", - "blanchart", - "Alessa", - "DanielAgustinTradito" + "pekechis" ] }, - "Learn/JavaScript/Building_blocks/Galeria_de_imagenes": { - "modified": "2020-07-16T22:31:42.753Z", + "Web/API/Document/close": { + "modified": "2019-03-23T22:33:21.768Z", "contributors": [ - "amIsmael" + "AitorRodriguez990" ] }, - "Learn/JavaScript/Building_blocks/Return_values": { - "modified": "2020-07-17T01:43:24.262Z", + "Web/API/Document/contentType": { + "modified": "2019-03-23T22:57:42.530Z", "contributors": [ - "Enesimus", - "EnekoOdoo" + "MauroEldritch" ] }, - "Learn/JavaScript/Building_blocks/conditionals": { - "modified": "2020-11-28T22:20:55.059Z", + "Web/API/Document/createDocumentFragment": { + "modified": "2020-08-12T01:13:43.917Z", "contributors": [ - "willian593", - "Enesimus", - "InmobAli", - "BorisQF", - "markosaav", - "Atabord", - "jhonattanbenitez" + "zgreco2000", + "msaglietto" ] }, - "Learn/JavaScript/Client-side_web_APIs": { - "modified": "2020-07-16T22:32:38.714Z", + "Web/API/Document/createElement": { + "modified": "2019-09-19T04:18:24.578Z", "contributors": [ - "rayrojas", - "FedeRacun", - "dvincent" + "AlePerez92", + "Juandresyn", + "aitorllj93", + "BrodaNoel", + "McSonk", + "malonson", + "AlejandroBlanco", + "daesnorey_xy", + "JoaquinGonzalez" ] }, - "Learn/JavaScript/Client-side_web_APIs/Client-side_storage": { - "modified": "2020-09-22T05:14:27.901Z", + "Web/API/Document/createElementNS": { + "modified": "2019-03-23T22:23:11.141Z", "contributors": [ - "Nachec", - "Enesimus" + "ErikMj69" ] }, - "Learn/JavaScript/Client-side_web_APIs/Fetching_data": { - "modified": "2020-07-16T22:32:57.121Z", + "Web/API/Document/createRange": { + "modified": "2019-08-27T15:00:09.804Z", "contributors": [ - "Dsabillon" + "iarah", + "fscholz", + "jsx", + "Mgjbot", + "DR" ] }, - "Learn/JavaScript/Client-side_web_APIs/Introducción": { - "modified": "2020-07-16T22:32:44.249Z", + "Web/API/Document/createTextNode": { + "modified": "2020-10-15T22:17:21.251Z", "contributors": [ - "robertsallent", - "gonzaa96", - "Usuario001", - "kevtinoco", - "Anonymous", - "OrlandoDeJesusCuxinYama" + "AlePerez92" ] }, - "Learn/JavaScript/First_steps": { - "modified": "2020-09-22T14:49:32.194Z", + "Web/API/Document/defaultView": { + "modified": "2019-03-23T22:54:20.024Z", "contributors": [ - "Nachec", - "IsraFloores", - "mvuljevas", - "Mario-new", - "lalaggv2", - "rodrigocruz13", - "antonygiomarx", - "rickygutim", - "ivanagui2", - "EliasMCaja", - "Creasick", - "Aussith_9NT", - "sergioqa123", - "RayPL", - "ernestomr", - "eliud-c-delgado", - "chrisdavidmills" + "ArcangelZith" ] }, - "Learn/JavaScript/First_steps/A_first_splash": { - "modified": "2020-08-09T09:51:52.684Z", + "Web/API/Document/designMode": { + "modified": "2020-10-15T21:40:52.052Z", "contributors": [ - "Nachec", - "zgreco2000", - "Enesimus", - "jacobo.delgado", - "xisco", - "Creasick", - "JaviMartain", - "Alfacoy", - "bosspetta", - "NataliaCba", - "arnaldop10", - "recortes", - "Darkiring", - "oscarkb24", - "roberbnd", - "joosemi02" + "AlePerez92", + "sohereitcomes" ] }, - "Learn/JavaScript/First_steps/Arrays": { - "modified": "2020-07-16T22:30:53.191Z", + "Web/API/Document/dir": { + "modified": "2019-03-23T22:57:39.171Z", "contributors": [ - "InmobAli", - "amIsmael", - "Creasick", - "DaniNz" + "MauroEldritch" ] }, - "Learn/JavaScript/First_steps/Generador_de_historias_absurdas": { - "modified": "2020-11-28T18:15:56.503Z", + "Web/API/Document/doctype": { + "modified": "2019-03-23T22:43:25.055Z", "contributors": [ - "willian593", - "Enesimus", - "fj1261", - "keskyle17", - "antqted" + "joselix" ] }, - "Learn/JavaScript/First_steps/Matemáticas": { - "modified": "2020-08-11T20:21:00.937Z", + "Web/API/Document/documentElement": { + "modified": "2019-03-23T23:50:27.852Z", "contributors": [ - "Nachec", - "Enesimus", - "keskyle17", - "Creasick", - "Aussith_9NT", - "JaviMartain", - "guibetancur", - "domingoacd", - "jjpc" + "SphinxKnight", + "fscholz", + "khalid32", + "HenryGR", + "Mgjbot" ] }, - "Learn/JavaScript/First_steps/Prueba_tus_habilidades:_Strings": { - "modified": "2020-08-11T12:16:57.685Z", + "Web/API/Document/documentURI": { + "modified": "2019-03-23T22:39:59.389Z", "contributors": [ - "Nachec" + "Zholary" ] }, - "Learn/JavaScript/First_steps/Qué_es_JavaScript": { - "modified": "2020-08-08T22:05:17.982Z", + "Web/API/Document/documentURIObject": { + "modified": "2019-03-23T23:50:26.462Z", "contributors": [ - "Nachec", - "zgreco2000", - "jacobo.delgado", - "console", - "c9009", - "Creasick", - "bosspetta", - "alejoWeb", - "JorgeAML", - "eliud-c-delgado", - "roberbnd" + "SphinxKnight", + "fscholz", + "khalid32", + "HenryGR", + "Mgjbot" ] }, - "Learn/JavaScript/First_steps/Strings": { - "modified": "2020-09-06T21:18:25.448Z", + "Web/API/Document/dragover_event": { + "modified": "2019-04-30T14:24:25.773Z", "contributors": [ - "brayan-orellanos", - "Nachec", - "Enesimus", - "keskyle17", - "wajari", - "Ale87GG", - "Creasick", - "malonson", - "punkcuadecuc" + "wbamberg", + "fscholz", + "ExE-Boss", + "Vickysolo" ] }, - "Learn/JavaScript/First_steps/Test_your_skills:_Math": { - "modified": "2020-10-27T13:03:04.825Z", + "Web/API/Document/embeds": { + "modified": "2020-10-15T22:22:17.171Z", "contributors": [ - "mediodepan", - "FabianBeltran96", - "syntaxter" + "iarah" ] }, - "Learn/JavaScript/First_steps/Test_your_skills:_variables": { - "modified": "2020-09-05T01:09:05.732Z", + "Web/API/Document/evaluate": { + "modified": "2019-03-23T22:10:41.891Z", "contributors": [ - "FabianBeltran96", - "Nachec" + "bryan3561" ] }, - "Learn/JavaScript/First_steps/Useful_string_methods": { - "modified": "2020-10-19T12:56:16.453Z", + "Web/API/Document/execCommand": { + "modified": "2019-03-23T22:59:11.227Z", "contributors": [ - "chrisdavidmills", - "yeyskalyn", - "Enesimus", - "Rtf747", - "InmobAli", - "keskyle17", - "enekate", - "Creasick", - "DaniNz" + "MarkelCuesta", + "asero82", + "javatlacati" ] }, - "Learn/JavaScript/First_steps/Variables": { - "modified": "2020-08-22T08:01:38.443Z", + "Web/API/Document/exitFullscreen": { + "modified": "2020-10-15T22:23:56.627Z", "contributors": [ - "Nachec", - "Enesimus", - "jacobo.delgado", - "pmusetti", - "keskyle17", - "amIsmael", - "enekate", - "xisco", - "Creasick", - "TheJarX", - "hchelbat", - "JaviMartain", - "Dhelarius" + "davidmartinezfl" ] }, - "Learn/JavaScript/First_steps/What_went_wrong": { - "modified": "2020-08-10T05:39:33.652Z", + "Web/API/Document/getElementById": { + "modified": "2019-03-23T23:46:23.291Z", "contributors": [ - "Nachec", "Enesimus", - "CarlesBou", - "enekate", - "amIsmael", - "xisco", - "mamjerez", - "Creasick", - "Alfacoy", - "NataliaCba", - "esencialinux" + "jlpindado", + "pclifecl", + "OLiiver", + "fscholz", + "teoli", + "tuxisma", + "Juan c c q" ] }, - "Learn/JavaScript/Howto": { - "modified": "2020-07-16T22:33:09.029Z", - "contributors": [ - "FelipeAndrade" + "Web/API/Document/getElementsByClassName": { + "modified": "2019-03-23T22:48:57.077Z", + "contributors": [ + "JuanMacias", + "JungkookScript", + "ncaracci" ] }, - "Learn/JavaScript/Objects": { - "modified": "2020-11-12T18:14:51.703Z", + "Web/API/Document/getElementsByName": { + "modified": "2019-03-18T21:37:32.461Z", "contributors": [ - "alejandro.fca", - "pablojp", - "ivanagui2", - "clarii", - "Irwin1985", - "jsanpedror", - "blaipas", - "Tzikin100", - "edu1464", - "chrisdavidmills" + "MikeGsus" ] }, - "Learn/JavaScript/Objects/Adding_bouncing_balls_features": { - "modified": "2020-07-16T22:32:34.341Z", + "Web/API/Document/getElementsByTagName": { + "modified": "2019-03-23T23:50:32.110Z", "contributors": [ - "Enesimus", - "serarroy", - "carlosgocereceda" + "SphinxKnight", + "fscholz", + "khalid32", + "teoli", + "HenryGR", + "Mgjbot" ] }, - "Learn/JavaScript/Objects/Basics": { - "modified": "2020-08-08T03:12:26.699Z", + "Web/API/Document/getElementsByTagNameNS": { + "modified": "2019-03-23T23:50:38.494Z", "contributors": [ - "Nachec", - "Fernando-Funes", - "pmusetti", - "ivanagui2", - "djdouta", - "seba2305", - "B1tF8er", - "kevin-loal98" + "SphinxKnight", + "fscholz", + "khalid32", + "AlejandroSilva", + "leopic", + "HenryGR", + "Mgjbot" ] }, - "Learn/JavaScript/Objects/Ejercicio_práctico_de_construcción_de_objetos": { - "modified": "2020-07-16T22:32:30.877Z", + "Web/API/Document/hasFocus": { + "modified": "2019-03-23T23:53:13.498Z", "contributors": [ - "r-vasquez", - "rayrojas", - "luchiano199", - "Sergio_Gonzalez_Collado", - "pomarbar" + "SphinxKnight", + "fscholz", + "khalid32", + "Mgjbot", + "Talisker", + "HenryGR" ] }, - "Learn/JavaScript/Objects/Inheritance": { - "modified": "2020-07-28T01:53:21.821Z", + "Web/API/Document/head": { + "modified": "2019-03-23T22:55:43.504Z", "contributors": [ - "Fernando-Funes", - "darkarth80", - "ivanagui2", - "cvillafraz", - "Adrian-Cuellar", - "B1tF8er" + "federicobond" ] }, - "Learn/JavaScript/Objects/JSON": { - "modified": "2020-07-16T22:32:24.819Z", + "Web/API/Document/height": { + "modified": "2019-03-23T22:09:21.631Z", "contributors": [ - "jorgeCaster", - "pmiranda-geo", - "Enesimus" + "HarleySG" ] }, - "Learn/JavaScript/Objects/Object-oriented_JS": { - "modified": "2020-08-08T09:41:13.386Z", + "Web/API/Document/hidden": { + "modified": "2020-10-15T22:14:24.023Z", "contributors": [ - "Nachec", - "andyesp", - "Fernando-Funes", - "jhonarielgj", - "rimbener", - "ReneAG", - "EnekoOdoo", - "ivanagui2", - "cristianmarquezp", - "djdouta", - "paulaco", - "martinGerez", - "anyruizd", - "Michelangeur" + "Elenito93" ] }, - "Learn/JavaScript/Objects/Object_prototypes": { - "modified": "2020-11-22T14:56:33.662Z", + "Web/API/Document/importNode": { + "modified": "2020-10-15T21:52:00.631Z", "contributors": [ - "VictoriaRamirezCharles", - "TextC0de", - "Cesaraugp", - "Fernando-Funes", - "joooni1998", - "kevin_Luna", - "asamajamasa", - "ddavalos", - "JuanMaRuiz", - "ivanagui2", - "salpreh", - "djangoJosele" + "fscholz", + "wbamberg", + "AsLogd" ] }, - "Learn/Performance": { - "modified": "2020-07-16T22:40:38.336Z", + "Web/API/Document/keydown_event": { + "modified": "2020-04-03T23:31:41.800Z", "contributors": [ - "mikelmg" + "camsa", + "irenesmith", + "ExE-Boss", + "fscholz", + "juan-ferrer-toribio" ] }, - "Learn/Server-side": { - "modified": "2020-07-16T22:35:56.070Z", + "Web/API/Document/keyup_event": { + "modified": "2019-04-18T03:50:20.204Z", "contributors": [ - "davidenriq11", - "javierdelpino", - "IXTRUnai" + "irenesmith", + "ExE-Boss", + "fscholz", + "gabojkz" ] }, - "Learn/Server-side/Django": { - "modified": "2020-07-16T22:36:31.705Z", + "Web/API/Document/querySelector": { + "modified": "2019-03-23T22:58:51.923Z", "contributors": [ - "jlpb97", - "javierdelpino", - "oscvic", - "faustinoloeza" + "BrodaNoel", + "Luis_Calvo", + "dannysalazar90" ] }, - "Learn/Server-side/Django/Admin_site": { - "modified": "2020-07-16T22:37:02.726Z", + "Web/API/Document/querySelectorAll": { + "modified": "2020-10-15T21:34:24.234Z", "contributors": [ - "ricardo-soria", - "cristianaguilarvelozo", - "SgtSteiner", - "javierdelpino" + "chrisdavidmills", + "AlePerez92", + "padrecedano", + "lfottaviano", + "joeljose" ] }, - "Learn/Server-side/Django/Authentication": { - "modified": "2020-07-29T13:34:31.552Z", + "Web/API/Document/readyState": { + "modified": "2019-03-23T22:46:17.268Z", "contributors": [ - "rayrojas", - "quijot", - "gatopadre", - "zelkovar", - "cbayonao", - "DTaiD", - "Carlosmgs111", - "ricardo-soria", - "GankerDev", - "javierdelpino" + "Codejobs" ] }, - "Learn/Server-side/Django/Deployment": { - "modified": "2020-09-29T05:31:27.175Z", + "Web/API/Document/registerElement": { + "modified": "2019-03-23T22:58:15.536Z", "contributors": [ - "chrisdavidmills", - "LIBIDORI", - "taponato", - "joanvasa", - "banideus", - "LUISCR", - "ricardo-soria", - "javierdelpino" + "SphinxKnight", + "AlePerez92", + "mclo", + "chrisdavidmills" ] }, - "Learn/Server-side/Django/Forms": { - "modified": "2020-09-03T20:14:00.959Z", + "Web/API/Document/scripts": { + "modified": "2019-03-23T22:57:42.662Z", "contributors": [ - "FoulMangoPY", - "joserojas1270", - "panpy-web", - "taponato", - "gatopadre", - "gt67ma", - "soberanes", - "ricardo-soria", - "boleklolek", - "SgtSteiner", - "javierdelpino" + "MauroEldritch" ] }, - "Learn/Server-side/Django/Generic_views": { - "modified": "2020-07-16T22:37:14.516Z", + "Web/API/Document/scroll_event": { + "modified": "2020-04-13T22:20:51.709Z", "contributors": [ - "ricardo-soria", - "javierdelpino" + "camsa", + "irenesmith", + "ExE-Boss", + "arkgast", + "fscholz", + "PatoDeTuring", + "Thargelion" ] }, - "Learn/Server-side/Django/Home_page": { - "modified": "2020-07-16T22:37:08.036Z", + "Web/API/Document/write": { + "modified": "2019-03-23T22:26:37.503Z", "contributors": [ - "dr2d4", - "MatiasJAco", - "ricardo-soria", - "cristianaguilarvelozo", - "AnPlandolit", - "javierdelpino" + "JohnnyKB", + "bastiantowers" ] }, - "Learn/Server-side/Django/Introducción": { - "modified": "2020-07-16T22:36:38.315Z", + "Web/API/Document/writeln": { + "modified": "2019-03-23T22:21:05.956Z", "contributors": [ - "dr2d4", - "jlpb97", - "oalberto96", - "javierdelpino", - "oscvic" + "mauroc8" ] }, - "Learn/Server-side/Django/Models": { - "modified": "2020-08-27T11:46:51.559Z", + "Web/API/DocumentFragment": { + "modified": "2020-10-15T22:29:37.426Z", "contributors": [ - "FoulMangoPY", - "dr2d4", - "Kalisto", - "cuantosoft", - "cruzito626", - "ricardo-soria", - "CristianFonseca03", - "cristianaguilarvelozo", - "iehurtado", - "SgtSteiner", - "javierdelpino", - "Panchosama", - "MatiMateo" + "JooseNavarro" ] }, - "Learn/Server-side/Django/Sessions": { - "modified": "2020-09-02T12:56:54.473Z", + "Web/API/Document_object_model/Using_the_W3C_DOM_Level_1_Core/Example": { + "modified": "2019-03-23T22:06:28.946Z", "contributors": [ - "FoulMangoPY", - "franpandol", - "ricardo-soria", - "tonyrodrigues", - "javierdelpino" + "BrodaNoel" ] }, - "Learn/Server-side/Django/Testing": { - "modified": "2020-11-25T15:32:01.505Z", + "Web/API/DragEvent": { + "modified": "2020-11-04T23:21:08.729Z", "contributors": [ - "JanoVZ", - "joserojas1270", - "rayrojas", - "julyaann", - "ferxohn", - "ricardo-soria", - "R4v3n15", - "javierdelpino" + "AngelFQC" ] }, - "Learn/Server-side/Django/Tutorial_local_library_website": { - "modified": "2020-07-16T22:36:48.653Z", + "Web/API/Element": { + "modified": "2019-03-24T00:06:42.464Z", "contributors": [ - "dr2d4", - "jfpIE16", - "ricardo-soria", - "javierdelpino" + "carllewisc", + "JuanMacias", + "SphinxKnight", + "fscholz", + "teoli", + "webmaster", + "AshfaqHossain", + "MARCASTELEON", + "Markens", + "Mgjbot", + "Nathymig" ] }, - "Learn/Server-side/Django/development_environment": { - "modified": "2020-07-16T22:36:43.747Z", + "Web/API/Element/animate": { + "modified": "2019-03-23T22:26:03.841Z", "contributors": [ - "sign4l", - "cruzito626", - "ricardo-soria", - "javierdelpino" + "SoftwareRVG" ] }, - "Learn/Server-side/Django/django_assessment_blog": { - "modified": "2020-07-16T22:37:48.773Z", + "Web/API/Element/attachShadow": { + "modified": "2020-10-15T22:29:44.635Z", "contributors": [ - "ricardo-soria", - "matiexe", - "javierdelpino" + "aguilerajl" ] }, - "Learn/Server-side/Django/skeleton_website": { - "modified": "2020-07-16T22:36:52.017Z", + "Web/API/Element/attributes": { + "modified": "2019-03-23T22:32:35.186Z", "contributors": [ - "dr2d4", - "cuantosoft", - "gozarrojas", - "ricardo-soria", - "javierdelpino" + "Grijander81" ] }, - "Learn/Server-side/Django/web_application_security": { - "modified": "2020-07-16T22:37:45.102Z", + "Web/API/Element/classList": { + "modified": "2019-08-07T11:56:45.170Z", "contributors": [ - "sebastianmr6", - "ricardo-soria", - "javierdelpino" + "AlePerez92", + "alkaithil", + "luispuchades" ] }, - "Learn/Server-side/Express_Nodejs": { - "modified": "2020-07-16T22:37:51.529Z", + "Web/API/Element/className": { + "modified": "2019-03-23T22:32:39.589Z", "contributors": [ - "GUEROZ", - "deit", - "rmon_vfer", - "sergiodiezdepedro", - "javierdelpino", - "sergionunez" + "AlePerez92", + "Grijander81" ] }, - "Learn/Server-side/Express_Nodejs/Introduction": { - "modified": "2020-07-16T22:38:09.037Z", + "Web/API/Element/click_event": { + "modified": "2019-03-18T20:47:32.813Z", "contributors": [ - "evaferreira", - "threevanny", - "hernanfloresramirez1987", - "jorgesqm95", - "GUEROZ", - "Slb-Sbsz", - "tec.josec", - "crisaragon", - "Sergio_Gonzalez_Collado", - "fedechiappero", - "RigobertoUlloa", - "javierdelpino", - "SphinxKnight" + "irenesmith", + "ExE-Boss", + "fscholz", + "jvas28" ] }, - "Learn/Server-side/Express_Nodejs/Tutorial_local_library_website": { - "modified": "2020-07-16T22:38:15.482Z", + "Web/API/Element/clientHeight": { + "modified": "2019-03-18T20:59:01.264Z", "contributors": [ - "acasco", - "antiepoke" + "SphinxKnight", + "maxijb", + "germanfr" ] }, - "Learn/Server-side/Express_Nodejs/development_environment": { - "modified": "2020-07-16T22:37:58.161Z", + "Web/API/Element/clientLeft": { + "modified": "2019-03-23T23:50:22.640Z", "contributors": [ - "sandromedina", - "threevanny", - "pajaro5", - "GUEROZ", - "maringenio" + "SphinxKnight", + "fscholz", + "khalid32", + "HenryGR", + "Mgjbot" ] }, - "Learn/Server-side/Express_Nodejs/mongoose": { - "modified": "2020-07-16T22:38:20.335Z", + "Web/API/Element/clientTop": { + "modified": "2019-03-23T23:50:18.628Z", "contributors": [ - "danimrprofe", - "rmon_vfer" + "SphinxKnight", + "fscholz", + "AshfaqHossain", + "HenryGR", + "Mgjbot" ] }, - "Learn/Server-side/Express_Nodejs/skeleton_website": { - "modified": "2020-07-16T22:38:03.936Z", + "Web/API/Element/clientWidth": { + "modified": "2020-10-15T21:46:17.283Z", "contributors": [ - "juancorbacho", - "tec.josec", - "maringenio", - "mimz2563" + "SphinxKnight", + "Grijander81" ] }, - "Learn/Server-side/Node_server_without_framework": { - "modified": "2020-07-16T22:36:05.239Z", + "Web/API/Element/closest": { + "modified": "2020-10-15T21:51:29.500Z", "contributors": [ - "javierdelpino" + "AlePerez92" ] }, - "Learn/Server-side/Primeros_pasos": { - "modified": "2020-07-16T22:36:08.254Z", + "Web/API/Element/computedStyleMap": { + "modified": "2020-11-20T23:32:12.573Z", "contributors": [ - "javierdelpino" + "mrkadium" ] }, - "Learn/Server-side/Primeros_pasos/Introducción": { - "modified": "2020-07-16T22:36:13.094Z", + "Web/API/Element/currentStyle": { + "modified": "2019-03-23T22:26:01.738Z", "contributors": [ - "AnaHertaj", - "SphinxKnight", - "mortyBL", - "javierdelpino" + "SoftwareRVG" ] }, - "Learn/Server-side/Primeros_pasos/Vision_General_Cliente_Servidor": { - "modified": "2020-07-16T22:36:18.740Z", + "Web/API/Element/getAttribute": { + "modified": "2019-03-23T22:55:05.590Z", "contributors": [ - "Slb-Sbsz", - "javierdelpino" + "germanfr", + "hawkins" ] }, - "Learn/Server-side/Primeros_pasos/Web_frameworks": { - "modified": "2020-07-16T22:36:23.784Z", + "Web/API/Element/getAttributeNodeNS": { + "modified": "2019-03-18T21:40:41.705Z", "contributors": [ - "Slb-Sbsz", - "javierdelpino" + "FcoJavierEsc" ] }, - "Learn/Server-side/Primeros_pasos/seguridad_sitios_web": { - "modified": "2020-07-16T22:36:27.856Z", + "Web/API/Element/getBoundingClientRect": { + "modified": "2020-10-15T21:16:26.376Z", "contributors": [ - "isaine", - "Slb-Sbsz", - "javierdelpino" + "AlePerez92", + "slam", + "cristianmartinez", + "SphinxKnight", + "joseanpg", + "jzatarain", + "fscholz", + "jsx", + "HenryGR", + "Mgjbot" ] }, - "Learn/Using_Github_pages": { - "modified": "2020-07-16T22:35:51.571Z", + "Web/API/Element/getClientRects": { + "modified": "2019-03-23T23:50:31.325Z", "contributors": [ - "DaniNz", - "LuyisiMiger", - "TAXIS" + "SphinxKnight", + "edhzsz", + "fscholz", + "khalid32", + "HenryGR", + "Mgjbot" ] }, - "Learn/codificacion-scripting": { - "modified": "2020-07-16T22:22:13.785Z", + "Web/API/Element/getElementsByClassName": { + "modified": "2019-03-23T22:32:46.843Z", "contributors": [ - "hamfree" + "Grijander81" ] }, - "Localización": { - "modified": "2019-01-16T13:31:36.167Z", + "Web/API/Element/getElementsByTagName": { + "modified": "2019-03-23T23:53:30.735Z", "contributors": [ - "DirkS", - "RickieesES", + "SphinxKnight", + "fscholz", + "khalid32", "Mgjbot", - "Verruckt", - "Jorolo", - "Takenbot", - "Nukeador", - "Radigar" + "HenryGR" ] }, - "Localizar_con_Narro": { - "modified": "2019-03-24T00:12:25.538Z", + "Web/API/Element/getElementsByTagNameNS": { + "modified": "2019-03-18T21:15:33.018Z", "contributors": [ - "jvmjunior", - "deimidis" + "cguimaraenz" ] }, - "MDN": { - "modified": "2020-07-08T14:43:57.058Z", + "Web/API/Element/hasAttribute": { + "modified": "2019-03-23T22:12:50.721Z", "contributors": [ - "Maose", - "jswisher", - "SphinxKnight", - "Riszin", - "Beatriz_Ortega_Valdes", - "facufacu3789", - "wbamberg", - "0zxo", - "Jeremie", - "raecillacastellana", - "DonPrime", - "GersonLazaro", - "Arudb79", - "MauricioGil", - "Sheppy" + "ElChiniNet" ] }, - "MDN/About": { - "modified": "2020-05-03T01:47:58.469Z", + "Web/API/Element/id": { + "modified": "2019-03-23T22:26:11.048Z", "contributors": [ - "Beatriz_Ortega_Valdes", - "ecedenyo", - "wbamberg", - "jswisher", - "hecaxmmx", - "SoftwareRVG", - "Jeremie", - "carloslazaro", - "cosmesantos", - "wilo", - "LuisArt", - "sinfallas", - "maedca" + "SoftwareRVG" ] }, - "MDN/Comunidad": { - "modified": "2020-04-24T19:14:03.228Z", + "Web/API/Element/innerHTML": { + "modified": "2019-03-18T20:58:51.922Z", "contributors": [ - "inwm", "SphinxKnight", - "wbamberg", - "jenyvera", - "0zxo", - "Jeremie", - "LeoHirsch", - "luisgm76" - ] - }, - "MDN/Contribute": { - "modified": "2019-03-22T01:52:35.495Z", - "contributors": [ - "Beatriz_Ortega_Valdes", - "wbamberg", - "Rrxxxx", - "Ibrahim1997", - "LeoHirsch", - "MauricioGil", - "Mars" + "IsaacAaron", + "BrodaNoel", + "CristhianLora1", + "fscholz", + "teoli", + "JAparici" ] }, - "MDN/Contribute/Community": { - "modified": "2020-09-03T13:14:53.733Z", + "Web/API/Element/insertAdjacentElement": { + "modified": "2020-12-03T10:36:12.400Z", "contributors": [ - "FoulMangoPY", - "jswisher", - "wbamberg", - "welm", - "Sebastian.Nagles" + "AlePerez92", + "alexlndn", + "AgustinPrieto" ] }, - "MDN/Contribute/Feedback": { - "modified": "2020-12-02T14:04:57.487Z", + "Web/API/Element/insertAdjacentHTML": { + "modified": "2020-10-15T21:56:01.516Z", "contributors": [ - "SphinxKnight", - "abcserviki", - "chrisdavidmills", - "Rafasu", - "jswisher", - "yohanolmedo", - "alex16jpv", - "wbamberg", - "astrapotro", - "Jabi", - "Sergio_Gonzalez_Collado", - "karl_", - "MARVINFLORENTINO", - "aresth+", - "DracotMolver" + "AlePerez92", + "mikekrn" ] }, - "MDN/Contribute/Getting_started": { - "modified": "2020-12-02T19:26:24.923Z", + "Web/API/Element/localName": { + "modified": "2019-03-23T22:26:08.984Z", "contributors": [ - "chrisdavidmills", - "Anibalismo", - "MIKE1203", - "gcjuan", - "clarii", - "wbamberg", - "0zxo", - "dariomaim", - "grover.velasquez", - "Primo18", - "maubarbetti", - "Arukantara", - "jsx", - "fraph", - "teoli", - "aguilaindomable", - "LeoHirsch", - "cototion" + "SoftwareRVG" ] }, - "MDN/Contribute/Howto": { - "modified": "2019-01-16T18:56:52.965Z", + "Web/API/Element/matches": { + "modified": "2020-12-06T16:23:07.481Z", "contributors": [ - "wbamberg", - "0zxo", - "astrapotro", - "MauricioGil", - "Sheppy" + "AlePerez92", + "amIsmael", + "nbouvrette", + "Grijander81" ] }, - "MDN/Contribute/Howto/Convert_code_samples_to_be_live": { - "modified": "2019-01-16T19:10:19.469Z", + "Web/API/Element/mousedown_event": { + "modified": "2019-03-18T20:41:57.554Z", "contributors": [ - "wbamberg", - "javierdp", - "gpadilla", - "RoxPulido", - "LeoHirsch" + "irenesmith", + "ExE-Boss", + "fscholz", + "marydn" ] }, - "MDN/Contribute/Howto/Crear_cuenta_MDN": { - "modified": "2020-08-21T18:14:17.930Z", + "Web/API/Element/namespaceURI": { + "modified": "2019-03-23T22:25:51.573Z", "contributors": [ - "Tomillo", - "JADE-2006", - "wbamberg", - "JuniorBO", - "Arudb79", - "LeoHirsch" + "SoftwareRVG" ] }, - "MDN/Contribute/Howto/Document_a_CSS_property": { - "modified": "2020-02-19T19:43:18.253Z", + "Web/API/Element/outerHTML": { + "modified": "2019-03-23T22:32:38.203Z", "contributors": [ - "jswisher", - "SphinxKnight", - "wbamberg", - "teoli", - "stephaniehobson", - "MauricioGil" + "Grijander81" ] }, - "MDN/Contribute/Howto/Document_a_CSS_property/Plantilla_propiedad": { - "modified": "2019-03-18T21:31:21.033Z", + "Web/API/Element/prefix": { + "modified": "2019-03-23T22:25:56.753Z", "contributors": [ - "wbamberg", - "B1tF8er" + "SoftwareRVG" ] }, - "MDN/Contribute/Howto/Etiquetas_paginas_javascript": { - "modified": "2019-01-16T19:47:18.318Z", + "Web/API/Element/querySelector": { + "modified": "2020-10-01T13:45:10.425Z", "contributors": [ - "wbamberg", - "LeoHirsch" + "Augusto-Ruiz", + "Luis_Calvo", + "Fx-Enlcxx" ] }, - "MDN/Contribute/Howto/Remover_Macros_Experimentales": { - "modified": "2020-07-05T17:06:56.383Z", + "Web/API/Element/removeAttribute": { + "modified": "2019-03-23T22:32:43.147Z", "contributors": [ - "Anibalismo" + "AlePerez92", + "Grijander81" ] }, - "MDN/Contribute/Howto/Set_the_summary_for_a_page": { - "modified": "2020-07-05T16:17:53.925Z", + "Web/API/Element/requestFullScreen": { + "modified": "2019-03-23T22:46:59.466Z", "contributors": [ - "Anibalismo", - "Maose", - "wbamberg", - "gerard.am", - "LeoHirsch" + "joseamn1" ] }, - "MDN/Contribute/Howto/Tag": { - "modified": "2019-03-23T23:15:01.953Z", + "Web/API/Element/runtimeStyle": { + "modified": "2019-03-23T22:25:35.378Z", "contributors": [ - "wbamberg", - "Creasick", - "blanchart", - "meCarrion17", - "rafamagno", - "teoli", - "PepeAntonio", - "CristianMar25", - "anmartinez", - "LeoHirsch" + "SoftwareRVG" ] }, - "MDN/Contribute/Howto/Usar_barras_laterales_de_navegación": { - "modified": "2019-05-08T17:34:30.854Z", + "Web/API/Element/scrollHeight": { + "modified": "2020-09-19T11:38:52.843Z", "contributors": [ - "ivanagui2" + "amfolgar", + "SphinxKnight", + "SoftwareRVG" ] }, - "MDN/Contribute/Howto/Write_a_new_entry_in_the_Glossary": { - "modified": "2019-03-23T23:09:23.417Z", + "Web/API/Element/scrollIntoView": { + "modified": "2020-08-02T20:51:14.523Z", "contributors": [ - "wbamberg", - "astrapotro", - "teoli", - "L_e_o" + "maketas", + "avaleriani", + "magorismagor", + "germanfr" ] }, - "MDN/Contribute/Howto/Write_an_article_to_help_learn_about_the_Web": { - "modified": "2020-06-26T02:13:25.044Z", + "Web/API/Element/scrollLeft": { + "modified": "2019-03-18T20:59:11.327Z", "contributors": [ - "Enesimus", - "pablorebora", - "blanchart", - "BubuAnabelas", "SphinxKnight", - "FranciscoImanolSuarez" + "SoftwareRVG" ] }, - "MDN/Contribute/Howto/revision_editorial": { - "modified": "2019-03-18T20:54:27.132Z", + "Web/API/Element/scrollTop": { + "modified": "2019-03-23T22:32:41.577Z", "contributors": [ - "LauraJaime8", - "wbamberg", - "ElNobDeTfm", - "Arudb79", - "LeoHirsch" + "Grijander81" ] }, - "MDN/Contribute/Howto/revision_tecnica": { - "modified": "2019-01-16T18:56:48.857Z", + "Web/API/Element/scrollTopMax": { + "modified": "2019-03-23T22:16:03.156Z", "contributors": [ - "wbamberg", - "MarkelCuesta", - "rowasc", - "LeoHirsch" + "lizzie136" ] }, - "MDN/Contribute/Procesos": { - "modified": "2019-01-17T02:12:44.469Z", + "Web/API/Element/scrollWidth": { + "modified": "2020-10-15T21:46:17.244Z", "contributors": [ - "wbamberg", - "astrapotro" + "SphinxKnight", + "Grijander81" ] }, - "MDN/Contribute/Tareas": { - "modified": "2019-01-16T18:56:38.941Z", + "Web/API/Element/setAttribute": { + "modified": "2019-03-23T23:58:09.577Z", "contributors": [ - "wbamberg", - "MauricioGil", - "LeoHirsch" + "AlePerez92", + "fscholz", + "AshfaqHossain", + "teoli", + "HenryGR" ] }, - "MDN/Guidelines": { - "modified": "2020-09-30T15:28:55.816Z", + "Web/API/Element/setAttributeNS": { + "modified": "2019-03-23T22:29:35.252Z", "contributors": [ - "chrisdavidmills", - "wbamberg", - "Jeremie", - "LeoHirsch" + "developersoul" ] }, - "MDN/Guidelines/Content_blocks": { - "modified": "2020-09-30T15:28:56.171Z", + "Web/API/Element/setCapture": { + "modified": "2019-03-23T22:23:40.163Z", "contributors": [ - "chrisdavidmills", "wbamberg", - "Jeremie", - "LeoHirsch" + "SoftwareRVG" ] }, - "MDN/Guidelines/Convenciones_y_definiciones": { - "modified": "2020-09-30T15:28:56.412Z", + "Web/API/Element/shadowRoot": { + "modified": "2020-10-15T22:21:04.049Z", "contributors": [ - "chrisdavidmills", - "Nachec" + "quintero_japon" ] }, - "MDN/Guidelines/Project:Guía_de_estilo": { - "modified": "2020-09-30T15:28:56.038Z", + "Web/API/Element/tagName": { + "modified": "2019-03-23T23:53:26.081Z", "contributors": [ - "chrisdavidmills", - "blanchart", - "clarii", - "wbamberg", - "Jeremie", - "Salamandra101", - "Dgeek", + "SphinxKnight", "fscholz", - "LeoHirsch", - "teoli", - "Pgulijczuk", - "DoctorRomi", - "Nukeador", - "Nanomo", - "Eqx", - "Jorolo" + "khalid32", + "Mgjbot", + "HenryGR" ] }, - "MDN/Kuma": { - "modified": "2019-09-09T15:52:33.535Z", + "Web/API/Element/wheel_event": { + "modified": "2019-04-08T07:24:47.493Z", "contributors": [ - "SphinxKnight", - "clarii", - "wbamberg", - "Jeremie", - "Diio", - "atlas7jean" + "irenesmith", + "fscholz", + "ExE-Boss", + "dimuziop", + "Thargelion", + "PRDeving" ] }, - "MDN/Kuma/Contributing": { - "modified": "2019-03-23T23:15:25.956Z", + "Web/API/Event": { + "modified": "2019-03-24T00:00:03.889Z", "contributors": [ "wbamberg", - "Jeremie", - "MauricioGil" + "jesmarquez", + "fscholz", + "cesardelahoz", + "Mgjbot", + "Markens", + "DR", + "Nathymig" ] }, - "MDN/Kuma/Contributing/Getting_started": { - "modified": "2019-01-16T19:06:06.895Z", + "Web/API/Event/Event": { + "modified": "2020-10-15T21:51:25.582Z", "contributors": [ - "wbamberg", - "Jeremie", - "MauricioGil" + "fscholz", + "malonson" ] }, - "MDN/Structures": { - "modified": "2020-09-30T09:06:15.403Z", + "Web/API/Event/bubbles": { + "modified": "2019-03-23T23:50:25.843Z", "contributors": [ - "chrisdavidmills", - "wbamberg", - "jswisher" + "SphinxKnight", + "DeiberChacon", + "fscholz", + "khalid32", + "HenryGR", + "Mgjbot" ] }, - "MDN/Structures/Ejemplos_ejecutables": { - "modified": "2020-09-30T09:06:15.983Z", + "Web/API/Event/cancelable": { + "modified": "2019-03-23T23:53:29.694Z", "contributors": [ - "chrisdavidmills", - "wbamberg", - "emanuelvega", - "LUISTGMDN", - "elihro" + "fscholz", + "hardhik", + "AshfaqHossain", + "Mgjbot", + "HenryGR" ] }, - "MDN/Structures/Macros": { - "modified": "2020-09-30T09:06:16.658Z", + "Web/API/Event/currentTarget": { + "modified": "2020-10-15T21:56:21.779Z", "contributors": [ - "chrisdavidmills", - "Nachec", - "wbamberg" + "AlePerez92", + "KacosPro", + "roberbnd" ] }, - "MDN/Structures/Macros/Commonly-used_macros": { - "modified": "2020-09-30T09:06:17.138Z", + "Web/API/Event/defaultPrevented": { + "modified": "2019-03-23T23:06:29.767Z", "contributors": [ - "chrisdavidmills", - "Nachec" + "AlePerez92", + "fscholz", + "matajm" ] }, - "MDN/Structures/Macros/Otras": { - "modified": "2020-09-30T09:06:17.522Z", + "Web/API/Event/initEvent": { + "modified": "2019-03-23T23:53:14.885Z", "contributors": [ - "chrisdavidmills", - "Nachec" + "SphinxKnight", + "fscholz", + "AndresSaa", + "AshfaqHossain", + "Mgjbot", + "HenryGR" ] }, - "MDN/Structures/Tablas_de_compatibilidad": { - "modified": "2020-10-15T22:33:39.399Z", + "Web/API/Event/preventDefault": { + "modified": "2019-03-23T23:53:27.022Z", "contributors": [ - "chrisdavidmills", - "Nachec" + "SphinxKnight", + "fscholz", + "khalid32", + "Mgjbot", + "HenryGR" ] }, - "MDN/Tools": { - "modified": "2020-09-30T16:48:18.728Z", + "Web/API/Event/stopPropagation": { + "modified": "2019-03-18T20:37:26.213Z", "contributors": [ - "chrisdavidmills", - "wbamberg", - "Jeremie", - "Arudb79", - "atlas7jean" + "sebaLinares", + "theskear", + "AlePerez92" ] }, - "MDN/Tools/Introduction_to_KumaScript": { - "modified": "2020-09-30T16:48:19.117Z", + "Web/API/Event/target": { + "modified": "2020-11-21T17:52:42.977Z", "contributors": [ - "chrisdavidmills", - "wbamberg", - "velizluisma", - "Jeremie", - "LeoHirsch" + "fernandoarmonellifiedler", + "luchosr", + "Eyurivilc", + "roberbnd" ] }, - "MDN/Tools/Page_regeneration": { - "modified": "2020-09-30T16:48:19.365Z", + "Web/API/Event/type": { + "modified": "2020-10-15T21:21:03.258Z", "contributors": [ - "chrisdavidmills", - "Anibalismo" + "AlePerez92", + "javier1nc", + "fscholz", + "Chacho" ] }, - "MDN/Tools/Template_editing": { - "modified": "2020-09-30T16:48:19.234Z", + "Web/API/EventListener": { + "modified": "2019-03-23T22:49:37.176Z", "contributors": [ - "chrisdavidmills", - "wbamberg", - "juan-ferrer-toribio" + "gdlm91", + "japho" ] }, - "MDN/User_guide": { - "modified": "2020-12-14T09:30:27.029Z", + "Web/API/EventSource": { + "modified": "2019-03-23T22:10:23.912Z", "contributors": [ - "wbamberg", - "Sheppy" + "Jabi" ] }, - "MDN_en_diez": { - "modified": "2019-03-23T22:49:57.954Z", + "Web/API/EventSource/onopen": { + "modified": "2019-03-23T22:03:59.180Z", "contributors": [ - "pabloveintimilla", - "diego.mauricio.meneses.rios" + "Hoosep" ] }, - "Mejoras_DOM_en_Firefox_3": { - "modified": "2019-03-23T23:50:52.840Z", + "Web/API/EventTarget": { + "modified": "2020-10-26T17:08:31.808Z", "contributors": [ - "wbamberg", - "Mgjbot", - "RickieesES", - "Nukeador", - "HenryGR", - "Talisker" + "Ktoxcon", + "diazpolanco13", + "jorgeherrera9103", + "fscholz" ] }, - "Mejoras_SVG_en_Firefox_3": { - "modified": "2019-03-23T23:50:55.206Z", + "Web/API/EventTarget/addEventListener": { + "modified": "2020-10-24T17:14:12.317Z", "contributors": [ + "codesandtags", "wbamberg", - "Mgjbot", - "RickieesES", - "Nukeador", - "Talisker" + "padrecedano", + "LuxDie", + "juanbrujo", + "StripTM", + "fscholz", + "samurai-code", + "Josias", + "edulon", + "Chacho" ] }, - "Mejoras_XUL_en_Firefox_3": { - "modified": "2019-03-24T00:02:34.038Z", + "Web/API/EventTarget/dispatchEvent": { + "modified": "2020-05-25T14:53:28.357Z", "contributors": [ - "wbamberg", + "OneLoneFox", + "SphinxKnight", "fscholz", - "Nukeador", + "jsx", + "teoli", "Mgjbot", - "Nathymig", - "Dukebody" + "HenryGR" ] }, - "Migrar_aplicaciones_desde_Internet_Explorer_a_Mozilla": { - "modified": "2019-03-23T23:59:56.566Z", + "Web/API/EventTarget/removeEventListener": { + "modified": "2020-10-15T21:33:28.829Z", "contributors": [ - "teoli", - "Siyivan", - "krusch", - "Mgjbot", - "Mrgonzalez", - "Superruzafa", - "Ttataje", - "Nukeador" + "IsraelFloresDGA", + "everblut", + "cmadrono" ] }, - "Modo_casi_estándar_de_Gecko": { - "modified": "2019-03-23T23:43:50.956Z", + "Web/API/FetchEvent": { + "modified": "2020-11-15T12:19:50.961Z", "contributors": [ - "teoli", - "Mgjbot", - "Jorolo" + "kuntur-studio", + "pavilion", + "fasalgad" ] }, - "Mozilla": { - "modified": "2019-01-16T13:16:23.082Z", + "Web/API/Fetch_API": { + "modified": "2020-10-15T21:38:02.526Z", "contributors": [ - "cosmesantos", - "andersonvc89", - "Vladi05", - "Granpichi", - "yesypsb", - "Getachi", - "Izel" + "PacoVela", + "SSantiago90", + "erpheus", + "AlePerez92", + "robermorales", + "jmcarnero", + "enlinea777" ] }, - "Mozilla/Add-ons": { - "modified": "2019-03-18T21:08:47.524Z", + "Web/API/File": { + "modified": "2020-10-15T21:37:53.420Z", "contributors": [ - "hecaxmmx", - "hamfree", - "Aldrin508", - "Arudb79", - "Psy", - "RaulVisa", - "LeoHirsch", - "rojo32" + "IsraelFloresDGA", + "mattkgross", + "AshWilliams" ] }, - "Mozilla/Add-ons/WebExtensions": { - "modified": "2019-07-18T20:39:33.007Z", + "Web/API/File/Using_files_from_web_applications": { + "modified": "2019-03-24T00:06:11.527Z", "contributors": [ - "hecaxmmx", - "ivanruvalcaba", - "AngelFQC", - "yuniers" + "chrisdavidmills", + "israelfl", + "pacommozilla", + "teoli", + "mare", + "Izel" ] }, - "Mozilla/Add-ons/WebExtensions/API": { - "modified": "2019-05-09T20:52:57.986Z", + "Web/API/File/fileName": { + "modified": "2020-02-09T09:40:59.258Z", "contributors": [ - "Micronine", - "BubuAnabelas", - "chicocoulomb", - "yuniers" + "blanchart", + "IsraelFloresDGA", + "BrodaNoel" ] }, - "Mozilla/Add-ons/WebExtensions/API/i18n": { - "modified": "2020-10-15T21:39:41.302Z", + "Web/API/File/lastModifiedDate": { + "modified": "2019-03-23T22:06:34.338Z", "contributors": [ - "wbamberg", - "fitojb", - "yuniers" + "BrodaNoel" ] }, - "Mozilla/Add-ons/WebExtensions/API/storage": { - "modified": "2020-10-15T22:13:52.747Z", + "Web/API/File/name": { + "modified": "2020-10-15T21:56:43.088Z", "contributors": [ - "SphinxKnight", - "wbamberg", - "grxdipgra" + "IsraelFloresDGA", + "BrodaNoel" ] }, - "Mozilla/Add-ons/WebExtensions/API/storage/local": { - "modified": "2020-10-15T22:13:52.742Z", + "Web/API/File/type": { + "modified": "2020-10-15T22:26:46.640Z", "contributors": [ - "wbamberg", - "grxdipgra" + "IsraelFloresDGA" ] }, - "Mozilla/Add-ons/WebExtensions/API/storage/sync": { - "modified": "2020-10-15T22:13:52.602Z", + "Web/API/File/webkitRelativePath": { + "modified": "2019-03-23T22:06:35.128Z", "contributors": [ - "wbamberg", - "grxdipgra" + "BrodaNoel" ] }, - "Mozilla/Add-ons/WebExtensions/API/webNavigation": { - "modified": "2020-10-15T21:52:47.862Z", + "Web/API/FileError": { + "modified": "2019-03-23T22:51:12.244Z", "contributors": [ - "wbamberg", - "tanclony" + "Jarvanux" ] }, - "Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar": { - "modified": "2019-03-18T21:05:11.701Z", + "Web/API/FileReader": { + "modified": "2019-03-23T23:04:14.656Z", "contributors": [ - "roberbnd" + "JuanjoVlado", + "V.Morantes", + "israelfl", + "Carlos-T", + "Clunaenc", + "fscholz", + "cm_rocanroll" ] }, - "Mozilla/Add-ons/WebExtensions/Anatomia_de_una_WebExtension": { - "modified": "2019-03-18T21:08:05.873Z", + "Web/API/FileReader/onload": { + "modified": "2019-03-23T22:18:25.451Z", "contributors": [ - "hecaxmmx", - "rgo", - "jde-gr", - "doztrock", - "yuniers" + "DaniMartiRamirez" ] }, - "Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs": { - "modified": "2020-10-15T20:55:02.467Z", + "Web/API/FileReader/readAsArrayBuffer": { + "modified": "2019-03-23T22:49:37.062Z", "contributors": [ - "rossc90" + "MarcoZepeda" ] }, - "Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities": { - "modified": "2019-03-23T22:45:10.191Z", + "Web/API/FileReader/readAsDataURL": { + "modified": "2019-03-23T22:48:53.339Z", "contributors": [ - "Nitram_G", - "yuniers" + "teoli", + "empirreamm", + "developersoul" ] }, - "Mozilla/Add-ons/WebExtensions/Depuración": { - "modified": "2019-03-18T21:05:20.525Z", + "Web/API/FileReader/readAsText": { + "modified": "2019-03-23T22:11:54.836Z", "contributors": [ - "Pau" + "owaremx" ] }, - "Mozilla/Add-ons/WebExtensions/Examples": { - "modified": "2019-03-18T21:06:01.388Z", + "Web/API/FileReader/result": { + "modified": "2020-10-15T22:16:53.945Z", "contributors": [ - "hecaxmmx" + "carlosbulnes" ] }, - "Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools": { - "modified": "2020-09-27T05:32:44.293Z", + "Web/API/FileSystem": { + "modified": "2019-07-04T14:31:32.136Z", "contributors": [ - "omaralonsog" + "lperezp", + "jpmontoya182" ] }, - "Mozilla/Add-ons/WebExtensions/Implement_a_settings_page": { - "modified": "2019-03-18T21:06:46.901Z", + "Web/API/Fullscreen_API": { + "modified": "2019-03-23T22:19:43.566Z", "contributors": [ - "SoftwareRVG" + "wbamberg", + "israel-munoz" ] }, - "Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests": { - "modified": "2019-03-18T21:06:03.133Z", + "Web/API/GamepadButton": { + "modified": "2020-10-15T22:31:36.770Z", "contributors": [ - "juanbrujo", - "regisdark", - "hecaxmmx" + "kenliten" ] }, - "Mozilla/Add-ons/WebExtensions/Internationalization": { - "modified": "2020-06-29T22:25:32.104Z", + "Web/API/Gamepad_API": { + "modified": "2020-10-15T22:24:50.048Z", "contributors": [ - "hugojavierduran9" + "LeonEmil" ] }, - "Mozilla/Add-ons/WebExtensions/Modify_a_web_page": { - "modified": "2019-03-18T21:02:55.354Z", + "Web/API/Geolocation": { + "modified": "2019-03-23T23:21:41.383Z", "contributors": [ - "alexgilsoncampi" + "AlePerez92", + "fscholz", + "AJMG" ] }, - "Mozilla/Add-ons/WebExtensions/Packaging_and_installation": { - "modified": "2019-03-23T22:45:27.399Z", + "Web/API/Geolocation/clearWatch": { + "modified": "2019-03-23T23:21:31.757Z", "contributors": [ - "yuniers" + "franklevel", + "fscholz", + "AJMG" ] }, - "Mozilla/Add-ons/WebExtensions/Porting_from_Google_Chrome": { - "modified": "2019-03-18T21:08:10.456Z", + "Web/API/Geolocation/getCurrentPosition": { + "modified": "2019-03-23T23:21:46.266Z", "contributors": [ - "fitojb", - "yuniers" + "AlePerez92", + "fscholz", + "lupomontero", + "AJMG" ] }, - "Mozilla/Add-ons/WebExtensions/Prerequisitos": { - "modified": "2019-03-23T22:45:28.352Z", + "Web/API/Geolocation/watchPosition": { + "modified": "2019-03-23T23:21:44.720Z", "contributors": [ - "yuniers" + "AlePerez92", + "fscholz", + "AJMG" ] }, - "Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension": { - "modified": "2019-03-18T21:05:24.379Z", + "Web/API/GeolocationCoordinates": { + "modified": "2019-12-10T09:34:21.214Z", "contributors": [ - "FacundoCerezo", - "IXTRUnai" + "chrisdavidmills", + "AlePerez92" ] }, - "Mozilla/Add-ons/WebExtensions/Que_son_las_WebExtensions": { - "modified": "2020-11-23T00:59:33.889Z", + "Web/API/GeolocationCoordinates/latitude": { + "modified": "2019-12-10T09:34:21.409Z", "contributors": [ - "kenliten", - "hecaxmmx", - "13539" + "chrisdavidmills", + "elxris" ] }, - "Mozilla/Add-ons/WebExtensions/Tu_primera_WebExtension": { - "modified": "2020-11-23T01:34:20.681Z", + "Web/API/GeolocationPosition": { + "modified": "2020-10-15T22:10:48.604Z", "contributors": [ - "kenliten", - "IgnacioMilia", - "mppfiles", - "adderou", - "hecaxmmx", - "Maller_Lagoon" + "chrisdavidmills", + "sergitxu" ] }, - "Mozilla/Add-ons/WebExtensions/Tutorial": { - "modified": "2019-04-25T06:15:12.057Z", + "Web/API/GlobalEventHandlers": { + "modified": "2020-10-15T21:33:09.443Z", "contributors": [ - "Klius", - "IgnacioMilia", - "chicocoulomb", - "hecaxmmx", - "yuniers" - ] - }, - "Mozilla/Add-ons/WebExtensions/What_next_": { - "modified": "2019-03-18T20:43:00.251Z", - "contributors": [ - "chicocoulomb" + "Nachec", + "fscholz" ] }, - "Mozilla/Add-ons/WebExtensions/manifest.json": { - "modified": "2020-10-15T21:39:41.879Z", + "Web/API/GlobalEventHandlers/onblur": { + "modified": "2019-03-23T22:33:17.308Z", "contributors": [ - "wachunei", - "legomolina", - "yuniers" + "Grijander81" ] }, - "Mozilla/Add-ons/WebExtensions/manifest.json/icons": { - "modified": "2020-10-15T22:27:24.193Z", + "Web/API/GlobalEventHandlers/onchange": { + "modified": "2019-03-23T22:18:11.571Z", "contributors": [ - "qwerty726" + "gama" ] }, - "Mozilla/Add-ons/WebExtensions/user_interface": { - "modified": "2019-03-18T21:03:49.876Z", + "Web/API/GlobalEventHandlers/onclick": { + "modified": "2019-08-28T11:37:06.287Z", "contributors": [ - "rebloor" + "J-Lobo", + "Noreen", + "gama" ] }, - "Mozilla/Add-ons/WebExtensions/user_interface/Accion_navegador": { - "modified": "2019-03-18T21:03:34.447Z", + "Web/API/GlobalEventHandlers/onclose": { + "modified": "2020-10-15T22:12:16.407Z", "contributors": [ - "adderou" + "alexisrazok" ] }, - "Mozilla/Add-ons/WebExtensions/user_interface/Page_actions": { - "modified": "2019-08-12T17:02:44.540Z", + "Web/API/GlobalEventHandlers/onerror": { + "modified": "2019-03-23T22:53:42.268Z", "contributors": [ - "rayrojas" + "wbamberg", + "galegosimpatico" ] }, - "Mozilla/Developer_guide": { - "modified": "2019-03-23T23:34:39.883Z", + "Web/API/GlobalEventHandlers/onfocus": { + "modified": "2019-03-18T21:31:41.059Z", "contributors": [ - "chrisdavidmills", - "Etruscco" + "ANDRUS74" ] }, - "Mozilla/Developer_guide/Preguntas_frecuentes_sobre_la_compilación_de_Mozilla": { - "modified": "2019-03-23T23:58:56.616Z", + "Web/API/GlobalEventHandlers/oninput": { + "modified": "2019-03-23T22:55:01.733Z", "contributors": [ - "chrisdavidmills", - "fscholz", - "teoli", - "DoctorRomi", - "Nukeador", - "Mgjbot", - "Blank zero" + "Diegosolo" ] }, - "Mozilla/Developer_guide/Source_Code": { - "modified": "2020-03-01T17:19:51.307Z", + "Web/API/GlobalEventHandlers/onkeydown": { + "modified": "2019-03-18T21:31:44.954Z", "contributors": [ - "IngrownMink4", - "Allamc11", - "chrisdavidmills", - "jntesteves" + "ANDRUS74" ] }, - "Mozilla/Developer_guide/Source_Code/Código_fuente_de_Mozilla_(CVS)": { - "modified": "2019-03-23T23:46:33.805Z", + "Web/API/GlobalEventHandlers/onkeyup": { + "modified": "2019-03-18T21:31:50.304Z", "contributors": [ - "chrisdavidmills", - "teoli", - "Nukeador", - "Mgjbot", - "Blank zero" + "ANDRUS74" ] }, - "Mozilla/Developer_guide/mozilla-central": { - "modified": "2019-03-18T21:11:07.718Z", + "Web/API/GlobalEventHandlers/onload": { + "modified": "2019-03-23T23:33:14.527Z", "contributors": [ - "duduindo", - "chrisdavidmills", "fscholz", - "RickieesES" + "khalid32", + "ehecatl" ] }, - "Mozilla/Firefox": { - "modified": "2020-01-18T13:20:40.065Z", + "Web/API/GlobalEventHandlers/onloadedmetadata": { + "modified": "2020-10-15T22:34:40.071Z", "contributors": [ - "leela52452", - "SphinxKnight", - "wbamberg", - "jonasmreza", - "avelper", - "regisdark", - "AlmondCupcake", - "hecaxmmx", - "SecurityResearcher", - "Pablo_Ivan", - "Alejandro_Blanco", - "gabpull", - "nekside" + "winxde" ] }, - "Mozilla/Firefox/Experimental_features": { - "modified": "2019-04-01T12:56:43.181Z", + "Web/API/GlobalEventHandlers/onresize": { + "modified": "2019-03-23T22:38:35.801Z", "contributors": [ - "johnboy-99", - "wbamberg", - "Maletil" + "NevinSantana" ] }, - "Mozilla/Firefox/Releases": { - "modified": "2019-03-23T23:27:32.191Z", + "Web/API/GlobalEventHandlers/onscroll": { + "modified": "2019-03-23T22:33:14.134Z", "contributors": [ - "wbamberg", - "thzunder", - "Sheppy" + "Grijander81" ] }, - "Mozilla/Firefox/Releases/30": { - "modified": "2019-03-23T23:06:34.308Z", + "Web/API/GlobalEventHandlers/onselect": { + "modified": "2019-03-23T22:33:14.413Z", "contributors": [ - "wbamberg", - "mrbyte007" + "Grijander81" ] }, - "Mozilla/Firefox/Releases/50": { - "modified": "2019-03-18T21:11:07.358Z", + "Web/API/GlobalEventHandlers/onselectstart": { + "modified": "2019-03-18T21:23:16.974Z", "contributors": [ - "duduindo", - "wbamberg", - "frank-orellana", - "raiosxdxd" + "Grijander81" ] }, - "Mozilla/Firefox/Releases/57": { - "modified": "2019-03-23T22:03:40.720Z", + "Web/API/GlobalEventHandlers/onsubmit": { + "modified": "2019-03-18T21:31:41.533Z", "contributors": [ - "wbamberg", - "fitojb" + "ANDRUS74" ] }, - "Mozilla/Firefox/Releases/61": { - "modified": "2019-03-18T21:34:25.134Z", + "Web/API/GlobalEventHandlers/ontouchstart": { + "modified": "2019-03-23T22:32:02.059Z", "contributors": [ - "wbamberg", - "JoaLop" + "AlePerez92" ] }, - "Mozilla/Firefox/Releases/62": { - "modified": "2019-03-18T21:26:40.295Z", + "Web/API/HTMLAnchorElement": { + "modified": "2019-03-18T21:42:27.257Z", "contributors": [ - "laptou" + "BubuAnabelas", + "LUISTGMDN" ] }, - "Mozilla/Firefox/Releases/63": { - "modified": "2019-03-18T21:22:18.650Z", + "Web/API/HTMLAudioElement": { + "modified": "2019-03-24T00:05:48.645Z", "contributors": [ - "SphinxKnight", - "Dev-MADJ" + "wbamberg", + "fscholz", + "teoli", + "inma_610" ] }, - "Mozilla/Firefox/Releases/66": { - "modified": "2019-05-09T17:56:10.878Z", + "Web/API/HTMLCanvasElement": { + "modified": "2019-03-23T22:50:27.840Z", "contributors": [ - "Smartloony" + "AshWilliams" ] }, - "Mozilla/Firefox/Releases/67": { - "modified": "2019-06-27T23:25:44.498Z", + "Web/API/HTMLCanvasElement/getContext": { + "modified": "2019-03-23T22:18:36.564Z", "contributors": [ - "erickton", - "marcorichetta" + "OrlandoIsay" ] }, - "Mozilla/Firefox/Releases/68": { - "modified": "2019-07-14T03:15:02.367Z", + "Web/API/HTMLCanvasElement/height": { + "modified": "2019-03-23T22:47:48.394Z", "contributors": [ - "Gummox" + "empirreamm" ] }, - "Mozilla/Firefox/Releases/9": { - "modified": "2019-12-13T20:33:17.732Z", + "Web/API/HTMLCanvasElement/toBlob": { + "modified": "2019-03-23T22:44:55.955Z", "contributors": [ - "wbamberg", - "fscholz" + "kodamirmo" ] }, - "Mozilla/Firefox/Releases/9/Updating_add-ons": { - "modified": "2019-03-23T23:09:25.426Z", + "Web/API/HTMLCanvasElement/toDataURL": { + "modified": "2020-10-15T21:38:42.950Z", "contributors": [ - "wbamberg", - "Rickatomato" + "jagomf", + "calmsz", + "genuinefafa", + "empirreamm" ] }, - "Módulos_JavaScript": { - "modified": "2019-03-23T23:53:21.168Z", + "Web/API/HTMLCanvasElement/width": { + "modified": "2019-03-23T22:47:52.236Z", "contributors": [ - "SphinxKnight", - "teoli", - "Mgjbot", - "Ffranz", - "Mariano" + "empirreamm" ] }, - "Participar_en_el_proyecto_Mozilla": { - "modified": "2019-03-24T00:07:54.638Z", + "Web/API/HTMLCollection": { + "modified": "2020-10-15T21:37:48.821Z", "contributors": [ - "teoli", - "inma_610" + "AlePerez92", + "diego_bardelas", + "kromsoft", + "djrm" ] }, - "Plantillas_en_Firefox_3": { - "modified": "2019-03-24T00:02:45.436Z", + "Web/API/HTMLContentElement": { + "modified": "2019-03-23T22:10:28.345Z", "contributors": [ - "wbamberg", - "fscholz", - "Nukeador", - "Kaltya", - "Mgjbot" + "dkocho4" ] }, - "Preguntas_frecuentes_sobre_incrustación_en_Mozilla": { - "modified": "2019-01-16T15:02:38.544Z", + "Web/API/HTMLContentElement/getDistributedNodes": { + "modified": "2019-03-23T22:10:26.488Z", "contributors": [ - "Anonymous" + "dkocho4" ] }, - "Preguntas_frecuentes_sobre_incrustación_en_Mozilla/Introducción_a_Gecko_e_inscrustación": { - "modified": "2019-01-16T16:13:02.334Z", + "Web/API/HTMLContentElement/select": { + "modified": "2019-03-23T22:10:36.116Z", "contributors": [ - "Jorolo", - "Lastjuan" + "dkocho4" ] }, - "Principios_básicos_de_los_servicios_Web": { - "modified": "2019-01-16T16:13:03.069Z", + "Web/API/HTMLDivElement": { + "modified": "2019-03-23T22:03:41.348Z", "contributors": [ - "Jorolo", - "Xoan", - "Breaking Pitt" + "jonvadillo" ] }, - "Recursos_en_modo_desconectado_en_Firefox": { - "modified": "2019-03-18T21:11:07.042Z", + "Web/API/HTMLElement": { + "modified": "2020-06-20T19:45:51.700Z", "contributors": [ - "duduindo", - "Mgjbot", - "Nukeador", - "Nathymig", - "HenryGR" + "hernandoh", + "hpintos", + "fscholz" ] }, - "Referencia_DOM_de_Gecko": { - "modified": "2019-01-16T16:01:11.054Z", + "Web/API/HTMLElement/change_event": { + "modified": "2020-10-15T22:17:42.425Z", "contributors": [ - "DR", - "Nathymig" + "IsraelFloresDGA", + "AlePerez92" ] }, - "Referencia_DOM_de_Gecko/Cómo_espacioenblanco": { - "modified": "2020-08-24T04:42:05.596Z", + "Web/API/HTMLElement/click": { + "modified": "2020-10-15T21:59:51.355Z", "contributors": [ - "Nachec" + "hecaxmmx", + "mtnalonso" ] }, - "Referencia_DOM_de_Gecko/Ejemplos": { - "modified": "2019-03-23T23:51:24.173Z", + "Web/API/HTMLElement/contentEditable": { + "modified": "2020-10-15T22:23:54.889Z", "contributors": [ - "SphinxKnight", - "khalid32", - "Mgjbot", - "Manu", - "Markens", - "Nathymig" + "lauramacdaleno" ] }, - "Referencia_DOM_de_Gecko/Eventos": { - "modified": "2019-03-18T21:45:13.362Z", + "Web/API/HTMLElement/innerText": { + "modified": "2020-10-15T22:31:46.481Z", "contributors": [ - "recortes" + "hugojavierduran9" ] }, - "Referencia_DOM_de_Gecko/Introducción": { - "modified": "2019-03-23T23:48:16.078Z", + "Web/API/HTMLElement/input_event": { + "modified": "2020-10-15T22:17:41.989Z", "contributors": [ - "LuisSevillano", - "IsaacAaron", - "Sheppy", - "Uri", - "Nathymig" + "mariomoreno", + "IsraelFloresDGA" ] }, - "Referencia_DOM_de_Gecko/Localizando_elementos_DOM_usando_selectores": { - "modified": "2020-06-14T19:56:35.416Z", + "Web/API/HTMLElement/offsetHeight": { + "modified": "2019-04-30T12:33:07.062Z", "contributors": [ - "snickArg" + "AlePerez92", + "SphinxKnight", + "germanfr" ] }, - "Referencia_DOM_de_Gecko/Prefacio": { - "modified": "2019-06-16T19:12:21.185Z", + "Web/API/HTMLElement/offsetLeft": { + "modified": "2019-03-18T20:59:09.140Z", "contributors": [ - "jesusvillalta", - "Sheppy", - "Nathymig" + "SphinxKnight", + "gama" ] }, - "Referencia_de_XUL": { - "modified": "2019-04-19T23:18:32.719Z", + "Web/API/HTMLElement/offsetParent": { + "modified": "2020-10-15T22:11:55.510Z", "contributors": [ - "wbamberg", - "teoli", - "chukito" + "Vincetroid" ] }, - "SVG_en_Firefox": { - "modified": "2019-03-23T23:43:25.545Z", + "Web/API/HTMLElement/offsetTop": { + "modified": "2020-10-15T21:46:16.171Z", "contributors": [ - "teoli", - "Superruzafa", - "Jorolo" + "SphinxKnight", + "santinogue", + "Grijander81" ] }, - "Sections_and_Outlines_of_an_HTML5_document": { - "modified": "2019-03-23T23:38:22.567Z", + "Web/API/HTMLElement/offsetWidth": { + "modified": "2020-10-15T21:50:38.562Z", "contributors": [ - "blanchart", - "eljonims", - "welm", - "javigaar", - "learnercys", - "pierre_alfonso", - "jesanchez" + "SphinxKnight", + "Facu50196", + "jvas28" ] }, - "Seguridad_en_Firefox_2": { - "modified": "2019-03-23T23:42:29.185Z", + "Web/API/HTMLFormElement": { + "modified": "2019-03-23T23:46:38.218Z", "contributors": [ - "wbamberg", - "teoli", - "Nukeador" + "SphinxKnight", + "fscholz", + "khalid32", + "DR", + "Nathymig" ] }, - "Selección_de_modo_en_Mozilla": { - "modified": "2019-11-21T20:40:48.950Z", + "Web/API/HTMLFormElement/reset": { + "modified": "2020-11-28T13:27:49.559Z", "contributors": [ - "wbamberg", - "teoli", - "fscholz", - "Jorolo" + "hiperion" ] }, - "Server-sent_events": { - "modified": "2019-03-23T23:24:42.323Z", + "Web/API/HTMLHeadElement": { + "modified": "2020-10-15T22:31:07.133Z", "contributors": [ - "ethertank" + "jhonarielgj" ] }, - "Server-sent_events/utilizando_server_sent_events_sse": { - "modified": "2019-04-16T06:11:09.003Z", + "Web/API/HTMLHtmlElement": { + "modified": "2019-03-23T22:27:47.579Z", "contributors": [ - "albertoclarbrines", - "adlr", - "iamwao", - "jgutix", - "aztrock" + "raecillacastellana" ] }, - "Storage": { - "modified": "2019-03-24T00:09:02.141Z", + "Web/API/HTMLImageElement": { + "modified": "2019-03-23T22:42:00.195Z", "contributors": [ - "teoli", - "elPatox", - "Francoyote", - "HenryGR", - "Mgjbot" + "thzunder" ] }, - "Tipo_MIME_incorrecto_en_archivos_CSS": { - "modified": "2019-01-16T15:43:53.805Z", + "Web/API/HTMLImageElement/Image": { + "modified": "2019-03-23T22:12:14.962Z", "contributors": [ - "Dailosmm", - "Mgjbot", - "Jorolo", - "Nukeador", - "Epaclon", - "Pasky" + "gabo32", + "Jhandrox" ] }, - "Tools": { - "modified": "2020-07-16T22:44:14.436Z", + "Web/API/HTMLInputElement": { + "modified": "2020-08-25T19:55:45.034Z", "contributors": [ - "SphinxKnight", - "wbamberg", - "sprodrigues", - "Bugrtn", - "guillermocamon", - "mautematico", - "superrebe", - "mishelashala", - "juan-castano", - "Joker_DC", - "rossif", - "ArcangelZith", - "adri1993", - "zota", - "danielUFO", - "Arudb79", - "Jacqueline", - "@Perlyshh_76", - "ivanlopez", - "Gusvar", - "cristel.ariana", - "jesusruiz", - "PabloDev", - "gorrotowi", - "SebastianRave", - "Houseboyzgz", - "hjaguen", - "foxtro", - "reoo", - "dinoop.p1" + "duduindo", + "Enesimus", + "chrisdavidmills" ] }, - "Tools/3D_View": { - "modified": "2020-07-16T22:34:25.151Z", + "Web/API/HTMLInputElement/invalid_event": { + "modified": "2019-04-30T13:47:32.409Z", "contributors": [ - "rmilano" + "wbamberg", + "estelle", + "IsraelFloresDGA" ] }, - "Tools/Accesos_directos": { - "modified": "2020-07-28T10:35:37.425Z", + "Web/API/HTMLInputElement/select": { + "modified": "2019-03-18T21:34:04.996Z", "contributors": [ - "Anibalismo", - "ssm", - "hugojavierduran9", - "marcorichetta" + "AlePerez92" ] }, - "Tools/Add-ons": { - "modified": "2020-07-16T22:36:23.274Z", + "Web/API/HTMLLIElement": { + "modified": "2019-03-23T22:21:38.998Z", "contributors": [ - "mfluehr" + "elxris", + "bardcrack" ] }, - "Tools/Browser_Console": { - "modified": "2020-07-16T22:35:42.205Z", + "Web/API/HTMLLabelElement": { + "modified": "2020-10-15T22:11:47.827Z", "contributors": [ - "AldoSantiago", - "almozara" + "BubuAnabelas", + "mym2013" ] }, - "Tools/Browser_Toolbox": { - "modified": "2020-07-16T22:35:55.417Z", + "Web/API/HTMLMediaElement": { + "modified": "2020-10-15T22:13:56.798Z", "contributors": [ - "norwie" + "mannypinillo" ] }, - "Tools/Debugger": { - "modified": "2020-09-13T21:00:58.239Z", + "Web/API/HTMLMediaElement/canplay_event": { + "modified": "2019-03-18T20:49:26.430Z", "contributors": [ - "luuiizzaa9060", - "Juanchoib", - "jcmarcfloress", - "eroto", - "wbamberg", - "nacholereu", - "Pablo_Ivan", - "trevorh", - "cgsramirez", - "stephaniehobson", - "Jacqueline", - "C.E." + "estelle", + "ExE-Boss", + "fscholz", + "jjoselon" ] }, - "Tools/Debugger/How_to": { - "modified": "2020-07-16T22:35:07.255Z", + "Web/API/HTMLMediaElement/loadeddata_event": { + "modified": "2020-10-15T22:25:54.605Z", "contributors": [ - "wbamberg" + "NEVITS" ] }, - "Tools/Debugger/How_to/Disable_breakpoints": { - "modified": "2020-07-16T22:35:11.175Z", + "Web/API/HTMLMediaElement/pause": { + "modified": "2020-10-15T22:24:10.390Z", "contributors": [ - "drdavi7@hotmail.com" + "chekoNava" ] }, - "Tools/Debugger/How_to/Set_a_breakpoint": { - "modified": "2020-07-16T22:35:09.854Z", + "Web/API/HTMLMediaElement/paused": { + "modified": "2020-10-15T22:24:09.151Z", "contributors": [ - "erickton" + "chekoNava" ] }, - "Tools/Debugger/How_to/Uso_de_un_mapa_fuente": { - "modified": "2020-07-16T22:35:12.325Z", - "contributors": [ - "Makinita" + "Web/API/HTMLMediaElement/play": { + "modified": "2020-10-15T22:24:04.866Z", + "contributors": [ + "chekoNava" ] }, - "Tools/Debugger/Source_map_errors": { - "modified": "2020-07-16T22:35:19.165Z", + "Web/API/HTMLMediaElement/timeupdate_event": { + "modified": "2019-03-18T20:49:28.173Z", "contributors": [ - "Makinita" + "estelle", + "ExE-Boss", + "fscholz", + "baldore" ] }, - "Tools/Desempeño": { - "modified": "2020-07-16T22:36:12.530Z", + "Web/API/HTMLSelectElement": { + "modified": "2020-10-15T22:06:34.378Z", "contributors": [ - "LesterGuerra", - "juanmapiquero", - "PorcoMaledette" + "wbamberg" ] }, - "Tools/Desempeño/UI_Tour": { - "modified": "2020-07-16T22:36:14.726Z", + "Web/API/HTMLSelectElement/checkValidity": { + "modified": "2020-10-15T22:06:33.300Z", "contributors": [ - "kynu", - "calcerrada", - "ramferposadas" + "AlePerez92" ] }, - "Tools/Editor_Audio_Web": { - "modified": "2020-07-16T22:36:08.308Z", + "Web/API/HTMLSelectElement/setCustomValidity": { + "modified": "2020-10-15T22:21:29.656Z", "contributors": [ - "MPoli" + "raul-arias" ] }, - "Tools/Editor_Estilo": { - "modified": "2020-07-16T22:35:00.009Z", + "Web/API/HTMLShadowElement": { + "modified": "2019-03-23T22:10:24.059Z", "contributors": [ - "jwhitlock", - "cheline", - "SoftwareRVG", - "JosshuaCalixto1", - "maybe", - "padre629", - "CagsaBit" + "dkocho4", + "Sebastianz" ] }, - "Tools/Monitor_de_Red": { - "modified": "2020-07-16T22:35:29.709Z", + "Web/API/HTMLShadowElement/getDistributedNodes": { + "modified": "2019-03-23T22:10:23.317Z", "contributors": [ - "sevillacode", - "Makinita", - "_cuco_", - "Ivan-Perez", - "Dieg" + "dkocho4" ] }, - "Tools/Page_Inspector": { - "modified": "2020-07-16T22:34:27.363Z", + "Web/API/HTMLStyleElement": { + "modified": "2019-03-24T00:07:06.618Z", "contributors": [ - "amaiafilo", - "SoftwareRVG", - "maybe", - "webmaster", - "Jacqueline", - "MauricioGil" + "fscholz", + "lcamacho", + "DoctorRomi", + "HenryGR", + "Markens", + "Nathymig" ] }, - "Tools/Page_Inspector/3er-panel_modo": { - "modified": "2020-07-16T22:34:53.611Z", + "Web/API/HTMLTableElement": { + "modified": "2019-03-23T23:46:43.890Z", "contributors": [ - "welm" + "fscholz", + "khalid32", + "ethertank", + "DR", + "M3n3chm0", + "Nathymig" ] }, - "Tools/Page_Inspector/How_to": { - "modified": "2020-07-16T22:34:30.977Z", + "Web/API/HTMLTableElement/align": { + "modified": "2019-03-23T22:32:48.061Z", "contributors": [ - "sidgan" + "Grijander81" ] }, - "Tools/Page_Inspector/How_to/Abrir_el_Inspector": { - "modified": "2020-07-16T22:34:32.611Z", + "Web/API/HTMLTableElement/insertRow": { + "modified": "2019-03-23T22:32:47.103Z", "contributors": [ - "amaiafilo" + "lalo", + "Grijander81" ] }, - "Tools/Page_Inspector/How_to/Examinar_y_editar_HTML": { - "modified": "2020-07-16T22:34:40.440Z", + "Web/API/Headers": { + "modified": "2020-10-15T22:07:38.324Z", "contributors": [ - "amaiafilo" + "Estebanrg21" ] }, - "Tools/Page_Inspector/How_to/Examinar_y_editar_el_modelo_de_cajasmodel": { - "modified": "2020-07-16T22:34:34.150Z", + "Web/API/History": { + "modified": "2020-10-15T22:28:24.964Z", "contributors": [ - "amaiafilo" + "alattalatta" ] }, - "Tools/Page_Inspector/How_to/Examine_and_edit_CSS": { - "modified": "2020-07-16T22:34:42.117Z", + "Web/API/History/length": { + "modified": "2020-10-15T22:34:59.646Z", "contributors": [ - "amaiafilo" + "cajotafer" ] }, - "Tools/Page_Inspector/How_to/Examine_grid_layouts": { - "modified": "2020-07-16T22:34:47.093Z", + "Web/API/History/pushState": { + "modified": "2020-10-15T22:28:26.373Z", "contributors": [ - "welm" + "cajotafer", + "arcaela" ] }, - "Tools/Page_Inspector/How_to/Inspeccionar_y_seleccionar_colores": { - "modified": "2020-07-16T22:34:34.877Z", + "Web/API/IDBCursor": { + "modified": "2019-09-04T06:41:50.466Z", "contributors": [ - "amaiafilo" + "jambsik", + "fscholz", + "chrisdavidmills" ] }, - "Tools/Page_Inspector/How_to/Reposicionando_elementos_en_la_pagina": { - "modified": "2020-07-16T22:34:45.756Z", + "Web/API/IDBCursor/continue": { + "modified": "2019-03-23T22:40:02.950Z", "contributors": [ - "alebarbaja" + "BubuAnabelas", + "Alfalfa01" ] }, - "Tools/Page_Inspector/How_to/Select_an_element": { - "modified": "2020-07-16T22:34:33.474Z", + "Web/API/IDBDatabase": { + "modified": "2019-03-23T22:23:43.090Z", "contributors": [ - "amaiafilo" + "jpmedley" ] }, - "Tools/Page_Inspector/How_to/Work_with_animations": { - "modified": "2020-07-16T22:34:36.333Z", + "Web/API/IDBDatabase/transaction": { + "modified": "2019-03-23T22:23:53.480Z", "contributors": [ - "lyono666", - "angelmillan", - "fmagrosoto" + "carlo.romero1991" ] }, - "Tools/Page_Inspector/UI_Tour": { - "modified": "2020-07-16T22:34:48.922Z", + "Web/API/IDBObjectStore": { + "modified": "2019-03-23T23:01:30.975Z", "contributors": [ - "maruskina", - "amaiafilo" + "fscholz" ] }, - "Tools/Profiler": { - "modified": "2020-07-16T22:35:28.621Z", + "Web/API/IDBObjectStore/add": { + "modified": "2019-03-23T23:05:57.547Z", "contributors": [ - "MrDaza" + "fscholz", + "AngelFQC" ] }, - "Tools/Remote_Debugging": { - "modified": "2020-07-16T22:35:37.186Z", + "Web/API/ImageBitmap": { + "modified": "2020-10-15T22:03:23.639Z", "contributors": [ - "sonidos", - "mando", - "Xorgius", - "CesarS", - "Fani100", - "Patriposa", - "awbruna190", - "aguntinito" + "necrobite" ] }, - "Tools/Remote_Debugging/Debugging_over_a_network": { - "modified": "2020-07-16T22:35:41.552Z", + "Web/API/ImageBitmapRenderingContext": { + "modified": "2020-10-15T22:03:23.985Z", "contributors": [ - "stephiemtz" + "teoli", + "necrobite" ] }, - "Tools/Remote_Debugging/Firefox_para_Android": { - "modified": "2020-07-16T22:35:38.980Z", + "Web/API/IndexedDB_API": { + "modified": "2020-01-13T04:48:11.727Z", "contributors": [ - "odelrio", - "pawer13", - "pacommozilla", - "StripTM" + "chrisdavidmills", + "thepianist2", + "GranRafa", + "semptrion", + "Fjaguero", + "MPoli" ] }, - "Tools/Responsive_Design_View": { - "modified": "2020-07-16T22:35:21.169Z", + "Web/API/Intersection_Observer_API": { + "modified": "2020-11-03T00:26:14.370Z", "contributors": [ - "adolfotc", - "HugoM1682", - "amaiafilo", - "walter.atg", - "maedca" + "juanfelipejg", + "kuntur-studio", + "maketas", + "sandromedina", + "lacf95", + "midudev", + "joanvasa", + "AshWilliams" ] }, - "Tools/Settings": { - "modified": "2020-07-16T22:36:34.818Z", + "Web/API/KeyboardEvent": { + "modified": "2019-03-18T21:08:57.551Z", "contributors": [ - "amaiafilo" + "fscholz", + "pdro-enrique", + "wbamberg", + "pablodonoso" ] }, - "Tools/Storage_Inspector": { - "modified": "2020-07-16T22:36:09.696Z", + "Web/API/KeyboardEvent/getModifierState": { + "modified": "2020-10-15T22:04:42.428Z", "contributors": [ - "Sebastianz" + "leoderja" ] }, - "Tools/Storage_Inspector/Cookies": { - "modified": "2020-07-16T22:36:11.000Z", + "Web/API/KeyboardEvent/key": { + "modified": "2020-10-15T22:10:09.653Z", "contributors": [ - "Enesimus" + "isaacanet", + "aleju92" ] }, - "Tools/Tomar_capturas_de_pantalla": { - "modified": "2020-07-16T22:36:38.280Z", + "Web/API/KeyboardEvent/metaKey": { + "modified": "2019-03-23T22:47:47.329Z", "contributors": [ - "picandocodigo" + "empirreamm" ] }, - "Tools/Tools_Toolbox": { - "modified": "2020-07-16T22:35:26.877Z", + "Web/API/KeyboardEvent/which": { + "modified": "2019-03-23T23:25:30.040Z", "contributors": [ - "amaiafilo", - "Papicorito", - "am.garcia" + "fscholz", + "jsx", + "arthusu" ] }, - "Tools/View_source": { - "modified": "2020-07-16T22:35:02.649Z", + "Web/API/Location": { + "modified": "2020-03-11T08:46:40.807Z", "contributors": [ - "StripTM" + "nverino", + "BrodaNoel" ] }, - "Tools/Web_Console": { - "modified": "2020-07-16T22:34:05.366Z", + "Web/API/Location/origin": { + "modified": "2020-11-17T12:52:42.607Z", "contributors": [ - "elias_ramirez_elriso", - "cgsramirez", - "bassam", - "wbamberg" + "AlePerez92" ] }, - "Tools/Web_Console/Console_messages": { - "modified": "2020-07-16T22:34:14.880Z", + "Web/API/Location/reload": { + "modified": "2020-10-30T03:50:17.206Z", "contributors": [ - "Enesimus", - "pacommozilla", - "JeidyVega" + "SphinxKnight", + "MiguelHG2351", + "PatoDeTuring" ] }, - "Tools/Web_Console/Iniciando_la_Consola_Web": { - "modified": "2020-07-16T22:34:17.075Z", + "Web/API/MediaDevices": { + "modified": "2019-03-23T22:36:21.378Z", "contributors": [ - "JonoyeMasuso" + "Sebastianz" ] }, - "Tools/Web_Console/La_línea_de_comandos_del_intérprete": { - "modified": "2020-08-27T20:06:30.290Z", + "Web/API/MediaDevices/getUserMedia": { + "modified": "2019-03-23T22:36:21.202Z", "contributors": [ - "Nachec" + "AdanPalacios", + "titosobabas", + "RSalgadoAtala", + "Cristhian", + "matajm" ] }, - "Tools/Working_with_iframes": { - "modified": "2020-07-16T22:36:11.768Z", + "Web/API/MediaQueryList": { + "modified": "2019-03-18T21:17:33.122Z", "contributors": [ - "carpasse" + "BubuAnabelas", + "PatoDeTuring" ] }, - "Tools/about:debugging": { - "modified": "2020-07-30T13:12:25.833Z", + "Web/API/MediaQueryList/addListener": { + "modified": "2019-03-18T21:16:20.430Z", "contributors": [ - "Anibalismo" + "PatoDeTuring" ] }, - "Traducir_las_descripciones_de_las_extensiones": { - "modified": "2019-03-23T23:53:33.332Z", + "Web/API/MediaQueryList/matches": { + "modified": "2019-03-23T22:05:29.020Z", "contributors": [ - "teoli", - "Nukeador", - "Sebastianzartner@gmx.de", - "D20v02d", - "Mgjbot" + "PatoDeTuring" ] }, - "Traducir_una_extensión": { - "modified": "2019-03-23T23:57:54.041Z", + "Web/API/MediaQueryList/removeListener": { + "modified": "2019-03-23T22:05:31.060Z", "contributors": [ - "Sebastianz", - "teoli", - "Sheppy", - "gironlievanos", - "Mgjbot", - "Superruzafa" + "PatoDeTuring" ] }, - "Trazado_de_una_tabla_HTML_mediante_JavaScript_y_la_Interface_DOM": { - "modified": "2019-03-23T23:20:26.633Z", + "Web/API/MediaSource": { + "modified": "2019-03-23T22:38:20.191Z", "contributors": [ - "lajaso", - "jucazam", - "pablo.turati" + "Lazaro" ] }, - "Usando_archivos_desde_aplicaciones_web": { - "modified": "2019-03-24T00:07:10.927Z", + "Web/API/MediaStreamAudioSourceNode": { + "modified": "2019-03-18T20:35:52.439Z", "contributors": [ - "SphinxKnight", - "AngelFQC", - "StripTM", - "Izel", - "deimidis", - "maedca" + "davidtorroija", + "AndresMendozaOrozco" ] }, - "Usar_XPInstall_para_instalar_plugins": { - "modified": "2019-01-16T16:11:23.781Z", + "Web/API/MediaStreamTrack": { + "modified": "2019-03-23T23:10:18.897Z", "contributors": [ - "Superruzafa", - "Fedora-core", - "Floot" + "matajm", + "maedca" ] }, - "Usar_código_de_Mozilla_en_otros_proyectos": { - "modified": "2019-03-24T00:09:00.370Z", + "Web/API/MessageEvent": { + "modified": "2019-03-18T21:44:05.386Z", "contributors": [ - "maedca", - "inma_610" + "jpmontoya182" ] }, - "Usar_web_workers": { - "modified": "2019-03-24T00:07:32.918Z", + "Web/API/MimeType": { + "modified": "2019-03-18T21:36:36.016Z", "contributors": [ - "teoli", - "ajimix", - "inma_610" + "daniel.duarte" ] }, - "Using_the_W3C_DOM_Level_1_Core": { - "modified": "2019-12-13T21:06:41.403Z", + "Web/API/MouseEvent": { + "modified": "2019-03-23T23:01:32.904Z", "contributors": [ - "wbamberg", - "jswisher" + "fscholz" ] }, - "Uso_del_núcleo_del_nivel_1_del_DOM": { - "modified": "2019-12-13T21:10:23.918Z", + "Web/API/MouseEvent/initMouseEvent": { + "modified": "2019-03-23T23:50:24.977Z", "contributors": [ - "wbamberg", - "broxmgs", - "Superruzafa", - "Jorolo" + "SphinxKnight", + "vectorderivative", + "jorgecasar", + "fscholz", + "khalid32", + "teoli", + "HenryGR", + "Mgjbot" ] }, - "Vigilar_plugins": { - "modified": "2019-01-16T15:35:57.481Z", + "Web/API/MouseEvent/shiftKey": { + "modified": "2019-03-23T22:05:24.832Z", "contributors": [ - "HenryGR" + "evaferreira" ] }, - "Web": { - "modified": "2020-11-28T21:26:15.631Z", + "Web/API/MutationObserver": { + "modified": "2019-05-13T04:27:12.587Z", "contributors": [ - "gabrielazambrano307", - "Nachec", - "Enesimus", - "blanchart", - "SoftwareRVG", - "danieldelvillar", - "raecillacastellana", - "jcbp", - "BubuAnabelas", - "Jacqueline", - "igualar.com", - "atlas7jean", - "luisgm76", - "Sheppy" + "mllambias", + "cesaruve", + "aeroxmotion", + "JordiCruells", + "alvaropinot" ] }, - "Web/API": { - "modified": "2020-08-08T02:17:57.801Z", + "Web/API/MutationObserver/MutationObserver": { + "modified": "2020-10-15T22:18:30.706Z", "contributors": [ - "Nachec", - "Enesimus", - "fscholz", - "AJMG", - "tecniloco", - "teoli", - "maedca", - "ethertank", - "Sheppy" + "mllambias" ] }, - "Web/API/API_de_almacenamiento_web": { - "modified": "2019-03-23T22:46:51.819Z", + "Web/API/MutationObserver/observe": { + "modified": "2020-10-15T22:18:29.107Z", "contributors": [ - "fherce", - "AlePerez92", - "VictorAbdon" + "mllambias" ] }, - "Web/API/API_de_almacenamiento_web/Usando_la_API_de_almacenamiento_web": { - "modified": "2020-08-14T20:09:18.391Z", + "Web/API/Navigator": { + "modified": "2019-03-23T23:20:36.282Z", "contributors": [ - "Enesimus", - "fherce" + "israel-munoz", + "khalid32", + "tpb" ] }, - "Web/API/API_del_portapapeles": { - "modified": "2020-10-15T22:31:40.101Z", + "Web/API/Navigator/doNotTrack": { + "modified": "2019-03-18T21:35:42.847Z", "contributors": [ - "gato" + "AlePerez92" ] }, - "Web/API/AbstractWorker": { - "modified": "2019-12-20T01:50:52.328Z", + "Web/API/Navigator/getUserMedia": { + "modified": "2019-03-23T23:27:03.284Z", "contributors": [ - "Kaliu", - "Gustavo_Armoa", - "AshWilliams" + "Jib", + "AlePerez92", + "fscholz", + "cm_rocanroll", + "franverona", + "py_crash", + "maedca" ] }, - "Web/API/Ambient_Light_Events": { - "modified": "2019-03-23T22:33:31.225Z", + "Web/API/Navigator/mediaDevices": { + "modified": "2020-12-11T22:18:56.380Z", "contributors": [ - "BubuAnabelas", - "RockoDev", - "guiller1998" + "daniellimabel" ] }, - "Web/API/AnalyserNode": { - "modified": "2019-03-23T22:51:59.371Z", + "Web/API/Navigator/registerProtocolHandler": { + "modified": "2019-03-23T23:53:04.318Z", "contributors": [ - "teoli", - "CarlosLinares" + "fscholz", + "khalid32", + "Nukeador", + "HenryGR", + "Mgjbot" ] }, - "Web/API/Animation": { - "modified": "2020-10-15T21:57:43.283Z", + "Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers": { + "modified": "2019-03-23T22:06:43.969Z", "contributors": [ - "AlePerez92", - "evaferreira", - "IngoBongo" + "chrisdavidmills", + "AngelFQC" ] }, - "Web/API/Animation/Animación": { - "modified": "2019-03-23T22:05:09.399Z", + "Web/API/Navigator/vibrate": { + "modified": "2019-03-23T23:32:23.651Z", "contributors": [ - "IngoBongo" + "fscholz", + "jsx", + "mmednik" ] }, - "Web/API/Animation/cancel": { - "modified": "2019-03-23T22:04:37.170Z", + "Web/API/NavigatorConcurrentHardware": { + "modified": "2020-10-15T22:25:58.692Z" + }, + "Web/API/NavigatorConcurrentHardware/hardwareConcurrency": { + "modified": "2020-10-15T22:26:06.271Z", "contributors": [ - "IngoBongo" + "Gnuxdar" ] }, - "Web/API/Animation/effect": { - "modified": "2019-03-18T21:15:31.270Z", + "Web/API/NavigatorLanguage": { + "modified": "2019-03-23T22:46:20.556Z", "contributors": [ - "IngoBongo" + "teoli" ] }, - "Web/API/Animation/finish": { - "modified": "2019-03-23T22:04:33.125Z", + "Web/API/NavigatorLanguage/language": { + "modified": "2019-03-23T22:46:24.341Z", "contributors": [ - "IngoBongo" + "cesiztel", + "jesus9ias" ] }, - "Web/API/Animation/id": { - "modified": "2019-03-18T21:15:30.202Z", + "Web/API/NavigatorOnLine": { + "modified": "2019-03-23T22:07:33.991Z", "contributors": [ - "IngoBongo" + "abbycar" ] }, - "Web/API/Animation/oncancel": { - "modified": "2019-03-23T22:05:09.237Z", + "Web/API/NavigatorOnLine/onLine": { + "modified": "2019-03-23T22:07:34.200Z", "contributors": [ - "IngoBongo" + "MarkelCuesta" ] }, - "Web/API/Animation/onfinish": { - "modified": "2019-03-23T22:05:11.188Z", + "Web/API/Network_Information_API": { + "modified": "2020-11-17T00:17:37.419Z", "contributors": [ - "IngoBongo" + "tobiasalbirosa" ] }, - "Web/API/Animation/pause": { - "modified": "2020-10-15T21:58:07.078Z", + "Web/API/Node": { + "modified": "2019-05-06T01:19:55.862Z", "contributors": [ - "AlePerez92", - "IngoBongo" + "robinHurtado", + "fscholz" ] }, - "Web/API/Animation/play": { - "modified": "2019-03-23T22:04:30.047Z", + "Web/API/Node/appendChild": { + "modified": "2020-10-15T21:22:57.221Z", "contributors": [ - "IngoBongo" + "AlePerez92", + "IsaacAaron", + "fscholz", + "jsx", + "AzulCz" ] }, - "Web/API/Animation/playState": { - "modified": "2019-03-23T22:05:06.415Z", + "Web/API/Node/childNodes": { + "modified": "2020-10-15T22:02:15.961Z", "contributors": [ - "IngoBongo" + "AlePerez92", + "presercomp" ] }, - "Web/API/Animation/playbackRate": { - "modified": "2019-03-23T22:05:12.184Z", + "Web/API/Node/cloneNode": { + "modified": "2020-10-15T21:49:33.676Z", "contributors": [ - "IngoBongo" + "AlePerez92", + "jyorch2", + "fewrare" ] }, - "Web/API/Animation/ready": { - "modified": "2019-03-23T22:04:55.912Z", + "Web/API/Node/contains": { + "modified": "2020-10-15T22:00:52.714Z", "contributors": [ - "IngoBongo" + "AlePerez92" ] }, - "Web/API/Animation/reverse": { - "modified": "2019-03-23T22:04:31.837Z", + "Web/API/Node/hasChildNodes": { + "modified": "2020-10-15T22:08:41.278Z", "contributors": [ - "IngoBongo" + "AlePerez92" ] }, - "Web/API/Animation/startTime": { - "modified": "2019-03-23T22:04:36.769Z", + "Web/API/Node/isSameNode": { + "modified": "2019-03-23T22:49:05.364Z", "contributors": [ - "IngoBongo" + "JordiCruells" ] }, - "Web/API/Animation/terminado": { - "modified": "2019-03-23T22:05:06.573Z", + "Web/API/Node/lastChild": { + "modified": "2020-10-15T21:55:48.810Z", "contributors": [ - "IngoBongo" + "fscholz", + "AlePerez92", + "tureey" ] }, - "Web/API/Animation/tiempoActual": { - "modified": "2019-03-23T22:05:12.506Z", + "Web/API/Node/namespaceURI": { + "modified": "2019-03-23T22:08:52.990Z", "contributors": [ - "IngoBongo" + "tureey" ] }, - "Web/API/Animation/timeline": { - "modified": "2019-03-23T22:04:30.790Z", + "Web/API/Node/nextSibling": { + "modified": "2020-10-15T21:27:47.909Z", "contributors": [ - "IngoBongo" + "wbamberg", + "AlePerez92", + "fscholz", + "Alexis88" ] }, - "Web/API/AnimationEvent": { - "modified": "2019-03-23T22:31:58.545Z", + "Web/API/Node/nodeName": { + "modified": "2019-03-23T23:50:40.382Z", "contributors": [ + "SphinxKnight", "fscholz", - "jzatarain", - "Vanessa85" + "Hasilt", + "HenryGR", + "Mgjbot" ] }, - "Web/API/AnimationEvent/animationName": { - "modified": "2019-03-23T22:29:49.749Z", + "Web/API/Node/nodeType": { + "modified": "2019-03-23T22:58:04.685Z", "contributors": [ - "jzatarain" + "minrock" ] }, - "Web/API/Attr": { - "modified": "2020-04-04T11:16:16.397Z", + "Web/API/Node/nodeValue": { + "modified": "2019-08-30T02:00:09.176Z", "contributors": [ - "MiguelHG2351", - "rayrojas", - "AlePerez92" + "Jamel-Seyek", + "tureey" ] }, - "Web/API/AudioBuffer": { - "modified": "2020-10-15T22:15:24.740Z", + "Web/API/Node/ownerDocument": { + "modified": "2019-10-09T11:24:36.349Z", "contributors": [ - "rayrojas" + "ogallagher", + "tureey" ] }, - "Web/API/AudioNode": { - "modified": "2020-10-15T22:15:25.198Z", + "Web/API/Node/parentNode": { + "modified": "2019-03-23T22:08:56.619Z", "contributors": [ - "rayrojas" + "IsmaOrdas", + "tureey" ] }, - "Web/API/BaseAudioContext": { - "modified": "2019-03-18T21:00:34.809Z", + "Web/API/Node/previousSibling": { + "modified": "2020-10-15T22:05:25.453Z", "contributors": [ - "SphinxKnight", - "miguelonce", - "chrisdavidmills" + "wbamberg", + "AlePerez92" ] }, - "Web/API/BaseAudioContext/createBiquadFilter": { - "modified": "2019-03-23T22:04:57.563Z", + "Web/API/Node/removeChild": { + "modified": "2019-03-23T22:51:59.032Z", "contributors": [ - "GersonRosales" + "IsaacAaron", + "jcmunioz" ] }, - "Web/API/BatteryManager": { - "modified": "2019-03-23T23:24:54.302Z", + "Web/API/Node/replaceChild": { + "modified": "2019-03-23T22:46:30.428Z", "contributors": [ - "David_Marcos", - "maedca", - "sinfallas" + "pakitometal" ] }, - "Web/API/BatteryManager/charging": { - "modified": "2019-03-23T23:27:11.890Z", + "Web/API/Node/textContent": { + "modified": "2020-10-15T21:21:16.429Z", "contributors": [ + "yohanolmedo", + "AlePerez92", + "IsaacAaron", "fscholz", - "Hasilt", - "LuisE" + "another_sam" ] }, - "Web/API/BatteryManager/chargingTime": { - "modified": "2019-03-23T23:25:12.194Z", + "Web/API/NodeList": { + "modified": "2020-10-15T22:00:48.268Z", "contributors": [ - "fscholz", - "palfrei" + "AlePerez92", + "padrecedano" ] }, - "Web/API/BatteryManager/dischargingTime": { - "modified": "2019-03-23T23:27:15.312Z", + "Web/API/NodeList/forEach": { + "modified": "2020-10-15T22:08:20.485Z", "contributors": [ - "fscholz", - "khalid32", - "LuisE" + "SphinxKnight", + "InfaSysKey", + "jesumv" ] }, - "Web/API/BatteryManager/level": { - "modified": "2019-03-23T23:25:16.177Z", + "Web/API/NonDocumentTypeChildNode": { + "modified": "2019-03-23T22:32:46.517Z", "contributors": [ - "fscholz", - "eliezerb", - "maedca", - "David_Marcos", - "sinfallas", - "voylinux" + "fscholz" ] }, - "Web/API/BatteryManager/onchargingchange": { - "modified": "2019-03-23T23:25:06.308Z", + "Web/API/NonDocumentTypeChildNode/nextElementSibling": { + "modified": "2020-10-15T21:46:25.502Z", "contributors": [ - "fscholz", - "Pau_Ilargia", - "voylinux" + "AlePerez92", + "Grijander81" ] }, - "Web/API/BatteryManager/onlevelchange": { - "modified": "2019-03-23T23:25:08.174Z", + "Web/API/NonDocumentTypeChildNode/previousElementSibling": { + "modified": "2019-03-23T22:32:40.718Z", "contributors": [ - "fscholz", - "teoli", - "eliezerb", - "robertoasq", - "voylinux" + "Grijander81" ] }, - "Web/API/BeforeUnloadEvent": { - "modified": "2020-10-15T22:19:49.552Z", + "Web/API/Notifications_API": { + "modified": "2019-03-23T22:07:39.198Z", "contributors": [ - "tuamigoxavi", - "matias981" + "david_ross" ] }, - "Web/API/Blob": { - "modified": "2019-03-23T23:07:07.610Z", + "Web/API/ParentNode": { + "modified": "2019-03-23T22:43:20.773Z", "contributors": [ - "parzibyte", - "japho", - "fscholz", - "degrammer" + "Sebastianz" ] }, - "Web/API/Blob/Blob": { - "modified": "2020-10-15T21:31:45.424Z", + "Web/API/ParentNode/append": { + "modified": "2020-10-15T22:24:28.452Z", "contributors": [ - "IsraelFloresDGA", - "BrodaNoel", - "fscholz", - "matajm" + "Kyuoraku" ] }, - "Web/API/Blob/type": { - "modified": "2019-03-23T22:06:34.982Z", + "Web/API/ParentNode/childElementCount": { + "modified": "2019-03-23T22:43:24.721Z", "contributors": [ - "BrodaNoel" + "joselix" ] }, - "Web/API/BlobBuilder": { - "modified": "2019-03-23T22:49:30.131Z", + "Web/API/ParentNode/children": { + "modified": "2019-03-23T22:32:44.383Z", "contributors": [ - "BrodaNoel", - "japho" + "AlePerez92", + "aeroxmotion", + "Grijander81" ] }, - "Web/API/Body": { - "modified": "2020-10-15T22:17:35.545Z", + "Web/API/ParentNode/firstElementChild": { + "modified": "2019-03-23T22:32:44.779Z", "contributors": [ - "SphinxKnight", - "bigblair81" + "Grijander81" ] }, - "Web/API/Body/formData": { - "modified": "2020-10-15T22:17:33.164Z", + "Web/API/ParentNode/lastElementChild": { + "modified": "2019-03-23T22:32:39.974Z", "contributors": [ - "brauni800" + "Grijander81" ] }, - "Web/API/Body/json": { - "modified": "2020-10-15T22:29:20.361Z", + "Web/API/Payment_Request_API": { + "modified": "2020-10-15T22:33:12.666Z", "contributors": [ - "camsa" + "cjguajardo" ] }, - "Web/API/CSSRule": { - "modified": "2019-03-23T23:58:11.498Z", + "Web/API/Performance": { + "modified": "2020-10-15T21:53:40.885Z", "contributors": [ - "SphinxKnight", + "wachunei", + "juanarbol", "fscholz", - "khalid32", - "teoli", - "HenryGR" + "jpmedley" ] }, - "Web/API/CSSRule/cssText": { - "modified": "2019-03-23T23:58:05.630Z", + "Web/API/Performance/clearMarks": { + "modified": "2020-10-15T22:22:33.810Z", "contributors": [ - "fscholz", - "arunpandianp", - "teoli", - "HenryGR" + "juanarbol" ] }, - "Web/API/CSSRule/parentStyleSheet": { - "modified": "2019-03-23T23:58:10.522Z", + "Web/API/Performance/clearMeasures": { + "modified": "2020-10-15T22:22:45.763Z", "contributors": [ - "fscholz", - "arunpandianp", - "teoli", - "HenryGR" + "juanarbol" ] }, - "Web/API/CSSStyleDeclaration": { - "modified": "2019-03-23T22:44:46.721Z", + "Web/API/Performance/memory": { + "modified": "2020-10-15T22:22:31.707Z", "contributors": [ - "guerratron" + "juanarbol" ] }, - "Web/API/CSSStyleRule": { - "modified": "2019-03-23T23:01:37.512Z", + "Web/API/Performance/navigation": { + "modified": "2020-10-15T22:22:32.714Z", "contributors": [ - "darioperez", - "fscholz" + "juanarbol" ] }, - "Web/API/CSSStyleRule/selectorText": { - "modified": "2019-03-23T23:58:12.055Z", + "Web/API/Performance/now": { + "modified": "2019-03-23T22:13:15.954Z", "contributors": [ - "fscholz", - "jsx", - "teoli", - "HenryGR" + "AlePerez92" ] }, - "Web/API/CSSStyleSheet": { - "modified": "2019-03-23T23:58:09.423Z", + "Web/API/Performance/timeOrigin": { + "modified": "2020-10-15T22:22:32.944Z", "contributors": [ - "fscholz", - "khalid32", - "teoli", - "HenryGR" + "juanarbol" ] }, - "Web/API/CSSStyleSheet/deleteRule": { - "modified": "2019-03-23T23:58:10.847Z", + "Web/API/Performance/timing": { + "modified": "2020-10-15T22:22:30.788Z", "contributors": [ - "fscholz", - "khalid32", - "teoli", - "HenryGR" + "juanarbol" ] }, - "Web/API/CSSStyleSheet/insertRule": { - "modified": "2019-03-23T23:16:46.847Z", + "Web/API/PerformanceNavigation": { + "modified": "2020-10-15T22:22:46.223Z", "contributors": [ - "fscholz", - "LeoHirsch" + "juanarbol" ] }, - "Web/API/CSSStyleSheet/ownerRule": { - "modified": "2019-03-23T23:58:08.873Z", + "Web/API/PositionOptions": { + "modified": "2019-03-23T23:16:28.831Z", "contributors": [ "fscholz", - "khalid32", - "HenryGR" + "LeoHirsch", + "lupomontero" ] }, - "Web/API/CSS_Object_Model": { - "modified": "2019-03-23T22:01:23.472Z", + "Web/API/PushManager": { + "modified": "2019-03-23T22:40:00.540Z", "contributors": [ - "dmelian" + "chrisdavidmills" ] }, - "Web/API/CacheStorage": { - "modified": "2020-10-15T22:30:42.396Z", + "Web/API/PushManager/permissionState": { + "modified": "2019-03-23T22:39:59.979Z", "contributors": [ - "AprilSylph" + "maedca" ] }, - "Web/API/CacheStorage/keys": { - "modified": "2020-10-15T22:30:42.056Z", + "Web/API/PushManager/supportedContentEncodings": { + "modified": "2020-10-15T22:03:55.545Z", "contributors": [ - "duduindo", - "ph4538157" + "Erto" ] }, - "Web/API/CanvasImageSource": { - "modified": "2019-03-23T22:09:10.185Z", + "Web/API/Push_API": { + "modified": "2019-03-23T22:44:48.332Z", "contributors": [ - "alinarezrangel" + "gimco", + "omar10594", + "Erto", + "FMRonin", + "YulianD", + "mautematico" ] }, - "Web/API/CanvasRenderingContext2D": { - "modified": "2019-03-23T22:54:41.294Z", + "Web/API/RTCPeerConnection": { + "modified": "2019-03-18T21:43:02.717Z", "contributors": [ - "rrodrigo", - "JoSaGuDu", - "iamwao", - "geodracs" + "jgalvezsoax", + "maomuriel" ] }, - "Web/API/CanvasRenderingContext2D/arc": { - "modified": "2019-04-15T00:25:11.182Z", + "Web/API/RTCPeerConnection/canTrickleIceCandidates": { + "modified": "2020-10-15T22:33:02.442Z", "contributors": [ - "Rodrigo-Sanchez", - "Mancux2" + "JaderLuisDiaz" ] }, - "Web/API/CanvasRenderingContext2D/beginPath": { - "modified": "2019-03-23T22:47:39.451Z", + "Web/API/RTCRtpReceiver": { + "modified": "2020-10-15T22:27:25.068Z", "contributors": [ - "PepeBeat" + "qwerty726" ] }, - "Web/API/CanvasRenderingContext2D/clearRect": { - "modified": "2019-03-23T22:19:13.064Z", + "Web/API/Range": { + "modified": "2019-03-23T23:47:18.258Z", "contributors": [ - "andrpueb" + "wbamberg", + "maiky", + "fscholz", + "Markens", + "DR", + "Nathymig" ] }, - "Web/API/CanvasRenderingContext2D/drawImage": { - "modified": "2019-03-23T22:47:09.124Z", + "Web/API/Range/collapsed": { + "modified": "2019-03-23T23:47:00.550Z", "contributors": [ - "iamwao" + "fscholz", + "DR" ] }, - "Web/API/CanvasRenderingContext2D/fillRect": { - "modified": "2019-03-23T22:32:43.881Z", + "Web/API/Range/commonAncestorContainer": { + "modified": "2019-03-23T23:53:54.038Z", "contributors": [ - "eljonims" + "fscholz", + "DR" ] }, - "Web/API/CanvasRenderingContext2D/getImageData": { - "modified": "2020-10-15T22:03:53.553Z", + "Web/API/Range/getClientRects": { + "modified": "2019-03-23T22:10:01.541Z", "contributors": [ - "LEUGIM99" + "edhzsz" ] }, - "Web/API/CanvasRenderingContext2D/lineCap": { - "modified": "2020-10-15T22:18:19.205Z", + "Web/API/Range/intersectsNode": { + "modified": "2019-03-23T23:53:59.214Z", "contributors": [ - "Ricardo_F." + "fscholz", + "khalid32", + "Mgjbot", + "DR" ] }, - "Web/API/CanvasRenderingContext2D/rotate": { - "modified": "2020-10-15T22:12:15.546Z", + "Web/API/Range/setStart": { + "modified": "2019-03-23T22:13:01.685Z", "contributors": [ - "albertor21" + "Vincetroid" ] }, - "Web/API/CanvasRenderingContext2D/save": { - "modified": "2020-10-15T22:23:30.799Z", + "Web/API/Request": { + "modified": "2020-10-15T22:02:13.323Z", "contributors": [ - "feiss" + "DiegoFT", + "fscholz" ] }, - "Web/API/Canvas_API/Tutorial/Compositing": { - "modified": "2020-08-27T21:09:19.590Z", + "Web/API/Request/headers": { + "modified": "2020-10-15T22:02:12.572Z", "contributors": [ - "mastertrooper", - "stephaniehobson" + "carojaspaz" ] }, - "Web/API/Canvas_API/Tutorial/Compositing/Ejemplo": { - "modified": "2019-03-18T21:36:04.043Z", + "Web/API/Response": { + "modified": "2020-11-13T19:18:52.099Z", "contributors": [ - "lajaso" + "chux", + "kant", + "ignatius73", + "crrlos" ] }, - "Web/API/ChildNode": { - "modified": "2019-03-29T14:12:39.589Z", + "Web/API/Response/Response": { + "modified": "2020-10-15T22:15:43.532Z", "contributors": [ - "jpmedley" + "AzazelN28" ] }, - "Web/API/ChildNode/after": { - "modified": "2020-10-15T21:50:39.528Z", + "Web/API/Response/ok": { + "modified": "2020-10-15T22:22:31.771Z", "contributors": [ - "AlePerez92", - "SoftwareRVG" + "juanarbol" ] }, - "Web/API/ChildNode/before": { - "modified": "2019-03-23T22:23:28.772Z", + "Web/API/Response/status": { + "modified": "2020-10-15T22:24:09.432Z", "contributors": [ - "SoftwareRVG" + "FDSoil" ] }, - "Web/API/ChildNode/remove": { - "modified": "2020-10-15T21:50:43.901Z", + "Web/API/SVGPoint": { + "modified": "2019-03-23T23:03:09.725Z", "contributors": [ - "daniel.arango", - "teffcode", - "AlePerez92", - "SoftwareRVG" + "fscholz", + "hasAngel" ] }, - "Web/API/ChildNode/replaceWith": { - "modified": "2019-03-23T22:23:34.633Z", + "Web/API/Screen": { + "modified": "2019-10-10T16:45:22.609Z", "contributors": [ - "SoftwareRVG" + "jazdian", + "Grijander81" ] }, - "Web/API/ClipboardEvent": { - "modified": "2020-10-15T22:14:15.464Z", + "Web/API/Selection": { + "modified": "2019-03-23T23:54:01.018Z", "contributors": [ - "fscholz" - ] - }, - "Web/API/ClipboardEvent/clipboardData": { - "modified": "2020-10-15T22:14:15.340Z", - "contributors": [ - "Bumxu" - ] - }, - "Web/API/CloseEvent": { - "modified": "2020-11-24T05:35:48.408Z", - "contributors": [ - "netizen", - "jpmontoya182" + "CxRxExO", + "fscholz", + "DR", + "Juandavaus", + "Kroatan", + "Mgjbot", + "LaRy", + "Nathymig" ] }, - "Web/API/Comment": { - "modified": "2020-10-15T22:24:21.833Z", + "Web/API/Selection/addRange": { + "modified": "2019-03-23T23:46:53.374Z", "contributors": [ - "pablorebora" + "fscholz", + "Mgjbot", + "DR" ] }, - "Web/API/Console": { - "modified": "2019-08-30T08:42:12.082Z", + "Web/API/Selection/anchorNode": { + "modified": "2019-03-23T23:46:46.912Z", "contributors": [ - "ajuanjojjj", - "fcanellas", - "vlguerrero", - "chrisdavidmills" + "fscholz", + "Mgjbot", + "DR" ] }, - "Web/API/Console/count": { - "modified": "2019-03-23T22:07:26.644Z", + "Web/API/Selection/anchorOffset": { + "modified": "2019-03-23T23:46:55.279Z", "contributors": [ - "deluxury", - "roberbnd" + "fscholz", + "DR", + "Mgjbot" ] }, - "Web/API/Console/dir": { - "modified": "2020-11-11T11:46:41.122Z", + "Web/API/Selection/collapse": { + "modified": "2019-03-23T23:46:57.541Z", "contributors": [ - "jomoji", - "laloptk" + "fscholz", + "Mgjbot", + "DR" ] }, - "Web/API/Console/dirxml": { - "modified": "2019-03-23T22:18:03.809Z", + "Web/API/Selection/collapseToEnd": { + "modified": "2019-03-23T23:47:01.187Z", "contributors": [ - "aeroxmotion" + "fscholz", + "Mgjbot", + "DR" ] }, - "Web/API/Console/error": { - "modified": "2019-03-23T22:06:32.134Z", + "Web/API/Selection/collapseToStart": { + "modified": "2019-03-23T23:46:59.744Z", "contributors": [ - "BrodaNoel" + "fscholz", + "Mgjbot", + "DR" ] }, - "Web/API/Console/info": { - "modified": "2019-03-23T22:12:32.604Z", + "Web/API/Selection/containsNode": { + "modified": "2019-03-23T23:46:51.997Z", "contributors": [ - "Lwissitoon" + "fscholz", + "Mgjbot", + "DR" ] }, - "Web/API/Console/log": { - "modified": "2019-03-23T22:19:48.741Z", + "Web/API/Selection/deleteFromDocument": { + "modified": "2019-03-23T23:46:47.857Z", "contributors": [ - "BrodaNoel", - "fcanellas" + "fscholz", + "Mgjbot", + "DR" ] }, - "Web/API/Console/tabla": { - "modified": "2019-03-23T22:20:30.589Z", + "Web/API/Selection/extend": { + "modified": "2019-03-23T23:46:54.795Z", "contributors": [ - "AlePerez92" + "fscholz", + "DR", + "Mgjbot" ] }, - "Web/API/Console/time": { - "modified": "2019-03-18T21:42:22.745Z", + "Web/API/Selection/focusNode": { + "modified": "2019-03-23T23:46:46.574Z", "contributors": [ - "jotaoncode" + "fscholz", + "DR" ] }, - "Web/API/Console/timeEnd": { - "modified": "2020-10-15T22:13:11.825Z", + "Web/API/Selection/focusOffset": { + "modified": "2019-03-23T23:46:54.969Z", "contributors": [ - "xlhector10" + "fscholz", + "DR", + "Mgjbot" ] }, - "Web/API/Console/trace": { - "modified": "2019-03-23T22:22:51.545Z", + "Web/API/Selection/getRangeAt": { + "modified": "2019-03-23T23:46:55.195Z", "contributors": [ - "Axl-Nolasco" + "fscholz", + "DR" ] }, - "Web/API/Console/warn": { - "modified": "2020-10-15T21:53:36.780Z", + "Web/API/Selection/isCollapsed": { + "modified": "2019-03-23T23:46:52.080Z", "contributors": [ - "juanluisrp", - "oderflaj" + "fscholz", + "DR" ] }, - "Web/API/Constraint_validation": { - "modified": "2019-04-22T15:33:44.796Z" - }, - "Web/API/Crypto": { - "modified": "2020-10-15T22:27:12.417Z", + "Web/API/Selection/rangeCount": { + "modified": "2019-03-23T23:46:50.030Z", "contributors": [ - "joseluisq" + "fscholz", + "DR" ] }, - "Web/API/Crypto/subtle": { - "modified": "2020-10-15T22:27:11.548Z", + "Web/API/Selection/removeAllRanges": { + "modified": "2019-03-23T23:46:54.883Z", "contributors": [ - "joseluisq" + "fscholz", + "Mgjbot", + "DR" ] }, - "Web/API/CustomElementRegistry": { - "modified": "2020-10-15T22:29:44.444Z", + "Web/API/Selection/removeRange": { + "modified": "2019-03-23T23:46:55.069Z", "contributors": [ - "alattalatta" + "fscholz", + "DR", + "Mgjbot" ] }, - "Web/API/CustomElementRegistry/define": { - "modified": "2020-10-15T22:29:45.200Z", + "Web/API/Selection/selectAllChildren": { + "modified": "2019-03-23T23:46:50.124Z", "contributors": [ - "aguilerajl" + "fscholz", + "Mgjbot", + "DR" ] }, - "Web/API/CustomEvent": { - "modified": "2020-10-15T21:56:03.240Z", + "Web/API/Selection/toString": { + "modified": "2019-03-23T23:47:28.897Z", "contributors": [ "fscholz", - "AlePerez92", - "daniville" + "Mgjbot", + "DR" ] }, - "Web/API/DOMError": { - "modified": "2020-10-15T21:34:32.594Z", + "Web/API/ServiceWorkerContainer": { + "modified": "2020-10-15T22:03:12.673Z", "contributors": [ - "fscholz", - "MauroEldritch" + "fscholz" ] }, - "Web/API/DOMParser": { - "modified": "2019-03-23T22:20:06.466Z", + "Web/API/ServiceWorkerContainer/register": { + "modified": "2020-10-15T22:03:11.889Z", "contributors": [ - "rferraris" + "LuisOlive", + "marc2684" ] }, - "Web/API/DOMString": { - "modified": "2019-03-18T21:41:05.316Z", + "Web/API/ServiceWorkerRegistration": { + "modified": "2020-10-15T22:05:45.607Z", "contributors": [ - "jagomf" + "ExE-Boss" ] }, - "Web/API/DOMString/Cadenas_binarias": { - "modified": "2020-08-29T03:33:22.030Z", + "Web/API/Service_Worker_API": { + "modified": "2019-03-23T22:09:38.478Z", "contributors": [ - "Nachec" + "Fedapamo", + "andrpueb", + "ibanlopez", + "eltioico", + "chrisdavidmills" ] }, - "Web/API/DataTransfer": { - "modified": "2019-03-23T23:17:03.398Z", + "Web/API/Service_Worker_API/Using_Service_Workers": { + "modified": "2019-03-23T22:09:43.848Z", "contributors": [ - "wbamberg", - "nmarmon", - "vmv", - "fscholz", - "yonatanalexis22" + "JasonGlez", + "Vergara", + "GabrielSchlomo", + "Anibalismo", + "darioperez" ] }, - "Web/API/Detecting_device_orientation": { - "modified": "2020-08-11T08:30:00.189Z", + "Web/API/Storage": { + "modified": "2019-03-23T22:37:04.835Z", "contributors": [ - "juancarlos.rmr", - "rayrojas", - "jairopezlo" + "puma", + "Sebastianz" ] }, - "Web/API/DeviceMotionEvent": { - "modified": "2020-10-15T22:22:26.832Z", + "Web/API/Storage/clear": { + "modified": "2019-03-23T22:26:00.358Z", "contributors": [ - "miguelaup" + "edwarfuentes97", + "theguitxo" ] }, - "Web/API/Document": { - "modified": "2019-10-10T16:52:49.015Z", + "Web/API/Storage/getItem": { + "modified": "2019-03-23T22:33:04.286Z", "contributors": [ - "luis.iglesias", - "AlejandroCordova", - "fscholz", - "Crash", - "DoctorRomi", - "Mgjbot", - "DR", - "Carlosds", - "Nathymig" + "devconcept", + "aminguez" ] }, - "Web/API/Document/URL": { - "modified": "2020-10-15T21:18:01.820Z", + "Web/API/Storage/length": { + "modified": "2019-03-23T22:25:49.492Z", "contributors": [ - "AlePerez92", - "fscholz", - "DR" + "Guitxo" ] }, - "Web/API/Document/abrir": { - "modified": "2020-10-15T22:31:23.051Z", + "Web/API/Storage/removeItem": { + "modified": "2020-06-16T13:11:43.937Z", "contributors": [ - "WillieMensa" + "jorgeCaster", + "aminguez" ] }, - "Web/API/Document/adoptNode": { - "modified": "2020-10-15T22:06:16.900Z", + "Web/API/Storage/setItem": { + "modified": "2019-03-23T22:37:01.770Z", "contributors": [ - "AlePerez92", - "InfaSysKey", - "ANDRUS74" + "aminguez", + "spideep" ] }, - "Web/API/Document/alinkColor": { - "modified": "2019-03-23T23:46:52.743Z", + "Web/API/StorageManager": { + "modified": "2020-10-15T22:18:18.423Z" + }, + "Web/API/StorageManager/estimate": { + "modified": "2020-10-15T22:18:17.461Z", "contributors": [ - "fscholz", - "DR" + "AlePerez92" ] }, - "Web/API/Document/anchors": { - "modified": "2020-10-15T21:18:02.380Z", + "Web/API/StorageManager/persist": { + "modified": "2020-10-15T22:18:17.848Z", "contributors": [ - "roocce", - "fscholz", - "DR" + "AlePerez92" ] }, - "Web/API/Document/applets": { - "modified": "2019-03-23T23:46:53.464Z", + "Web/API/StorageManager/persisted": { + "modified": "2020-10-15T22:18:17.733Z", "contributors": [ - "fscholz", - "DR" + "AlePerez92" ] }, - "Web/API/Document/async": { - "modified": "2019-03-23T22:57:43.989Z", + "Web/API/StyleSheet": { + "modified": "2019-03-18T21:12:49.649Z", "contributors": [ - "MauroEldritch" + "diegovinie", + "SphinxKnight", + "fscholz", + "khalid32", + "teoli", + "HenryGR" ] }, - "Web/API/Document/bgColor": { - "modified": "2019-03-23T23:46:48.550Z", + "Web/API/StyleSheet/disabled": { + "modified": "2019-03-23T23:58:08.612Z", "contributors": [ "fscholz", - "DR" + "khalid32", + "teoli", + "HenryGR" ] }, - "Web/API/Document/body": { - "modified": "2019-03-23T23:47:18.556Z", + "Web/API/StyleSheet/href": { + "modified": "2019-03-23T23:58:07.932Z", "contributors": [ - "MauroEldritch", "fscholz", - "Markens", - "DR" + "khalid32", + "teoli", + "HenryGR" ] }, - "Web/API/Document/characterSet": { - "modified": "2019-03-23T23:46:47.961Z", + "Web/API/StyleSheet/media": { + "modified": "2019-03-23T23:58:05.417Z", "contributors": [ "fscholz", - "Mgjbot", - "DR" + "khalid32", + "teoli", + "HenryGR" ] }, - "Web/API/Document/clear": { - "modified": "2019-03-23T22:27:12.101Z", + "Web/API/StyleSheet/ownerNode": { + "modified": "2019-03-23T23:58:23.239Z", "contributors": [ - "pekechis" + "fscholz", + "khalid32", + "teoli", + "HenryGR" ] }, - "Web/API/Document/close": { - "modified": "2019-03-23T22:33:21.768Z", + "Web/API/StyleSheet/parentStyleSheet": { + "modified": "2019-03-23T23:58:09.687Z", "contributors": [ - "AitorRodriguez990" + "fscholz", + "khalid32", + "teoli", + "HenryGR" ] }, - "Web/API/Document/contentType": { - "modified": "2019-03-23T22:57:42.530Z", + "Web/API/StyleSheet/title": { + "modified": "2019-03-23T23:58:12.135Z", "contributors": [ - "MauroEldritch" + "fscholz", + "xuancanh", + "teoli", + "HenryGR" ] }, - "Web/API/Document/crearAtributo": { - "modified": "2020-10-15T21:55:08.825Z", + "Web/API/StyleSheet/type": { + "modified": "2019-03-23T23:58:05.312Z", "contributors": [ - "rodririobo", - "juanseromo12", - "FenixAlive" + "fscholz", + "jsx", + "teoli", + "HenryGR" ] }, - "Web/API/Document/createDocumentFragment": { - "modified": "2020-08-12T01:13:43.917Z", + "Web/API/SubtleCrypto": { + "modified": "2020-10-15T22:27:14.356Z", "contributors": [ - "zgreco2000", - "msaglietto" + "joseluisq" ] }, - "Web/API/Document/createElement": { - "modified": "2019-09-19T04:18:24.578Z", + "Web/API/SubtleCrypto/digest": { + "modified": "2020-10-15T22:27:30.018Z", "contributors": [ - "AlePerez92", - "Juandresyn", - "aitorllj93", - "BrodaNoel", - "McSonk", - "malonson", - "AlejandroBlanco", - "daesnorey_xy", - "JoaquinGonzalez" + "joseluisq" ] }, - "Web/API/Document/createElementNS": { - "modified": "2019-03-23T22:23:11.141Z", + "Web/API/TextTrack": { + "modified": "2020-10-15T22:33:08.345Z", "contributors": [ - "ErikMj69" + "joeyparrish" ] }, - "Web/API/Document/createRange": { - "modified": "2019-08-27T15:00:09.804Z", + "Web/API/TextTrack/cuechange_event": { + "modified": "2020-10-15T22:33:09.063Z", "contributors": [ - "iarah", - "fscholz", - "jsx", - "Mgjbot", - "DR" + "Pablo-No" ] }, - "Web/API/Document/createTextNode": { - "modified": "2020-10-15T22:17:21.251Z", + "Web/API/TouchEvent": { + "modified": "2019-03-23T22:32:05.809Z", "contributors": [ + "ulisestrujillo", "AlePerez92" ] }, - "Web/API/Document/defaultView": { - "modified": "2019-03-23T22:54:20.024Z", + "Web/API/UIEvent": { + "modified": "2019-03-23T23:01:34.700Z", "contributors": [ - "ArcangelZith" + "fscholz" ] }, - "Web/API/Document/designMode": { - "modified": "2020-10-15T21:40:52.052Z", + "Web/API/UIEvent/pageX": { + "modified": "2019-03-23T23:12:56.756Z", "contributors": [ - "AlePerez92", - "sohereitcomes" + "fscholz", + "khalid32", + "Nathymig", + "Julgon" ] }, - "Web/API/Document/dir": { - "modified": "2019-03-23T22:57:39.171Z", + "Web/API/URL": { + "modified": "2019-03-23T22:19:12.735Z", "contributors": [ - "MauroEldritch" + "zayle", + "wstaelens" ] }, - "Web/API/Document/doctype": { - "modified": "2019-03-23T22:43:25.055Z", + "Web/API/URL/Host": { + "modified": "2020-10-15T22:28:58.726Z", "contributors": [ - "joselix" + "diegovlopez587" ] }, - "Web/API/Document/documentElement": { - "modified": "2019-03-23T23:50:27.852Z", + "Web/API/URL/URL": { + "modified": "2020-10-15T22:21:36.171Z", "contributors": [ - "SphinxKnight", - "fscholz", - "khalid32", - "HenryGR", - "Mgjbot" + "roberth_dev" ] }, - "Web/API/Document/documentURI": { - "modified": "2019-03-23T22:39:59.389Z", + "Web/API/URL/createObjectURL": { + "modified": "2019-03-23T22:19:19.805Z", "contributors": [ - "Zholary" + "OrlandoDeJesusCuxinYama", + "isafrus5", + "AzazelN28" ] }, - "Web/API/Document/documentURIObject": { - "modified": "2019-03-23T23:50:26.462Z", + "Web/API/URL/port": { + "modified": "2020-10-15T22:21:35.297Z", "contributors": [ - "SphinxKnight", - "fscholz", - "khalid32", - "HenryGR", - "Mgjbot" + "roberth_dev" ] }, - "Web/API/Document/dragover_event": { - "modified": "2019-04-30T14:24:25.773Z", + "Web/API/URLSearchParams": { + "modified": "2019-03-23T22:08:25.598Z", "contributors": [ - "wbamberg", - "fscholz", - "ExE-Boss", - "Vickysolo" + "aliveghost04" ] }, - "Web/API/Document/embeds": { - "modified": "2020-10-15T22:22:17.171Z", + "Web/API/URLSearchParams/URLSearchParams": { + "modified": "2020-10-15T22:28:05.327Z", "contributors": [ - "iarah" + "daniel.duarte" ] }, - "Web/API/Document/evaluate": { - "modified": "2019-03-23T22:10:41.891Z", + "Web/API/WebGL_API": { + "modified": "2019-03-24T00:07:50.182Z", "contributors": [ - "bryan3561" + "fscholz", + "teoli", + "inma_610" ] }, - "Web/API/Document/execCommand": { - "modified": "2019-03-23T22:59:11.227Z", + "Web/API/WebGL_API/Tutorial": { + "modified": "2019-03-23T22:48:50.519Z", "contributors": [ - "MarkelCuesta", - "asero82", - "javatlacati" + "SphinxKnight", + "lrlimon", + "fscholz" ] }, - "Web/API/Document/exitFullscreen": { - "modified": "2020-10-15T22:23:56.627Z", + "Web/API/WebGL_API/Tutorial/Adding_2D_content_to_a_WebGL_context": { + "modified": "2019-03-18T21:16:52.110Z", "contributors": [ - "davidmartinezfl" + "Nekete", + "Erik12Ixec", + "WHK102", + "COBRILL4" ] }, - "Web/API/Document/getElementById": { - "modified": "2019-03-23T23:46:23.291Z", + "Web/API/WebGL_API/Tutorial/Animating_objects_with_WebGL": { + "modified": "2019-03-23T23:20:38.388Z", "contributors": [ - "Enesimus", - "jlpindado", - "pclifecl", - "OLiiver", "fscholz", "teoli", - "tuxisma", - "Juan c c q" + "luziiann" ] }, - "Web/API/Document/getElementsByClassName": { - "modified": "2019-03-23T22:48:57.077Z", + "Web/API/WebGL_API/Tutorial/Animating_textures_in_WebGL": { + "modified": "2019-03-23T22:34:48.400Z", "contributors": [ - "JuanMacias", - "JungkookScript", - "ncaracci" + "pixelements" ] }, - "Web/API/Document/getElementsByName": { - "modified": "2019-03-18T21:37:32.461Z", + "Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL": { + "modified": "2019-03-23T23:06:04.656Z", "contributors": [ - "MikeGsus" + "fcanellas", + "Pablo_Bangueses", + "CarlosLinares", + "Inheritech", + "CandelarioGomez", + "fscholz", + "joeljose", + "Jorge0309" ] }, - "Web/API/Document/getElementsByTagName": { - "modified": "2019-03-23T23:50:32.110Z", + "Web/API/WebGL_API/Tutorial/Using_shaders_to_apply_color_in_WebGL": { + "modified": "2020-05-29T05:02:06.384Z", "contributors": [ - "SphinxKnight", - "fscholz", - "khalid32", - "teoli", - "HenryGR", - "Mgjbot" + "jmlocke1", + "Giovan" ] }, - "Web/API/Document/getElementsByTagNameNS": { - "modified": "2019-03-23T23:50:38.494Z", + "Web/API/WebRTC_API": { + "modified": "2020-05-01T03:28:58.714Z", "contributors": [ - "SphinxKnight", - "fscholz", - "khalid32", - "AlejandroSilva", - "leopic", - "HenryGR", - "Mgjbot" + "erito73", + "miguelsp" ] }, - "Web/API/Document/getSelection": { - "modified": "2019-03-23T22:54:50.239Z", + "Web/API/WebRTC_API/Protocols": { + "modified": "2020-05-01T03:41:11.993Z", "contributors": [ - "Diferno" + "erito73", + "ValeriaRamos" ] }, - "Web/API/Document/hasFocus": { - "modified": "2019-03-23T23:53:13.498Z", + "Web/API/WebSocket": { + "modified": "2019-03-18T20:53:48.099Z", "contributors": [ - "SphinxKnight", - "fscholz", - "khalid32", - "Mgjbot", - "Talisker", - "HenryGR" + "benja90", + "spachecojimenez", + "aranondo", + "dpineiden" ] }, - "Web/API/Document/head": { - "modified": "2019-03-23T22:55:43.504Z", + "Web/API/WebSocket/close_event": { + "modified": "2019-03-23T21:59:50.486Z", "contributors": [ - "federicobond" + "irenesmith", + "ExE-Boss", + "FLAVIOALFA" ] }, - "Web/API/Document/height": { - "modified": "2019-03-23T22:09:21.631Z", + "Web/API/WebSocket/onerror": { + "modified": "2020-10-15T22:13:54.439Z", "contributors": [ - "HarleySG" + "Bumxu" ] }, - "Web/API/Document/hidden": { - "modified": "2020-10-15T22:14:24.023Z", + "Web/API/WebSockets_API": { + "modified": "2019-05-21T02:54:41.622Z", "contributors": [ - "Elenito93" + "SphinxKnight", + "tpb", + "petisocarambanal", + "CesarBustios", + "mserracaldentey" ] }, - "Web/API/Document/importNode": { - "modified": "2020-10-15T21:52:00.631Z", + "Web/API/WebSockets_API/Writing_WebSocket_client_applications": { + "modified": "2019-05-21T02:54:42.026Z", "contributors": [ - "fscholz", - "wbamberg", - "AsLogd" + "SphinxKnight", + "neopablix", + "jevvilla", + "jvilla8a", + "AzazelN28", + "Unbrained", + "gabryk", + "MauroEldritch", + "frankzen" ] }, - "Web/API/Document/keydown_event": { - "modified": "2020-04-03T23:31:41.800Z", + "Web/API/WebVR_API": { + "modified": "2019-03-23T22:07:07.755Z", "contributors": [ - "camsa", - "irenesmith", - "ExE-Boss", - "fscholz", - "juan-ferrer-toribio" + "Alphaeolo", + "chrisdavidmills" ] }, - "Web/API/Document/keyup_event": { - "modified": "2019-04-18T03:50:20.204Z", + "Web/API/WebVR_API/Using_the_WebVR_API": { + "modified": "2020-10-12T08:06:57.683Z", "contributors": [ - "irenesmith", - "ExE-Boss", - "fscholz", - "gabojkz" + "SphinxKnight", + "MarioA19", + "geryescalier", + "karlalhdz" ] }, - "Web/API/Document/pointerLockElement": { - "modified": "2019-03-23T22:05:31.350Z", + "Web/API/WebVTT_API": { + "modified": "2020-10-15T22:33:07.538Z", "contributors": [ - "arquigames" + "Pablo-No" ] }, - "Web/API/Document/querySelector": { - "modified": "2019-03-23T22:58:51.923Z", + "Web/API/Web_Crypto_API": { + "modified": "2020-02-12T20:20:09.829Z", "contributors": [ - "BrodaNoel", - "Luis_Calvo", - "dannysalazar90" + "joseluisq", + "anfuca", + "haxdai" ] }, - "Web/API/Document/querySelectorAll": { - "modified": "2020-10-15T21:34:24.234Z", + "Web/API/Web_Speech_API": { + "modified": "2020-10-15T22:29:46.339Z", "contributors": [ - "chrisdavidmills", - "AlePerez92", - "padrecedano", - "lfottaviano", - "joeljose" + "dianarryanti707" ] }, - "Web/API/Document/readyState": { - "modified": "2019-03-23T22:46:17.268Z", + "Web/API/Web_Workers_API": { + "modified": "2020-04-14T23:36:47.242Z", "contributors": [ - "Codejobs" + "krebking", + "thepianist2", + "jsanmor" ] }, - "Web/API/Document/registerElement": { - "modified": "2019-03-23T22:58:15.536Z", + "Web/API/WheelEvent": { + "modified": "2019-03-23T22:40:53.687Z", "contributors": [ - "SphinxKnight", - "AlePerez92", - "mclo", - "chrisdavidmills" + "StripTM" ] }, - "Web/API/Document/scripts": { - "modified": "2019-03-23T22:57:42.662Z", + "Web/API/WheelEvent/deltaY": { + "modified": "2019-03-23T22:26:41.848Z", "contributors": [ - "MauroEldritch" + "Thargelion" ] }, - "Web/API/Document/scroll_event": { - "modified": "2020-04-13T22:20:51.709Z", + "Web/API/Window": { + "modified": "2020-08-14T20:26:23.156Z", "contributors": [ - "camsa", - "irenesmith", - "ExE-Boss", - "arkgast", + "Enesimus", + "Michelangeur", + "antoiba86", + "jjoselon", + "vggallego", "fscholz", - "PatoDeTuring", - "Thargelion" + "Crash", + "Monty", + "Markens", + "DR", + "Nathymig", + "Mgjbot" ] }, - "Web/API/Document/styleSheets": { - "modified": "2019-03-23T23:58:05.224Z", + "Web/API/Window/alert": { + "modified": "2019-03-23T22:27:29.008Z", "contributors": [ - "fscholz", - "jsx", - "teoli", - "HenryGR" + "israel-munoz" ] }, - "Web/API/Document/write": { - "modified": "2019-03-23T22:26:37.503Z", + "Web/API/Window/applicationCache": { + "modified": "2019-03-23T23:52:56.666Z", "contributors": [ - "JohnnyKB", - "bastiantowers" + "SphinxKnight", + "fscholz", + "AshfaqHossain", + "HenryGR", + "Mgjbot" ] }, - "Web/API/Document/writeln": { - "modified": "2019-03-23T22:21:05.956Z", + "Web/API/Window/cancelAnimationFrame": { + "modified": "2019-03-23T22:30:46.211Z", "contributors": [ - "mauroc8" + "khrizenriquez" ] }, - "Web/API/DocumentFragment": { - "modified": "2020-10-15T22:29:37.426Z", + "Web/API/Window/close": { + "modified": "2020-10-15T21:37:07.614Z", "contributors": [ - "JooseNavarro" + "SphinxKnight", + "dgrizzla", + "Siro_Diaz" ] }, - "Web/API/Document_object_model/Using_the_W3C_DOM_Level_1_Core/Example": { - "modified": "2019-03-23T22:06:28.946Z", + "Web/API/Window/closed": { + "modified": "2019-03-18T20:59:11.710Z", "contributors": [ - "BrodaNoel" + "SphinxKnight", + "developingo" ] }, - "Web/API/DragEvent": { - "modified": "2020-11-04T23:21:08.729Z", + "Web/API/Window/confirm": { + "modified": "2019-03-23T22:45:47.266Z", "contributors": [ - "AngelFQC" + "julian3xl" ] }, - "Web/API/Element": { - "modified": "2019-03-24T00:06:42.464Z", + "Web/API/Window/crypto": { + "modified": "2020-02-12T20:26:38.795Z", "contributors": [ - "carllewisc", - "JuanMacias", - "SphinxKnight", - "fscholz", - "teoli", - "webmaster", - "AshfaqHossain", - "MARCASTELEON", - "Markens", - "Mgjbot", - "Nathymig" - ] - }, - "Web/API/Element/accessKey": { - "modified": "2019-03-23T22:26:12.172Z", - "contributors": [ - "SoftwareRVG" + "joseluisq", + "AlePerez92", + "victorjavierss" ] }, - "Web/API/Element/animate": { - "modified": "2019-03-23T22:26:03.841Z", + "Web/API/Window/devicePixelRatio": { + "modified": "2019-03-23T22:33:20.853Z", "contributors": [ - "SoftwareRVG" + "Grijander81" ] }, - "Web/API/Element/attachShadow": { - "modified": "2020-10-15T22:29:44.635Z", + "Web/API/Window/dialogArguments": { + "modified": "2019-03-23T22:33:21.065Z", "contributors": [ - "aguilerajl" + "Grijander81" ] }, - "Web/API/Element/attributes": { - "modified": "2019-03-23T22:32:35.186Z", + "Web/API/Window/document": { + "modified": "2019-03-18T21:17:09.045Z", "contributors": [ "Grijander81" ] }, - "Web/API/Element/classList": { - "modified": "2019-08-07T11:56:45.170Z", + "Web/API/Window/frameElement": { + "modified": "2019-03-23T22:33:19.039Z", "contributors": [ - "AlePerez92", - "alkaithil", - "luispuchades" + "edmon1024", + "Grijander81" ] }, - "Web/API/Element/className": { - "modified": "2019-03-23T22:32:39.589Z", + "Web/API/Window/fullScreen": { + "modified": "2019-03-23T23:50:19.968Z", "contributors": [ - "AlePerez92", - "Grijander81" + "SphinxKnight", + "fscholz", + "khalid32", + "HenryGR", + "Mgjbot" ] }, - "Web/API/Element/click_event": { - "modified": "2019-03-18T20:47:32.813Z", + "Web/API/Window/getComputedStyle": { + "modified": "2019-03-23T23:58:07.622Z", "contributors": [ - "irenesmith", - "ExE-Boss", "fscholz", - "jvas28" + "jsx", + "teoli", + "HenryGR" ] }, - "Web/API/Element/clientHeight": { - "modified": "2019-03-18T20:59:01.264Z", + "Web/API/Window/getSelection": { + "modified": "2019-09-18T11:51:48.070Z", "contributors": [ - "SphinxKnight", - "maxijb", - "germanfr" + "AlePerez92", + "LittleSanti", + "fscholz", + "Mgjbot", + "DR" ] }, - "Web/API/Element/clientLeft": { - "modified": "2019-03-23T23:50:22.640Z", + "Web/API/Window/hashchange_event": { + "modified": "2019-04-01T11:56:33.015Z", "contributors": [ - "SphinxKnight", "fscholz", - "khalid32", - "HenryGR", - "Mgjbot" + "ExE-Boss", + "jorgerenteral" ] }, - "Web/API/Element/clientTop": { - "modified": "2019-03-23T23:50:18.628Z", + "Web/API/Window/history": { + "modified": "2020-10-15T21:43:45.922Z", "contributors": [ "SphinxKnight", - "fscholz", - "AshfaqHossain", - "HenryGR", - "Mgjbot" + "khrizenriquez" ] }, - "Web/API/Element/clientWidth": { - "modified": "2020-10-15T21:46:17.283Z", + "Web/API/Window/innerHeight": { + "modified": "2020-07-23T18:50:37.998Z", "contributors": [ - "SphinxKnight", - "Grijander81" + "dongerardor", + "alfredoWs" ] }, - "Web/API/Element/closest": { - "modified": "2020-10-15T21:51:29.500Z", + "Web/API/Window/localStorage": { + "modified": "2019-06-04T06:54:12.078Z", "contributors": [ - "AlePerez92" + "taumartin", + "nazarioa", + "McSonk", + "faliure", + "tinchosrok", + "DragShot", + "ianaya89" ] }, - "Web/API/Element/computedStyleMap": { - "modified": "2020-11-20T23:32:12.573Z", + "Web/API/Window/location": { + "modified": "2019-03-23T22:52:04.798Z", "contributors": [ - "mrkadium" + "khrizenriquez", + "MaFranceschi" ] }, - "Web/API/Element/currentStyle": { - "modified": "2019-03-23T22:26:01.738Z", + "Web/API/Window/locationbar": { + "modified": "2019-03-23T22:16:35.650Z", "contributors": [ - "SoftwareRVG" + "ivannieto" ] }, - "Web/API/Element/getAttribute": { - "modified": "2019-03-23T22:55:05.590Z", + "Web/API/Window/matchMedia": { + "modified": "2020-10-15T21:54:30.059Z", "contributors": [ - "germanfr", - "hawkins" + "AlePerez92", + "tipoqueno", + "tavo379" ] }, - "Web/API/Element/getAttributeNodeNS": { - "modified": "2019-03-18T21:40:41.705Z", + "Web/API/Window/menubar": { + "modified": "2019-03-23T22:33:13.331Z", "contributors": [ - "FcoJavierEsc" + "Grijander81" ] }, - "Web/API/Element/getBoundingClientRect": { - "modified": "2020-10-15T21:16:26.376Z", + "Web/API/Window/moveBy": { + "modified": "2020-10-15T22:08:26.636Z", "contributors": [ - "AlePerez92", - "slam", - "cristianmartinez", - "SphinxKnight", - "joseanpg", - "jzatarain", - "fscholz", - "jsx", - "HenryGR", - "Mgjbot" + "pedrofmb" ] }, - "Web/API/Element/getClientRects": { - "modified": "2019-03-23T23:50:31.325Z", + "Web/API/Window/navigator": { + "modified": "2019-03-23T23:20:37.914Z", "contributors": [ - "SphinxKnight", - "edhzsz", "fscholz", "khalid32", - "HenryGR", - "Mgjbot" + "tpb" ] }, - "Web/API/Element/getElementsByClassName": { - "modified": "2019-03-23T22:32:46.843Z", + "Web/API/Window/offline_event": { + "modified": "2019-04-30T14:21:22.454Z", "contributors": [ - "Grijander81" + "wbamberg", + "irenesmith", + "Daniel-VQ" ] }, - "Web/API/Element/getElementsByTagName": { - "modified": "2019-03-23T23:53:30.735Z", + "Web/API/Window/open": { + "modified": "2020-04-13T14:31:02.220Z", "contributors": [ + "fj-ramirez", + "BubuAnabelas", + "jccharlie90", "SphinxKnight", - "fscholz", - "khalid32", - "Mgjbot", - "HenryGR" + "VictorAbdon", + "jjoselon" ] }, - "Web/API/Element/getElementsByTagNameNS": { - "modified": "2019-03-18T21:15:33.018Z", + "Web/API/Window/opener": { + "modified": "2019-03-23T22:46:00.877Z", "contributors": [ - "cguimaraenz" + "carlosmunozrodriguez", + "f3rbarraza" ] }, - "Web/API/Element/hasAttribute": { - "modified": "2019-03-23T22:12:50.721Z", + "Web/API/Window/outerHeight": { + "modified": "2019-03-18T21:15:44.722Z", "contributors": [ - "ElChiniNet" + "rlopezAyala", + "GianlucaBobbio" ] }, - "Web/API/Element/id": { - "modified": "2019-03-23T22:26:11.048Z", + "Web/API/Window/outerWidth": { + "modified": "2019-03-23T22:04:23.293Z", "contributors": [ - "SoftwareRVG" + "shadairafael" ] }, - "Web/API/Element/innerHTML": { - "modified": "2019-03-18T20:58:51.922Z", + "Web/API/Window/print": { + "modified": "2019-07-11T23:43:54.339Z", "contributors": [ - "SphinxKnight", - "IsaacAaron", - "BrodaNoel", - "CristhianLora1", - "fscholz", - "teoli", - "JAparici" + "EstebanDalelR", + "ErikMj69" ] }, - "Web/API/Element/insertAdjacentElement": { - "modified": "2020-12-03T10:36:12.400Z", + "Web/API/Window/prompt": { + "modified": "2019-03-23T22:20:58.413Z", "contributors": [ - "AlePerez92", - "alexlndn", - "AgustinPrieto" + "israel-munoz" ] }, - "Web/API/Element/insertAdjacentHTML": { - "modified": "2020-10-15T21:56:01.516Z", + "Web/API/Window/requestAnimationFrame": { + "modified": "2020-07-05T08:38:54.640Z", "contributors": [ "AlePerez92", - "mikekrn" + "mauriciabad", + "fortil", + "andrpueb", + "fscholz", + "jbalsas" ] }, - "Web/API/Element/localName": { - "modified": "2019-03-23T22:26:08.984Z", + "Web/API/Window/requestIdleCallback": { + "modified": "2020-12-05T00:33:07.625Z", "contributors": [ - "SoftwareRVG" + "gnunezr", + "jsolana" ] }, - "Web/API/Element/matches": { - "modified": "2020-12-06T16:23:07.481Z", + "Web/API/Window/scroll": { + "modified": "2020-10-15T21:54:58.717Z", "contributors": [ "AlePerez92", - "amIsmael", - "nbouvrette", - "Grijander81" + "patoezequiel" ] }, - "Web/API/Element/mousedown_event": { - "modified": "2019-03-18T20:41:57.554Z", + "Web/API/Window/scrollBy": { + "modified": "2019-03-23T22:40:05.334Z", "contributors": [ - "irenesmith", - "ExE-Boss", - "fscholz", - "marydn" - ] - }, - "Web/API/Element/name": { - "modified": "2019-03-23T22:26:11.317Z", - "contributors": [ - "SoftwareRVG" + "plaso", + "Bcd" ] }, - "Web/API/Element/namespaceURI": { - "modified": "2019-03-23T22:25:51.573Z", + "Web/API/Window/scrollTo": { + "modified": "2019-03-23T22:05:41.259Z", "contributors": [ - "SoftwareRVG" + "gyroscopico" ] }, - "Web/API/Element/ongotpointercapture": { - "modified": "2019-03-23T22:25:49.346Z", + "Web/API/Window/scrollX": { + "modified": "2019-03-18T21:15:11.745Z", "contributors": [ - "SoftwareRVG" + "Grijander81" ] }, - "Web/API/Element/onlostpointercapture": { - "modified": "2019-03-23T22:25:49.190Z", + "Web/API/Window/scrollY": { + "modified": "2019-03-23T22:53:30.651Z", "contributors": [ - "SoftwareRVG" + "MaFranceschi" ] }, - "Web/API/Element/onwheel": { - "modified": "2019-03-18T21:09:09.483Z", + "Web/API/Window/sessionStorage": { + "modified": "2019-03-23T22:57:50.655Z", "contributors": [ - "fscholz", - "SoftwareRVG" + "svera", + "pedromagnus", + "develasquez" ] }, - "Web/API/Element/outerHTML": { - "modified": "2019-03-23T22:32:38.203Z", + "Web/API/Window/showModalDialog": { + "modified": "2019-03-18T20:58:55.311Z", "contributors": [ + "SphinxKnight", + "BubuAnabelas", "Grijander81" ] }, - "Web/API/Element/prefix": { - "modified": "2019-03-23T22:25:56.753Z", + "Web/API/Window/sidebar": { + "modified": "2019-03-23T22:02:56.395Z", "contributors": [ - "SoftwareRVG" + "IsaacSchemm" ] }, - "Web/API/Element/querySelector": { - "modified": "2020-10-01T13:45:10.425Z", + "Web/API/Window/statusbar": { + "modified": "2019-03-23T22:14:36.556Z", "contributors": [ - "Augusto-Ruiz", - "Luis_Calvo", - "Fx-Enlcxx" + "UshioSan" ] }, - "Web/API/Element/removeAttribute": { - "modified": "2019-03-23T22:32:43.147Z", + "Web/API/WindowEventHandlers": { + "modified": "2019-03-23T23:01:29.892Z", "contributors": [ - "AlePerez92", - "Grijander81" + "fscholz" ] }, - "Web/API/Element/requestFullScreen": { - "modified": "2019-03-23T22:46:59.466Z", + "Web/API/WindowEventHandlers/onbeforeunload": { + "modified": "2019-03-23T23:22:06.132Z", "contributors": [ - "joseamn1" + "fscholz", + "AshfaqHossain", + "jota1410" ] }, - "Web/API/Element/runtimeStyle": { - "modified": "2019-03-23T22:25:35.378Z", + "Web/API/WindowEventHandlers/onhashchange": { + "modified": "2019-03-23T22:49:36.790Z", "contributors": [ - "SoftwareRVG" + "AlePerez92", + "daesnorey" ] }, - "Web/API/Element/scrollHeight": { - "modified": "2020-09-19T11:38:52.843Z", + "Web/API/WindowEventHandlers/onpopstate": { + "modified": "2020-10-15T22:19:35.746Z", "contributors": [ - "amfolgar", - "SphinxKnight", - "SoftwareRVG" + "borxdev", + "jccuevas" ] }, - "Web/API/Element/scrollIntoView": { - "modified": "2020-08-02T20:51:14.523Z", + "Web/API/WindowOrWorkerGlobalScope": { + "modified": "2019-03-23T22:16:40.400Z", "contributors": [ - "maketas", - "avaleriani", - "magorismagor", - "germanfr" + "ivannieto", + "chrisdavidmills" ] }, - "Web/API/Element/scrollLeft": { - "modified": "2019-03-18T20:59:11.327Z", + "Web/API/WindowOrWorkerGlobalScope/caches": { + "modified": "2019-03-23T22:16:45.016Z", "contributors": [ - "SphinxKnight", - "SoftwareRVG" + "ivannieto" ] }, - "Web/API/Element/scrollTop": { - "modified": "2019-03-23T22:32:41.577Z", + "Web/API/WindowOrWorkerGlobalScope/createImageBitmap": { + "modified": "2020-10-15T22:14:17.553Z", "contributors": [ - "Grijander81" + "Bumxu" ] }, - "Web/API/Element/scrollTopMax": { - "modified": "2019-03-23T22:16:03.156Z", + "Web/API/WindowOrWorkerGlobalScope/fetch": { + "modified": "2020-10-15T22:01:57.457Z", "contributors": [ - "lizzie136" + "fscholz", + "jagomf" ] }, - "Web/API/Element/scrollWidth": { - "modified": "2020-10-15T21:46:17.244Z", + "Web/API/WindowOrWorkerGlobalScope/indexedDB": { + "modified": "2019-03-23T22:16:36.537Z", "contributors": [ - "SphinxKnight", - "Grijander81" + "ivannieto" ] }, - "Web/API/Element/setAttribute": { - "modified": "2019-03-23T23:58:09.577Z", + "Web/API/WindowOrWorkerGlobalScope/isSecureContext": { + "modified": "2019-03-23T22:16:45.834Z", "contributors": [ - "AlePerez92", - "fscholz", - "AshfaqHossain", - "teoli", - "HenryGR" + "ivannieto" ] }, - "Web/API/Element/setAttributeNS": { - "modified": "2019-03-23T22:29:35.252Z", + "Web/API/Worker": { + "modified": "2019-03-23T22:48:01.797Z", "contributors": [ - "developersoul" + "benjroy" ] }, - "Web/API/Element/setCapture": { - "modified": "2019-03-23T22:23:40.163Z", + "Web/API/Worker/postMessage": { + "modified": "2020-04-23T06:46:10.302Z", "contributors": [ - "wbamberg", - "SoftwareRVG" + "aguilahorus", + "cristyansv", + "mar777" ] }, - "Web/API/Element/shadowRoot": { - "modified": "2020-10-15T22:21:04.049Z", + "Web/API/Worker/terminate": { + "modified": "2019-03-23T22:19:14.265Z", "contributors": [ - "quintero_japon" + "AzazelN28" ] }, - "Web/API/Element/tagName": { - "modified": "2019-03-23T23:53:26.081Z", + "Web/API/XMLHttpRequest": { + "modified": "2019-05-02T19:52:03.482Z", "contributors": [ - "SphinxKnight", - "fscholz", - "khalid32", + "wbamberg", + "Juvenal-yescas", + "ojgarciab", + "Sheppy", + "dgrcode", + "HadesDX", + "StripTM", + "mitogh", + "deimidis", "Mgjbot", - "HenryGR" + "Jorolo" ] }, - "Web/API/Element/wheel_event": { - "modified": "2019-04-08T07:24:47.493Z", + "Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests": { + "modified": "2019-03-23T22:05:30.902Z", "contributors": [ - "irenesmith", - "fscholz", - "ExE-Boss", - "dimuziop", - "Thargelion", - "PRDeving" + "Juvenal-yescas" ] }, - "Web/API/ElementosHTMLparaVideo": { - "modified": "2019-06-22T13:44:40.927Z", + "Web/API/XMLHttpRequest/Using_XMLHttpRequest": { + "modified": "2020-03-17T04:09:47.273Z", "contributors": [ - "Santi72Alc", - "myrnafig" + "jccuevas", + "camsa", + "david_ru", + "cesaruve", + "Sheppy", + "Sebastianz", + "iiegor", + "javierdp", + "bardackx", + "teoli", + "inma_610" ] }, - "Web/API/Event": { - "modified": "2019-03-24T00:00:03.889Z", + "Web/API/XMLHttpRequest/abort": { + "modified": "2019-03-23T22:12:16.683Z", "contributors": [ - "wbamberg", - "jesmarquez", - "fscholz", - "cesardelahoz", - "Mgjbot", - "Markens", - "DR", - "Nathymig" + "Sheppy", + "todomagichere" ] }, - "Web/API/Event/Event": { - "modified": "2020-10-15T21:51:25.582Z", + "Web/API/XMLHttpRequest/onreadystatechange": { + "modified": "2019-03-23T22:20:14.868Z", "contributors": [ - "fscholz", - "malonson" + "Sheppy", + "theUncanny" ] }, - "Web/API/Event/bubbles": { - "modified": "2019-03-23T23:50:25.843Z", + "Web/API/XMLHttpRequest/responseText": { + "modified": "2019-03-23T22:09:05.708Z", "contributors": [ - "SphinxKnight", - "DeiberChacon", - "fscholz", - "khalid32", - "HenryGR", - "Mgjbot" + "midnight25" ] }, - "Web/API/Event/cancelable": { - "modified": "2019-03-23T23:53:29.694Z", + "Web/API/XMLHttpRequest/timeout": { + "modified": "2020-10-15T22:26:49.508Z", "contributors": [ - "fscholz", - "hardhik", - "AshfaqHossain", - "Mgjbot", - "HenryGR" + "mmednik" ] }, - "Web/API/Event/createEvent": { - "modified": "2019-03-23T22:01:26.841Z", + "Web/API/XMLHttpRequestEventTarget": { + "modified": "2020-10-15T22:26:08.879Z" + }, + "Web/API/XMLHttpRequestEventTarget/onload": { + "modified": "2020-10-15T22:26:03.172Z", "contributors": [ - "AlePerez92" + "Akafadam" ] }, - "Web/API/Event/currentTarget": { - "modified": "2020-10-15T21:56:21.779Z", + "Web/API/console/assert": { + "modified": "2019-03-23T22:47:53.587Z", "contributors": [ + "Takumakun", "AlePerez92", - "KacosPro", - "roberbnd" + "danycoro" ] }, - "Web/API/Event/defaultPrevented": { - "modified": "2019-03-23T23:06:29.767Z", + "Web/API/notification": { + "modified": "2019-06-28T05:54:12.854Z", "contributors": [ - "AlePerez92", + "paumoreno", + "hhcarmenate", + "RockLee-BC", + "francotalarico93", + "frossi933", + "Irvandoval", + "LuyisiMiger", "fscholz", - "matajm" + "elfoxero" ] }, - "Web/API/Event/initEvent": { - "modified": "2019-03-23T23:53:14.885Z", + "Web/API/notification/body": { + "modified": "2019-03-23T22:59:34.974Z", "contributors": [ - "SphinxKnight", - "fscholz", - "AndresSaa", - "AshfaqHossain", - "Mgjbot", - "HenryGR" + "joxhker" ] }, - "Web/API/Event/preventDefault": { - "modified": "2019-03-23T23:53:27.022Z", + "Web/API/notification/dir": { + "modified": "2019-03-23T22:59:36.852Z", "contributors": [ - "SphinxKnight", - "fscholz", - "khalid32", - "Mgjbot", - "HenryGR" + "joxhker" ] }, - "Web/API/Event/stopPropagation": { - "modified": "2019-03-18T20:37:26.213Z", + "Web/API/notification/icon": { + "modified": "2019-03-23T22:59:32.492Z", "contributors": [ - "sebaLinares", - "theskear", - "AlePerez92" + "joxhker" ] }, - "Web/API/Event/target": { - "modified": "2020-11-21T17:52:42.977Z", + "Web/API/notification/onclick": { + "modified": "2019-03-23T22:11:55.774Z", "contributors": [ - "fernandoarmonellifiedler", - "luchosr", - "Eyurivilc", - "roberbnd" + "AndresTonello" ] }, - "Web/API/Event/type": { - "modified": "2020-10-15T21:21:03.258Z", + "Web/API/notification/permission": { + "modified": "2019-03-23T22:07:38.974Z", "contributors": [ - "AlePerez92", - "javier1nc", - "fscholz", - "Chacho" + "alanmacgowan", + "IXTRUnai" ] }, - "Web/API/EventListener": { - "modified": "2019-03-23T22:49:37.176Z", + "Web/API/notification/requestPermission": { + "modified": "2019-03-23T22:50:37.341Z", "contributors": [ - "gdlm91", - "japho" + "MarkelCuesta", + "jezdez", + "Davdriver" ] }, - "Web/API/EventSource": { - "modified": "2019-03-23T22:10:23.912Z", + "Web/Accessibility/ARIA": { + "modified": "2019-03-23T22:32:50.943Z", "contributors": [ - "Jabi" + "AlejandroC92", + "megatux", + "guumo", + "VNWK", + "imelenchon", + "teoli" ] }, - "Web/API/EventSource/onopen": { - "modified": "2019-03-23T22:03:59.180Z", + "Web/Accessibility/ARIA/ARIA_Techniques": { + "modified": "2019-03-23T22:46:27.954Z", "contributors": [ - "Hoosep" + "chrisdavidmills" ] }, - "Web/API/EventTarget": { - "modified": "2020-10-26T17:08:31.808Z", + "Web/Accessibility/ARIA/ARIA_Techniques/Using_the_alert_role": { + "modified": "2019-03-18T21:31:32.978Z", "contributors": [ - "Ktoxcon", - "diazpolanco13", - "jorgeherrera9103", - "fscholz" + "IsraelFloresDGA", + "mayrars" ] }, - "Web/API/EventTarget/addEventListener": { - "modified": "2020-10-24T17:14:12.317Z", + "Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute": { + "modified": "2020-12-02T07:09:06.472Z", "contributors": [ - "codesandtags", - "wbamberg", - "padrecedano", - "LuxDie", - "juanbrujo", - "StripTM", - "fscholz", - "samurai-code", - "Josias", - "edulon", - "Chacho" + "AlePerez92", + "mitsurugi", + "fraboto", + "blanchart", + "ErikMj69", + "NelsonWF" ] }, - "Web/API/EventTarget/dispatchEvent": { - "modified": "2020-05-25T14:53:28.357Z", + "Web/Accessibility/ARIA/forms": { + "modified": "2020-08-13T01:50:29.740Z", + "contributors": [ + "Nachec", + "IsraelFloresDGA", + "malonson" + ] + }, + "Web/CSS": { + "modified": "2020-10-25T05:19:47.416Z", "contributors": [ - "OneLoneFox", "SphinxKnight", - "fscholz", - "jsx", + "redondomoralesmelanny", + "Dolacres", + "boualidev", + "Enesimus", + "chrisdavidmills", + "NavetsArev", + "alazzuri", + "IsraelFloresDGA", + "lajaso", + "arturoblack", + "rogeliomtx", + "anecto", "teoli", + "Luis_Calvo", + "alex_dm", + "ethertank", + "StripTM", + "inma_610", + "another_sam", + "fscholz", + "Wrongloop", + "Nathymig", "Mgjbot", - "HenryGR" + "Nukeador", + "Jorolo", + "Lopez", + "Takenbot", + "Manu", + "Elrohir" ] }, - "Web/API/EventTarget/removeEventListener": { - "modified": "2020-10-15T21:33:28.829Z", + "Web/CSS/--*": { + "modified": "2020-11-18T17:43:24.329Z", "contributors": [ - "IsraelFloresDGA", - "everblut", - "cmadrono" + "jemilionautoch" ] }, - "Web/API/FetchEvent": { - "modified": "2020-11-15T12:19:50.961Z", + "Web/CSS/-moz-context-properties": { + "modified": "2020-10-15T22:13:14.061Z", "contributors": [ - "kuntur-studio", - "pavilion", - "fasalgad" + "Adorta4" ] }, - "Web/API/Fetch_API": { - "modified": "2020-10-15T21:38:02.526Z", + "Web/CSS/-moz-float-edge": { + "modified": "2019-03-23T22:36:02.702Z", "contributors": [ - "PacoVela", - "SSantiago90", - "erpheus", - "AlePerez92", - "robermorales", - "jmcarnero", - "enlinea777" + "pekechis" ] }, - "Web/API/Fetch_API/Conceptos_basicos": { - "modified": "2019-03-18T21:24:00.327Z", + "Web/CSS/-moz-force-broken-image-icon": { + "modified": "2019-03-23T23:21:21.736Z", "contributors": [ - "IsraelFloresDGA" + "Sebastianz", + "teoli", + "jota1410" ] }, - "Web/API/Fetch_API/Utilizando_Fetch": { - "modified": "2020-12-08T11:29:15.934Z", + "Web/CSS/-moz-image-rect": { + "modified": "2019-03-23T22:35:59.460Z", "contributors": [ - "mondeja", - "arturojimenezmedia", - "camsa", - "jccuevas", - "MateoVelilla", - "crimoniv", - "danielM9521", - "SphinxKnight", - "Ruluk", - "jpuerto", - "baumannzone", - "anjerago", - "icedrek", - "royexr", - "AlePerez92" + "pekechis" ] }, - "Web/API/File": { - "modified": "2020-10-15T21:37:53.420Z", + "Web/CSS/-moz-image-region": { + "modified": "2019-03-23T22:35:58.872Z", "contributors": [ - "IsraelFloresDGA", - "mattkgross", - "AshWilliams" + "pekechis" ] }, - "Web/API/File/Using_files_from_web_applications": { - "modified": "2019-03-24T00:06:11.527Z", + "Web/CSS/-moz-orient": { + "modified": "2019-03-23T22:38:38.798Z", "contributors": [ - "chrisdavidmills", - "israelfl", - "pacommozilla", "teoli", - "mare", - "Izel" + "anytameleiro" ] }, - "Web/API/File/fileName": { - "modified": "2020-02-09T09:40:59.258Z", + "Web/CSS/-moz-outline-radius": { + "modified": "2019-03-23T22:35:49.017Z", "contributors": [ - "blanchart", - "IsraelFloresDGA", - "BrodaNoel" + "BubuAnabelas", + "teoli", + "Simplexible", + "Prinz_Rana", + "pekechis" ] }, - "Web/API/File/lastModifiedDate": { - "modified": "2019-03-23T22:06:34.338Z", + "Web/CSS/-moz-outline-radius-bottomleft": { + "modified": "2019-03-23T22:35:52.557Z", "contributors": [ - "BrodaNoel" + "pekechis" ] }, - "Web/API/File/name": { - "modified": "2020-10-15T21:56:43.088Z", + "Web/CSS/-moz-outline-radius-bottomright": { + "modified": "2019-03-23T22:35:53.397Z", "contributors": [ - "IsraelFloresDGA", - "BrodaNoel" + "pekechis" ] }, - "Web/API/File/type": { - "modified": "2020-10-15T22:26:46.640Z", + "Web/CSS/-moz-outline-radius-topleft": { + "modified": "2019-03-23T22:35:51.509Z", "contributors": [ - "IsraelFloresDGA" + "pekechis" ] }, - "Web/API/File/webkitRelativePath": { - "modified": "2019-03-23T22:06:35.128Z", + "Web/CSS/-moz-outline-radius-topright": { + "modified": "2019-03-23T22:35:44.264Z", "contributors": [ - "BrodaNoel" + "pekechis" ] }, - "Web/API/FileError": { - "modified": "2019-03-23T22:51:12.244Z", + "Web/CSS/-moz-user-focus": { + "modified": "2019-03-23T22:35:52.089Z", "contributors": [ - "Jarvanux" + "teoli", + "pekechis" ] }, - "Web/API/FileReader": { - "modified": "2019-03-23T23:04:14.656Z", + "Web/CSS/-moz-user-input": { + "modified": "2019-03-23T22:35:52.458Z", "contributors": [ - "JuanjoVlado", - "V.Morantes", - "israelfl", - "Carlos-T", - "Clunaenc", - "fscholz", - "cm_rocanroll" + "pekechis" ] }, - "Web/API/FileReader/onload": { - "modified": "2019-03-23T22:18:25.451Z", + "Web/CSS/-webkit-border-before": { + "modified": "2019-03-23T22:35:46.245Z", "contributors": [ - "DaniMartiRamirez" + "teoli", + "pekechis" ] }, - "Web/API/FileReader/readAsArrayBuffer": { - "modified": "2019-03-23T22:49:37.062Z", + "Web/CSS/-webkit-box-reflect": { + "modified": "2019-03-23T22:35:45.474Z", "contributors": [ - "MarcoZepeda" + "teoli", + "pekechis" ] }, - "Web/API/FileReader/readAsDataURL": { - "modified": "2019-03-23T22:48:53.339Z", + "Web/CSS/-webkit-mask-attachment": { + "modified": "2019-03-23T22:35:53.127Z", "contributors": [ - "teoli", - "empirreamm", - "developersoul" + "pekechis" ] }, - "Web/API/FileReader/readAsText": { - "modified": "2019-03-23T22:11:54.836Z", + "Web/CSS/-webkit-mask-box-image": { + "modified": "2019-03-23T22:35:44.795Z", "contributors": [ - "owaremx" + "Sebastianz", + "Prinz_Rana", + "pekechis" ] }, - "Web/API/FileReader/result": { - "modified": "2020-10-15T22:16:53.945Z", + "Web/CSS/-webkit-mask-composite": { + "modified": "2019-03-23T22:35:49.602Z", "contributors": [ - "carlosbulnes" + "pekechis" ] }, - "Web/API/FileSystem": { - "modified": "2019-07-04T14:31:32.136Z", + "Web/CSS/-webkit-mask-position-x": { + "modified": "2019-03-23T22:34:17.919Z", "contributors": [ - "lperezp", - "jpmontoya182" + "teoli", + "pekechis" ] }, - "Web/API/Fullscreen_API": { - "modified": "2019-03-23T22:19:43.566Z", + "Web/CSS/-webkit-mask-position-y": { + "modified": "2019-03-23T22:34:11.674Z", "contributors": [ - "wbamberg", - "israel-munoz" + "teoli", + "pekechis" ] }, - "Web/API/GamepadButton": { - "modified": "2020-10-15T22:31:36.770Z", + "Web/CSS/-webkit-mask-repeat-x": { + "modified": "2019-03-23T22:34:04.348Z", "contributors": [ - "kenliten" + "pekechis" ] }, - "Web/API/Gamepad_API": { - "modified": "2020-10-15T22:24:50.048Z", + "Web/CSS/-webkit-mask-repeat-y": { + "modified": "2019-03-23T22:34:06.535Z", "contributors": [ - "LeonEmil" + "pekechis" ] }, - "Web/API/Geolocation": { - "modified": "2019-03-23T23:21:41.383Z", + "Web/CSS/-webkit-overflow-scrolling": { + "modified": "2020-10-15T21:44:50.401Z", "contributors": [ "AlePerez92", - "fscholz", - "AJMG" + "teoli", + "natav", + "pekechis" ] }, - "Web/API/Geolocation/clearWatch": { - "modified": "2019-03-23T23:21:31.757Z", + "Web/CSS/-webkit-print-color-adjust": { + "modified": "2019-03-23T22:35:50.908Z", "contributors": [ - "franklevel", - "fscholz", - "AJMG" + "teoli", + "pekechis" ] }, - "Web/API/Geolocation/getCurrentPosition": { - "modified": "2019-03-23T23:21:46.266Z", + "Web/CSS/-webkit-tap-highlight-color": { + "modified": "2019-03-23T22:35:33.059Z", "contributors": [ - "AlePerez92", - "fscholz", - "lupomontero", - "AJMG" + "pekechis" ] }, - "Web/API/Geolocation/watchPosition": { - "modified": "2019-03-23T23:21:44.720Z", + "Web/CSS/-webkit-text-fill-color": { + "modified": "2019-03-23T22:35:41.363Z", "contributors": [ - "AlePerez92", - "fscholz", - "AJMG" + "pekechis" ] }, - "Web/API/GeolocationCoordinates": { - "modified": "2019-12-10T09:34:21.214Z", + "Web/CSS/-webkit-text-stroke": { + "modified": "2020-11-09T04:49:08.502Z", "contributors": [ - "chrisdavidmills", - "AlePerez92" + "sideshowbarker", + "codingdudecom", + "NachoNav", + "pekechis" ] }, - "Web/API/GeolocationCoordinates/latitude": { - "modified": "2019-12-10T09:34:21.409Z", + "Web/CSS/-webkit-text-stroke-color": { + "modified": "2019-03-23T22:35:34.688Z", "contributors": [ - "chrisdavidmills", - "elxris" + "teoli", + "pekechis" ] }, - "Web/API/GeolocationPosition": { - "modified": "2020-10-15T22:10:48.604Z", + "Web/CSS/-webkit-text-stroke-width": { + "modified": "2019-03-23T22:35:36.221Z", "contributors": [ - "chrisdavidmills", - "sergitxu" + "pekechis" ] }, - "Web/API/GlobalEventHandlers": { - "modified": "2020-10-15T21:33:09.443Z", + "Web/CSS/-webkit-touch-callout": { + "modified": "2019-03-23T22:35:37.578Z", "contributors": [ - "Nachec", - "fscholz" + "teoli", + "rankill", + "pekechis" ] }, - "Web/API/GlobalEventHandlers/onblur": { - "modified": "2019-03-23T22:33:17.308Z", + "Web/CSS/:-moz-broken": { + "modified": "2019-03-23T22:34:12.269Z", "contributors": [ - "Grijander81" + "pekechis" ] }, - "Web/API/GlobalEventHandlers/onchange": { - "modified": "2019-03-23T22:18:11.571Z", + "Web/CSS/:-moz-drag-over": { + "modified": "2019-03-23T22:34:06.375Z", "contributors": [ - "gama" + "pekechis" ] }, - "Web/API/GlobalEventHandlers/onclick": { - "modified": "2019-08-28T11:37:06.287Z", + "Web/CSS/:-moz-first-node": { + "modified": "2019-03-23T22:34:12.741Z", "contributors": [ - "J-Lobo", - "Noreen", - "gama" + "pekechis" ] }, - "Web/API/GlobalEventHandlers/onclose": { - "modified": "2020-10-15T22:12:16.407Z", + "Web/CSS/:-moz-focusring": { + "modified": "2019-03-23T22:34:12.588Z", "contributors": [ - "alexisrazok" + "teoli", + "pekechis" ] }, - "Web/API/GlobalEventHandlers/onerror": { - "modified": "2019-03-23T22:53:42.268Z", + "Web/CSS/:-moz-handler-blocked": { + "modified": "2019-03-23T22:33:34.259Z", "contributors": [ - "wbamberg", - "galegosimpatico" + "pekechis" ] }, - "Web/API/GlobalEventHandlers/onfocus": { - "modified": "2019-03-18T21:31:41.059Z", + "Web/CSS/:-moz-handler-crashed": { + "modified": "2019-03-23T22:33:27.000Z", "contributors": [ - "ANDRUS74" + "pekechis" ] }, - "Web/API/GlobalEventHandlers/oninput": { - "modified": "2019-03-23T22:55:01.733Z", + "Web/CSS/:-moz-handler-disabled": { + "modified": "2019-03-23T22:33:35.339Z", "contributors": [ - "Diegosolo" + "pekechis" ] }, - "Web/API/GlobalEventHandlers/onkeydown": { - "modified": "2019-03-18T21:31:44.954Z", + "Web/CSS/:-moz-last-node": { + "modified": "2019-03-18T21:15:45.566Z", "contributors": [ - "ANDRUS74" + "pekechis" ] }, - "Web/API/GlobalEventHandlers/onkeyup": { - "modified": "2019-03-18T21:31:50.304Z", + "Web/CSS/:-moz-list-bullet": { + "modified": "2019-03-23T22:29:23.137Z", "contributors": [ - "ANDRUS74" + "pekechis" ] }, - "Web/API/GlobalEventHandlers/onload": { - "modified": "2019-03-23T23:33:14.527Z", + "Web/CSS/:-moz-list-number": { + "modified": "2019-03-23T22:29:22.603Z", "contributors": [ - "fscholz", - "khalid32", - "ehecatl" + "pekechis" ] }, - "Web/API/GlobalEventHandlers/onloadedmetadata": { - "modified": "2020-10-15T22:34:40.071Z", + "Web/CSS/:-moz-loading": { + "modified": "2019-03-23T22:33:38.436Z", "contributors": [ - "winxde" + "pekechis" ] }, - "Web/API/GlobalEventHandlers/onresize": { - "modified": "2019-03-23T22:38:35.801Z", + "Web/CSS/:-moz-locale-dir(ltr)": { + "modified": "2019-03-23T22:33:43.908Z", "contributors": [ - "NevinSantana" + "pekechis" ] }, - "Web/API/GlobalEventHandlers/onscroll": { - "modified": "2019-03-23T22:33:14.134Z", + "Web/CSS/:-moz-locale-dir(rtl)": { + "modified": "2019-03-23T22:33:44.356Z", "contributors": [ - "Grijander81" + "pekechis" ] }, - "Web/API/GlobalEventHandlers/onselect": { - "modified": "2019-03-23T22:33:14.413Z", + "Web/CSS/:-moz-only-whitespace": { + "modified": "2019-03-23T22:33:33.786Z", "contributors": [ - "Grijander81" + "pekechis" ] }, - "Web/API/GlobalEventHandlers/onselectstart": { - "modified": "2019-03-18T21:23:16.974Z", + "Web/CSS/:-moz-submit-invalid": { + "modified": "2019-03-23T22:33:36.639Z", "contributors": [ - "Grijander81" + "pekechis" ] }, - "Web/API/GlobalEventHandlers/onsubmit": { - "modified": "2019-03-18T21:31:41.533Z", + "Web/CSS/:-moz-suppressed": { + "modified": "2019-03-23T22:33:37.212Z", "contributors": [ - "ANDRUS74" + "pekechis" ] }, - "Web/API/GlobalEventHandlers/ontouchstart": { - "modified": "2019-03-23T22:32:02.059Z", + "Web/CSS/:-moz-ui-valid": { + "modified": "2019-03-23T22:29:23.305Z", "contributors": [ - "AlePerez92" + "teoli", + "pekechis" ] }, - "Web/API/GlobalEventHandlers/onunload": { - "modified": "2019-03-23T23:39:28.498Z", + "Web/CSS/:-moz-user-disabled": { + "modified": "2019-03-23T22:30:53.713Z", "contributors": [ - "fscholz", - "khalid32", - "Sheppy" + "pekechis" ] }, - "Web/API/HTMLAnchorElement": { - "modified": "2019-03-18T21:42:27.257Z", + "Web/CSS/:-moz-window-inactive": { + "modified": "2019-03-23T22:30:43.777Z", "contributors": [ - "BubuAnabelas", - "LUISTGMDN" + "teoli", + "pekechis" ] }, - "Web/API/HTMLAudioElement": { - "modified": "2019-03-24T00:05:48.645Z", + "Web/CSS/::-moz-color-swatch": { + "modified": "2020-10-15T22:13:15.247Z", "contributors": [ - "wbamberg", - "fscholz", - "teoli", - "inma_610" + "Adorta4" ] }, - "Web/API/HTMLCanvasElement": { - "modified": "2019-03-23T22:50:27.840Z", + "Web/CSS/::-moz-page": { + "modified": "2019-03-23T22:29:23.000Z", "contributors": [ - "AshWilliams" + "teoli", + "pekechis" ] }, - "Web/API/HTMLCanvasElement/getContext": { - "modified": "2019-03-23T22:18:36.564Z", + "Web/CSS/::-moz-page-sequence": { + "modified": "2019-03-23T22:29:18.734Z", "contributors": [ - "OrlandoIsay" + "teoli", + "pekechis" ] }, - "Web/API/HTMLCanvasElement/height": { - "modified": "2019-03-23T22:47:48.394Z", + "Web/CSS/::-moz-progress-bar": { + "modified": "2019-03-23T22:29:21.640Z", "contributors": [ - "empirreamm" + "lajaso", + "pekechis" ] }, - "Web/API/HTMLCanvasElement/toBlob": { - "modified": "2019-03-23T22:44:55.955Z", + "Web/CSS/::-moz-range-progress": { + "modified": "2019-03-23T22:28:49.325Z", "contributors": [ - "kodamirmo" + "teoli", + "pekechis" ] }, - "Web/API/HTMLCanvasElement/toDataURL": { - "modified": "2020-10-15T21:38:42.950Z", + "Web/CSS/::-moz-range-thumb": { + "modified": "2019-03-23T22:28:56.558Z", "contributors": [ - "jagomf", - "calmsz", - "genuinefafa", - "empirreamm" + "teoli", + "pekechis" ] }, - "Web/API/HTMLCanvasElement/width": { - "modified": "2019-03-23T22:47:52.236Z", + "Web/CSS/::-moz-range-track": { + "modified": "2019-03-23T22:27:41.835Z", "contributors": [ - "empirreamm" + "teoli", + "pekechis" ] }, - "Web/API/HTMLCollection": { - "modified": "2020-10-15T21:37:48.821Z", + "Web/CSS/::-moz-scrolled-page-sequence": { + "modified": "2019-03-23T22:27:47.385Z", "contributors": [ - "AlePerez92", - "diego_bardelas", - "kromsoft", - "djrm" + "teoli", + "pekechis" ] }, - "Web/API/HTMLContentElement": { - "modified": "2019-03-23T22:10:28.345Z", + "Web/CSS/::-webkit-inner-spin-button": { + "modified": "2019-03-18T21:17:13.569Z", "contributors": [ - "dkocho4" + "teoli", + "pekechis" ] }, - "Web/API/HTMLContentElement/getDistributedNodes": { - "modified": "2019-03-23T22:10:26.488Z", + "Web/CSS/::-webkit-meter-bar": { + "modified": "2019-03-23T22:27:21.551Z", "contributors": [ - "dkocho4" + "teoli", + "pekechis" ] }, - "Web/API/HTMLContentElement/select": { - "modified": "2019-03-23T22:10:36.116Z", + "Web/CSS/::-webkit-meter-even-less-good-value": { + "modified": "2019-03-18T21:15:16.586Z", "contributors": [ - "dkocho4" + "teoli", + "pekechis" ] }, - "Web/API/HTMLDivElement": { - "modified": "2019-03-23T22:03:41.348Z", + "Web/CSS/::-webkit-meter-inner-element": { + "modified": "2019-03-23T22:27:02.054Z", "contributors": [ - "jonvadillo" + "teoli", + "pekechis" ] }, - "Web/API/HTMLElement": { - "modified": "2020-06-20T19:45:51.700Z", + "Web/CSS/::-webkit-meter-optimum-value": { + "modified": "2019-03-23T22:27:09.428Z", "contributors": [ - "hernandoh", - "hpintos", - "fscholz" + "teoli", + "pekechis" ] }, - "Web/API/HTMLElement/change_event": { - "modified": "2020-10-15T22:17:42.425Z", + "Web/CSS/::-webkit-meter-suboptimum-value": { + "modified": "2019-03-23T22:27:08.613Z", "contributors": [ - "IsraelFloresDGA", - "AlePerez92" + "teoli", + "pekechis" ] }, - "Web/API/HTMLElement/click": { - "modified": "2020-10-15T21:59:51.355Z", + "Web/CSS/::-webkit-outer-spin-button": { + "modified": "2019-03-23T22:27:04.174Z", "contributors": [ - "hecaxmmx", - "mtnalonso" + "teoli", + "pekechis" ] }, - "Web/API/HTMLElement/contentEditable": { - "modified": "2020-10-15T22:23:54.889Z", + "Web/CSS/::-webkit-progress-bar": { + "modified": "2019-03-23T22:26:48.592Z", "contributors": [ - "lauramacdaleno" + "teoli", + "pekechis" ] }, - "Web/API/HTMLElement/dataset": { - "modified": "2020-10-15T22:06:35.887Z", + "Web/CSS/::-webkit-progress-inner-element": { + "modified": "2019-03-23T22:27:11.051Z", "contributors": [ - "OneLoneFox", - "PacoVela", - "ultraklon", - "pipepico", - "AlePerez92" + "teoli", + "pekechis" ] }, - "Web/API/HTMLElement/focus": { - "modified": "2020-10-15T21:51:27.517Z", + "Web/CSS/::-webkit-progress-value": { + "modified": "2019-03-23T22:26:54.483Z", "contributors": [ - "IsraelFloresDGA", - "AlePerez92", - "jesumv" + "teoli", + "pekechis" ] }, - "Web/API/HTMLElement/innerText": { - "modified": "2020-10-15T22:31:46.481Z", + "Web/CSS/::-webkit-scrollbar": { + "modified": "2019-03-23T22:26:50.519Z", "contributors": [ - "hugojavierduran9" + "pekechis" ] }, - "Web/API/HTMLElement/input_event": { - "modified": "2020-10-15T22:17:41.989Z", + "Web/CSS/::-webkit-slider-runnable-track": { + "modified": "2019-03-23T22:26:41.971Z", "contributors": [ - "mariomoreno", - "IsraelFloresDGA" + "teoli", + "pekechis" ] }, - "Web/API/HTMLElement/offsetHeight": { - "modified": "2019-04-30T12:33:07.062Z", + "Web/CSS/::-webkit-slider-thumb": { + "modified": "2019-03-23T22:26:41.006Z", "contributors": [ - "AlePerez92", - "SphinxKnight", - "germanfr" + "teoli", + "pekechis" ] }, - "Web/API/HTMLElement/offsetLeft": { - "modified": "2019-03-18T20:59:09.140Z", + "Web/CSS/::after": { + "modified": "2020-10-15T21:15:55.871Z", "contributors": [ - "SphinxKnight", - "gama" + "JFOG", + "IsraelFloresDGA", + "israel-munoz", + "Lorenzoygata", + "teoli", + "Nathymig" ] }, - "Web/API/HTMLElement/offsetParent": { - "modified": "2020-10-15T22:11:55.510Z", + "Web/CSS/::backdrop": { + "modified": "2019-03-23T22:30:49.892Z", "contributors": [ - "Vincetroid" + "pekechis" ] }, - "Web/API/HTMLElement/offsetTop": { - "modified": "2020-10-15T21:46:16.171Z", + "Web/CSS/::before": { + "modified": "2020-11-24T07:28:22.113Z", "contributors": [ - "SphinxKnight", - "santinogue", - "Grijander81" + "chrisdavidmills", + "maketas", + "IsraelFloresDGA", + "israel-munoz", + "Yisus777", + "teoli", + "Nathymig" ] }, - "Web/API/HTMLElement/offsetWidth": { - "modified": "2020-10-15T21:50:38.562Z", + "Web/CSS/::cue": { + "modified": "2020-10-15T22:33:08.581Z", "contributors": [ - "SphinxKnight", - "Facu50196", - "jvas28" + "Pablo-No" ] }, - "Web/API/HTMLElement/style": { - "modified": "2019-03-23T23:58:09.934Z", + "Web/CSS/::first-letter": { + "modified": "2020-10-15T22:24:50.087Z", "contributors": [ - "SphinxKnight", - "fscholz", - "khalid32", - "teoli", - "HenryGR" + "Plumas", + "adrymrtnz" ] }, - "Web/API/HTMLFormElement": { - "modified": "2019-03-23T23:46:38.218Z", + "Web/CSS/::first-line": { + "modified": "2020-10-15T22:24:51.827Z", "contributors": [ - "SphinxKnight", - "fscholz", - "khalid32", - "DR", - "Nathymig" + "Plumas", + "ivanenoriega", + "adrymrtnz" ] }, - "Web/API/HTMLFormElement/reset": { - "modified": "2020-11-28T13:27:49.559Z", + "Web/CSS/::marker": { + "modified": "2020-10-15T22:22:16.686Z", "contributors": [ - "hiperion" + "qwerty726" ] }, - "Web/API/HTMLHeadElement": { - "modified": "2020-10-15T22:31:07.133Z", + "Web/CSS/::placeholder": { + "modified": "2020-10-15T22:26:50.005Z", "contributors": [ - "jhonarielgj" + "IsraelFloresDGA" ] }, - "Web/API/HTMLHtmlElement": { - "modified": "2019-03-23T22:27:47.579Z", + "Web/CSS/::selection": { + "modified": "2019-03-23T23:33:09.211Z", "contributors": [ - "raecillacastellana" + "canobius", + "arroutado", + "jesu_abner", + "teoli", + "pepeheron" ] }, - "Web/API/HTMLImageElement": { - "modified": "2019-03-23T22:42:00.195Z", + "Web/CSS/::spelling-error": { + "modified": "2020-10-15T22:03:59.841Z", "contributors": [ - "thzunder" + "lajaso" ] }, - "Web/API/HTMLImageElement/Image": { - "modified": "2019-03-23T22:12:14.962Z", + "Web/CSS/:active": { + "modified": "2020-10-15T21:21:49.325Z", "contributors": [ - "gabo32", - "Jhandrox" + "pollirrata", + "lajaso", + "teoli", + "MrBlogger" ] }, - "Web/API/HTMLInputElement": { - "modified": "2020-08-25T19:55:45.034Z", + "Web/CSS/:any-link": { + "modified": "2020-10-15T21:52:30.387Z", "contributors": [ - "duduindo", - "Enesimus", - "chrisdavidmills" + "JFOG", + "lajaso", + "israel-munoz" ] }, - "Web/API/HTMLInputElement/invalid_event": { - "modified": "2019-04-30T13:47:32.409Z", + "Web/CSS/:blank": { + "modified": "2020-10-15T22:26:47.961Z", "contributors": [ - "wbamberg", - "estelle", "IsraelFloresDGA" ] }, - "Web/API/HTMLInputElement/select": { - "modified": "2019-03-18T21:34:04.996Z", + "Web/CSS/:checked": { + "modified": "2020-10-15T21:32:04.510Z", "contributors": [ - "AlePerez92" + "lajaso", + "zxhadow" ] }, - "Web/API/HTMLLIElement": { - "modified": "2019-03-23T22:21:38.998Z", + "Web/CSS/:default": { + "modified": "2020-10-15T21:15:24.516Z", "contributors": [ - "elxris", - "bardcrack" + "lajaso", + "teoli", + "Mgjbot", + "Nathymig", + "HenryGR" ] }, - "Web/API/HTMLLabelElement": { - "modified": "2020-10-15T22:11:47.827Z", + "Web/CSS/:defined": { + "modified": "2020-10-15T22:03:59.600Z", "contributors": [ - "BubuAnabelas", - "mym2013" + "JFOG", + "lajaso" ] }, - "Web/API/HTMLMediaElement": { - "modified": "2020-10-15T22:13:56.798Z", + "Web/CSS/:dir": { + "modified": "2020-10-15T21:44:46.376Z", "contributors": [ - "mannypinillo" + "lajaso", + "pekechis" ] }, - "Web/API/HTMLMediaElement/canplay_event": { - "modified": "2019-03-18T20:49:26.430Z", + "Web/CSS/:disabled": { + "modified": "2020-10-15T21:43:53.936Z", "contributors": [ - "estelle", - "ExE-Boss", - "fscholz", - "jjoselon" + "lajaso", + "pekechis" ] }, - "Web/API/HTMLMediaElement/loadeddata_event": { - "modified": "2020-10-15T22:25:54.605Z", + "Web/CSS/:empty": { + "modified": "2020-10-15T21:16:01.534Z", "contributors": [ - "NEVITS" + "IsraelFloresDGA", + "lajaso", + "teoli", + "Nathymig" ] }, - "Web/API/HTMLMediaElement/pause": { - "modified": "2020-10-15T22:24:10.390Z", + "Web/CSS/:enabled": { + "modified": "2020-10-15T21:44:29.292Z", "contributors": [ - "chekoNava" + "lajaso", + "pekechis" ] }, - "Web/API/HTMLMediaElement/paused": { - "modified": "2020-10-15T22:24:09.151Z", + "Web/CSS/:first": { + "modified": "2020-10-15T21:43:42.281Z", "contributors": [ - "chekoNava" + "lajaso", + "pekechis" ] }, - "Web/API/HTMLMediaElement/play": { - "modified": "2020-10-15T22:24:04.866Z", + "Web/CSS/:first-child": { + "modified": "2020-10-15T21:19:55.452Z", "contributors": [ - "chekoNava" + "lajaso", + "teoli", + "percy@mozilla.pe", + "jsalinas" ] }, - "Web/API/HTMLMediaElement/timeupdate_event": { - "modified": "2019-03-18T20:49:28.173Z", + "Web/CSS/:first-of-type": { + "modified": "2020-10-15T21:44:49.790Z", "contributors": [ - "estelle", - "ExE-Boss", - "fscholz", - "baldore" + "lajaso", + "pekechis" ] }, - "Web/API/HTMLSelectElement": { - "modified": "2020-10-15T22:06:34.378Z", + "Web/CSS/:focus": { + "modified": "2020-10-15T21:43:30.779Z", "contributors": [ - "wbamberg" + "evaferreira", + "lajaso", + "pekechis" ] }, - "Web/API/HTMLSelectElement/checkValidity": { - "modified": "2020-10-15T22:06:33.300Z", + "Web/CSS/:focus-visible": { + "modified": "2020-10-15T22:33:54.482Z", "contributors": [ - "AlePerez92" + "arauz.gus" ] }, - "Web/API/HTMLSelectElement/setCustomValidity": { - "modified": "2020-10-15T22:21:29.656Z", + "Web/CSS/:focus-within": { + "modified": "2020-12-03T05:40:25.197Z", "contributors": [ - "raul-arias" + "AlePerez92", + "carlosviteri", + "lajaso", + "AntonioNavajasOjeda" ] }, - "Web/API/HTMLShadowElement": { - "modified": "2019-03-23T22:10:24.059Z", + "Web/CSS/:fullscreen": { + "modified": "2020-10-15T21:51:48.377Z", "contributors": [ - "dkocho4", - "Sebastianz" + "lajaso", + "israel-munoz" ] }, - "Web/API/HTMLShadowElement/getDistributedNodes": { - "modified": "2019-03-23T22:10:23.317Z", + "Web/CSS/:has": { + "modified": "2019-03-23T22:36:22.444Z", "contributors": [ - "dkocho4" + "pekechis" ] }, - "Web/API/HTMLStyleElement": { - "modified": "2019-03-24T00:07:06.618Z", + "Web/CSS/:host": { + "modified": "2020-10-15T22:04:25.470Z", "contributors": [ - "fscholz", - "lcamacho", - "DoctorRomi", - "HenryGR", - "Markens", - "Nathymig" + "rhssr", + "lajaso" ] }, - "Web/API/HTMLTableElement": { - "modified": "2019-03-23T23:46:43.890Z", + "Web/CSS/:hover": { + "modified": "2020-10-15T21:19:57.161Z", "contributors": [ - "fscholz", - "khalid32", - "ethertank", - "DR", - "M3n3chm0", - "Nathymig" + "lajaso", + "teoli", + "percy@mozilla.pe", + "ccarruitero" ] }, - "Web/API/HTMLTableElement/align": { - "modified": "2019-03-23T22:32:48.061Z", + "Web/CSS/:in-range": { + "modified": "2020-10-15T21:52:29.381Z", "contributors": [ - "Grijander81" + "lajaso", + "israel-munoz" ] }, - "Web/API/HTMLTableElement/insertRow": { - "modified": "2019-03-23T22:32:47.103Z", + "Web/CSS/:indeterminate": { + "modified": "2020-10-15T21:52:30.617Z", "contributors": [ - "lalo", - "Grijander81" + "lajaso", + "israel-munoz" ] }, - "Web/API/Headers": { - "modified": "2020-10-15T22:07:38.324Z", + "Web/CSS/:invalid": { + "modified": "2020-10-15T21:25:32.434Z", "contributors": [ - "Estebanrg21" + "lajaso", + "teoli", + "ccastillos" ] }, - "Web/API/History": { - "modified": "2020-10-15T22:28:24.964Z", + "Web/CSS/:lang": { + "modified": "2020-10-15T21:49:25.234Z", "contributors": [ - "alattalatta" + "lajaso", + "sapox" ] }, - "Web/API/History/length": { - "modified": "2020-10-15T22:34:59.646Z", + "Web/CSS/:last-child": { + "modified": "2020-10-15T21:19:56.585Z", "contributors": [ - "cajotafer" + "lajaso", + "MarkelCuesta", + "carloque", + "teoli", + "ccarruitero", + "percy@mozilla.pe" ] }, - "Web/API/History/pushState": { - "modified": "2020-10-15T22:28:26.373Z", + "Web/CSS/:last-of-type": { + "modified": "2020-10-15T21:19:57.770Z", "contributors": [ - "cajotafer", - "arcaela" - ] - }, - "Web/API/IDBCursor": { - "modified": "2019-09-04T06:41:50.466Z", - "contributors": [ - "jambsik", - "fscholz", - "chrisdavidmills" + "lajaso", + "teoli", + "jesanchez", + "jsalinas" ] }, - "Web/API/IDBCursor/continue": { - "modified": "2019-03-23T22:40:02.950Z", + "Web/CSS/:left": { + "modified": "2020-10-15T22:03:35.116Z", "contributors": [ - "BubuAnabelas", - "Alfalfa01" + "Tartarin2018", + "lajaso", + "Skrinch" ] }, - "Web/API/IDBDatabase": { - "modified": "2019-03-23T22:23:43.090Z", + "Web/CSS/:link": { + "modified": "2020-10-15T21:54:15.946Z", "contributors": [ - "jpmedley" + "lajaso", + "Jhonatangiraldo" ] }, - "Web/API/IDBDatabase/transaction": { - "modified": "2019-03-23T22:23:53.480Z", + "Web/CSS/:nth-child": { + "modified": "2020-10-15T21:20:38.559Z", "contributors": [ - "carlo.romero1991" + "ulisestrujillo", + "lajaso", + "teoli", + "tuxtitlan" ] }, - "Web/API/IDBObjectStore": { - "modified": "2019-03-23T23:01:30.975Z", + "Web/CSS/:nth-last-child": { + "modified": "2020-10-15T21:42:40.958Z", "contributors": [ - "fscholz" + "lajaso", + "alkaithil" ] }, - "Web/API/IDBObjectStore/add": { - "modified": "2019-03-23T23:05:57.547Z", + "Web/CSS/:nth-last-of-type": { + "modified": "2020-10-15T22:04:20.811Z", "contributors": [ - "fscholz", - "AngelFQC" + "AltheaE", + "lajaso" ] }, - "Web/API/ImageBitmap": { - "modified": "2020-10-15T22:03:23.639Z", + "Web/CSS/:nth-of-type": { + "modified": "2020-10-15T21:43:57.823Z", "contributors": [ - "necrobite" + "lajaso", + "edkalel" ] }, - "Web/API/ImageBitmapRenderingContext": { - "modified": "2020-10-15T22:03:23.985Z", + "Web/CSS/:only-child": { + "modified": "2020-10-15T21:42:38.914Z", "contributors": [ - "teoli", - "necrobite" + "lajaso", + "alkaithil" ] }, - "Web/API/IndexedDB_API": { - "modified": "2020-01-13T04:48:11.727Z", + "Web/CSS/:only-of-type": { + "modified": "2020-10-15T22:04:23.870Z", "contributors": [ - "chrisdavidmills", - "thepianist2", - "GranRafa", - "semptrion", - "Fjaguero", - "MPoli" + "lajaso" ] }, - "Web/API/IndexedDB_API/Conceptos_Basicos_Detras_De_IndexedDB": { - "modified": "2020-01-13T04:48:11.759Z", + "Web/CSS/:optional": { + "modified": "2020-10-15T22:03:59.272Z", "contributors": [ - "chrisdavidmills", - "fscholz", - "elin3t", - "sebasmagri" + "lajaso" ] }, - "Web/API/IndexedDB_API/Usando_IndexedDB": { - "modified": "2020-01-13T04:48:12.209Z", + "Web/CSS/:out-of-range": { + "modified": "2020-10-15T21:52:29.356Z", "contributors": [ - "chrisdavidmills", - "gama", - "Pcost8300", - "franvalmo", - "frank-orellana", - "otif11", - "urbanogb", - "AlePerez92", - "beatriz-merino", - "matajm", - "elin3t", - "maparrar" + "lajaso", + "israel-munoz" ] }, - "Web/API/Intersection_Observer_API": { - "modified": "2020-11-03T00:26:14.370Z", + "Web/CSS/:placeholder-shown": { + "modified": "2020-10-15T22:04:23.723Z", "contributors": [ - "juanfelipejg", - "kuntur-studio", - "maketas", - "sandromedina", - "lacf95", - "midudev", - "joanvasa", - "AshWilliams" + "lajaso" ] }, - "Web/API/KeyboardEvent": { - "modified": "2019-03-18T21:08:57.551Z", + "Web/CSS/:read-only": { + "modified": "2020-10-15T21:58:16.699Z", "contributors": [ - "fscholz", - "pdro-enrique", - "wbamberg", - "pablodonoso" + "lajaso", + "j-light" ] }, - "Web/API/KeyboardEvent/getModifierState": { - "modified": "2020-10-15T22:04:42.428Z", + "Web/CSS/:read-write": { + "modified": "2020-10-15T22:04:19.084Z", "contributors": [ - "leoderja" + "lajaso" ] }, - "Web/API/KeyboardEvent/key": { - "modified": "2020-10-15T22:10:09.653Z", + "Web/CSS/:required": { + "modified": "2020-10-15T21:44:28.186Z", "contributors": [ - "isaacanet", - "aleju92" + "lajaso", + "pekechis" ] }, - "Web/API/KeyboardEvent/metaKey": { - "modified": "2019-03-23T22:47:47.329Z", + "Web/CSS/:right": { + "modified": "2020-10-15T22:04:16.818Z", "contributors": [ - "empirreamm" + "lajaso" ] }, - "Web/API/KeyboardEvent/which": { - "modified": "2019-03-23T23:25:30.040Z", + "Web/CSS/:root": { + "modified": "2020-10-15T21:34:17.481Z", "contributors": [ - "fscholz", - "jsx", - "arthusu" + "lajaso", + "JavierPeris", + "Xaviju" ] }, - "Web/API/Location": { - "modified": "2020-03-11T08:46:40.807Z", + "Web/CSS/:target": { + "modified": "2020-10-15T21:44:29.225Z", "contributors": [ - "nverino", - "BrodaNoel" + "lajaso", + "moisesalmonte", + "pekechis" ] }, - "Web/API/Location/origin": { - "modified": "2020-11-17T12:52:42.607Z", + "Web/CSS/:valid": { + "modified": "2020-10-15T21:45:32.621Z", "contributors": [ - "AlePerez92" + "lajaso", + "jorgesancheznet" ] }, - "Web/API/Location/reload": { - "modified": "2020-10-30T03:50:17.206Z", + "Web/CSS/:visited": { + "modified": "2020-10-15T22:04:02.908Z", "contributors": [ - "SphinxKnight", - "MiguelHG2351", - "PatoDeTuring" + "lajaso" ] }, - "Web/API/MediaDevices": { - "modified": "2019-03-23T22:36:21.378Z", + "Web/CSS/@charset": { + "modified": "2019-03-23T22:29:53.691Z", "contributors": [ - "Sebastianz" + "israel-munoz" ] }, - "Web/API/MediaDevices/getUserMedia": { - "modified": "2019-03-23T22:36:21.202Z", + "Web/CSS/@counter-style": { + "modified": "2019-03-18T21:16:44.974Z", "contributors": [ - "AdanPalacios", - "titosobabas", - "RSalgadoAtala", - "Cristhian", - "matajm" + "jamesbrown0" ] }, - "Web/API/MediaQueryList": { - "modified": "2019-03-18T21:17:33.122Z", + "Web/CSS/@counter-style/additive-symbols": { + "modified": "2019-03-23T22:18:02.836Z", "contributors": [ - "BubuAnabelas", - "PatoDeTuring" + "israel-munoz" ] }, - "Web/API/MediaQueryList/addListener": { - "modified": "2019-03-18T21:16:20.430Z", + "Web/CSS/@counter-style/symbols": { + "modified": "2019-03-18T21:15:43.336Z", "contributors": [ - "PatoDeTuring" + "israel-munoz" ] }, - "Web/API/MediaQueryList/matches": { - "modified": "2019-03-23T22:05:29.020Z", + "Web/CSS/@document": { + "modified": "2020-10-15T22:01:34.650Z", "contributors": [ - "PatoDeTuring" + "SphinxKnight", + "lsosa81" ] }, - "Web/API/MediaQueryList/removeListener": { - "modified": "2019-03-23T22:05:31.060Z", + "Web/CSS/@font-face": { + "modified": "2019-09-26T12:01:00.515Z", "contributors": [ - "PatoDeTuring" + "ZodiacFireworks", + "fscholz", + "rtunon", + "ozkxr", + "teoli", + "ccarruitero", + "Nuc134rB0t", + "inma_610" ] }, - "Web/API/MediaSource": { - "modified": "2019-03-23T22:38:20.191Z", + "Web/CSS/@font-face/font-display": { + "modified": "2020-10-15T21:59:11.206Z", "contributors": [ - "Lazaro" + "AlePerez92", + "nuwanda555" ] }, - "Web/API/MediaStreamAudioSourceNode": { - "modified": "2019-03-18T20:35:52.439Z", + "Web/CSS/@font-face/font-family": { + "modified": "2019-03-23T22:37:47.693Z", "contributors": [ - "davidtorroija", - "AndresMendozaOrozco" + "pekechis" ] }, - "Web/API/MediaStreamTrack": { - "modified": "2019-03-23T23:10:18.897Z", + "Web/CSS/@font-face/font-style": { + "modified": "2019-03-23T22:38:47.174Z", "contributors": [ - "matajm", - "maedca" + "danielfdez" ] }, - "Web/API/MessageEvent": { - "modified": "2019-03-18T21:44:05.386Z", + "Web/CSS/@font-face/src": { + "modified": "2019-03-23T22:17:51.245Z", "contributors": [ - "jpmontoya182" + "israel-munoz" ] }, - "Web/API/MimeType": { - "modified": "2019-03-18T21:36:36.016Z", + "Web/CSS/@font-face/unicode-range": { + "modified": "2020-10-15T21:50:47.753Z", "contributors": [ - "daniel.duarte" + "SphinxKnight", + "giobeatle1794" ] }, - "Web/API/MouseEvent": { - "modified": "2019-03-23T23:01:32.904Z", + "Web/CSS/@font-feature-values": { + "modified": "2019-03-23T22:22:14.476Z", "contributors": [ - "fscholz" + "israel-munoz" ] }, - "Web/API/MouseEvent/initMouseEvent": { - "modified": "2019-03-23T23:50:24.977Z", + "Web/CSS/@import": { + "modified": "2019-03-23T23:38:27.735Z", "contributors": [ - "SphinxKnight", - "vectorderivative", - "jorgecasar", + "JorgeCapillo", + "Guillaume-Heras", + "mrstork", "fscholz", - "khalid32", "teoli", - "HenryGR", - "Mgjbot" + "jsalinas", + "kamel.araujo" ] }, - "Web/API/MouseEvent/shiftKey": { - "modified": "2019-03-23T22:05:24.832Z", + "Web/CSS/@keyframes": { + "modified": "2019-03-23T23:36:20.944Z", "contributors": [ - "evaferreira" + "Sebastianz", + "fscholz", + "Sheppy", + "teoli", + "jesanchez", + "Velociraktor" ] }, - "Web/API/MutationObserver": { - "modified": "2019-05-13T04:27:12.587Z", + "Web/CSS/@media": { + "modified": "2019-03-23T23:16:54.490Z", "contributors": [ - "mllambias", - "cesaruve", - "aeroxmotion", - "JordiCruells", - "alvaropinot" + "israel-munoz", + "fscholz", + "teoli", + "sanathy" ] }, - "Web/API/MutationObserver/MutationObserver": { - "modified": "2020-10-15T22:18:30.706Z", + "Web/CSS/@media/color": { + "modified": "2019-03-18T21:15:44.481Z", "contributors": [ - "mllambias" + "pekechis" ] }, - "Web/API/MutationObserver/observe": { - "modified": "2020-10-15T22:18:29.107Z", + "Web/CSS/@media/display-mode": { + "modified": "2020-10-15T22:23:39.088Z", "contributors": [ - "mllambias" + "IsraelFloresDGA" ] }, - "Web/API/Navigator": { - "modified": "2019-03-23T23:20:36.282Z", + "Web/CSS/@media/hover": { + "modified": "2020-10-15T22:23:44.104Z", "contributors": [ - "israel-munoz", - "khalid32", - "tpb" + "IsraelFloresDGA" ] }, - "Web/API/Navigator/doNotTrack": { - "modified": "2019-03-18T21:35:42.847Z", + "Web/CSS/@media/pointer": { + "modified": "2020-10-15T22:27:26.867Z", "contributors": [ - "AlePerez92" + "qwerty726" ] }, - "Web/API/Navigator/getUserMedia": { - "modified": "2019-03-23T23:27:03.284Z", + "Web/CSS/@media/width": { + "modified": "2019-03-23T22:04:44.569Z", "contributors": [ - "Jib", - "AlePerez92", - "fscholz", - "cm_rocanroll", - "franverona", - "py_crash", - "maedca" + "jswisher", + "wilton-cruz" ] }, - "Web/API/Navigator/mediaDevices": { - "modified": "2020-12-11T22:18:56.380Z", + "Web/CSS/@namespace": { + "modified": "2020-10-15T22:29:21.901Z", "contributors": [ - "daniellimabel" + "qwerty726" ] }, - "Web/API/Navigator/registerProtocolHandler": { - "modified": "2019-03-23T23:53:04.318Z", + "Web/CSS/@page": { + "modified": "2019-03-18T21:35:50.476Z", "contributors": [ - "fscholz", - "khalid32", - "Nukeador", - "HenryGR", - "Mgjbot" + "luismj" ] }, - "Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers": { - "modified": "2019-03-23T22:06:43.969Z", + "Web/CSS/@supports": { + "modified": "2020-10-15T21:43:18.021Z", "contributors": [ - "chrisdavidmills", - "AngelFQC" + "SJW", + "angelf", + "MilkSnake" ] }, - "Web/API/Navigator/vibrate": { - "modified": "2019-03-23T23:32:23.651Z", + "Web/CSS/@viewport": { + "modified": "2019-03-18T21:16:54.012Z", "contributors": [ - "fscholz", - "jsx", - "mmednik" + "cvrebert" ] }, - "Web/API/NavigatorConcurrentHardware": { - "modified": "2020-10-15T22:25:58.692Z" - }, - "Web/API/NavigatorConcurrentHardware/hardwareConcurrency": { - "modified": "2020-10-15T22:26:06.271Z", + "Web/CSS/At-rule": { + "modified": "2019-03-23T22:29:55.371Z", "contributors": [ - "Gnuxdar" + "Legioinvicta", + "israel-munoz" ] }, - "Web/API/NavigatorGeolocation": { - "modified": "2019-03-23T23:01:31.642Z", + "Web/CSS/CSS_Animations": { + "modified": "2019-03-23T22:43:48.247Z", "contributors": [ - "fscholz" + "teoli" ] }, - "Web/API/NavigatorGeolocation/geolocation": { - "modified": "2019-03-23T23:31:55.176Z", + "Web/CSS/CSS_Animations/Tips": { + "modified": "2020-08-16T13:05:40.057Z", "contributors": [ - "jabarrioss", - "AlePerez92", - "fscholz", - "jsx", - "lfentanes" + "CamilaAchury", + "SphinxKnight", + "AlbertoVargasMoreno" ] }, - "Web/API/NavigatorLanguage": { - "modified": "2019-03-23T22:46:20.556Z", + "Web/CSS/CSS_Background_and_Borders/Border-radius_generator": { + "modified": "2019-03-18T21:15:42.476Z", "contributors": [ - "teoli" + "israel-munoz" ] }, - "Web/API/NavigatorLanguage/language": { - "modified": "2019-03-23T22:46:24.341Z", + "Web/CSS/CSS_Containment": { + "modified": "2020-10-21T02:39:25.867Z", "contributors": [ - "cesiztel", - "jesus9ias" + "SphinxKnight", + "RoqueAlonso" ] }, - "Web/API/NavigatorOnLine": { - "modified": "2019-03-23T22:07:33.991Z", + "Web/CSS/CSS_Flexible_Box_Layout": { + "modified": "2019-03-23T22:43:42.897Z", "contributors": [ - "abbycar" + "danpaltor", + "tipoqueno", + "pepe2016", + "fscholz" ] }, - "Web/API/NavigatorOnLine/Eventos_online_y_offline": { - "modified": "2019-01-16T15:46:38.836Z", + "Web/CSS/CSS_Flexible_Box_Layout/Aligning_Items_in_a_Flex_Container": { + "modified": "2020-09-12T08:36:23.473Z", "contributors": [ - "chrisdavidmills", - "Mgjbot", - "Nukeador", - "RickieesES", - "Unixcoder" + "x-N0", + "FrankGalanB", + "JulianCGG", + "PauloColorado", + "Irvandoval", + "turuto" ] }, - "Web/API/NavigatorOnLine/onLine": { - "modified": "2019-03-23T22:07:34.200Z", + "Web/CSS/CSS_Flexible_Box_Layout/Backwards_Compatibility_of_Flexbox": { + "modified": "2019-11-06T19:10:32.985Z", "contributors": [ - "MarkelCuesta" + "tonyrodz" ] }, - "Web/API/Network_Information_API": { - "modified": "2020-11-17T00:17:37.419Z", + "Web/CSS/CSS_Flow_Layout": { + "modified": "2019-03-18T21:21:28.417Z", "contributors": [ - "tobiasalbirosa" + "ariasfernando" ] }, - "Web/API/Node": { - "modified": "2019-05-06T01:19:55.862Z", + "Web/CSS/CSS_Fonts": { + "modified": "2019-03-23T22:18:19.285Z", "contributors": [ - "robinHurtado", - "fscholz" + "Squirrel18" ] }, - "Web/API/Node/appendChild": { - "modified": "2020-10-15T21:22:57.221Z", + "Web/CSS/CSS_Grid_Layout": { + "modified": "2020-08-21T18:16:34.348Z", "contributors": [ + "dongerardor", + "yomar-dev", + "amaiafilo", "AlePerez92", - "IsaacAaron", - "fscholz", - "jsx", - "AzulCz" + "aribet", + "StripTM" ] }, - "Web/API/Node/childNodes": { - "modified": "2020-10-15T22:02:15.961Z", + "Web/CSS/CSS_Grid_Layout/Auto-placement_in_CSS_Grid_Layout": { + "modified": "2019-11-06T13:46:19.795Z", "contributors": [ - "AlePerez92", - "presercomp" + "tonyrodz" ] }, - "Web/API/Node/cloneNode": { - "modified": "2020-10-15T21:49:33.676Z", + "Web/CSS/CSS_Grid_Layout/Box_Alignment_in_CSS_Grid_Layout": { + "modified": "2019-05-30T17:37:47.442Z", "contributors": [ - "AlePerez92", - "jyorch2", - "fewrare" + "narvmtz", + "ocamachor" ] }, - "Web/API/Node/contains": { - "modified": "2020-10-15T22:00:52.714Z", + "Web/CSS/CSS_Grid_Layout/CSS_Grid_Layout_and_Accessibility": { + "modified": "2019-06-05T03:51:45.202Z", "contributors": [ - "AlePerez92" + "blanchart" ] }, - "Web/API/Node/elementoPadre": { - "modified": "2020-10-15T21:55:42.512Z", + "Web/CSS/CSS_Grid_Layout/Realizing_common_layouts_using_CSS_Grid_Layout": { + "modified": "2019-03-18T21:34:10.349Z", "contributors": [ - "AlePerez92", - "LRojas", - "tureey" + "amaiafilo" ] }, - "Web/API/Node/hasChildNodes": { - "modified": "2020-10-15T22:08:41.278Z", + "Web/CSS/CSS_Logical_Properties": { + "modified": "2019-03-18T21:11:22.321Z", "contributors": [ - "AlePerez92" + "teffcode" ] }, - "Web/API/Node/insertarAntes": { - "modified": "2020-10-15T21:36:49.326Z", + "Web/CSS/CSS_Logical_Properties/Basic_concepts": { + "modified": "2019-10-17T05:37:57.001Z", "contributors": [ - "AlePerez92", - "danvao", - "Sedoy", - "carpasse" + "blanchart", + "teffcode" ] }, - "Web/API/Node/isSameNode": { - "modified": "2019-03-23T22:49:05.364Z", + "Web/CSS/CSS_Logical_Properties/Floating_and_positioning": { + "modified": "2019-03-18T20:35:38.553Z", "contributors": [ - "JordiCruells" + "teffcode" ] }, - "Web/API/Node/lastChild": { - "modified": "2020-10-15T21:55:48.810Z", + "Web/CSS/CSS_Logical_Properties/Margins_borders_padding": { + "modified": "2019-03-19T13:30:41.950Z", "contributors": [ - "fscholz", - "AlePerez92", - "tureey" + "teffcode" ] }, - "Web/API/Node/namespaceURI": { - "modified": "2019-03-23T22:08:52.990Z", + "Web/CSS/CSS_Motion_Path": { + "modified": "2020-10-15T22:26:49.512Z", "contributors": [ - "tureey" + "josegarciamanez" ] }, - "Web/API/Node/nextSibling": { - "modified": "2020-10-15T21:27:47.909Z", + "Web/CSS/CSS_Positioning": { + "modified": "2019-03-23T22:32:36.509Z", "contributors": [ - "wbamberg", - "AlePerez92", - "fscholz", - "Alexis88" + "javichito", + "davidhbrown" ] }, - "Web/API/Node/nodeName": { - "modified": "2019-03-23T23:50:40.382Z", + "Web/CSS/CSS_Properties_Reference": { + "modified": "2019-03-18T21:24:27.305Z", "contributors": [ - "SphinxKnight", - "fscholz", - "Hasilt", - "HenryGR", - "Mgjbot" + "pekechis" ] }, - "Web/API/Node/nodeType": { - "modified": "2019-03-23T22:58:04.685Z", + "Web/CSS/CSS_Transforms": { + "modified": "2019-03-23T22:43:47.978Z", "contributors": [ - "minrock" + "Sebastianz", + "fscholz" ] }, - "Web/API/Node/nodeValue": { - "modified": "2019-08-30T02:00:09.176Z", + "Web/CSS/CSS_Transforms/Using_CSS_transforms": { + "modified": "2019-03-24T00:05:10.570Z", "contributors": [ - "Jamel-Seyek", - "tureey" + "recortes", + "fscholz", + "teoli", + "cristianjav", + "ajimix", + "another_sam" ] }, - "Web/API/Node/nodoPrincipal": { - "modified": "2019-03-23T22:08:57.260Z", + "Web/CSS/CSS_Transitions": { + "modified": "2019-07-24T08:01:48.708Z", "contributors": [ - "tureey" + "SphinxKnight", + "FedericoMarmo", + "crojasf", + "pekechis" ] }, - "Web/API/Node/ownerDocument": { - "modified": "2019-10-09T11:24:36.349Z", + "Web/CSS/CSS_Types": { + "modified": "2019-03-18T21:35:39.343Z", "contributors": [ - "ogallagher", - "tureey" + "lajaso" ] }, - "Web/API/Node/parentNode": { - "modified": "2019-03-23T22:08:56.619Z", + "Web/CSS/CSS_Writing_Modes": { + "modified": "2019-04-10T10:27:10.380Z", "contributors": [ - "IsmaOrdas", - "tureey" + "cristianmartinez" ] }, - "Web/API/Node/previousSibling": { - "modified": "2020-10-15T22:05:25.453Z", + "Web/CSS/Cascade": { + "modified": "2020-04-20T15:19:07.785Z", "contributors": [ - "wbamberg", - "AlePerez92" + "arjusgit", + "tw1ttt3r" ] }, - "Web/API/Node/removeChild": { - "modified": "2019-03-23T22:51:59.032Z", + "Web/CSS/Child_combinator": { + "modified": "2019-03-23T22:17:17.663Z", "contributors": [ - "IsaacAaron", - "jcmunioz" + "ExE-Boss", + "maguz727", + "israel-munoz" ] }, - "Web/API/Node/replaceChild": { - "modified": "2019-03-23T22:46:30.428Z", + "Web/CSS/Class_selectors": { + "modified": "2019-03-23T22:17:19.977Z", "contributors": [ - "pakitometal" + "israel-munoz" ] }, - "Web/API/Node/textContent": { - "modified": "2020-10-15T21:21:16.429Z", + "Web/CSS/Descendant_combinator": { + "modified": "2019-03-23T23:13:24.480Z", "contributors": [ - "yohanolmedo", - "AlePerez92", - "IsaacAaron", - "fscholz", - "another_sam" + "ExE-Boss", + "Makiber" ] }, - "Web/API/NodeList": { - "modified": "2020-10-15T22:00:48.268Z", + "Web/CSS/ID_selectors": { + "modified": "2020-10-15T21:52:30.474Z", "contributors": [ - "AlePerez92", - "padrecedano" + "lajaso", + "israel-munoz" ] }, - "Web/API/NodeList/forEach": { - "modified": "2020-10-15T22:08:20.485Z", + "Web/CSS/Layout_cookbook": { + "modified": "2019-03-18T21:22:35.394Z", "contributors": [ - "SphinxKnight", - "InfaSysKey", - "jesumv" + "StripTM" ] }, - "Web/API/NonDocumentTypeChildNode": { - "modified": "2019-03-23T22:32:46.517Z", + "Web/CSS/Layout_mode": { + "modified": "2019-03-18T21:44:15.658Z", "contributors": [ - "fscholz" + "NeXuZZ-SCM" ] }, - "Web/API/NonDocumentTypeChildNode/nextElementSibling": { - "modified": "2020-10-15T21:46:25.502Z", + "Web/CSS/Media_Queries": { + "modified": "2020-10-15T22:13:20.096Z", "contributors": [ - "AlePerez92", - "Grijander81" + "mikelmg" ] }, - "Web/API/NonDocumentTypeChildNode/previousElementSibling": { - "modified": "2019-03-23T22:32:40.718Z", + "Web/CSS/Mozilla_Extensions": { + "modified": "2019-03-23T23:21:23.902Z", "contributors": [ - "Grijander81" + "ExE-Boss", + "Sebastianz", + "teoli", + "jota1410" ] }, - "Web/API/Notifications_API": { - "modified": "2019-03-23T22:07:39.198Z", + "Web/CSS/Pseudo-classes": { + "modified": "2020-02-22T08:04:35.419Z", "contributors": [ - "david_ross" + "BraisOliveira", + "MrEscape54", + "MrCoffey", + "alkaithil", + "viro" ] }, - "Web/API/Notifications_API/Usando_la_API_de_Notificaciones": { - "modified": "2020-04-11T06:35:05.696Z", + "Web/CSS/Shorthand_properties": { + "modified": "2019-08-11T12:52:52.844Z", "contributors": [ - "davidelx", - "IXTRUnai" + "blanchart", + "EstebanRK", + "IsraelFloresDGA", + "huichops" ] }, - "Web/API/ParentNode": { - "modified": "2019-03-23T22:43:20.773Z", + "Web/CSS/Syntax": { + "modified": "2020-09-29T20:54:10.526Z", "contributors": [ - "Sebastianz" + "lucasmmaidana", + "joseanpg", + "mili01gm", + "Derhks" ] }, - "Web/API/ParentNode/append": { - "modified": "2020-10-15T22:24:28.452Z", + "Web/CSS/Tutorials": { + "modified": "2019-03-23T22:52:34.225Z", "contributors": [ - "Kyuoraku" + "mariolugo" ] }, - "Web/API/ParentNode/childElementCount": { - "modified": "2019-03-23T22:43:24.721Z", + "Web/CSS/Type_selectors": { + "modified": "2020-10-15T21:52:26.603Z", "contributors": [ - "joselix" + "lajaso", + "israel-munoz" ] }, - "Web/API/ParentNode/children": { - "modified": "2019-03-23T22:32:44.383Z", + "Web/CSS/Universal_selectors": { + "modified": "2020-10-15T21:52:26.325Z", "contributors": [ - "AlePerez92", - "aeroxmotion", - "Grijander81" + "lajaso", + "israel-munoz" ] }, - "Web/API/ParentNode/firstElementChild": { - "modified": "2019-03-23T22:32:44.779Z", + "Web/CSS/Using_CSS_custom_properties": { + "modified": "2020-11-26T20:11:21.130Z", "contributors": [ - "Grijander81" + "lupomontero", + "betocantu93", + "sokaluis", + "chrisdavidmills", + "BubuAnabelas", + "Creasick", + "Maseria38", + "FlorTello" ] }, - "Web/API/ParentNode/lastElementChild": { - "modified": "2019-03-23T22:32:39.974Z", + "Web/CSS/actual_value": { + "modified": "2019-03-23T22:16:54.955Z", "contributors": [ - "Grijander81" + "israel-munoz" ] }, - "Web/API/Payment_Request_API": { - "modified": "2020-10-15T22:33:12.666Z", + "Web/CSS/align-content": { + "modified": "2019-06-23T02:54:26.562Z", "contributors": [ - "cjguajardo" + "d0naldo", + "israel-munoz" ] }, - "Web/API/Performance": { - "modified": "2020-10-15T21:53:40.885Z", + "Web/CSS/align-items": { + "modified": "2020-08-01T23:15:43.277Z", "contributors": [ - "wachunei", - "juanarbol", - "fscholz", - "jpmedley" + "LorenzoSandoval", + "vanesa", + "AlePerez92", + "LuisJorgeLozano", + "israel-munoz" ] }, - "Web/API/Performance/clearMarks": { - "modified": "2020-10-15T22:22:33.810Z", + "Web/CSS/align-self": { + "modified": "2019-03-18T21:17:16.430Z", "contributors": [ - "juanarbol" + "israel-munoz" ] }, - "Web/API/Performance/clearMeasures": { - "modified": "2020-10-15T22:22:45.763Z", - "contributors": [ - "juanarbol" - ] - }, - "Web/API/Performance/memory": { - "modified": "2020-10-15T22:22:31.707Z", - "contributors": [ - "juanarbol" - ] - }, - "Web/API/Performance/navigation": { - "modified": "2020-10-15T22:22:32.714Z", - "contributors": [ - "juanarbol" - ] - }, - "Web/API/Performance/now": { - "modified": "2019-03-23T22:13:15.954Z", + "Web/CSS/all": { + "modified": "2019-03-18T21:16:29.697Z", "contributors": [ - "AlePerez92" + "israel-munoz" ] }, - "Web/API/Performance/timeOrigin": { - "modified": "2020-10-15T22:22:32.944Z", + "Web/CSS/angle": { + "modified": "2019-03-23T22:28:51.690Z", "contributors": [ - "juanarbol" + "israel-munoz" ] }, - "Web/API/Performance/timing": { - "modified": "2020-10-15T22:22:30.788Z", + "Web/CSS/animation": { + "modified": "2019-03-23T23:38:13.777Z", "contributors": [ - "juanarbol" + "evaferreira", + "teoli", + "Luis_Calvo", + "jesanchez", + "ccarruitero" ] }, - "Web/API/PerformanceNavigation": { - "modified": "2020-10-15T22:22:46.223Z", + "Web/CSS/animation-delay": { + "modified": "2019-03-23T23:38:13.594Z", "contributors": [ - "juanarbol" + "Maletil", + "teoli", + "Luis_Calvo", + "jesanchez", + "jsalinas" ] }, - "Web/API/PositionOptions": { - "modified": "2019-03-23T23:16:28.831Z", + "Web/CSS/animation-direction": { + "modified": "2019-03-23T23:38:14.261Z", "contributors": [ - "fscholz", - "LeoHirsch", - "lupomontero" + "teoli", + "Luis_Calvo", + "jesanchez", + "jsalinas" ] }, - "Web/API/PushManager": { - "modified": "2019-03-23T22:40:00.540Z", + "Web/CSS/animation-duration": { + "modified": "2019-03-23T23:31:43.672Z", "contributors": [ - "chrisdavidmills" + "teoli", + "Sebastianz", + "Luis_Calvo" ] }, - "Web/API/PushManager/permissionState": { - "modified": "2019-03-23T22:39:59.979Z", + "Web/CSS/animation-fill-mode": { + "modified": "2019-03-23T23:03:51.180Z", "contributors": [ - "maedca" + "teoli", + "Sebastianz", + "luigli", + "jesusr" ] }, - "Web/API/PushManager/supportedContentEncodings": { - "modified": "2020-10-15T22:03:55.545Z", + "Web/CSS/animation-iteration-count": { + "modified": "2019-03-23T22:59:21.919Z", "contributors": [ - "Erto" + "teoli", + "Sebastianz", + "maiky" ] }, - "Web/API/Push_API": { - "modified": "2019-03-23T22:44:48.332Z", + "Web/CSS/animation-name": { + "modified": "2019-03-23T22:59:26.717Z", "contributors": [ - "gimco", - "omar10594", - "Erto", - "FMRonin", - "YulianD", - "mautematico" + "teoli", + "Sebastianz", + "maiky" ] }, - "Web/API/Push_API/Using_the_Push_API": { - "modified": "2019-03-23T22:19:10.252Z", + "Web/CSS/animation-play-state": { + "modified": "2019-03-23T22:44:18.177Z", "contributors": [ - "YulianD" + "Boton" ] }, - "Web/API/RTCPeerConnection": { - "modified": "2019-03-18T21:43:02.717Z", + "Web/CSS/animation-timing-function": { + "modified": "2019-03-23T22:44:11.502Z", "contributors": [ - "jgalvezsoax", - "maomuriel" + "ndeniche", + "mrstork", + "Boton" ] }, - "Web/API/RTCPeerConnection/canTrickleIceCandidates": { - "modified": "2020-10-15T22:33:02.442Z", + "Web/CSS/appearance": { + "modified": "2019-03-23T22:44:40.090Z", "contributors": [ - "JaderLuisDiaz" + "ExE-Boss", + "teoli", + "wbamberg", + "guerratron" ] }, - "Web/API/RTCRtpReceiver": { - "modified": "2020-10-15T22:27:25.068Z", + "Web/CSS/attr()": { + "modified": "2020-11-04T08:51:33.506Z", "contributors": [ - "qwerty726" + "chrisdavidmills", + "mrstork", + "prayash", + "ismachine" ] }, - "Web/API/RandomSource": { - "modified": "2019-03-23T22:25:15.548Z", + "Web/CSS/backdrop-filter": { + "modified": "2020-10-15T22:05:06.351Z", "contributors": [ - "Jeremie" + "lajaso" ] }, - "Web/API/RandomSource/Obtenervaloresaleatorios": { - "modified": "2020-10-15T21:49:57.084Z", + "Web/CSS/backface-visibility": { + "modified": "2019-03-23T22:18:09.464Z", "contributors": [ - "hecmonter", - "joseluisq", - "julianmoji" + "israel-munoz" ] }, - "Web/API/Range": { - "modified": "2019-03-23T23:47:18.258Z", + "Web/CSS/background": { + "modified": "2020-04-23T17:42:59.807Z", "contributors": [ - "wbamberg", - "maiky", + "JAMC", + "MMariscal", + "SphinxKnight", "fscholz", - "Markens", - "DR", + "teoli", + "sebasmagri", + "Yuichiro", "Nathymig" ] }, - "Web/API/Range/collapsed": { - "modified": "2019-03-23T23:47:00.550Z", + "Web/CSS/background-attachment": { + "modified": "2020-12-12T11:33:06.443Z", "contributors": [ + "ejcarreno", + "blanchart", + "smltalavera95", + "SphinxKnight", "fscholz", - "DR" + "teoli", + "Nathymig" ] }, - "Web/API/Range/commonAncestorContainer": { - "modified": "2019-03-23T23:53:54.038Z", + "Web/CSS/background-blend-mode": { + "modified": "2019-03-23T22:59:28.908Z", "contributors": [ - "fscholz", - "DR" + "ExE-Boss", + "israel-munoz", + "mrstork", + "teoli", + "Sebastianz", + "maiky" ] }, - "Web/API/Range/getClientRects": { - "modified": "2019-03-23T22:10:01.541Z", + "Web/CSS/background-clip": { + "modified": "2019-03-18T20:52:42.788Z", "contributors": [ - "edhzsz" + "Beatriz_Ortega_Valdes", + "Carlos_Gutierrez", + "teoli", + "Sebastianz", + "rurigk" ] }, - "Web/API/Range/intersectsNode": { - "modified": "2019-03-23T23:53:59.214Z", + "Web/CSS/background-color": { + "modified": "2019-10-10T16:45:24.871Z", "contributors": [ - "fscholz", - "khalid32", - "Mgjbot", - "DR" + "SphinxKnight", + "danielfdez", + "teoli", + "Yuichiro", + "Nathymig" ] }, - "Web/API/Range/setStart": { - "modified": "2019-03-23T22:13:01.685Z", + "Web/CSS/background-image": { + "modified": "2020-05-06T04:02:29.611Z", "contributors": [ - "Vincetroid" + "blanchart", + "evaferreira", + "SphinxKnight", + "alexisCan", + "andrpueb", + "teoli", + "Rayber", + "Nathymig", + "ethertank" ] }, - "Web/API/Request": { - "modified": "2020-10-15T22:02:13.323Z", + "Web/CSS/background-origin": { + "modified": "2019-03-24T00:15:00.605Z", "contributors": [ - "DiegoFT", - "fscholz" + "teoli", + "Seanwalker" ] }, - "Web/API/Request/headers": { - "modified": "2020-10-15T22:02:12.572Z", + "Web/CSS/background-position": { + "modified": "2020-05-06T06:30:15.110Z", "contributors": [ - "carojaspaz" + "blanchart", + "SphinxKnight", + "teoli", + "FredB", + "Nathymig", + "ethertank" ] }, - "Web/API/Response": { - "modified": "2020-11-13T19:18:52.099Z", + "Web/CSS/background-position-x": { + "modified": "2020-10-15T22:33:04.718Z", "contributors": [ - "chux", - "kant", - "ignatius73", - "crrlos" + "Ismael_Diaz" ] }, - "Web/API/Response/Response": { - "modified": "2020-10-15T22:15:43.532Z", + "Web/CSS/background-repeat": { + "modified": "2020-10-15T21:16:00.953Z", "contributors": [ - "AzazelN28" + "itxuixdev", + "SphinxKnight", + "teoli", + "Nathymig" ] }, - "Web/API/Response/ok": { - "modified": "2020-10-15T22:22:31.771Z", + "Web/CSS/background-size": { + "modified": "2019-03-23T23:38:13.094Z", "contributors": [ - "juanarbol" + "blanchart", + "samuelrb", + "Simplexible", + "Sebastianz", + "Prinz_Rana", + "fscholz", + "teoli", + "chux", + "aguztinrs" ] }, - "Web/API/Response/status": { - "modified": "2020-10-15T22:24:09.432Z", + "Web/CSS/basic-shape": { + "modified": "2019-03-23T22:21:44.895Z", "contributors": [ - "FDSoil" + "israel-munoz" ] }, - "Web/API/SVGPoint": { - "modified": "2019-03-23T23:03:09.725Z", + "Web/CSS/blend-mode": { + "modified": "2020-12-04T10:45:45.837Z", "contributors": [ - "fscholz", - "hasAngel" + "israel-munoz" ] }, - "Web/API/Screen": { - "modified": "2019-10-10T16:45:22.609Z", + "Web/CSS/block-size": { + "modified": "2019-03-25T00:21:59.271Z", "contributors": [ - "jazdian", - "Grijander81" + "teffcode", + "israel-munoz" ] }, - "Web/API/Selection": { - "modified": "2019-03-23T23:54:01.018Z", + "Web/CSS/border": { + "modified": "2020-09-27T22:17:02.248Z", "contributors": [ - "CxRxExO", - "fscholz", - "DR", - "Juandavaus", - "Kroatan", - "Mgjbot", - "LaRy", + "usuarioMan", + "cgosorio", + "wbamberg", + "SphinxKnight", + "teoli", + "Yuichiro", "Nathymig" ] }, - "Web/API/Selection/addRange": { - "modified": "2019-03-23T23:46:53.374Z", + "Web/CSS/border-block": { + "modified": "2020-10-15T22:16:25.322Z", "contributors": [ - "fscholz", - "Mgjbot", - "DR" + "teffcode" ] }, - "Web/API/Selection/anchorNode": { - "modified": "2019-03-23T23:46:46.912Z", + "Web/CSS/border-block-color": { + "modified": "2020-10-15T22:16:29.172Z", "contributors": [ - "fscholz", - "Mgjbot", - "DR" + "teffcode" ] }, - "Web/API/Selection/anchorOffset": { - "modified": "2019-03-23T23:46:55.279Z", + "Web/CSS/border-block-end": { + "modified": "2019-03-23T00:00:36.213Z", "contributors": [ - "fscholz", - "DR", - "Mgjbot" + "teffcode", + "israel-munoz" ] }, - "Web/API/Selection/collapse": { - "modified": "2019-03-23T23:46:57.541Z", + "Web/CSS/border-block-end-color": { + "modified": "2019-03-24T11:12:10.336Z", "contributors": [ - "fscholz", - "Mgjbot", - "DR" + "teffcode", + "israel-munoz" ] }, - "Web/API/Selection/collapseToEnd": { - "modified": "2019-03-23T23:47:01.187Z", + "Web/CSS/border-block-end-style": { + "modified": "2019-03-23T22:11:28.819Z", "contributors": [ - "fscholz", - "Mgjbot", - "DR" + "israel-munoz" ] }, - "Web/API/Selection/collapseToStart": { - "modified": "2019-03-23T23:46:59.744Z", + "Web/CSS/border-block-end-width": { + "modified": "2020-10-15T22:16:29.514Z", "contributors": [ - "fscholz", - "Mgjbot", - "DR" + "teffcode" ] }, - "Web/API/Selection/containsNode": { - "modified": "2019-03-23T23:46:51.997Z", + "Web/CSS/border-block-start": { + "modified": "2020-10-15T22:16:31.641Z", "contributors": [ - "fscholz", - "Mgjbot", - "DR" + "teffcode" ] }, - "Web/API/Selection/deleteFromDocument": { - "modified": "2019-03-23T23:46:47.857Z", + "Web/CSS/border-block-start-color": { + "modified": "2020-10-15T22:16:30.534Z", "contributors": [ - "fscholz", - "Mgjbot", - "DR" + "teffcode" ] }, - "Web/API/Selection/extend": { - "modified": "2019-03-23T23:46:54.795Z", + "Web/CSS/border-block-start-style": { + "modified": "2020-10-15T22:16:32.074Z", "contributors": [ - "fscholz", - "DR", - "Mgjbot" + "teffcode" ] }, - "Web/API/Selection/focusNode": { - "modified": "2019-03-23T23:46:46.574Z", + "Web/CSS/border-block-start-width": { + "modified": "2020-10-15T22:16:36.793Z", "contributors": [ - "fscholz", - "DR" + "teffcode" ] }, - "Web/API/Selection/focusOffset": { - "modified": "2019-03-23T23:46:54.969Z", + "Web/CSS/border-block-style": { + "modified": "2020-10-15T22:16:36.371Z", "contributors": [ - "fscholz", - "DR", - "Mgjbot" + "teffcode" ] }, - "Web/API/Selection/getRangeAt": { - "modified": "2019-03-23T23:46:55.195Z", + "Web/CSS/border-block-width": { + "modified": "2020-10-15T22:16:39.535Z", "contributors": [ - "fscholz", - "DR" + "teffcode" ] }, - "Web/API/Selection/isCollapsed": { - "modified": "2019-03-23T23:46:52.080Z", + "Web/CSS/border-bottom": { + "modified": "2019-03-24T00:08:41.510Z", "contributors": [ - "fscholz", - "DR" + "wbamberg", + "teoli", + "Yuichiro", + "Nathymig" ] }, - "Web/API/Selection/rangeCount": { - "modified": "2019-03-23T23:46:50.030Z", + "Web/CSS/border-bottom-color": { + "modified": "2019-03-24T00:08:33.937Z", "contributors": [ - "fscholz", - "DR" + "wbamberg", + "teoli", + "Yuichiro", + "Nathymig" ] }, - "Web/API/Selection/removeAllRanges": { - "modified": "2019-03-23T23:46:54.883Z", + "Web/CSS/border-bottom-left-radius": { + "modified": "2019-03-18T21:16:45.497Z", "contributors": [ - "fscholz", - "Mgjbot", - "DR" + "israel-munoz" ] }, - "Web/API/Selection/removeRange": { - "modified": "2019-03-23T23:46:55.069Z", + "Web/CSS/border-bottom-right-radius": { + "modified": "2019-03-18T21:15:46.042Z", "contributors": [ - "fscholz", - "DR", - "Mgjbot" + "israel-munoz" ] }, - "Web/API/Selection/selectAllChildren": { - "modified": "2019-03-23T23:46:50.124Z", + "Web/CSS/border-bottom-style": { + "modified": "2019-03-24T00:08:38.365Z", "contributors": [ - "fscholz", - "Mgjbot", - "DR" + "wbamberg", + "teoli", + "Yuichiro", + "Nathymig" ] }, - "Web/API/Selection/toString": { - "modified": "2019-03-23T23:47:28.897Z", + "Web/CSS/border-bottom-width": { + "modified": "2019-03-24T00:12:49.342Z", "contributors": [ - "fscholz", - "Mgjbot", - "DR" + "wbamberg", + "teoli", + "Yuichiro", + "Nathymig" ] }, - "Web/API/ServiceWorkerContainer": { - "modified": "2020-10-15T22:03:12.673Z", + "Web/CSS/border-collapse": { + "modified": "2019-03-23T23:52:09.803Z", "contributors": [ - "fscholz" + "wbamberg", + "teoli", + "Mgjbot", + "Nathymig" ] }, - "Web/API/ServiceWorkerContainer/register": { - "modified": "2020-10-15T22:03:11.889Z", + "Web/CSS/border-color": { + "modified": "2019-03-24T00:08:40.211Z", "contributors": [ - "LuisOlive", - "marc2684" + "wbamberg", + "SphinxKnight", + "teoli", + "Yuichiro", + "Nathymig" ] }, - "Web/API/ServiceWorkerRegistration": { - "modified": "2020-10-15T22:05:45.607Z", + "Web/CSS/border-end-end-radius": { + "modified": "2020-10-15T22:16:36.075Z", "contributors": [ - "ExE-Boss" + "teffcode" ] }, - "Web/API/Service_Worker_API": { - "modified": "2019-03-23T22:09:38.478Z", + "Web/CSS/border-end-start-radius": { + "modified": "2020-10-15T22:16:41.715Z", "contributors": [ - "Fedapamo", - "andrpueb", - "ibanlopez", - "eltioico", - "chrisdavidmills" + "teffcode" ] }, - "Web/API/Service_Worker_API/Using_Service_Workers": { - "modified": "2019-03-23T22:09:43.848Z", + "Web/CSS/border-image": { + "modified": "2019-03-23T23:21:15.962Z", "contributors": [ - "JasonGlez", - "Vergara", - "GabrielSchlomo", - "Anibalismo", - "darioperez" + "teoli", + "Sebastianz", + "JuanCastela", + "yeyxav" ] }, - "Web/API/Storage": { - "modified": "2019-03-23T22:37:04.835Z", + "Web/CSS/border-image-outset": { + "modified": "2019-03-23T22:22:10.809Z", "contributors": [ - "puma", - "Sebastianz" + "israel-munoz" ] }, - "Web/API/Storage/LocalStorage": { - "modified": "2020-07-20T09:10:56.525Z", + "Web/CSS/border-image-repeat": { + "modified": "2020-10-15T21:51:01.640Z", "contributors": [ - "LucasMaciasAtala", - "moniqaveiga", - "Andresrodart", - "lsphantom" + "SphinxKnight", + "israel-munoz" ] }, - "Web/API/Storage/clear": { - "modified": "2019-03-23T22:26:00.358Z", + "Web/CSS/border-image-slice": { + "modified": "2019-03-23T22:22:00.674Z", "contributors": [ - "edwarfuentes97", - "theguitxo" + "israel-munoz" ] }, - "Web/API/Storage/getItem": { - "modified": "2019-03-23T22:33:04.286Z", + "Web/CSS/border-inline": { + "modified": "2020-10-15T22:16:39.413Z", "contributors": [ - "devconcept", - "aminguez" + "teffcode" ] }, - "Web/API/Storage/length": { - "modified": "2019-03-23T22:25:49.492Z", + "Web/CSS/border-inline-color": { + "modified": "2020-10-15T22:16:39.129Z", "contributors": [ - "Guitxo" + "teffcode" ] }, - "Web/API/Storage/removeItem": { - "modified": "2020-06-16T13:11:43.937Z", + "Web/CSS/border-inline-end": { + "modified": "2020-10-15T22:16:35.919Z", "contributors": [ - "jorgeCaster", - "aminguez" + "teffcode" ] }, - "Web/API/Storage/setItem": { - "modified": "2019-03-23T22:37:01.770Z", + "Web/CSS/border-inline-end-color": { + "modified": "2020-10-15T22:16:44.169Z", "contributors": [ - "aminguez", - "spideep" + "teffcode" ] }, - "Web/API/StorageManager": { - "modified": "2020-10-15T22:18:18.423Z" - }, - "Web/API/StorageManager/estimate": { - "modified": "2020-10-15T22:18:17.461Z", + "Web/CSS/border-inline-end-style": { + "modified": "2020-10-15T22:16:36.354Z", "contributors": [ - "AlePerez92" + "teffcode" ] }, - "Web/API/StorageManager/persist": { - "modified": "2020-10-15T22:18:17.848Z", + "Web/CSS/border-inline-end-width": { + "modified": "2020-10-15T22:16:36.837Z", "contributors": [ - "AlePerez92" + "teffcode" ] }, - "Web/API/StorageManager/persisted": { - "modified": "2020-10-15T22:18:17.733Z", + "Web/CSS/border-inline-start": { + "modified": "2020-10-15T22:16:44.782Z", "contributors": [ - "AlePerez92" + "teffcode" ] }, - "Web/API/StyleSheet": { - "modified": "2019-03-18T21:12:49.649Z", + "Web/CSS/border-inline-start-color": { + "modified": "2020-10-15T22:16:35.643Z", "contributors": [ - "diegovinie", - "SphinxKnight", - "fscholz", - "khalid32", - "teoli", - "HenryGR" + "teffcode" ] }, - "Web/API/StyleSheet/disabled": { - "modified": "2019-03-23T23:58:08.612Z", + "Web/CSS/border-inline-start-style": { + "modified": "2020-10-15T22:16:41.098Z", "contributors": [ - "fscholz", - "khalid32", - "teoli", - "HenryGR" + "teffcode" ] }, - "Web/API/StyleSheet/href": { - "modified": "2019-03-23T23:58:07.932Z", + "Web/CSS/border-inline-start-width": { + "modified": "2020-10-15T22:16:33.765Z", "contributors": [ - "fscholz", - "khalid32", - "teoli", - "HenryGR" + "teffcode" ] }, - "Web/API/StyleSheet/media": { - "modified": "2019-03-23T23:58:05.417Z", + "Web/CSS/border-inline-style": { + "modified": "2020-10-15T22:16:43.176Z", "contributors": [ - "fscholz", - "khalid32", - "teoli", - "HenryGR" + "teffcode" ] }, - "Web/API/StyleSheet/ownerNode": { - "modified": "2019-03-23T23:58:23.239Z", + "Web/CSS/border-inline-width": { + "modified": "2020-10-15T22:16:39.409Z", "contributors": [ - "fscholz", - "khalid32", - "teoli", - "HenryGR" + "teffcode" ] }, - "Web/API/StyleSheet/parentStyleSheet": { - "modified": "2019-03-23T23:58:09.687Z", + "Web/CSS/border-left": { + "modified": "2019-03-24T00:08:37.376Z", "contributors": [ "fscholz", - "khalid32", "teoli", - "HenryGR" + "Yuichiro", + "Mgjbot", + "Wrongloop" ] }, - "Web/API/StyleSheet/title": { - "modified": "2019-03-23T23:58:12.135Z", + "Web/CSS/border-left-color": { + "modified": "2019-03-23T23:52:28.495Z", "contributors": [ - "fscholz", - "xuancanh", + "wbamberg", + "d8vjork", "teoli", - "HenryGR" + "Wrongloop" ] }, - "Web/API/StyleSheet/type": { - "modified": "2019-03-23T23:58:05.312Z", + "Web/CSS/border-radius": { + "modified": "2019-03-23T23:37:30.234Z", "contributors": [ - "fscholz", - "jsx", + "Barleby", + "Simplexible", + "Sebastianz", + "Prinz_Rana", "teoli", - "HenryGR" + "bytx", + "wilo" ] }, - "Web/API/SubtleCrypto": { - "modified": "2020-10-15T22:27:14.356Z", + "Web/CSS/border-right": { + "modified": "2020-10-15T22:17:02.534Z", "contributors": [ - "joseluisq" + "dlopez525", + "osperi" ] }, - "Web/API/SubtleCrypto/digest": { - "modified": "2020-10-15T22:27:30.018Z", + "Web/CSS/border-spacing": { + "modified": "2019-03-23T23:52:00.961Z", "contributors": [ - "joseluisq" + "wbamberg", + "teoli", + "Nathymig" ] }, - "Web/API/SubtleCrypto/encrypt": { - "modified": "2020-10-15T22:27:29.781Z", + "Web/CSS/border-start-end-radius": { + "modified": "2020-10-15T22:16:40.778Z", "contributors": [ - "joseluisq" + "teffcode" ] }, - "Web/API/TextTrack": { - "modified": "2020-10-15T22:33:08.345Z", + "Web/CSS/border-start-start-radius": { + "modified": "2020-10-15T22:16:40.498Z", "contributors": [ - "joeyparrish" + "teffcode" ] }, - "Web/API/TextTrack/cuechange_event": { - "modified": "2020-10-15T22:33:09.063Z", + "Web/CSS/border-style": { + "modified": "2020-10-22T00:09:31.436Z", "contributors": [ - "Pablo-No" + "YairCaptain", + "SphinxKnight", + "javierpolit", + "teoli", + "Yuichiro", + "Nathymig" ] }, - "Web/API/TouchEvent": { - "modified": "2019-03-23T22:32:05.809Z", + "Web/CSS/border-top": { + "modified": "2019-03-23T22:41:47.976Z", "contributors": [ - "ulisestrujillo", - "AlePerez92" + "cgosorio", + "mcclone2001" ] }, - "Web/API/UIEvent": { - "modified": "2019-03-23T23:01:34.700Z", + "Web/CSS/border-top-color": { + "modified": "2020-10-15T21:59:59.493Z", "contributors": [ - "fscholz" + "jpmontoya182" ] }, - "Web/API/UIEvent/pageX": { - "modified": "2019-03-23T23:12:56.756Z", + "Web/CSS/border-top-left-radius": { + "modified": "2019-03-23T22:27:25.384Z", "contributors": [ - "fscholz", - "khalid32", - "Nathymig", - "Julgon" + "israel-munoz" ] }, - "Web/API/URL": { - "modified": "2019-03-23T22:19:12.735Z", + "Web/CSS/border-top-right-radius": { + "modified": "2019-03-23T22:27:24.905Z", "contributors": [ - "zayle", - "wstaelens" + "israel-munoz" ] }, - "Web/API/URL/Host": { - "modified": "2020-10-15T22:28:58.726Z", + "Web/CSS/border-width": { + "modified": "2020-12-03T13:55:01.337Z", "contributors": [ - "diegovlopez587" + "rc925e", + "davisorb95", + "wbamberg", + "SphinxKnight", + "Yisus777", + "teoli", + "Yuichiro", + "Nathymig" ] }, - "Web/API/URL/URL": { - "modified": "2020-10-15T22:21:36.171Z", + "Web/CSS/bottom": { + "modified": "2019-01-16T15:42:01.210Z", "contributors": [ - "roberth_dev" + "teoli", + "Nathymig", + "HenryGR", + "Mgjbot" ] }, - "Web/API/URL/createObjectURL": { - "modified": "2019-03-23T22:19:19.805Z", + "Web/CSS/box-shadow": { + "modified": "2020-10-15T21:19:58.329Z", "contributors": [ - "OrlandoDeJesusCuxinYama", - "isafrus5", - "AzazelN28" + "davidpala.dev", + "IsraelFloresDGA", + "Sebastianz", + "Prinz_Rana", + "teoli", + "carloshs92" ] }, - "Web/API/URL/port": { - "modified": "2020-10-15T22:21:35.297Z", + "Web/CSS/box-sizing": { + "modified": "2020-10-15T21:37:29.482Z", "contributors": [ - "roberth_dev" - ] - }, - "Web/API/URLSearchParams": { - "modified": "2019-03-23T22:08:25.598Z", - "contributors": [ - "aliveghost04" + "amazing79", + "Soyaine", + "manuelizo", + "IsraelFloresDGA", + "GiioBass", + "Derhks", + "Sebastianz", + "juandiegoles" ] }, - "Web/API/URLSearchParams/URLSearchParams": { - "modified": "2020-10-15T22:28:05.327Z", + "Web/CSS/calc()": { + "modified": "2020-11-04T09:08:00.719Z", "contributors": [ - "daniel.duarte" + "chrisdavidmills", + "blanchart", + "mrstork", + "prayash", + "teoli", + "MrBlogger" ] }, - "Web/API/WebGL_API": { - "modified": "2019-03-24T00:07:50.182Z", + "Web/CSS/caret-color": { + "modified": "2019-03-23T22:08:56.287Z", "contributors": [ - "fscholz", - "teoli", - "inma_610" + "israel-munoz" ] }, - "Web/API/WebGL_API/Tutorial": { - "modified": "2019-03-23T22:48:50.519Z", + "Web/CSS/clear": { + "modified": "2020-10-30T03:42:19.832Z", "contributors": [ "SphinxKnight", - "lrlimon", - "fscholz" + "Alxbrz19", + "javichito" ] }, - "Web/API/WebGL_API/Tutorial/Adding_2D_content_to_a_WebGL_context": { - "modified": "2019-03-18T21:16:52.110Z", + "Web/CSS/clip": { + "modified": "2019-03-23T23:33:36.877Z", "contributors": [ - "Nekete", - "Erik12Ixec", - "WHK102", - "COBRILL4" + "Sebastianz", + "teoli", + "nadiafaya" ] }, - "Web/API/WebGL_API/Tutorial/Animating_objects_with_WebGL": { - "modified": "2019-03-23T23:20:38.388Z", + "Web/CSS/clip-path": { + "modified": "2020-10-15T21:54:58.750Z", "contributors": [ "fscholz", - "teoli", - "luziiann" + "jorgeherrera9103", + "david-velilla", + "CarlosLinares" ] }, - "Web/API/WebGL_API/Tutorial/Animating_textures_in_WebGL": { - "modified": "2019-03-23T22:34:48.400Z", + "Web/CSS/color": { + "modified": "2020-10-15T21:15:23.982Z", "contributors": [ - "pixelements" + "rhssr", + "SphinxKnight", + "teoli", + "trada", + "Mgjbot", + "HenryGR" ] }, - "Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL": { - "modified": "2019-03-23T23:06:04.656Z", + "Web/CSS/color_value": { + "modified": "2019-03-23T22:37:22.211Z", "contributors": [ - "fcanellas", - "Pablo_Bangueses", - "CarlosLinares", - "Inheritech", - "CandelarioGomez", - "fscholz", - "joeljose", - "Jorge0309" + "blanchart", + "Sebastianz", + "Simplexible", + "pekechis" ] }, - "Web/API/WebGL_API/Tutorial/Objetos_3D_utilizando_WebGL": { - "modified": "2019-03-23T22:37:32.127Z", + "Web/CSS/column-count": { + "modified": "2020-10-15T21:40:29.448Z", "contributors": [ - "asarch", - "Giovan" + "AlePerez92", + "Anonymous", + "Sebastianz", + "Davier182" ] }, - "Web/API/WebGL_API/Tutorial/Using_shaders_to_apply_color_in_WebGL": { - "modified": "2020-05-29T05:02:06.384Z", + "Web/CSS/column-span": { + "modified": "2020-10-15T22:21:55.127Z", "contributors": [ - "jmlocke1", - "Giovan" + "AlePerez92" ] }, - "Web/API/WebGL_API/Tutorial/Wtilizando_texturas_en_WebGL": { - "modified": "2019-03-23T22:15:44.225Z", + "Web/CSS/content": { + "modified": "2019-03-23T23:51:59.928Z", "contributors": [ - "BubuAnabelas", - "marce_1994" + "teoli", + "Nathymig", + "HenryGR" ] }, - "Web/API/WebRTC_API": { - "modified": "2020-05-01T03:28:58.714Z", + "Web/CSS/cursor": { + "modified": "2019-03-23T23:52:22.554Z", "contributors": [ - "erito73", - "miguelsp" + "wbamberg", + "teoli", + "Wrongloop" ] }, - "Web/API/WebRTC_API/Protocols": { - "modified": "2020-05-01T03:41:11.993Z", + "Web/CSS/direction": { + "modified": "2019-01-16T15:40:27.790Z", "contributors": [ - "erito73", - "ValeriaRamos" + "teoli", + "Nathymig", + "HenryGR", + "Mgjbot" ] }, - "Web/API/WebSocket": { - "modified": "2019-03-18T20:53:48.099Z", + "Web/CSS/display": { + "modified": "2020-10-21T14:14:21.533Z", "contributors": [ - "benja90", - "spachecojimenez", - "aranondo", - "dpineiden" + "johanfvn", + "davidpala.dev", + "NeoFl3x", + "wbamberg", + "evaferreira", + "SphinxKnight", + "devCaso", + "FranciscoCastle" ] }, - "Web/API/WebSocket/close_event": { - "modified": "2019-03-23T21:59:50.486Z", + "Web/CSS/env()": { + "modified": "2020-11-10T11:09:30.133Z", "contributors": [ - "irenesmith", - "ExE-Boss", - "FLAVIOALFA" + "chrisdavidmills", + "severo" ] }, - "Web/API/WebSocket/onerror": { - "modified": "2020-10-15T22:13:54.439Z", + "Web/CSS/filter": { + "modified": "2019-03-23T22:59:24.815Z", "contributors": [ - "Bumxu" + "israel-munoz", + "Sebastianz", + "teoli", + "maiky" ] }, - "Web/API/WebSockets_API": { - "modified": "2019-05-21T02:54:41.622Z", + "Web/CSS/filter-function": { + "modified": "2019-03-18T21:34:50.284Z", "contributors": [ - "SphinxKnight", - "tpb", - "petisocarambanal", - "CesarBustios", - "mserracaldentey" + "lajaso", + "mfluehr" ] }, - "Web/API/WebSockets_API/Escribiendo_servidor_WebSocket": { - "modified": "2019-05-21T02:54:42.354Z", + "Web/CSS/filter-function/blur()": { + "modified": "2020-11-05T09:45:32.642Z", "contributors": [ - "SphinxKnight", - "manueljrs", - "Yantup", - "jjmontes" + "chrisdavidmills", + "lajaso" ] }, - "Web/API/WebSockets_API/Escribiendo_servidores_con_WebSocket": { - "modified": "2019-06-21T20:55:28.443Z", + "Web/CSS/filter-function/brightness()": { + "modified": "2020-11-05T09:57:09.596Z", "contributors": [ - "alesalva", - "SphinxKnight", - "juanmanuelramallo", - "8manuel", - "llekn", - "jjmontes", - "augus1990" + "chrisdavidmills", + "mjsorribas" ] }, - "Web/API/WebSockets_API/Writing_WebSocket_client_applications": { - "modified": "2019-05-21T02:54:42.026Z", + "Web/CSS/fit-content": { + "modified": "2020-10-15T22:06:18.387Z", "contributors": [ - "SphinxKnight", - "neopablix", - "jevvilla", - "jvilla8a", - "AzazelN28", - "Unbrained", - "gabryk", - "MauroEldritch", - "frankzen" + "ocamachor" ] }, - "Web/API/WebVR_API": { - "modified": "2019-03-23T22:07:07.755Z", + "Web/CSS/flex": { + "modified": "2019-03-23T22:31:42.324Z", "contributors": [ - "Alphaeolo", - "chrisdavidmills" + "Luis_Calvo", + "joshitobuba", + "Enfokat" ] }, - "Web/API/WebVR_API/Using_the_WebVR_API": { - "modified": "2020-10-12T08:06:57.683Z", + "Web/CSS/flex-basis": { + "modified": "2020-08-16T18:24:46.422Z", "contributors": [ - "SphinxKnight", - "MarioA19", - "geryescalier", - "karlalhdz" + "metrapach", + "joshitobuba", + "jandrade" ] }, - "Web/API/WebVTT_API": { - "modified": "2020-10-15T22:33:07.538Z", + "Web/CSS/flex-direction": { + "modified": "2020-10-15T21:29:59.011Z", "contributors": [ - "Pablo-No" + "Alex_Figueroa", + "evaferreira", + "Manuel-Kas", + "joshitobuba", + "fscholz", + "Sebastianz", + "elkinbernal" ] }, - "Web/API/Web_Crypto_API": { - "modified": "2020-02-12T20:20:09.829Z", + "Web/CSS/flex-flow": { + "modified": "2019-03-18T21:15:12.282Z", "contributors": [ - "joseluisq", - "anfuca", - "haxdai" + "carlos.millan3", + "abaracedo" ] }, - "Web/API/Web_Crypto_API/Checking_authenticity_with_password": { - "modified": "2019-03-23T22:10:43.026Z", + "Web/CSS/flex-grow": { + "modified": "2020-05-06T21:30:31.507Z", "contributors": [ - "haxdai" + "soniarecher", + "joshitobuba" ] }, - "Web/API/Web_Speech_API": { - "modified": "2020-10-15T22:29:46.339Z", + "Web/CSS/flex-shrink": { + "modified": "2020-10-15T22:00:16.924Z", "contributors": [ - "dianarryanti707" + "deluxury", + "Facundo-Corradini" ] }, - "Web/API/Web_Speech_API/Uso_de_la_Web_Speech_API": { - "modified": "2020-05-10T18:32:28.954Z", + "Web/CSS/flex-wrap": { + "modified": "2019-03-23T23:02:38.556Z", "contributors": [ - "mcarou" + "joshitobuba", + "fscholz", + "Sebastianz", + "Rober84" ] }, - "Web/API/Web_Workers_API": { - "modified": "2020-04-14T23:36:47.242Z", + "Web/CSS/float": { + "modified": "2020-11-07T16:01:06.351Z", "contributors": [ - "krebking", - "thepianist2", - "jsanmor" + "ppalma1963", + "melisb3", + "wbamberg", + "SphinxKnight", + "teoli", + "fscholz", + "Mgjbot", + "Nathymig", + "HenryGR" ] }, - "Web/API/WheelEvent": { - "modified": "2019-03-23T22:40:53.687Z", + "Web/CSS/font": { + "modified": "2019-03-23T23:53:27.791Z", "contributors": [ - "StripTM" + "wbamberg", + "fscholz", + "teoli", + "Mgjbot", + "Nathymig", + "Nukeador", + "RickieesES", + "HenryGR" ] }, - "Web/API/WheelEvent/deltaY": { - "modified": "2019-03-23T22:26:41.848Z", + "Web/CSS/font-family": { + "modified": "2019-03-23T23:52:00.350Z", "contributors": [ - "Thargelion" + "wbamberg", + "fscholz", + "teoli", + "Nathymig", + "HenryGR", + "Mgjbot" ] }, - "Web/API/Window": { - "modified": "2020-08-14T20:26:23.156Z", + "Web/CSS/font-size": { + "modified": "2019-03-23T23:52:02.387Z", "contributors": [ - "Enesimus", - "Michelangeur", - "antoiba86", - "jjoselon", - "vggallego", + "wbamberg", "fscholz", - "Crash", - "Monty", - "Markens", - "DR", + "teoli", "Nathymig", + "RickieesES", + "HenryGR", "Mgjbot" ] }, - "Web/API/Window/URL": { - "modified": "2019-03-23T22:38:17.598Z", + "Web/CSS/font-size-adjust": { + "modified": "2019-03-23T23:53:20.314Z", "contributors": [ - "israelfl" + "wbamberg", + "ivangrimaldo", + "fscholz", + "teoli", + "Mgjbot", + "Nathymig", + "HenryGR" ] }, - "Web/API/Window/alert": { - "modified": "2019-03-23T22:27:29.008Z", + "Web/CSS/font-style": { + "modified": "2019-03-23T23:54:11.290Z", "contributors": [ - "israel-munoz" + "gustavodibasson", + "ivyixbvp", + "teoli", + "Mgjbot", + "Nathymig", + "RickieesES", + "HenryGR" ] }, - "Web/API/Window/applicationCache": { - "modified": "2019-03-23T23:52:56.666Z", + "Web/CSS/font-variant": { + "modified": "2019-03-23T23:54:15.244Z", "contributors": [ - "SphinxKnight", + "wbamberg", "fscholz", - "AshfaqHossain", - "HenryGR", - "Mgjbot" - ] - }, - "Web/API/Window/cancelAnimationFrame": { - "modified": "2019-03-23T22:30:46.211Z", - "contributors": [ - "khrizenriquez" + "teoli", + "Mgjbot", + "Nathymig", + "RickieesES", + "HenryGR" ] }, - "Web/API/Window/close": { - "modified": "2020-10-15T21:37:07.614Z", + "Web/CSS/font-variant-alternates": { + "modified": "2019-03-23T22:18:05.471Z", "contributors": [ - "SphinxKnight", - "dgrizzla", - "Siro_Diaz" + "israel-munoz" ] }, - "Web/API/Window/closed": { - "modified": "2019-03-18T20:59:11.710Z", + "Web/CSS/font-weight": { + "modified": "2020-10-08T18:46:18.623Z", "contributors": [ + "jorgetoloza", + "EzeRamirez84", + "UbaldoRosas", + "ivyixbvp", "SphinxKnight", - "developingo" + "fscholz", + "teoli", + "Mgjbot", + "ethertank", + "Nathymig", + "RickieesES", + "HenryGR" ] }, - "Web/API/Window/confirm": { - "modified": "2019-03-23T22:45:47.266Z", + "Web/CSS/frequency": { + "modified": "2019-03-23T22:22:14.267Z", "contributors": [ - "julian3xl" + "israel-munoz" ] }, - "Web/API/Window/crypto": { - "modified": "2020-02-12T20:26:38.795Z", + "Web/CSS/grid": { + "modified": "2019-03-23T22:08:26.115Z", "contributors": [ - "joseluisq", - "AlePerez92", - "victorjavierss" + "macagua", + "andresrisso" ] }, - "Web/API/Window/devicePixelRatio": { - "modified": "2019-03-23T22:33:20.853Z", + "Web/CSS/grid-auto-columns": { + "modified": "2020-10-15T22:07:00.570Z", "contributors": [ - "Grijander81" + "melisb3", + "robyirloreto" ] }, - "Web/API/Window/dialogArguments": { - "modified": "2019-03-23T22:33:21.065Z", + "Web/CSS/grid-auto-rows": { + "modified": "2020-10-15T22:00:41.266Z", "contributors": [ - "Grijander81" + "chulesoft", + "deimidis2" ] }, - "Web/API/Window/document": { - "modified": "2019-03-18T21:17:09.045Z", + "Web/CSS/grid-template-areas": { + "modified": "2019-03-23T22:11:49.454Z", "contributors": [ - "Grijander81" + "diroco" ] }, - "Web/API/Window/frameElement": { - "modified": "2019-03-23T22:33:19.039Z", + "Web/CSS/grid-template-columns": { + "modified": "2020-10-15T21:57:16.414Z", "contributors": [ - "edmon1024", - "Grijander81" + "fscholz", + "IsraelFloresDGA" ] }, - "Web/API/Window/fullScreen": { - "modified": "2019-03-23T23:50:19.968Z", + "Web/CSS/grid-template-rows": { + "modified": "2020-10-15T21:57:11.635Z", "contributors": [ - "SphinxKnight", + "AlePerez92", "fscholz", - "khalid32", - "HenryGR", - "Mgjbot" + "IsraelFloresDGA" ] }, - "Web/API/Window/getComputedStyle": { - "modified": "2019-03-23T23:58:07.622Z", + "Web/CSS/height": { + "modified": "2019-03-23T23:54:05.630Z", "contributors": [ - "fscholz", - "jsx", + "israel-munoz", "teoli", + "Mgjbot", + "Nathymig", "HenryGR" ] }, - "Web/API/Window/getSelection": { - "modified": "2019-09-18T11:51:48.070Z", + "Web/CSS/hyphens": { + "modified": "2020-10-15T22:02:23.515Z", "contributors": [ - "AlePerez92", - "LittleSanti", - "fscholz", - "Mgjbot", - "DR" + "blanchart", + "AntonioNavajasOjeda" ] }, - "Web/API/Window/hashchange_event": { - "modified": "2019-04-01T11:56:33.015Z", + "Web/CSS/image": { + "modified": "2019-03-23T22:28:08.883Z", "contributors": [ - "fscholz", - "ExE-Boss", - "jorgerenteral" + "israel-munoz" ] }, - "Web/API/Window/history": { - "modified": "2020-10-15T21:43:45.922Z", + "Web/CSS/image-rendering": { + "modified": "2020-10-15T22:02:06.401Z", "contributors": [ - "SphinxKnight", - "khrizenriquez" + "rodrigorila" ] }, - "Web/API/Window/innerHeight": { - "modified": "2020-07-23T18:50:37.998Z", + "Web/CSS/ime-mode": { + "modified": "2019-01-16T14:38:44.597Z", "contributors": [ - "dongerardor", - "alfredoWs" + "teoli", + "fscholz", + "Mgjbot", + "Nathymig", + "HenryGR" ] }, - "Web/API/Window/localStorage": { - "modified": "2019-06-04T06:54:12.078Z", + "Web/CSS/inherit": { + "modified": "2019-07-27T06:34:31.498Z", "contributors": [ - "taumartin", - "nazarioa", - "McSonk", - "faliure", - "tinchosrok", - "DragShot", - "ianaya89" + "josepaternina", + "AlejandroJSR7", + "teoli", + "Nathymig", + "HenryGR", + "Mgjbot" ] }, - "Web/API/Window/location": { - "modified": "2019-03-23T22:52:04.798Z", - "contributors": [ - "khrizenriquez", - "MaFranceschi" - ] - }, - "Web/API/Window/locationbar": { - "modified": "2019-03-23T22:16:35.650Z", - "contributors": [ - "ivannieto" - ] - }, - "Web/API/Window/matchMedia": { - "modified": "2020-10-15T21:54:30.059Z", + "Web/CSS/inheritance": { + "modified": "2019-03-23T23:53:04.499Z", "contributors": [ - "AlePerez92", - "tipoqueno", - "tavo379" + "joseanpg", + "teoli", + "Mgjbot", + "Nathymig", + "HenryGR" ] }, - "Web/API/Window/menubar": { - "modified": "2019-03-23T22:33:13.331Z", + "Web/CSS/initial": { + "modified": "2019-01-16T15:42:24.130Z", "contributors": [ - "Grijander81" + "teoli", + "Nathymig", + "HenryGR", + "Mgjbot" ] }, - "Web/API/Window/moveBy": { - "modified": "2020-10-15T22:08:26.636Z", + "Web/CSS/inline-size": { + "modified": "2020-10-15T22:16:34.800Z", "contributors": [ - "pedrofmb" + "teffcode" ] }, - "Web/API/Window/navigator": { - "modified": "2019-03-23T23:20:37.914Z", + "Web/CSS/inset": { + "modified": "2020-10-15T22:16:40.193Z", "contributors": [ - "fscholz", - "khalid32", - "tpb" + "teffcode" ] }, - "Web/API/Window/offline_event": { - "modified": "2019-04-30T14:21:22.454Z", + "Web/CSS/inset-block": { + "modified": "2020-10-15T22:16:40.204Z", "contributors": [ - "wbamberg", - "irenesmith", - "Daniel-VQ" + "teffcode" ] }, - "Web/API/Window/open": { - "modified": "2020-04-13T14:31:02.220Z", + "Web/CSS/inset-block-end": { + "modified": "2020-10-15T22:16:39.037Z", "contributors": [ - "fj-ramirez", - "BubuAnabelas", - "jccharlie90", - "SphinxKnight", - "VictorAbdon", - "jjoselon" + "teffcode" ] }, - "Web/API/Window/opener": { - "modified": "2019-03-23T22:46:00.877Z", + "Web/CSS/inset-block-start": { + "modified": "2020-10-15T22:16:44.127Z", "contributors": [ - "carlosmunozrodriguez", - "f3rbarraza" + "teffcode" ] }, - "Web/API/Window/outerHeight": { - "modified": "2019-03-18T21:15:44.722Z", + "Web/CSS/inset-inline": { + "modified": "2020-10-15T22:16:43.251Z", "contributors": [ - "rlopezAyala", - "GianlucaBobbio" + "teffcode" ] }, - "Web/API/Window/outerWidth": { - "modified": "2019-03-23T22:04:23.293Z", + "Web/CSS/inset-inline-end": { + "modified": "2020-10-15T22:16:39.864Z", "contributors": [ - "shadairafael" + "teffcode" ] }, - "Web/API/Window/print": { - "modified": "2019-07-11T23:43:54.339Z", + "Web/CSS/inset-inline-start": { + "modified": "2020-10-15T22:16:43.418Z", "contributors": [ - "EstebanDalelR", - "ErikMj69" + "teffcode" ] }, - "Web/API/Window/prompt": { - "modified": "2019-03-23T22:20:58.413Z", + "Web/CSS/integer": { + "modified": "2019-03-23T23:50:21.071Z", "contributors": [ - "israel-munoz" + "fscholz", + "teoli", + "HenryGR", + "Mgjbot" ] }, - "Web/API/Window/requestAnimationFrame": { - "modified": "2020-07-05T08:38:54.640Z", + "Web/CSS/isolation": { + "modified": "2019-03-23T22:32:29.363Z", "contributors": [ - "AlePerez92", - "mauriciabad", - "fortil", - "andrpueb", - "fscholz", - "jbalsas" + "SoftwareRVG", + "javichito" ] }, - "Web/API/Window/requestIdleCallback": { - "modified": "2020-12-05T00:33:07.625Z", + "Web/CSS/justify-content": { + "modified": "2019-03-23T22:48:18.861Z", "contributors": [ - "gnunezr", - "jsolana" + "amaiafilo", + "angelfeliz", + "teoli", + "Sebastianz", + "JoaquinBedoian" ] }, - "Web/API/Window/scroll": { - "modified": "2020-10-15T21:54:58.717Z", + "Web/CSS/left": { + "modified": "2020-10-15T21:15:23.699Z", "contributors": [ - "AlePerez92", - "patoezequiel" + "SphinxKnight", + "miltonjosuerivascastro100", + "Sebastianz", + "teoli", + "ethertank", + "Mgjbot", + "fiorella", + "HenryGR" ] }, - "Web/API/Window/scrollBy": { - "modified": "2019-03-23T22:40:05.334Z", + "Web/CSS/length": { + "modified": "2019-03-23T23:54:15.791Z", "contributors": [ - "plaso", - "Bcd" + "israel-munoz", + "fscholz", + "teoli", + "deibyod", + "Mgjbot", + "HenryGR" ] }, - "Web/API/Window/scrollTo": { - "modified": "2019-03-23T22:05:41.259Z", + "Web/CSS/line-height": { + "modified": "2019-06-20T19:43:18.097Z", "contributors": [ - "gyroscopico" + "jalonnun", + "Daniel_Martin", + "wbamberg", + "IsaacAaron", + "SphinxKnight", + "garolard", + "teoli", + "Mgjbot", + "Nathymig", + "RickieesES", + "HenryGR" ] }, - "Web/API/Window/scrollX": { - "modified": "2019-03-18T21:15:11.745Z", + "Web/CSS/linear-gradient()": { + "modified": "2020-11-16T08:56:55.739Z", "contributors": [ - "Grijander81" + "chrisdavidmills", + "efrenmartinez", + "rgomez", + "Miguelslo27", + "Sebastianz", + "prayash", + "scarnagot" ] }, - "Web/API/Window/scrollY": { - "modified": "2019-03-23T22:53:30.651Z", + "Web/CSS/list-style": { + "modified": "2019-03-23T23:52:08.020Z", "contributors": [ - "MaFranceschi" + "SphinxKnight", + "teoli", + "Nathymig" ] }, - "Web/API/Window/sessionStorage": { - "modified": "2019-03-23T22:57:50.655Z", + "Web/CSS/list-style-image": { + "modified": "2019-03-23T23:52:12.640Z", "contributors": [ - "svera", - "pedromagnus", - "develasquez" + "SphinxKnight", + "teoli", + "Nathymig" ] }, - "Web/API/Window/showModalDialog": { - "modified": "2019-03-18T20:58:55.311Z", + "Web/CSS/list-style-position": { + "modified": "2019-03-23T23:52:11.106Z", "contributors": [ + "magdic", "SphinxKnight", - "BubuAnabelas", - "Grijander81" + "teoli", + "Nathymig" ] }, - "Web/API/Window/sidebar": { - "modified": "2019-03-23T22:02:56.395Z", + "Web/CSS/list-style-type": { + "modified": "2019-03-23T23:52:09.967Z", "contributors": [ - "IsaacSchemm" + "SphinxKnight", + "teoli", + "Nathymig", + "ethertank" ] }, - "Web/API/Window/statusbar": { - "modified": "2019-03-23T22:14:36.556Z", + "Web/CSS/margin": { + "modified": "2019-03-23T22:26:03.547Z", "contributors": [ - "UshioSan" + "Limbian" ] }, - "Web/API/WindowBase64": { - "modified": "2019-03-23T23:03:15.466Z", + "Web/CSS/margin-block": { + "modified": "2020-10-15T22:16:43.806Z", "contributors": [ - "teoli" + "mariadelrosario98", + "teffcode" ] }, - "Web/API/WindowBase64/Base64_codificando_y_decodificando": { - "modified": "2020-10-08T22:36:13.676Z", + "Web/CSS/margin-block-start": { + "modified": "2020-10-15T22:16:40.788Z", "contributors": [ - "kevinandresviedmanlopez", - "carloscasalar", - "Arukantara", - "sathyasanles" + "teffcode" ] }, - "Web/API/WindowBase64/atob": { - "modified": "2019-03-23T23:03:12.715Z", + "Web/CSS/margin-bottom": { + "modified": "2019-03-23T23:13:38.811Z", "contributors": [ + "wbamberg", + "Sebastianz", "fscholz", - "sathyasanles" + "damesa" ] }, - "Web/API/WindowEventHandlers": { - "modified": "2019-03-23T23:01:29.892Z", + "Web/CSS/margin-inline": { + "modified": "2020-10-15T22:16:41.777Z", "contributors": [ - "fscholz" + "karen-pal", + "teffcode" ] }, - "Web/API/WindowEventHandlers/onbeforeunload": { - "modified": "2019-03-23T23:22:06.132Z", + "Web/CSS/margin-inline-end": { + "modified": "2020-10-15T22:16:40.105Z", "contributors": [ - "fscholz", - "AshfaqHossain", - "jota1410" + "teffcode" ] }, - "Web/API/WindowEventHandlers/onhashchange": { - "modified": "2019-03-23T22:49:36.790Z", + "Web/CSS/margin-inline-start": { + "modified": "2020-10-15T22:16:38.735Z", "contributors": [ - "AlePerez92", - "daesnorey" + "teffcode" ] }, - "Web/API/WindowEventHandlers/onpopstate": { - "modified": "2020-10-15T22:19:35.746Z", + "Web/CSS/margin-right": { + "modified": "2019-03-23T23:54:10.369Z", "contributors": [ - "borxdev", - "jccuevas" + "teoli", + "Marti1125" ] }, - "Web/API/WindowOrWorkerGlobalScope": { - "modified": "2019-03-23T22:16:40.400Z", + "Web/CSS/max-block-size": { + "modified": "2020-10-15T22:16:39.543Z", "contributors": [ - "ivannieto", - "chrisdavidmills" + "teffcode" ] }, - "Web/API/WindowOrWorkerGlobalScope/caches": { - "modified": "2019-03-23T22:16:45.016Z", + "Web/CSS/max-height": { + "modified": "2019-03-23T23:52:01.295Z", "contributors": [ - "ivannieto" + "wbamberg", + "marc31bilbao", + "teoli", + "Mgjbot", + "Nathymig" ] }, - "Web/API/WindowOrWorkerGlobalScope/createImageBitmap": { - "modified": "2020-10-15T22:14:17.553Z", + "Web/CSS/max-inline-size": { + "modified": "2020-10-15T22:16:37.228Z", "contributors": [ - "Bumxu" + "teffcode" ] }, - "Web/API/WindowOrWorkerGlobalScope/fetch": { - "modified": "2020-10-15T22:01:57.457Z", + "Web/CSS/max-width": { + "modified": "2020-10-15T21:16:38.209Z", "contributors": [ - "fscholz", - "jagomf" + "SphinxKnight", + "teoli", + "HenryGR", + "Mgjbot" ] }, - "Web/API/WindowOrWorkerGlobalScope/indexedDB": { - "modified": "2019-03-23T22:16:36.537Z", + "Web/CSS/min()": { + "modified": "2020-12-03T10:19:50.144Z", "contributors": [ - "ivannieto" + "AlePerez92", + "chrisdavidmills", + "meolivares06" ] }, - "Web/API/WindowOrWorkerGlobalScope/isSecureContext": { - "modified": "2019-03-23T22:16:45.834Z", + "Web/CSS/min-block-size": { + "modified": "2020-10-15T22:16:39.045Z", "contributors": [ - "ivannieto" + "teffcode" ] }, - "Web/API/WindowTimers": { - "modified": "2019-03-23T23:01:30.065Z", + "Web/CSS/min-height": { + "modified": "2019-03-23T23:51:59.533Z", "contributors": [ - "fscholz" + "wbamberg", + "Sebastianz", + "teoli", + "Nathymig" ] }, - "Web/API/WindowTimers/clearInterval": { - "modified": "2019-03-23T22:56:16.485Z", + "Web/CSS/min-inline-size": { + "modified": "2020-10-15T22:16:37.579Z", "contributors": [ - "Guitxo" + "teffcode" ] }, - "Web/API/WindowTimers/clearTimeout": { - "modified": "2019-06-18T10:20:27.972Z", + "Web/CSS/min-width": { + "modified": "2019-03-23T23:50:19.370Z", "contributors": [ - "AlePerez92", - "fscholz", - "basemnassar11", - "VictorArias" + "wbamberg", + "SphinxKnight", + "teoli", + "HenryGR", + "Mgjbot" ] }, - "Web/API/WindowTimers/setInterval": { - "modified": "2020-08-24T18:02:23.092Z", + "Web/CSS/minmax()": { + "modified": "2020-11-16T09:05:45.467Z", "contributors": [ - "mastertrooper", - "Makinita", - "Klius", - "claudionebbia" + "chrisdavidmills", + "jorgemontoyab" ] }, - "Web/API/WindowTimers/setTimeout": { - "modified": "2019-03-23T23:17:29.378Z", + "Web/CSS/number": { + "modified": "2019-03-23T23:53:45.345Z", "contributors": [ - "BubuAnabelas", - "vltamara", - "nauj27", "fscholz", - "AshfaqHossain", - "VictorArias" + "teoli", + "Mgjbot", + "HenryGR" ] }, - "Web/API/Worker": { - "modified": "2019-03-23T22:48:01.797Z", + "Web/CSS/object-fit": { + "modified": "2020-10-15T21:53:59.281Z", "contributors": [ - "benjroy" + "AlePerez92", + "BubuAnabelas", + "Cristhian-Medina", + "fernandozarco", + "chrisvpr", + "cristianeph" ] }, - "Web/API/Worker/postMessage": { - "modified": "2020-04-23T06:46:10.302Z", + "Web/CSS/object-position": { + "modified": "2019-03-23T22:31:02.066Z", "contributors": [ - "aguilahorus", - "cristyansv", - "mar777" + "thezeeck" ] }, - "Web/API/Worker/terminate": { - "modified": "2019-03-23T22:19:14.265Z", + "Web/CSS/opacity": { + "modified": "2019-08-20T11:36:11.809Z", "contributors": [ - "AzazelN28" + "Armando-Cruz", + "blanchart", + "Manten19", + "UlisesGascon", + "teoli" ] }, - "Web/API/XMLHttpRequest": { - "modified": "2019-05-02T19:52:03.482Z", + "Web/CSS/order": { + "modified": "2019-03-23T22:28:06.551Z", "contributors": [ - "wbamberg", - "Juvenal-yescas", - "ojgarciab", - "Sheppy", - "dgrcode", - "HadesDX", - "StripTM", - "mitogh", - "deimidis", - "Mgjbot", - "Jorolo" + "evaferreira", + "joshitobuba" ] }, - "Web/API/XMLHttpRequest/FormData": { - "modified": "2020-10-15T21:22:58.694Z", + "Web/CSS/outline": { + "modified": "2020-10-15T21:49:07.223Z", "contributors": [ - "AlePerez92", - "vladimirbat", - "alvaromorenomorales", - "ojgarciab", - "Sheppy", - "AngelFQC", - "wilo", - "marco_mucino" + "danielblazquez", + "IsaacAaron", + "israel-munoz" ] }, - "Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests": { - "modified": "2019-03-23T22:05:30.902Z", + "Web/CSS/outline-color": { + "modified": "2019-03-18T21:15:39.790Z", "contributors": [ - "Juvenal-yescas" + "israel-munoz" ] }, - "Web/API/XMLHttpRequest/Using_XMLHttpRequest": { - "modified": "2020-03-17T04:09:47.273Z", + "Web/CSS/outline-offset": { + "modified": "2019-03-23T22:27:28.876Z", "contributors": [ - "jccuevas", - "camsa", - "david_ru", - "cesaruve", - "Sheppy", - "Sebastianz", - "iiegor", - "javierdp", - "bardackx", - "teoli", - "inma_610" + "israel-munoz" ] }, - "Web/API/XMLHttpRequest/abort": { - "modified": "2019-03-23T22:12:16.683Z", + "Web/CSS/outline-style": { + "modified": "2019-03-18T21:45:18.063Z", "contributors": [ - "Sheppy", - "todomagichere" + "israel-munoz" ] }, - "Web/API/XMLHttpRequest/onreadystatechange": { - "modified": "2019-03-23T22:20:14.868Z", + "Web/CSS/outline-width": { + "modified": "2019-03-18T21:16:50.488Z", "contributors": [ - "Sheppy", - "theUncanny" + "israel-munoz" ] }, - "Web/API/XMLHttpRequest/responseText": { - "modified": "2019-03-23T22:09:05.708Z", + "Web/CSS/overflow": { + "modified": "2020-10-15T21:22:11.063Z", "contributors": [ - "midnight25" + "manuelizo", + "SJW", + "marc-ferrer", + "developingo", + "Sebastianz", + "Sheppy", + "teoli", + "_0x" ] }, - "Web/API/XMLHttpRequest/timeout": { - "modified": "2020-10-15T22:26:49.508Z", + "Web/CSS/overflow-y": { + "modified": "2020-10-15T21:37:11.176Z", "contributors": [ - "mmednik" + "_deiberchacon", + "Silly-and_Clever", + "teoli", + "Sebastianz", + "yvesmh" ] }, - "Web/API/XMLHttpRequestEventTarget": { - "modified": "2020-10-15T22:26:08.879Z" + "Web/CSS/padding": { + "modified": "2020-07-02T20:44:00.780Z", + "contributors": [ + "kren.funes17", + "arielnoname", + "Sebastianz", + "fscholz", + "teoli", + "maiky" + ] }, - "Web/API/XMLHttpRequestEventTarget/onload": { - "modified": "2020-10-15T22:26:03.172Z", + "Web/CSS/padding-block": { + "modified": "2020-10-15T22:16:40.169Z", "contributors": [ - "Akafadam" + "teffcode" ] }, - "Web/API/console/assert": { - "modified": "2019-03-23T22:47:53.587Z", + "Web/CSS/padding-block-end": { + "modified": "2020-10-15T22:16:44.832Z", "contributors": [ - "Takumakun", - "AlePerez92", - "danycoro" + "teffcode" ] }, - "Web/API/notification": { - "modified": "2019-06-28T05:54:12.854Z", + "Web/CSS/padding-block-start": { + "modified": "2020-10-15T22:16:44.371Z", "contributors": [ - "paumoreno", - "hhcarmenate", - "RockLee-BC", - "francotalarico93", - "frossi933", - "Irvandoval", - "LuyisiMiger", - "fscholz", - "elfoxero" + "teffcode" ] }, - "Web/API/notification/body": { - "modified": "2019-03-23T22:59:34.974Z", + "Web/CSS/padding-bottom": { + "modified": "2019-03-23T22:12:06.885Z", "contributors": [ - "joxhker" + "qsanabria" ] }, - "Web/API/notification/dir": { - "modified": "2019-03-23T22:59:36.852Z", + "Web/CSS/padding-inline": { + "modified": "2020-10-15T22:16:45.046Z", "contributors": [ - "joxhker" + "teffcode" ] }, - "Web/API/notification/icon": { - "modified": "2019-03-23T22:59:32.492Z", + "Web/CSS/padding-inline-end": { + "modified": "2020-10-15T22:16:39.998Z", "contributors": [ - "joxhker" + "teffcode" ] }, - "Web/API/notification/onclick": { - "modified": "2019-03-23T22:11:55.774Z", + "Web/CSS/padding-inline-start": { + "modified": "2020-10-15T22:16:41.877Z", "contributors": [ - "AndresTonello" + "teffcode" ] }, - "Web/API/notification/permission": { - "modified": "2019-03-23T22:07:38.974Z", + "Web/CSS/padding-top": { + "modified": "2019-03-23T22:12:05.180Z", "contributors": [ - "alanmacgowan", - "IXTRUnai" + "qsanabria" ] }, - "Web/API/notification/requestPermission": { - "modified": "2019-03-23T22:50:37.341Z", + "Web/CSS/perspective": { + "modified": "2019-03-23T23:23:10.717Z", "contributors": [ - "MarkelCuesta", - "jezdez", - "Davdriver" + "Sebastianz", + "Prinz_Rana", + "fscholz", + "teoli", + "AngelFQC" ] }, - "Web/Accesibilidad": { - "modified": "2020-09-22T14:24:03.363Z", + "Web/CSS/position": { + "modified": "2020-10-15T21:15:59.180Z", "contributors": [ - "FranciscoImanolSuarez", - "Gummox", - "Mediavilladiezj", - "cisval", - "monserratcallejaalmazan", - "chmutoff", + "mollzilla", + "ismamz", + "mauriciopaterninar", + "phurtado1112", + "sejas", + "OttoChamo", + "plaso", + "Aleks07m", + "welm", + "SphinxKnight", + "CarmenCamacho", + "enriqueabsurdum", + "killoblanco", "teoli", - "DoctorRomi", "Mgjbot", - "Jorolo", - "Lowprofile", - "Wikier", - "Nukeador", - "Gonzobonzoo" + "HenryGR" ] }, - "Web/Accesibilidad/Comunidad": { - "modified": "2019-03-23T23:41:25.430Z", + "Web/CSS/quotes": { + "modified": "2020-10-15T21:46:00.335Z", "contributors": [ - "teoli", - "Jorolo" + "SJW", + "arroutado" ] }, - "Web/Accesibilidad/Understanding_WCAG": { - "modified": "2019-03-18T21:25:29.001Z", + "Web/CSS/radial-gradient()": { + "modified": "2020-11-18T14:42:09.252Z", "contributors": [ - "evaferreira" + "chrisdavidmills", + "hectorcano", + "israel-munoz" ] }, - "Web/Accesibilidad/Understanding_WCAG/Etiquetas_de_texto_y_nombres": { - "modified": "2020-05-21T19:43:48.950Z", + "Web/CSS/repeat()": { + "modified": "2020-11-18T14:44:16.857Z", "contributors": [ - "giioaj", + "chrisdavidmills", + "CrlsMrls", "IsraelFloresDGA" ] }, - "Web/Accesibilidad/Understanding_WCAG/Perceivable": { - "modified": "2019-03-18T21:25:19.991Z", - "contributors": [ - "evaferreira" - ] - }, - "Web/Accesibilidad/Understanding_WCAG/Perceivable/Color_contraste": { - "modified": "2020-06-09T06:15:36.471Z", + "Web/CSS/resize": { + "modified": "2019-03-23T22:49:42.378Z", "contributors": [ - "11bits", - "apenab" + "SphinxKnight", + "Sebastianz", + "gonzalec" ] }, - "Web/Accesibilidad/Understanding_WCAG/Teclado": { - "modified": "2020-09-28T17:32:58.697Z", + "Web/CSS/resolved_value": { + "modified": "2019-03-23T22:16:57.498Z", "contributors": [ - "megatux", - "IsraelFloresDGA" + "israel-munoz" ] }, - "Web/Accessibility/ARIA": { - "modified": "2019-03-23T22:32:50.943Z", + "Web/CSS/right": { + "modified": "2019-03-24T00:13:54.957Z", "contributors": [ - "AlejandroC92", - "megatux", - "guumo", - "VNWK", - "imelenchon", - "teoli" + "wbamberg", + "SphinxKnight", + "Sebastianz", + "teoli", + "FredB", + "HenryGR", + "Mgjbot" ] }, - "Web/Accessibility/ARIA/ARIA_Techniques": { - "modified": "2019-03-23T22:46:27.954Z", + "Web/CSS/scroll-behavior": { + "modified": "2019-03-23T22:07:41.439Z", "contributors": [ - "chrisdavidmills" + "pantuflo" ] }, - "Web/Accessibility/ARIA/ARIA_Techniques/Usando_el_atributo_aria-required": { - "modified": "2019-08-28T11:54:04.515Z", + "Web/CSS/specified_value": { + "modified": "2019-03-23T22:16:53.752Z", "contributors": [ - "IsraelFloresDGA", - "Karla_Glez" + "israel-munoz" ] }, - "Web/Accessibility/ARIA/ARIA_Techniques/Usando_el_rol_alertdialog": { - "modified": "2019-08-28T12:48:39.532Z", + "Web/CSS/text-decoration": { + "modified": "2019-03-23T22:21:38.548Z", "contributors": [ - "IsraelFloresDGA" + "fitojb", + "israel-munoz" ] }, - "Web/Accessibility/ARIA/ARIA_Techniques/Using_the_alert_role": { - "modified": "2019-03-18T21:31:32.978Z", + "Web/CSS/text-decoration-color": { + "modified": "2019-03-23T22:27:00.164Z", "contributors": [ - "IsraelFloresDGA", - "mayrars" + "israel-munoz" ] }, - "Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute": { - "modified": "2020-12-02T07:09:06.472Z", + "Web/CSS/text-decoration-line": { + "modified": "2020-10-15T21:49:07.335Z", "contributors": [ "AlePerez92", - "mitsurugi", - "fraboto", - "blanchart", - "ErikMj69", - "NelsonWF" + "israel-munoz" ] }, - "Web/Accessibility/ARIA/forms": { - "modified": "2020-08-13T01:50:29.740Z", + "Web/CSS/text-decoration-style": { + "modified": "2019-03-18T21:17:28.073Z", "contributors": [ - "Nachec", - "IsraelFloresDGA", - "malonson" + "JimP99", + "israel-munoz" ] }, - "Web/Accessibility/ARIA/forms/Etiquetas_complejas": { - "modified": "2019-11-27T15:16:55.571Z", + "Web/CSS/text-emphasis": { + "modified": "2019-03-23T22:09:46.786Z", "contributors": [ - "IsaacAaron", - "IsraelFloresDGA" + "studioArtbliss" ] }, - "Web/Accessibility/ARIA/forms/alertas": { - "modified": "2020-08-13T01:22:34.331Z", + "Web/CSS/text-emphasis-color": { + "modified": "2020-10-15T21:57:48.189Z", "contributors": [ - "Nachec" + "BubuAnabelas", + "mym2013" ] }, - "Web/Accessibility/ARIA/forms/consejos_basicos_para_formularios": { - "modified": "2019-03-18T21:22:07.007Z", + "Web/CSS/text-orientation": { + "modified": "2020-10-15T22:02:16.878Z", "contributors": [ - "IsraelFloresDGA" + "MikeOrtizTrivino" ] }, - "Web/CSS": { - "modified": "2020-10-25T05:19:47.416Z", + "Web/CSS/text-overflow": { + "modified": "2020-10-15T21:59:14.245Z", "contributors": [ - "SphinxKnight", - "redondomoralesmelanny", - "Dolacres", - "boualidev", - "Enesimus", - "chrisdavidmills", - "NavetsArev", - "alazzuri", - "IsraelFloresDGA", - "lajaso", - "arturoblack", - "rogeliomtx", - "anecto", - "teoli", - "Luis_Calvo", - "alex_dm", - "ethertank", - "StripTM", - "inma_610", - "another_sam", - "fscholz", - "Wrongloop", - "Nathymig", - "Mgjbot", - "Nukeador", - "Jorolo", - "Lopez", - "Takenbot", - "Manu", - "Elrohir" + "davidelx", + "xpdv", + "plagasul", + "camilobuitrago" ] }, - "Web/CSS/--*": { - "modified": "2020-11-18T17:43:24.329Z", + "Web/CSS/text-shadow": { + "modified": "2019-03-23T22:27:32.186Z", "contributors": [ - "jemilionautoch" + "israel-munoz" ] }, - "Web/CSS/-moz-box-flex": { - "modified": "2019-03-23T22:36:18.128Z", + "Web/CSS/text-transform": { + "modified": "2019-10-10T16:32:05.528Z", "contributors": [ - "teoli", - "pekechis" + "Makinita", + "evaferreira", + "israel-munoz" ] }, - "Web/CSS/-moz-box-ordinal-group": { - "modified": "2019-03-23T22:36:12.257Z", + "Web/CSS/time": { + "modified": "2020-10-15T21:50:52.581Z", "contributors": [ - "pekechis" + "lajaso", + "israel-munoz" ] }, - "Web/CSS/-moz-box-pack": { - "modified": "2019-03-23T22:36:13.348Z", + "Web/CSS/top": { + "modified": "2020-07-29T21:08:45.361Z", "contributors": [ + "clancastor05", + "SphinxKnight", + "davidgg", + "solemoris", "teoli", - "pekechis" + "lcamacho", + "jaumesvdevelopers", + "HenryGR", + "Mgjbot" ] }, - "Web/CSS/-moz-cell": { - "modified": "2019-03-23T22:35:57.612Z", + "Web/CSS/transform": { + "modified": "2020-11-12T03:08:37.391Z", "contributors": [ - "pekechis" + "SphinxKnight", + "rolivo288", + "SoftwareRVG", + "Sebastianz", + "GersonLazaro", + "fscholz", + "bicentenario", + "Xaviju", + "teoli", + "limonada_prototype" ] }, - "Web/CSS/-moz-context-properties": { - "modified": "2020-10-15T22:13:14.061Z", + "Web/CSS/transform-function": { + "modified": "2019-03-23T23:10:41.562Z", "contributors": [ - "Adorta4" + "israel-munoz", + "mrstork", + "prayash", + "limbus" ] }, - "Web/CSS/-moz-float-edge": { - "modified": "2019-03-23T22:36:02.702Z", + "Web/CSS/transform-function/rotate()": { + "modified": "2020-11-19T16:05:17.901Z", "contributors": [ + "chrisdavidmills", + "danielblazquez", "pekechis" ] }, - "Web/CSS/-moz-font-language-override": { - "modified": "2019-03-23T23:13:49.521Z", + "Web/CSS/transform-function/rotate3d()": { + "modified": "2020-11-19T16:07:08.348Z", "contributors": [ - "martinezdario55" + "chrisdavidmills", + "jeronimonunez", + "jjyepez" ] }, - "Web/CSS/-moz-force-broken-image-icon": { - "modified": "2019-03-23T23:21:21.736Z", + "Web/CSS/transform-function/scale()": { + "modified": "2020-11-30T10:15:28.610Z", "contributors": [ - "Sebastianz", - "teoli", - "jota1410" + "chrisdavidmills", + "ileonpxsp", + "BubuAnabelas", + "lizbethrojano", + "yomar-dev", + "quiqueciria", + "maramal" ] }, - "Web/CSS/-moz-image-rect": { - "modified": "2019-03-23T22:35:59.460Z", + "Web/CSS/transform-function/translate()": { + "modified": "2020-11-30T10:30:15.561Z", "contributors": [ - "pekechis" + "chrisdavidmills", + "AlePerez92", + "hectoraldairah", + "Esteban26", + "murielsan", + "ShakMR" ] }, - "Web/CSS/-moz-image-region": { - "modified": "2019-03-23T22:35:58.872Z", + "Web/CSS/transform-function/translateY()": { + "modified": "2020-11-30T13:00:51.105Z", "contributors": [ - "pekechis" + "chrisdavidmills", + "israel-munoz" ] }, - "Web/CSS/-moz-orient": { - "modified": "2019-03-23T22:38:38.798Z", + "Web/CSS/transform-function/translateZ()": { + "modified": "2020-11-30T13:02:44.123Z", "contributors": [ - "teoli", - "anytameleiro" + "chrisdavidmills", + "luisdev-works" ] }, - "Web/CSS/-moz-outline-radius": { - "modified": "2019-03-23T22:35:49.017Z", + "Web/CSS/transform-origin": { + "modified": "2019-03-23T23:20:59.497Z", "contributors": [ - "BubuAnabelas", + "Sebastianz", + "fscholz", "teoli", - "Simplexible", - "Prinz_Rana", - "pekechis" + "limonada_prototype" ] }, - "Web/CSS/-moz-outline-radius-bottomleft": { - "modified": "2019-03-23T22:35:52.557Z", + "Web/CSS/transform-style": { + "modified": "2020-10-15T22:31:22.949Z", "contributors": [ - "pekechis" + "luisdev-works" ] }, - "Web/CSS/-moz-outline-radius-bottomright": { - "modified": "2019-03-23T22:35:53.397Z", + "Web/CSS/transition": { + "modified": "2019-03-23T22:53:01.094Z", "contributors": [ - "pekechis" + "FedericoMarmo", + "fscholz", + "adlr", + "Sebastianz", + "yvesmh" ] }, - "Web/CSS/-moz-outline-radius-topleft": { - "modified": "2019-03-23T22:35:51.509Z", + "Web/CSS/transition-delay": { + "modified": "2019-03-23T23:21:44.912Z", "contributors": [ - "pekechis" + "mrstork", + "fscholz", + "Sebastianz", + "teoli", + "alcuinodeyork" ] }, - "Web/CSS/-moz-outline-radius-topright": { - "modified": "2019-03-23T22:35:44.264Z", + "Web/CSS/transition-duration": { + "modified": "2020-10-15T22:27:34.821Z", "contributors": [ - "pekechis" + "luisafvaca" ] }, - "Web/CSS/-moz-user-focus": { - "modified": "2019-03-23T22:35:52.089Z", + "Web/CSS/transition-property": { + "modified": "2020-10-15T21:58:20.034Z", "contributors": [ - "teoli", - "pekechis" + "juan-ferrer-toribio" ] }, - "Web/CSS/-moz-user-input": { - "modified": "2019-03-23T22:35:52.458Z", + "Web/CSS/user-select": { + "modified": "2020-10-15T22:22:14.480Z", "contributors": [ - "pekechis" + "qwerty726" ] }, - "Web/CSS/-moz-user-modify": { - "modified": "2019-03-23T22:35:48.381Z", + "Web/CSS/var()": { + "modified": "2020-11-04T09:10:15.439Z", "contributors": [ - "teoli", - "pekechis" + "chrisdavidmills", + "jroji" ] }, - "Web/CSS/-webkit-border-before": { - "modified": "2019-03-23T22:35:46.245Z", + "Web/CSS/vertical-align": { + "modified": "2019-03-23T23:36:07.945Z", "contributors": [ + "Sebastianz", "teoli", - "pekechis" + "riledhel" ] }, - "Web/CSS/-webkit-box-reflect": { - "modified": "2019-03-23T22:35:45.474Z", + "Web/CSS/visibility": { + "modified": "2019-03-23T23:52:08.163Z", "contributors": [ + "wbamberg", "teoli", - "pekechis" + "Nathymig", + "HenryGR", + "Mgjbot" ] }, - "Web/CSS/-webkit-mask": { - "modified": "2019-03-23T22:35:50.079Z", + "Web/CSS/white-space": { + "modified": "2019-06-12T21:57:59.855Z", "contributors": [ - "pekechis" + "jdaison", + "missmakita" ] }, - "Web/CSS/-webkit-mask-attachment": { - "modified": "2019-03-23T22:35:53.127Z", + "Web/CSS/widows": { + "modified": "2020-10-15T21:59:52.045Z", "contributors": [ - "pekechis" + "jpmontoya182" ] }, - "Web/CSS/-webkit-mask-box-image": { - "modified": "2019-03-23T22:35:44.795Z", + "Web/CSS/width": { + "modified": "2019-03-23T23:50:07.221Z", "contributors": [ - "Sebastianz", - "Prinz_Rana", - "pekechis" + "israel-munoz", + "diegocanal", + "teoli", + "HenryGR", + "Mgjbot" ] }, - "Web/CSS/-webkit-mask-clip": { - "modified": "2019-03-23T22:35:47.057Z", + "Web/CSS/writing-mode": { + "modified": "2019-03-23T22:28:35.899Z", "contributors": [ - "pekechis" + "fitojb" ] }, - "Web/CSS/-webkit-mask-composite": { - "modified": "2019-03-23T22:35:49.602Z", + "Web/CSS/z-index": { + "modified": "2020-03-20T18:20:08.966Z", "contributors": [ - "pekechis" + "camsa", + "javichito", + "teoli", + "AntonioNavajas" ] }, - "Web/CSS/-webkit-mask-image": { - "modified": "2019-03-23T22:35:45.973Z", + "Web/CSS/zoom": { + "modified": "2019-03-23T22:35:36.401Z", "contributors": [ - "hectorcano", + "carloque", + "Sebastianz", "pekechis" ] }, - "Web/CSS/-webkit-mask-origin": { - "modified": "2019-03-23T22:35:46.533Z", + "Web/Demos_of_open_web_technologies": { + "modified": "2019-03-23T22:33:45.097Z", "contributors": [ - "pekechis" + "SoftwareRVG", + "elfoxero" ] }, - "Web/CSS/-webkit-mask-position": { - "modified": "2019-03-23T22:38:37.922Z", + "Web/EXSLT": { + "modified": "2019-03-18T20:59:19.473Z", "contributors": [ - "teoli", - "Simplexible", - "Prinz_Rana", - "pekechis", - "Kuiki" + "SphinxKnight", + "ExE-Boss", + "Mgjbot", + "Talisker" ] }, - "Web/CSS/-webkit-mask-position-x": { - "modified": "2019-03-23T22:34:17.919Z", + "Web/EXSLT/exsl": { + "modified": "2019-01-16T15:21:39.795Z", "contributors": [ + "ExE-Boss", "teoli", - "pekechis" + "Anonymous" ] }, - "Web/CSS/-webkit-mask-position-y": { - "modified": "2019-03-23T22:34:11.674Z", + "Web/EXSLT/exsl/node-set": { + "modified": "2019-03-18T20:59:21.647Z", "contributors": [ - "teoli", - "pekechis" + "SphinxKnight", + "ExE-Boss", + "Mgjbot", + "Talisker" ] }, - "Web/CSS/-webkit-mask-repeat": { - "modified": "2019-03-23T22:35:46.401Z", + "Web/EXSLT/exsl/object-type": { + "modified": "2019-03-23T23:51:27.324Z", "contributors": [ - "pekechis" + "ExE-Boss", + "lajaso", + "Mgjbot", + "Talisker" ] }, - "Web/CSS/-webkit-mask-repeat-x": { - "modified": "2019-03-23T22:34:04.348Z", + "Web/EXSLT/math": { + "modified": "2019-01-16T15:25:29.279Z", "contributors": [ - "pekechis" + "ExE-Boss", + "teoli", + "Anonymous" ] }, - "Web/CSS/-webkit-mask-repeat-y": { - "modified": "2019-03-23T22:34:06.535Z", + "Web/EXSLT/math/highest": { + "modified": "2019-03-18T20:59:18.500Z", "contributors": [ - "pekechis" + "SphinxKnight", + "ExE-Boss", + "lajaso", + "Mgjbot", + "Talisker" ] }, - "Web/CSS/-webkit-overflow-scrolling": { - "modified": "2020-10-15T21:44:50.401Z", + "Web/EXSLT/math/lowest": { + "modified": "2019-03-18T20:59:17.805Z", "contributors": [ - "AlePerez92", - "teoli", - "natav", - "pekechis" + "SphinxKnight", + "ExE-Boss", + "lajaso", + "Mgjbot", + "Talisker" ] }, - "Web/CSS/-webkit-print-color-adjust": { - "modified": "2019-03-23T22:35:50.908Z", + "Web/EXSLT/math/max": { + "modified": "2019-03-18T20:59:18.804Z", "contributors": [ - "teoli", - "pekechis" + "SphinxKnight", + "ExE-Boss", + "lajaso", + "Talisker" ] }, - "Web/CSS/-webkit-tap-highlight-color": { - "modified": "2019-03-23T22:35:33.059Z", + "Web/EXSLT/math/min": { + "modified": "2019-03-18T20:59:20.254Z", "contributors": [ - "pekechis" + "SphinxKnight", + "ExE-Boss", + "lajaso", + "Talisker" ] }, - "Web/CSS/-webkit-text-fill-color": { - "modified": "2019-03-23T22:35:41.363Z", + "Web/EXSLT/regexp": { + "modified": "2019-01-16T15:23:22.952Z", "contributors": [ - "pekechis" + "ExE-Boss", + "teoli", + "Anonymous" ] }, - "Web/CSS/-webkit-text-stroke": { - "modified": "2020-11-09T04:49:08.502Z", + "Web/EXSLT/regexp/match": { + "modified": "2019-03-18T20:59:21.504Z", "contributors": [ - "sideshowbarker", - "codingdudecom", - "NachoNav", - "pekechis" + "SphinxKnight", + "ExE-Boss", + "Talisker" ] }, - "Web/CSS/-webkit-text-stroke-color": { - "modified": "2019-03-23T22:35:34.688Z", + "Web/EXSLT/regexp/replace": { + "modified": "2019-03-18T20:59:20.093Z", "contributors": [ - "teoli", - "pekechis" + "SphinxKnight", + "ExE-Boss", + "Talisker" ] }, - "Web/CSS/-webkit-text-stroke-width": { - "modified": "2019-03-23T22:35:36.221Z", + "Web/EXSLT/regexp/test": { + "modified": "2019-03-18T20:59:20.575Z", "contributors": [ - "pekechis" + "SphinxKnight", + "ExE-Boss", + "Talisker" ] }, - "Web/CSS/-webkit-touch-callout": { - "modified": "2019-03-23T22:35:37.578Z", + "Web/EXSLT/set": { + "modified": "2019-01-16T15:23:27.004Z", "contributors": [ + "ExE-Boss", "teoli", - "rankill", - "pekechis" + "Anonymous" ] }, - "Web/CSS/:-moz-broken": { - "modified": "2019-03-23T22:34:12.269Z", + "Web/EXSLT/set/difference": { + "modified": "2019-03-18T20:59:18.953Z", "contributors": [ - "pekechis" + "SphinxKnight", + "ExE-Boss", + "Talisker" ] }, - "Web/CSS/:-moz-drag-over": { - "modified": "2019-03-23T22:34:06.375Z", + "Web/EXSLT/set/distinct": { + "modified": "2019-03-18T20:59:22.067Z", "contributors": [ - "pekechis" + "SphinxKnight", + "ExE-Boss", + "Talisker" ] }, - "Web/CSS/:-moz-first-node": { - "modified": "2019-03-23T22:34:12.741Z", + "Web/EXSLT/set/has-same-node": { + "modified": "2019-03-18T20:59:20.421Z", "contributors": [ - "pekechis" + "SphinxKnight", + "ExE-Boss", + "Talisker" ] }, - "Web/CSS/:-moz-focusring": { - "modified": "2019-03-23T22:34:12.588Z", + "Web/EXSLT/set/intersection": { + "modified": "2019-03-18T20:59:18.660Z", "contributors": [ - "teoli", - "pekechis" + "SphinxKnight", + "ExE-Boss", + "Talisker" ] }, - "Web/CSS/:-moz-handler-blocked": { - "modified": "2019-03-23T22:33:34.259Z", + "Web/EXSLT/set/leading": { + "modified": "2019-03-18T20:59:17.662Z", "contributors": [ - "pekechis" + "SphinxKnight", + "ExE-Boss", + "teoli", + "Talisker" ] }, - "Web/CSS/:-moz-handler-crashed": { - "modified": "2019-03-23T22:33:27.000Z", + "Web/EXSLT/set/trailing": { + "modified": "2019-03-18T20:59:19.267Z", "contributors": [ - "pekechis" + "SphinxKnight", + "ExE-Boss", + "teoli", + "Talisker" ] }, - "Web/CSS/:-moz-handler-disabled": { - "modified": "2019-03-23T22:33:35.339Z", + "Web/EXSLT/str": { + "modified": "2019-01-16T15:24:51.477Z", "contributors": [ - "pekechis" + "ExE-Boss", + "teoli", + "Anonymous" ] }, - "Web/CSS/:-moz-last-node": { - "modified": "2019-03-18T21:15:45.566Z", + "Web/EXSLT/str/concat": { + "modified": "2019-03-18T20:59:20.717Z", "contributors": [ - "pekechis" + "SphinxKnight", + "ExE-Boss", + "Talisker" ] }, - "Web/CSS/:-moz-list-bullet": { - "modified": "2019-03-23T22:29:23.137Z", + "Web/EXSLT/str/split": { + "modified": "2019-03-18T20:59:17.504Z", "contributors": [ - "pekechis" + "SphinxKnight", + "ExE-Boss", + "Talisker" ] }, - "Web/CSS/:-moz-list-number": { - "modified": "2019-03-23T22:29:22.603Z", + "Web/EXSLT/str/tokenize": { + "modified": "2019-03-18T20:59:19.116Z", "contributors": [ - "pekechis" + "SphinxKnight", + "ExE-Boss", + "Talisker" ] }, - "Web/CSS/:-moz-loading": { - "modified": "2019-03-23T22:33:38.436Z", + "Web/Events": { + "modified": "2019-03-23T23:21:27.399Z", "contributors": [ - "pekechis" + "ExE-Boss", + "wbamberg", + "gabo8611" ] }, - "Web/CSS/:-moz-locale-dir(ltr)": { - "modified": "2019-03-23T22:33:43.908Z", + "Web/Guide": { + "modified": "2019-07-18T20:35:32.528Z", "contributors": [ - "pekechis" + "clarii", + "D3Portillo", + "Breaking Pitt", + "VictorAbdon", + "n2nand", + "Puchoti", + "DrTrucho", + "DanielCarron", + "daroswing", + "osodi", + "LeoHirsch", + "hjaguen", + "ethertank", + "Sheppy" ] }, - "Web/CSS/:-moz-locale-dir(rtl)": { - "modified": "2019-03-23T22:33:44.356Z", + "Web/Guide/AJAX": { + "modified": "2019-03-18T21:14:54.246Z", "contributors": [ - "pekechis" + "AlePerez92", + "chrisdavidmills", + "ccarruitero", + "chukito", + "Mgjbot", + "Nukeador", + "Summit677", + "Pascalc", + "Jorolo", + "Marianov", + "Takenbot", + "Baluart", + "Breaking Pitt", + "Seres" ] }, - "Web/CSS/:-moz-only-whitespace": { - "modified": "2019-03-23T22:33:33.786Z", + "Web/Guide/API": { + "modified": "2019-09-11T09:31:45.916Z", "contributors": [ - "pekechis" + "SphinxKnight", + "VictorAbdon", + "Sheppy" ] }, - "Web/CSS/:-moz-placeholder": { - "modified": "2019-03-23T22:33:30.015Z", + "Web/Guide/CSS/Block_formatting_context": { + "modified": "2019-03-23T22:32:27.340Z", "contributors": [ - "teoli", - "pekechis" + "Enesimus", + "javichito" ] }, - "Web/CSS/:-moz-submit-invalid": { - "modified": "2019-03-23T22:33:36.639Z", + "Web/Guide/Graphics": { + "modified": "2020-05-19T14:31:25.384Z", "contributors": [ - "pekechis" + ".bkjop0", + "lassergraf", + "CarlosEduardoEncinas", + "pescadito.2007", + "rogeliomtx", + "CarlosQuijano", + "lalo2013" ] }, - "Web/CSS/:-moz-suppressed": { - "modified": "2019-03-23T22:33:37.212Z", + "Web/Guide/HTML/Editable_content": { + "modified": "2019-03-23T22:09:49.599Z", "contributors": [ - "pekechis" + "vinyetcg", + "JoaquinGiordano", + "V.Morantes" ] }, - "Web/CSS/:-moz-ui-invalid": { - "modified": "2019-03-23T22:30:48.940Z", + "Web/Guide/Parsing_and_serializing_XML": { + "modified": "2019-03-23T22:10:22.365Z", "contributors": [ - "teoli", - "pekechis" + "FenixAlive" ] }, - "Web/CSS/:-moz-ui-valid": { - "modified": "2019-03-23T22:29:23.305Z", + "Web/Guide/Performance": { + "modified": "2019-03-23T23:21:17.984Z", "contributors": [ - "teoli", - "pekechis" + "DeiberChacon", + "Sheppy" ] }, - "Web/CSS/:-moz-user-disabled": { - "modified": "2019-03-23T22:30:53.713Z", + "Web/HTML": { + "modified": "2020-12-10T12:38:08.697Z", "contributors": [ - "pekechis" + "ojgarciab", + "SphinxKnight", + "cesarmerino.ec71", + "barriosines07", + "Nachec", + "Enesimus", + "Neto503", + "hackertj", + "chrisdavidmills", + "blanchart", + "roocce", + "titox", + "donpaginasweboficial", + "Kenikser", + "RayPL", + "YeseniaMariela", + "gabriel-ar", + "PabloLajarin", + "JoseBarakat", + "raecillacastellana", + "israel-munoz", + "jsx", + "Hteemo", + "eduMXM", + "enesimo", + "MARVINFLORENTINO", + "pekechis", + "monserratcallejaalmazan", + "thzunder", + "roheru", + "vltamara", + "ArcangelZith", + "ronyworld", + "LeoHirsch", + "CarlosQuijano", + "AngelFQC" ] }, - "Web/CSS/:-moz-window-inactive": { - "modified": "2019-03-23T22:30:43.777Z", + "Web/HTML/Block-level_elements": { + "modified": "2019-03-18T20:44:10.775Z", "contributors": [ + "ManuelPalominochirote", + "raecillacastellana", + "dinael", + "pekechis", + "erdavo", + "vltamara", "teoli", - "pekechis" + "MILTON.AGUILAR" ] }, - "Web/CSS/:-ms-input-placeholder": { - "modified": "2019-03-23T22:29:24.542Z", + "Web/HTML/Quirks_Mode_and_Standards_Mode": { + "modified": "2019-03-23T22:00:35.023Z", "contributors": [ - "teoli", - "pekechis" + "chrisdavidmills", + "alvaromontoro", + "mamptecnocrata", + "ungatoquecomesushi" ] }, - "Web/CSS/:-webkit-autofill": { - "modified": "2019-03-23T22:29:31.809Z", + "Web/HTTP": { + "modified": "2019-03-18T20:34:58.542Z", "contributors": [ - "teoli", - "pekechis" + "IsraelFloresDGA", + "MarioECU", + "locolauty97", + "Sergio_Gonzalez_Collado", + "Ferrmolina", + "raecillacastellana", + "migdonio1", + "Erto", + "teoli" ] }, - "Web/CSS/::-moz-color-swatch": { - "modified": "2020-10-15T22:13:15.247Z", + "Web/HTTP/Authentication": { + "modified": "2019-10-24T13:52:25.126Z", "contributors": [ - "Adorta4" + "bood-dev", + "Gochip", + "fcanellas", + "diegorec", + "kraneok", + "JuanMacias", + "_deiberchacon", + "DavidPeniafiel" ] }, - "Web/CSS/::-moz-page": { - "modified": "2019-03-23T22:29:23.000Z", + "Web/HTTP/Basics_of_HTTP": { + "modified": "2020-04-20T02:59:31.392Z", "contributors": [ - "teoli", - "pekechis" + "obed3113", + "sanxofon", + "Sergio_Gonzalez_Collado", + "cissoid" ] }, - "Web/CSS/::-moz-page-sequence": { - "modified": "2019-03-23T22:29:18.734Z", + "Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs": { + "modified": "2019-03-18T21:22:07.450Z", "contributors": [ - "teoli", - "pekechis" + "Adorta4", + "carlosgocereceda" ] }, - "Web/CSS/::-moz-placeholder": { - "modified": "2019-03-23T22:29:22.118Z", + "Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP": { + "modified": "2019-03-23T22:10:11.567Z", "contributors": [ - "teoli", - "pekechis" + "Sergio_Gonzalez_Collado", + "ChrisMHM" ] }, - "Web/CSS/::-moz-progress-bar": { - "modified": "2019-03-23T22:29:21.640Z", + "Web/HTTP/Basics_of_HTTP/MIME_types": { + "modified": "2019-11-18T08:03:54.325Z", "contributors": [ - "lajaso", - "pekechis" + "IsaacAaron", + "sanxofon", + "Sergio_Gonzalez_Collado", + "kevinmont", + "juanrarodriguez18", + "strattadb" ] }, - "Web/CSS/::-moz-range-progress": { - "modified": "2019-03-23T22:28:49.325Z", + "Web/HTTP/Basics_of_HTTP/MIME_types/Common_types": { + "modified": "2020-02-28T13:10:45.613Z", "contributors": [ - "teoli", - "pekechis" + "chrisdavidmills", + "sanxofon", + "franklevel", + "gabrielnoe" ] }, - "Web/CSS/::-moz-range-thumb": { - "modified": "2019-03-23T22:28:56.558Z", + "Web/HTTP/CORS/Errors": { + "modified": "2019-03-18T21:26:43.815Z", "contributors": [ - "teoli", - "pekechis" + "nchevobbe" ] }, - "Web/CSS/::-moz-range-track": { - "modified": "2019-03-23T22:27:41.835Z", + "Web/HTTP/CORS/Errors/CORSDidNotSucceed": { + "modified": "2020-03-20T09:22:59.137Z", "contributors": [ - "teoli", - "pekechis" + "javier.camus", + "rotcl", + "MarianoRDZ" ] }, - "Web/CSS/::-moz-scrolled-page-sequence": { - "modified": "2019-03-23T22:27:47.385Z", + "Web/HTTP/CORS/Errors/CORSMissingAllowOrigin": { + "modified": "2020-03-10T05:27:13.697Z", "contributors": [ - "teoli", - "pekechis" + "HermosinNunez", + "danhiel98", + "pyumbillo", + "rewin23" ] }, - "Web/CSS/::-webkit-file-upload-button": { - "modified": "2019-03-18T21:21:36.190Z", + "Web/HTTP/CORS/Errors/CORSNotSupportingCredentials": { + "modified": "2020-03-25T19:41:08.379Z", "contributors": [ - "teoli", - "pekechis" + "pablogalvezfotografiadeportiva" ] }, - "Web/CSS/::-webkit-inner-spin-button": { - "modified": "2019-03-18T21:17:13.569Z", + "Web/HTTP/CORS/Errors/CORSPreflightDidNotSucceed": { + "modified": "2019-10-08T04:58:57.176Z", "contributors": [ - "teoli", - "pekechis" + "Concatenacion" ] }, - "Web/CSS/::-webkit-input-placeholder": { - "modified": "2019-03-18T21:16:20.006Z", + "Web/HTTP/CORS/Errors/CORSRequestNotHttp": { + "modified": "2020-07-09T00:32:19.159Z", "contributors": [ - "teoli", - "pekechis" + "agf0710", + "advica2016", + "BubuAnabelas", + "Juan_Pablo" ] }, - "Web/CSS/::-webkit-meter-bar": { - "modified": "2019-03-23T22:27:21.551Z", + "Web/HTTP/CSP": { + "modified": "2020-10-15T22:03:58.031Z", "contributors": [ - "teoli", - "pekechis" + "lautaropaske", + "herleym", + "BubuAnabelas", + "vk496", + "CarlosRomeroVera" ] }, - "Web/CSS/::-webkit-meter-even-less-good-value": { - "modified": "2019-03-18T21:15:16.586Z", + "Web/HTTP/Caching": { + "modified": "2019-03-18T21:21:15.259Z", "contributors": [ - "teoli", - "pekechis" + "WilsonIsAliveClone", + "serarroy", + "ulisestrujillo" ] }, - "Web/CSS/::-webkit-meter-inner-element": { - "modified": "2019-03-23T22:27:02.054Z", + "Web/HTTP/Cookies": { + "modified": "2020-06-27T19:11:54.360Z", "contributors": [ - "teoli", - "pekechis" + "vinjatovix", + "SphinxKnight", + "g.baldemar.77", + "alexlndn", + "rayrojas", + "jesuscampos", + "nachoperassi", + "cguimaraenz", + "eortizromero", + "omertafox" ] }, - "Web/CSS/::-webkit-meter-optimum-value": { - "modified": "2019-03-23T22:27:09.428Z", + "Web/HTTP/Headers": { + "modified": "2019-12-10T13:29:15.931Z", "contributors": [ - "teoli", - "pekechis" + "OneLoneFox", + "hamethassaf", + "darianbenito", + "MrcRjs", + "Watermelonnable", + "JurgenBlitz", + "ampersand89", + "fjuarez", + "fscholz" ] }, - "Web/CSS/::-webkit-meter-suboptimum-value": { - "modified": "2019-03-23T22:27:08.613Z", + "Web/HTTP/Headers/Accept": { + "modified": "2020-10-15T21:55:42.853Z", "contributors": [ - "teoli", - "pekechis" + "gabriel-ar" ] }, - "Web/CSS/::-webkit-outer-spin-button": { - "modified": "2019-03-23T22:27:04.174Z", - "contributors": [ - "teoli", - "pekechis" - ] - }, - "Web/CSS/::-webkit-progress-bar": { - "modified": "2019-03-23T22:26:48.592Z", - "contributors": [ - "teoli", - "pekechis" - ] - }, - "Web/CSS/::-webkit-progress-inner-element": { - "modified": "2019-03-23T22:27:11.051Z", + "Web/HTTP/Headers/Accept-Charset": { + "modified": "2020-10-15T22:13:56.858Z", "contributors": [ - "teoli", - "pekechis" + "ArnoldFZ" ] }, - "Web/CSS/::-webkit-progress-value": { - "modified": "2019-03-23T22:26:54.483Z", + "Web/HTTP/Headers/Accept-Ranges": { + "modified": "2020-10-15T21:52:24.088Z", "contributors": [ - "teoli", - "pekechis" + "gerardo1sanchez" ] }, - "Web/CSS/::-webkit-scrollbar": { - "modified": "2019-03-23T22:26:50.519Z", + "Web/HTTP/Headers/Access-Control-Allow-Credentials": { + "modified": "2020-10-15T22:29:00.518Z", "contributors": [ - "pekechis" + "BubuAnabelas", + "IsraelFloresDGA" ] }, - "Web/CSS/::-webkit-slider-runnable-track": { - "modified": "2019-03-23T22:26:41.971Z", + "Web/HTTP/Headers/Access-Control-Allow-Headers": { + "modified": "2020-10-15T22:07:25.027Z", "contributors": [ - "teoli", - "pekechis" + "_deiberchacon" ] }, - "Web/CSS/::-webkit-slider-thumb": { - "modified": "2019-03-23T22:26:41.006Z", + "Web/HTTP/Headers/Access-Control-Allow-Methods": { + "modified": "2020-10-15T21:54:50.843Z", "contributors": [ - "teoli", - "pekechis" + "irsequisious" ] }, - "Web/CSS/::after": { - "modified": "2020-10-15T21:15:55.871Z", + "Web/HTTP/Headers/Access-Control-Allow-Origin": { + "modified": "2020-10-15T21:56:44.483Z", "contributors": [ - "JFOG", + "estrelow", "IsraelFloresDGA", - "israel-munoz", - "Lorenzoygata", - "teoli", - "Nathymig" + "aranzuze35", + "_deiberchacon", + "anxobotana", + "JhonAguiar" ] }, - "Web/CSS/::backdrop": { - "modified": "2019-03-23T22:30:49.892Z", + "Web/HTTP/Headers/Access-Control-Expose-Headers": { + "modified": "2020-10-15T22:06:29.086Z", "contributors": [ - "pekechis" + "jorgeCaster", + "kraneok" ] }, - "Web/CSS/::before": { - "modified": "2020-11-24T07:28:22.113Z", + "Web/HTTP/Headers/Age": { + "modified": "2020-10-15T22:10:53.345Z", "contributors": [ - "chrisdavidmills", - "maketas", - "IsraelFloresDGA", - "israel-munoz", - "Yisus777", - "teoli", - "Nathymig" + "0xCGonzalo" ] }, - "Web/CSS/::cue": { - "modified": "2020-10-15T22:33:08.581Z", + "Web/HTTP/Headers/Allow": { + "modified": "2019-03-18T21:23:10.971Z", "contributors": [ - "Pablo-No" + "ogaston" ] }, - "Web/CSS/::first-letter": { - "modified": "2020-10-15T22:24:50.087Z", + "Web/HTTP/Headers/Authorization": { + "modified": "2019-03-18T21:34:28.554Z", "contributors": [ - "Plumas", - "adrymrtnz" + "kraneok", + "Watermelonnable" ] }, - "Web/CSS/::first-line": { - "modified": "2020-10-15T22:24:51.827Z", + "Web/HTTP/Headers/Cache-Control": { + "modified": "2020-10-28T14:39:35.644Z", "contributors": [ - "Plumas", - "ivanenoriega", - "adrymrtnz" + "noksenberg", + "IsraelFloresDGA", + "ervin_santos" ] }, - "Web/CSS/::marker": { - "modified": "2020-10-15T22:22:16.686Z", + "Web/HTTP/Headers/Content-Disposition": { + "modified": "2020-10-15T21:58:39.489Z", "contributors": [ - "qwerty726" + "kbono", + "lagwy" ] }, - "Web/CSS/::placeholder": { - "modified": "2020-10-15T22:26:50.005Z", + "Web/HTTP/Headers/Content-Encoding": { + "modified": "2020-10-15T21:53:14.848Z", "contributors": [ - "IsraelFloresDGA" + "IT-Rafa", + "sevillacode" ] }, - "Web/CSS/::selection": { - "modified": "2019-03-23T23:33:09.211Z", + "Web/HTTP/Headers/Content-Length": { + "modified": "2020-10-15T22:07:26.889Z", "contributors": [ - "canobius", - "arroutado", - "jesu_abner", - "teoli", - "pepeheron" + "aliciava00", + "efrencruz" ] }, - "Web/CSS/::spelling-error": { - "modified": "2020-10-15T22:03:59.841Z", + "Web/HTTP/Headers/Content-Location": { + "modified": "2020-10-15T22:29:48.071Z", "contributors": [ - "lajaso" + "hecmonter" ] }, - "Web/CSS/:active": { - "modified": "2020-10-15T21:21:49.325Z", + "Web/HTTP/Headers/Content-Security-Policy": { + "modified": "2020-10-15T22:18:45.176Z", "contributors": [ - "pollirrata", - "lajaso", - "teoli", - "MrBlogger" + "rayrojas", + "mauril26", + "27z" ] }, - "Web/CSS/:any": { - "modified": "2019-03-23T22:17:18.601Z", + "Web/HTTP/Headers/Content-Type": { + "modified": "2020-10-15T21:58:35.257Z", "contributors": [ - "israel-munoz" + "ivanfretes", + "omertafox", + "ValeriaRamos" ] }, - "Web/CSS/:any-link": { - "modified": "2020-10-15T21:52:30.387Z", + "Web/HTTP/Headers/Cookie": { + "modified": "2020-10-15T21:55:41.792Z", "contributors": [ - "JFOG", - "lajaso", - "israel-munoz" + "SSantiago90" ] }, - "Web/CSS/:blank": { - "modified": "2020-10-15T22:26:47.961Z", + "Web/HTTP/Headers/Cross-Origin-Resource-Policy": { + "modified": "2020-10-15T22:29:00.325Z", "contributors": [ "IsraelFloresDGA" ] }, - "Web/CSS/:checked": { - "modified": "2020-10-15T21:32:04.510Z", + "Web/HTTP/Headers/ETag": { + "modified": "2020-10-15T21:57:09.273Z", "contributors": [ - "lajaso", - "zxhadow" + "zechworld", + "evalenzuela", + "stwilberth", + "edgarrod71" ] }, - "Web/CSS/:default": { - "modified": "2020-10-15T21:15:24.516Z", + "Web/HTTP/Headers/Expires": { + "modified": "2020-10-15T21:56:44.738Z", "contributors": [ - "lajaso", - "teoli", - "Mgjbot", - "Nathymig", - "HenryGR" + "ernesto.palafox" ] }, - "Web/CSS/:defined": { - "modified": "2020-10-15T22:03:59.600Z", + "Web/HTTP/Headers/Host": { + "modified": "2020-10-15T22:24:56.306Z", "contributors": [ - "JFOG", - "lajaso" + "escatel.bernal10", + "Alvarito-056" ] }, - "Web/CSS/:dir": { - "modified": "2020-10-15T21:44:46.376Z", + "Web/HTTP/Headers/Keep-Alive": { + "modified": "2020-10-15T22:02:52.123Z", "contributors": [ - "lajaso", - "pekechis" + "fernomenoide" ] }, - "Web/CSS/:disabled": { - "modified": "2020-10-15T21:43:53.936Z", + "Web/HTTP/Headers/Link": { + "modified": "2020-10-15T22:28:59.441Z", "contributors": [ - "lajaso", - "pekechis" + "threevanny" ] }, - "Web/CSS/:empty": { - "modified": "2020-10-15T21:16:01.534Z", + "Web/HTTP/Headers/Origin": { + "modified": "2020-10-15T22:00:47.248Z", "contributors": [ "IsraelFloresDGA", - "lajaso", - "teoli", - "Nathymig" + "Abelhg" ] }, - "Web/CSS/:enabled": { - "modified": "2020-10-15T21:44:29.292Z", + "Web/HTTP/Headers/Pragma": { + "modified": "2020-10-15T22:09:54.700Z", "contributors": [ - "lajaso", - "pekechis" + "ervin_santos" ] }, - "Web/CSS/:first": { - "modified": "2020-10-15T21:43:42.281Z", + "Web/HTTP/Headers/Referer": { + "modified": "2020-10-15T21:53:10.093Z", "contributors": [ - "lajaso", - "pekechis" + "LastCyborg", + "fitojb", + "UltimoOrejonDelTarro" ] }, - "Web/CSS/:first-child": { - "modified": "2020-10-15T21:19:55.452Z", + "Web/HTTP/Headers/Referrer-Policy": { + "modified": "2020-10-15T22:01:34.403Z", "contributors": [ - "lajaso", - "teoli", - "percy@mozilla.pe", - "jsalinas" + "fitojb" ] }, - "Web/CSS/:first-of-type": { - "modified": "2020-10-15T21:44:49.790Z", + "Web/HTTP/Headers/Server": { + "modified": "2020-10-15T21:55:40.335Z", "contributors": [ - "lajaso", - "pekechis" + "sevillacode", + "TheSgtPepper23", + "irsequisious" ] }, - "Web/CSS/:focus": { - "modified": "2020-10-15T21:43:30.779Z", + "Web/HTTP/Headers/Set-Cookie": { + "modified": "2020-10-26T12:24:29.884Z", "contributors": [ - "evaferreira", - "lajaso", - "pekechis" + "ignacio-ifm", + "IsraelFloresDGA", + "rayrojas", + "ramonserrano", + "garolard" ] }, - "Web/CSS/:focus-visible": { - "modified": "2020-10-15T22:33:54.482Z", + "Web/HTTP/Headers/Strict-Transport-Security": { + "modified": "2020-10-15T21:54:14.546Z", "contributors": [ - "arauz.gus" + "AmadPS", + "pipe01", + "heilop", + "JulianSoto", + "pablolopezmera", + "Oxicode" ] }, - "Web/CSS/:focus-within": { - "modified": "2020-12-03T05:40:25.197Z", + "Web/HTTP/Headers/Transfer-Encoding": { + "modified": "2020-10-15T22:24:54.193Z", "contributors": [ - "AlePerez92", - "carlosviteri", - "lajaso", - "AntonioNavajasOjeda" + "0xCGonzalo" ] }, - "Web/CSS/:fullscreen": { - "modified": "2020-10-15T21:51:48.377Z", + "Web/HTTP/Headers/User-Agent": { + "modified": "2020-10-15T22:00:44.883Z", "contributors": [ - "lajaso", - "israel-munoz" + "LeoOliva", + "Imvi10" ] }, - "Web/CSS/:has": { - "modified": "2019-03-23T22:36:22.444Z", + "Web/HTTP/Headers/Vary": { + "modified": "2020-10-15T21:56:44.020Z", "contributors": [ - "pekechis" + "JhonAguiar" ] }, - "Web/CSS/:host": { - "modified": "2020-10-15T22:04:25.470Z", + "Web/HTTP/Headers/WWW-Authenticate": { + "modified": "2020-10-15T22:19:30.337Z", "contributors": [ - "rhssr", - "lajaso" + "malonso", + "Gytree" ] }, - "Web/CSS/:hover": { - "modified": "2020-10-15T21:19:57.161Z", + "Web/HTTP/Headers/X-Content-Type-Options": { + "modified": "2020-10-15T21:59:06.832Z", "contributors": [ - "lajaso", - "teoli", - "percy@mozilla.pe", - "ccarruitero" + "clbustos", + "tonialfaro" ] }, - "Web/CSS/:in-range": { - "modified": "2020-10-15T21:52:29.381Z", + "Web/HTTP/Headers/X-Forwarded-For": { + "modified": "2020-10-15T22:16:47.635Z", "contributors": [ - "lajaso", - "israel-munoz" + "choadev", + "martinfrad", + "camsa" ] }, - "Web/CSS/:indeterminate": { - "modified": "2020-10-15T21:52:30.617Z", + "Web/HTTP/Headers/X-Frame-Options": { + "modified": "2020-10-15T21:57:01.709Z", "contributors": [ - "lajaso", - "israel-munoz" + "ervin_santos", + "Luiggy", + "setlord" ] }, - "Web/CSS/:invalid": { - "modified": "2020-10-15T21:25:32.434Z", + "Web/HTTP/Headers/X-XSS-Protection": { + "modified": "2020-10-15T21:59:06.897Z", "contributors": [ - "lajaso", - "teoli", - "ccastillos" + "JulioMoreyra", + "francinysalles", + "tonialfaro" ] }, - "Web/CSS/:lang": { - "modified": "2020-10-15T21:49:25.234Z", + "Web/HTTP/Messages": { + "modified": "2019-11-12T11:40:26.816Z", "contributors": [ - "lajaso", - "sapox" + "emiedes", + "jose89gp", + "anibalortegap", + "Sergio_Gonzalez_Collado" ] }, - "Web/CSS/:last-child": { - "modified": "2020-10-15T21:19:56.585Z", + "Web/HTTP/Methods": { + "modified": "2020-10-15T21:51:09.574Z", "contributors": [ - "lajaso", - "MarkelCuesta", - "carloque", - "teoli", - "ccarruitero", - "percy@mozilla.pe" + "andrpueb", + "eddydeath", + "JRaiden", + "JulianSoto", + "RamsesMartinez" ] }, - "Web/CSS/:last-of-type": { - "modified": "2020-10-15T21:19:57.770Z", + "Web/HTTP/Methods/CONNECT": { + "modified": "2020-10-15T22:09:12.273Z", "contributors": [ - "lajaso", - "teoli", - "jesanchez", - "jsalinas" + "jadiosc" ] }, - "Web/CSS/:left": { - "modified": "2020-10-15T22:03:35.116Z", + "Web/HTTP/Methods/GET": { + "modified": "2020-12-13T00:32:42.441Z", "contributors": [ - "Tartarin2018", - "lajaso", - "Skrinch" + "victorgabardini", + "SphinxKnight", + "sercorc.12", + "oespino", + "RetelboP" ] }, - "Web/CSS/:link": { - "modified": "2020-10-15T21:54:15.946Z", + "Web/HTTP/Methods/PATCH": { + "modified": "2020-10-04T20:15:30.024Z", "contributors": [ - "lajaso", - "Jhonatangiraldo" + "hamishwillee", + "cnietoc", + "SackmannDV", + "noecende" ] }, - "Web/CSS/:not()": { - "modified": "2020-11-30T09:54:17.195Z", + "Web/HTTP/Methods/POST": { + "modified": "2020-11-06T16:08:25.707Z", "contributors": [ - "blanchart", - "lajaso", - "teoli", - "jotadeaa", - "luisgagocasas" + "Max_Gremory", + "JGarnica", + "qmarquez", + "DavidGalvis", + "sammye70", + "Sheppy", + "mtnalonso", + "Juenesis" + ] + }, + "Web/HTTP/Methods/PUT": { + "modified": "2020-10-15T21:58:39.134Z", + "contributors": [ + "mtnalonso" + ] + }, + "Web/HTTP/Methods/TRACE": { + "modified": "2020-10-15T22:12:36.763Z", + "contributors": [ + "pablobiedma" + ] + }, + "Web/HTTP/Overview": { + "modified": "2020-08-07T11:46:49.430Z", + "contributors": [ + "marcusdesantis", + "Enesimus", + "Rafasu", + "ChrisMHM", + "LuisGalicia", + "jose89gp", + "DaniNz", + "cabaag", + "Sergio_Gonzalez_Collado" + ] + }, + "Web/HTTP/Status": { + "modified": "2020-10-01T02:41:07.109Z", + "contributors": [ + "SphinxKnight", + "gonzalestino924", + "manuelguido", + "juliocesardeveloper", + "ismanapa", + "santiago.lator", + "leticia-acib", + "josecarbajalbolbot", + "StarViruZ", + "amircp", + "SebastianBar", + "serivt", + "Jens.B" + ] + }, + "Web/HTTP/Status/100": { + "modified": "2020-10-15T21:56:53.445Z", + "contributors": [ + "serivt" + ] + }, + "Web/HTTP/Status/101": { + "modified": "2019-03-18T21:22:02.098Z", + "contributors": [ + "jlamasfripp" + ] + }, + "Web/HTTP/Status/200": { + "modified": "2020-10-15T22:05:24.611Z", + "contributors": [ + "SphinxKnight", + "alexibarra55", + "jlamasfripp", + "gbarriosf", + "snaven10", + "Adriel_from_Nav" + ] + }, + "Web/HTTP/Status/201": { + "modified": "2020-10-15T22:08:02.661Z", + "contributors": [ + "WriestTavo" + ] + }, + "Web/HTTP/Status/202": { + "modified": "2019-04-19T16:13:12.876Z", + "contributors": [ + "Hibot12" + ] + }, + "Web/HTTP/Status/203": { + "modified": "2020-06-14T20:53:26.311Z", + "contributors": [ + "rayrojas" + ] + }, + "Web/HTTP/Status/206": { + "modified": "2020-10-15T22:02:08.111Z", + "contributors": [ + "qpdian" + ] + }, + "Web/HTTP/Status/301": { + "modified": "2020-10-15T22:24:06.781Z", + "contributors": [ + "nullxx" + ] + }, + "Web/HTTP/Status/302": { + "modified": "2020-10-15T21:59:00.277Z", + "contributors": [ + "B1tF8er", + "kraptor", + "astrapotro" + ] + }, + "Web/HTTP/Status/304": { + "modified": "2020-10-15T22:12:46.751Z", + "contributors": [ + "jairoFg12" + ] + }, + "Web/HTTP/Status/400": { + "modified": "2019-08-03T10:06:53.857Z", + "contributors": [ + "molavec", + "Hibot12" + ] + }, + "Web/HTTP/Status/401": { + "modified": "2020-10-15T21:55:15.004Z", + "contributors": [ + "Clipi", + "JuanMacias", + "mjaque", + "andreximo" + ] + }, + "Web/HTTP/Status/403": { + "modified": "2020-10-15T21:58:50.466Z", + "contributors": [ + "JuanMacias" + ] + }, + "Web/HTTP/Status/404": { + "modified": "2020-10-15T21:56:47.503Z", + "contributors": [ + "BrodaNoel" + ] + }, + "Web/HTTP/Status/408": { + "modified": "2019-03-18T21:30:00.279Z", + "contributors": [ + "juusechec" + ] + }, + "Web/HTTP/Status/418": { + "modified": "2020-10-15T22:21:28.070Z", + "contributors": [ + "joseluisq", + "paolo667" + ] + }, + "Web/HTTP/Status/500": { + "modified": "2020-12-07T12:32:25.820Z", + "contributors": [ + "dayanhernandez353", + "karenonaly", + "duduindo", + "marcelokruk", + "Viejofon" + ] + }, + "Web/HTTP/Status/502": { + "modified": "2020-10-15T21:56:55.208Z", + "contributors": [ + "josecarbajalbolbot", + "AlePerez92", + "josmelnoel" + ] + }, + "Web/HTTP/Status/503": { + "modified": "2020-10-15T22:10:17.555Z", + "contributors": [ + "Parodper", + "ajuni880", + "diego-bustamante" + ] + }, + "Web/HTTP/Status/504": { + "modified": "2020-10-15T22:08:08.336Z", + "contributors": [ + "ojeanicolas" + ] + }, + "Web/HTTP/Status/505": { + "modified": "2020-04-03T20:59:26.896Z", + "contributors": [ + "lp4749791" + ] + }, + "Web/JavaScript": { + "modified": "2020-11-23T12:49:37.646Z", + "contributors": [ + "SphinxKnight", + "kramosr68", + "ivanfernandez5209", + "Tonatew", + "alejogomes944", + "Nachec", + "victitor800", + "Enesimus", + "franchesco182001", + "pauli.rodriguez.c", + "jhonarielgj", + "Fegaan", + "OOJuanferOO", + "nicolas25ramirez", + "andreamv2807", + "tomasvillarragaperez", + "Yel-Martinez-Consultor-Seo", + "rodririobo", + "isabelsvelasquezv", + "fedegianni04", + "jaomix1", + "TheJarX", + "clarii", + "NataliaCba", + "NicoleCleto1998", + "JavScars", + "untilbit", + "AlePerez92", + "aluxito", + "luisNavasArg", + "jsx", + "carlossuarez", + "Pablo_Ivan", + "teoli", + "LeoHirsch", + "smarchioni", + "ricardo777", + "CarlosQuijano", + "Scipion", + "alquimista", + "Nukeador", + "ethertank", + "Jorge.villalobos", + "arleytriana", + "arpunk", + "inma_610", + "StripTM", + "Mgjbot", + "Superruzafa", + "Verruckt", + "Jorolo", + "Vyk", + "Takenbot", + "RJacinto" + ] + }, + "Web/JavaScript/Closures": { + "modified": "2020-04-08T19:26:44.700Z", + "contributors": [ + "camsa", + "wbamberg", + "AzazelN28", + "JonasBrandel", + "fscholz", + "guty", + "Siro_Diaz", + "luigli", + "teoli", + "FNK", + "juanc.jara", + "Josias", + "neosergio", + "hjoaco" + ] + }, + "Web/JavaScript/Data_structures": { + "modified": "2020-08-30T02:21:59.996Z", + "contributors": [ + "Nachec", + "edwinmunguia", + "arzr", + "rayrojas", + "melgard", + "mmngreco", + "AngryDev", + "Gorzas", + "alejandrochung", + "IXTRUnai", + "damnyorch", + "devconcept", + "sancospi" + ] + }, + "Web/JavaScript/Equality_comparisons_and_sameness": { + "modified": "2020-03-24T18:47:23.011Z", + "contributors": [ + "camsa", + "abestrad1", + "EduardoCasanova", + "pekechis" + ] + }, + "Web/JavaScript/EventLoop": { + "modified": "2020-03-12T19:43:05.672Z", + "contributors": [ + "AzazelN28", + "omonteon", + "guillermojmc", + "eljonims", + "MrCoffey", + "Anonymous" + ] + }, + "Web/JavaScript/Guide": { + "modified": "2020-09-12T21:03:22.983Z", + "contributors": [ + "Nachec", + "AmazonianCodeGuy", + "tezece", + "MarcyG1", + "nhuamani", + "manuhdez", + "e.g.m.g.", + "Pablo_Ivan", + "nelson6e65", + "walterpaoli", + "joanvasa", + "fscholz", + "Benjalorc", + "teoli", + "mitogh", + "xavo7" + ] + }, + "Web/JavaScript/Guide/Details_of_the_Object_Model": { + "modified": "2020-08-17T15:38:30.288Z", + "contributors": [ + "Nachec", + "MariaBarros", + "AmazonianCodeGuy", + "wbamberg", + "fherce", + "SphinxKnight", + "ObsoleteHuman", + "ValentinTapiaTorti", + "brodriguezs", + "DiegoA1114", + "montogeek", + "fscholz", + "teoli", + "pheras" + ] + }, + "Web/JavaScript/Guide/Expressions_and_Operators": { + "modified": "2020-09-13T21:58:37.783Z", + "contributors": [ + "Nachec", + "gcjuan", + "Orlando-Flores-Huanca", + "wajari", + "anglozm", + "recortes", + "Ernesto385291", + "Jkierem", + "gsalinase", + "abestrad1", + "milouri23", + "Odol", + "victorsanchezm", + "ElChiniNet", + "UshioSan", + "siluvana", + "juanbrujo", + "01luisrene", + "gustavgil", + "Jaston", + "Alexis88", + "smarquez1", + "ricardochavarri", + "fscholz", + "spachecojimenez" + ] + }, + "Web/JavaScript/Guide/Grammar_and_types": { + "modified": "2020-09-12T23:09:43.446Z", + "contributors": [ + "Nachec", + "luis-al-merino", + "AmazonianCodeGuy", + "teknotica", + "feliperomero3", + "nullx5", + "abelosky", + "jlopezfdez", + "enriqueabsurdum", + "Ayman", + "AnthonyGareca", + "chuyinEF", + "estebancito", + "bytx", + "Pablo_Ivan", + "cgsramirez", + "eugenioNovas", + "marioalvazquez", + "joanvasa", + "fscholz", + "Cleon", + "angelnajera", + "vinixio", + "diegogaysaez", + "teoli", + "Amatos" + ] + }, + "Web/JavaScript/Guide/Iterators_and_Generators": { + "modified": "2020-03-12T19:42:41.976Z", + "contributors": [ + "camsa", + "DJphilomath", + "mjaque", + "lassmann", + "eycopia", + "nefter", + "dieguezz", + "Breaking_Pitt" + ] + }, + "Web/JavaScript/Guide/Keyed_collections": { + "modified": "2020-09-02T02:09:58.803Z", + "contributors": [ + "Nachec", + "MariaBarros", + "jesus92gz", + "eljonims" + ] + }, + "Web/JavaScript/Guide/Meta_programming": { + "modified": "2020-08-18T02:34:39.284Z", + "contributors": [ + "Nachec", + "asamajamasa", + "jaomix1", + "jzatarain" + ] + }, + "Web/JavaScript/Guide/Numbers_and_dates": { + "modified": "2020-09-14T23:27:03.154Z", + "contributors": [ + "Nachec", + "ds-developer1", + "la-syl", + "IsraelFloresDGA", + "ingcarlosperez", + "georgenevets", + "yakashiro" + ] + }, + "Web/JavaScript/Guide/Regular_Expressions": { + "modified": "2020-10-15T21:29:34.015Z", + "contributors": [ + "Nachec", + "wilmer2000", + "Ricardo_F.", + "lebubic", + "franklevel", + "recortes", + "LuisSevillano", + "pangeasi", + "Jabi", + "bartolocarrasco", + "fortil", + "BoyFerruco", + "Lehmer", + "wffranco", + "eljonims", + "jpmontoya182", + "guillermomartinmarco", + "fscholz", + "eespitia.rea", + "jcvergar" ] }, - "Web/CSS/:nth-child": { - "modified": "2020-10-15T21:20:38.559Z", + "Web/JavaScript/Guide/Text_formatting": { + "modified": "2020-09-15T10:00:50.941Z", "contributors": [ - "ulisestrujillo", - "lajaso", - "teoli", - "tuxtitlan" + "Nachec", + "surielmx", + "IsraelFloresDGA", + "diegarta", + "Enesimus", + "jalmeida" ] }, - "Web/CSS/:nth-last-child": { - "modified": "2020-10-15T21:42:40.958Z", + "Web/JavaScript/Language_Resources": { + "modified": "2020-03-12T19:47:17.832Z", "contributors": [ "lajaso", - "alkaithil" - ] - }, - "Web/CSS/:nth-last-of-type": { - "modified": "2020-10-15T22:04:20.811Z", - "contributors": [ - "AltheaE", - "lajaso" + "jpmontoya182" ] }, - "Web/CSS/:nth-of-type": { - "modified": "2020-10-15T21:43:57.823Z", + "Web/JavaScript/Reference/Errors": { + "modified": "2020-03-12T19:45:01.208Z", "contributors": [ - "lajaso", - "edkalel" + "JavScars", + "Sheppy" ] }, - "Web/CSS/:only-child": { - "modified": "2020-10-15T21:42:38.914Z", + "Web/JavaScript/Reference/Errors/Bad_octal": { + "modified": "2020-03-12T19:45:41.442Z", "contributors": [ - "lajaso", - "alkaithil" + "HaroldV" ] }, - "Web/CSS/:only-of-type": { - "modified": "2020-10-15T22:04:23.870Z", + "Web/JavaScript/Reference/Errors/Deprecated_source_map_pragma": { + "modified": "2020-03-12T19:45:51.961Z", "contributors": [ - "lajaso" + "BubuAnabelas", + "Andres62", + "ingjosegarrido", + "JaimeNorato" ] }, - "Web/CSS/:optional": { - "modified": "2020-10-15T22:03:59.272Z", + "Web/JavaScript/Reference/Errors/Invalid_array_length": { + "modified": "2020-03-12T19:46:48.651Z", "contributors": [ - "lajaso" + "Tlauipil" ] }, - "Web/CSS/:out-of-range": { - "modified": "2020-10-15T21:52:29.356Z", + "Web/JavaScript/Reference/Errors/Invalid_date": { + "modified": "2020-03-12T19:47:15.708Z", "contributors": [ - "lajaso", - "israel-munoz" + "untilbit" ] }, - "Web/CSS/:placeholder-shown": { - "modified": "2020-10-15T22:04:23.723Z", + "Web/JavaScript/Reference/Errors/Malformed_formal_parameter": { + "modified": "2019-10-12T12:26:22.919Z", "contributors": [ - "lajaso" + "JGmr5" ] }, - "Web/CSS/:read-only": { - "modified": "2020-10-15T21:58:16.699Z", + "Web/JavaScript/Reference/Errors/Missing_curly_after_property_list": { + "modified": "2020-03-12T19:46:53.938Z", "contributors": [ - "lajaso", - "j-light" + "DGun17" ] }, - "Web/CSS/:read-write": { - "modified": "2020-10-15T22:04:19.084Z", + "Web/JavaScript/Reference/Errors/Missing_formal_parameter": { + "modified": "2020-03-12T19:47:16.712Z", "contributors": [ - "lajaso" + "TheEpicSimple" ] }, - "Web/CSS/:required": { - "modified": "2020-10-15T21:44:28.186Z", + "Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list": { + "modified": "2020-03-12T19:46:54.683Z", "contributors": [ - "lajaso", - "pekechis" + "hiuxmaycry", + "ivandevp" ] }, - "Web/CSS/:right": { - "modified": "2020-10-15T22:04:16.818Z", + "Web/JavaScript/Reference/Errors/More_arguments_needed": { + "modified": "2020-03-12T19:49:21.407Z", "contributors": [ - "lajaso" + "dragonmenorka" ] }, - "Web/CSS/:root": { - "modified": "2020-10-15T21:34:17.481Z", + "Web/JavaScript/Reference/Errors/No_variable_name": { + "modified": "2020-03-12T19:48:33.901Z", "contributors": [ - "lajaso", - "JavierPeris", - "Xaviju" + "CatalinaCampos" ] }, - "Web/CSS/:target": { - "modified": "2020-10-15T21:44:29.225Z", + "Web/JavaScript/Reference/Errors/Not_a_codepoint": { + "modified": "2020-03-12T19:46:46.603Z", "contributors": [ - "lajaso", - "moisesalmonte", - "pekechis" + "DGun17" ] }, - "Web/CSS/:valid": { - "modified": "2020-10-15T21:45:32.621Z", + "Web/JavaScript/Reference/Errors/Not_a_function": { + "modified": "2020-03-12T19:45:06.322Z", "contributors": [ - "lajaso", - "jorgesancheznet" + "PatoDeTuring", + "untilbit", + "josegarciaclm95" ] }, - "Web/CSS/:visited": { - "modified": "2020-10-15T22:04:02.908Z", + "Web/JavaScript/Reference/Errors/Not_defined": { + "modified": "2020-10-08T09:22:13.757Z", "contributors": [ - "lajaso" + "ludoescribano.2016", + "FacuBustamaante", + "ozavala", + "ccorcoles", + "Heranibus", + "jsgaonac", + "Luis_Armando" ] }, - "Web/CSS/@charset": { - "modified": "2019-03-23T22:29:53.691Z", + "Web/JavaScript/Reference/Errors/Precision_range": { + "modified": "2020-08-10T12:14:52.122Z", "contributors": [ - "israel-munoz" + "Sgewux" ] }, - "Web/CSS/@counter-style": { - "modified": "2019-03-18T21:16:44.974Z", + "Web/JavaScript/Reference/Errors/Property_access_denied": { + "modified": "2020-03-12T19:46:35.795Z", "contributors": [ - "jamesbrown0" + "untilbit", + "Tlauipil" ] }, - "Web/CSS/@counter-style/additive-symbols": { - "modified": "2019-03-23T22:18:02.836Z", + "Web/JavaScript/Reference/Errors/Stmt_after_return": { + "modified": "2020-03-12T19:46:14.065Z", "contributors": [ - "israel-munoz" + "WCHARRIERE", + "NanoSpicer", + "marco_Lozano" ] }, - "Web/CSS/@counter-style/symbols": { - "modified": "2019-03-18T21:15:43.336Z", + "Web/JavaScript/Reference/Errors/Too_much_recursion": { + "modified": "2020-03-12T19:45:04.878Z", "contributors": [ - "israel-munoz" + "josegarciaclm95" ] }, - "Web/CSS/@document": { - "modified": "2020-10-15T22:01:34.650Z", + "Web/JavaScript/Reference/Errors/Undefined_prop": { + "modified": "2020-03-12T19:47:46.684Z", "contributors": [ - "SphinxKnight", - "lsosa81" + "antixsuperstar" ] }, - "Web/CSS/@font-face": { - "modified": "2019-09-26T12:01:00.515Z", + "Web/JavaScript/Reference/Errors/Unexpected_token": { + "modified": "2020-03-12T19:46:40.968Z", "contributors": [ - "ZodiacFireworks", - "fscholz", - "rtunon", - "ozkxr", - "teoli", - "ccarruitero", - "Nuc134rB0t", - "inma_610" + "dariomaim" ] }, - "Web/CSS/@font-face/font-display": { - "modified": "2020-10-15T21:59:11.206Z", + "Web/JavaScript/Reference/Errors/Unexpected_type": { + "modified": "2020-03-12T19:45:53.118Z", "contributors": [ - "AlePerez92", - "nuwanda555" + "BubuAnabelas", + "JaimeNorato" ] }, - "Web/CSS/@font-face/font-family": { - "modified": "2019-03-23T22:37:47.693Z", + "Web/JavaScript/Reference/Errors/in_operator_no_object": { + "modified": "2020-03-12T19:47:18.421Z", "contributors": [ - "pekechis" + "presercomp" ] }, - "Web/CSS/@font-face/font-style": { - "modified": "2019-03-23T22:38:47.174Z", + "Web/JavaScript/Reference/Global_Objects/RangeError": { + "modified": "2019-03-23T22:47:01.907Z", "contributors": [ - "danielfdez" + "gfernandez", + "fscholz" ] }, - "Web/CSS/@font-face/src": { - "modified": "2019-03-23T22:17:51.245Z", + "Web/JavaScript/Reference/Global_Objects/Reflect": { + "modified": "2019-03-18T21:14:43.908Z", "contributors": [ - "israel-munoz" + "javierlopm", + "trofrigo", + "lecruz01", + "roberbnd", + "jameshkramer" ] }, - "Web/CSS/@font-face/unicode-range": { - "modified": "2020-10-15T21:50:47.753Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/set": { + "modified": "2019-03-23T22:08:25.189Z", "contributors": [ - "SphinxKnight", - "giobeatle1794" + "pedro-otero" ] }, - "Web/CSS/@font-feature-values": { - "modified": "2019-03-23T22:22:14.476Z", + "Web/JavaScript/Shells": { + "modified": "2020-03-12T19:44:40.392Z", "contributors": [ - "israel-munoz" + "davidenriq11", + "mamptecnocrata" ] }, - "Web/CSS/@import": { - "modified": "2019-03-23T23:38:27.735Z", + "Web/Manifest": { + "modified": "2020-07-18T01:40:57.131Z", "contributors": [ - "JorgeCapillo", - "Guillaume-Heras", - "mrstork", - "fscholz", - "teoli", - "jsalinas", - "kamel.araujo" + "angelmlucero", + "ardillan", + "Zellius", + "Pablo_Bangueses", + "luisabarca", + "malonson", + "AlePerez92" ] }, - "Web/CSS/@keyframes": { - "modified": "2019-03-23T23:36:20.944Z", + "Web/MathML": { + "modified": "2020-10-15T21:24:26.572Z", "contributors": [ - "Sebastianz", - "fscholz", - "Sheppy", + "Undigon", "teoli", - "jesanchez", - "Velociraktor" + "fred.wang", + "ChaitanyaGSNR" ] }, - "Web/CSS/@media": { - "modified": "2019-03-23T23:16:54.490Z", + "Web/MathML/Attribute": { + "modified": "2019-03-23T23:26:57.621Z", "contributors": [ - "israel-munoz", - "fscholz", - "teoli", - "sanathy" + "LuifeR", + "ccarruitero", + "maedca" ] }, - "Web/CSS/@media/altura": { - "modified": "2020-10-15T22:23:38.815Z", + "Web/MathML/Authoring": { + "modified": "2019-03-23T23:27:02.180Z", "contributors": [ - "IsraelFloresDGA" + "rafaqtro", + "fred.wang", + "voylinux", + "robertoasq", + "maedca" ] }, - "Web/CSS/@media/color": { - "modified": "2019-03-18T21:15:44.481Z", + "Web/MathML/Examples": { + "modified": "2019-03-23T23:25:26.042Z", "contributors": [ - "pekechis" + "nielsdg" ] }, - "Web/CSS/@media/display-mode": { - "modified": "2020-10-15T22:23:39.088Z", + "Web/MathML/Examples/MathML_Pythagorean_Theorem": { + "modified": "2019-03-23T23:25:28.102Z", "contributors": [ - "IsraelFloresDGA" + "osvaldobaeza" ] }, - "Web/CSS/@media/hover": { - "modified": "2020-10-15T22:23:44.104Z", + "Web/Media": { + "modified": "2020-07-15T09:47:41.711Z", "contributors": [ - "IsraelFloresDGA" + "Sheppy" ] }, - "Web/CSS/@media/pointer": { - "modified": "2020-10-15T22:27:26.867Z", + "Web/Media/Formats": { + "modified": "2020-07-15T09:47:42.018Z", "contributors": [ - "qwerty726" + "Sheppy" ] }, - "Web/CSS/@media/resolución": { - "modified": "2019-03-23T22:38:40.675Z", + "Web/Media/Formats/Containers": { + "modified": "2020-07-15T09:47:51.166Z", "contributors": [ - "Conradin88" + "hugojavierduran9" ] }, - "Web/CSS/@media/width": { - "modified": "2019-03-23T22:04:44.569Z", + "Web/Performance": { + "modified": "2019-04-04T19:28:41.844Z", "contributors": [ - "jswisher", - "wilton-cruz" + "arekucr", + "chrisdavidmills" ] }, - "Web/CSS/@namespace": { - "modified": "2020-10-15T22:29:21.901Z", + "Web/Performance/Fundamentals": { + "modified": "2019-05-05T06:54:02.458Z", "contributors": [ - "qwerty726" + "c-torres" ] }, - "Web/CSS/@page": { - "modified": "2019-03-18T21:35:50.476Z", + "Web/Performance/How_browsers_work": { + "modified": "2020-09-10T10:11:23.592Z", "contributors": [ - "luismj" + "sancarbar" ] }, - "Web/CSS/@supports": { - "modified": "2020-10-15T21:43:18.021Z", + "Web/Progressive_web_apps": { + "modified": "2020-09-20T04:18:55.064Z", "contributors": [ - "SJW", - "angelf", - "MilkSnake" + "Nachec", + "Enesimus", + "chrisdavidmills", + "hypnotic-frog", + "javichito" ] }, - "Web/CSS/@viewport": { - "modified": "2019-03-18T21:16:54.012Z", + "Web/Progressive_web_apps/App_structure": { + "modified": "2020-09-20T03:39:21.273Z", "contributors": [ - "cvrebert" + "Nachec", + "NicolasKuhn" ] }, - "Web/CSS/@viewport/height": { - "modified": "2019-03-18T21:38:59.253Z", + "Web/Progressive_web_apps/Developer_guide": { + "modified": "2020-09-20T03:25:40.381Z", "contributors": [ - "israel-munoz" + "Deng_C1" ] }, - "Web/CSS/@viewport/width": { - "modified": "2019-03-18T21:16:26.082Z", + "Web/Progressive_web_apps/Installable_PWAs": { + "modified": "2020-09-20T03:54:28.154Z", "contributors": [ - "israel-munoz" + "Nachec" ] }, - "Web/CSS/At-rule": { - "modified": "2019-03-23T22:29:55.371Z", + "Web/Progressive_web_apps/Introduction": { + "modified": "2020-09-20T03:34:06.424Z", "contributors": [ - "Legioinvicta", - "israel-munoz" + "Nachec", + "gastono.442", + "tw1ttt3r", + "santi324", + "chrisdavidmills" ] }, - "Web/CSS/CSS_Animations": { - "modified": "2019-03-23T22:43:48.247Z", + "Web/Progressive_web_apps/Loading": { + "modified": "2020-09-20T04:08:37.661Z", "contributors": [ - "teoli" + "Nachec" ] }, - "Web/CSS/CSS_Animations/Detectar_soporte_de_animación_CSS": { - "modified": "2019-03-23T22:41:48.122Z", + "Web/Progressive_web_apps/Offline_Service_workers": { + "modified": "2020-09-20T03:45:55.671Z", "contributors": [ - "wbamberg", - "CristhianLora1", - "DracotMolver" + "Nachec" ] }, - "Web/CSS/CSS_Animations/Tips": { - "modified": "2020-08-16T13:05:40.057Z", + "Web/Progressive_web_apps/Re-engageable_Notifications_Push": { + "modified": "2020-09-20T04:04:04.639Z", "contributors": [ - "CamilaAchury", - "SphinxKnight", - "AlbertoVargasMoreno" + "Nachec" ] }, - "Web/CSS/CSS_Animations/Usando_animaciones_CSS": { - "modified": "2020-07-06T16:16:21.887Z", + "Web/Reference": { + "modified": "2019-03-23T23:21:27.898Z", "contributors": [ - "Jazperist", - "miguelgilmartinez", - "fermelli", - "GasGen", - "KattyaCuevas", - "rod232", - "Jvalenz1982", - "SphinxKnight", - "teoli", - "onerbs", - "Luis_Calvo", - "ulisescab" + "raecillacastellana", + "vltamara", + "asero82", + "atlas7jean", + "Nickolay" ] }, - "Web/CSS/CSS_Background_and_Borders": { - "modified": "2019-03-23T22:41:48.399Z", + "Web/Reference/API": { + "modified": "2019-03-23T23:20:25.941Z", "contributors": [ - "teoli" + "AlePerez92", + "jhia", + "welm", + "vggallego", + "DeiberChacon", + "angmauricio", + "vitoco", + "CristianMar25", + "gesifred", + "cmeraz", + "davy.martinez" ] }, - "Web/CSS/CSS_Background_and_Borders/Border-image_generador": { - "modified": "2019-03-23T22:41:48.777Z", + "Web/SVG": { + "modified": "2019-03-23T23:44:20.243Z", "contributors": [ + "Undigon", + "Noradrex", "teoli", - "mcclone2001" + "Verruckt", + "Jorolo", + "Mgjbot", + "Josebagar" ] }, - "Web/CSS/CSS_Background_and_Borders/Border-radius_generator": { - "modified": "2019-03-18T21:15:42.476Z", + "Web/SVG/Attribute": { + "modified": "2019-08-04T03:46:23.452Z", "contributors": [ - "israel-munoz" + "jcortesa", + "chrisdavidmills" ] }, - "Web/CSS/CSS_Background_and_Borders/Using_CSS_multiple_backgrounds": { - "modified": "2019-03-23T22:17:03.740Z", + "Web/SVG/Attribute/stop-color": { + "modified": "2020-10-15T22:06:34.292Z", "contributors": [ - "israel-munoz" + "andcal" ] }, - "Web/CSS/CSS_Colors": { - "modified": "2019-03-23T22:23:30.277Z", + "Web/SVG/Attribute/transform": { + "modified": "2019-03-23T22:07:32.328Z", "contributors": [ - "betelleclerc", - "Krenair" + "dimuziop" ] }, - "Web/CSS/CSS_Colors/Herramienta_para_seleccionar_color": { - "modified": "2019-03-23T22:23:27.596Z", + "Web/SVG/Element": { + "modified": "2019-03-19T13:42:20.553Z", "contributors": [ - "elihro" + "borja", + "jmanquez", + "kscarfone" ] }, - "Web/CSS/CSS_Containment": { - "modified": "2020-10-21T02:39:25.867Z", + "Web/SVG/Element/a": { + "modified": "2020-10-15T22:16:15.979Z", "contributors": [ - "SphinxKnight", - "RoqueAlonso" + "borja" ] }, - "Web/CSS/CSS_Flexible_Box_Layout": { - "modified": "2019-03-23T22:43:42.897Z", + "Web/SVG/Element/animate": { + "modified": "2020-10-15T22:09:39.514Z", "contributors": [ - "danpaltor", - "tipoqueno", - "pepe2016", - "fscholz" + "evaferreira" ] }, - "Web/CSS/CSS_Flexible_Box_Layout/Aligning_Items_in_a_Flex_Container": { - "modified": "2020-09-12T08:36:23.473Z", + "Web/SVG/Element/circle": { + "modified": "2019-03-23T22:57:12.727Z", "contributors": [ - "x-N0", - "FrankGalanB", - "JulianCGG", - "PauloColorado", - "Irvandoval", - "turuto" + "wbamberg", + "Sebastianz", + "humbertaco" ] }, - "Web/CSS/CSS_Flexible_Box_Layout/Backwards_Compatibility_of_Flexbox": { - "modified": "2019-11-06T19:10:32.985Z", + "Web/SVG/Element/foreignObject": { + "modified": "2019-03-23T23:05:21.297Z", "contributors": [ - "tonyrodz" + "Sebastianz", + "THernandez03" ] }, - "Web/CSS/CSS_Flexible_Box_Layout/Casos_de_uso_tipicos_de_Flexbox.": { - "modified": "2019-03-18T21:18:33.523Z", + "Web/SVG/Element/g": { + "modified": "2019-03-23T22:54:18.875Z", "contributors": [ - "danpaltor" + "Sebastianz", + "teoli", + "FrankzWolf" ] }, - "Web/CSS/CSS_Flexible_Box_Layout/Conceptos_Basicos_de_Flexbox": { - "modified": "2020-03-25T21:15:58.856Z", + "Web/SVG/Element/rect": { + "modified": "2019-03-23T23:02:06.920Z", "contributors": [ - "amazing79", - "otello1971", - "cwalternicolas" + "wbamberg", + "roadev", + "Sebastianz", + "jdgarrido" ] }, - "Web/CSS/CSS_Flexible_Box_Layout/Usando_flexbox_para_componer_aplicaciones_web": { - "modified": "2019-03-23T22:31:07.427Z", + "Web/SVG/Element/style": { + "modified": "2019-03-23T22:54:27.955Z", "contributors": [ - "miguelsp" + "Sebastianz", + "teoli", + "rippe2hl" ] }, - "Web/CSS/CSS_Flexible_Box_Layout/Usando_las_cajas_flexibles_CSS": { - "modified": "2019-05-15T19:01:41.614Z", + "Web/SVG/Element/svg": { + "modified": "2020-11-04T10:23:00.659Z", "contributors": [ - "luzbelmex", - "VictorSan45", - "NeXuZZ-SCM", - "Tonylu11", - "javier_junin", - "AlePerez92", - "MMariscal", - "fscholz", - "ArcangelZith", - "FNK", - "rippe2hl", - "StripTM", - "joan.leon", - "arturo_sanz" + "hardy.rafael17", + "Mcch", + "diegovinie", + "BubuAnabelas", + "mbenitez01" ] }, - "Web/CSS/CSS_Flow_Layout": { - "modified": "2019-03-18T21:21:28.417Z", + "Web/SVG/Element/text": { + "modified": "2020-05-14T06:42:53.448Z", "contributors": [ - "ariasfernando" + "danielhiguerasgoold", + "Sebastianz", + "emorc" ] }, - "Web/CSS/CSS_Fonts": { - "modified": "2019-03-23T22:18:19.285Z", + "Web/SVG/Element/use": { + "modified": "2019-03-23T22:58:09.476Z", "contributors": [ - "Squirrel18" + "andysierra", + "Sebastianz", + "jorge_castro" ] }, - "Web/CSS/CSS_Grid_Layout": { - "modified": "2020-08-21T18:16:34.348Z", + "Web/SVG/Index": { + "modified": "2019-01-16T22:36:49.773Z", "contributors": [ - "dongerardor", - "yomar-dev", - "amaiafilo", - "AlePerez92", - "aribet", - "StripTM" + "jwhitlock", + "ComplementosMozilla" ] }, - "Web/CSS/CSS_Grid_Layout/Auto-placement_in_CSS_Grid_Layout": { - "modified": "2019-11-06T13:46:19.795Z", + "Web/SVG/Tutorial": { + "modified": "2020-01-15T20:06:40.249Z", "contributors": [ - "tonyrodz" + "dago.d.havana", + "jpriet0", + "d-go", + "Npmada", + "teoli", + "Jeremie" ] }, - "Web/CSS/CSS_Grid_Layout/Box_Alignment_in_CSS_Grid_Layout": { - "modified": "2019-05-30T17:37:47.442Z", + "Web/SVG/Tutorial/Getting_Started": { + "modified": "2019-03-23T23:19:26.348Z", "contributors": [ - "narvmtz", - "ocamachor" + "kevinricardojs", + "teoli", + "Alberpat" ] }, - "Web/CSS/CSS_Grid_Layout/CSS_Grid_Layout_and_Accessibility": { - "modified": "2019-06-05T03:51:45.202Z", + "Web/SVG/Tutorial/SVG_In_HTML_Introduction": { + "modified": "2019-03-23T23:21:05.945Z", "contributors": [ - "blanchart" + "chrisdavidmills", + "matrimonio", + "verma21", + "marelin" ] }, - "Web/CSS/CSS_Grid_Layout/Conceptos_Básicos_del_Posicionamiento_con_Rejillas": { - "modified": "2019-10-01T23:38:23.285Z", + "Web/SVG/Tutorial/Tools_for_SVG": { + "modified": "2019-03-20T13:46:46.393Z", "contributors": [ - "jcastillaingeniero", - "amaiafilo", - "IsraelFloresDGA", - "jorgemontoyab" + "James-Yaakov" ] }, - "Web/CSS/CSS_Grid_Layout/Realizing_common_layouts_using_CSS_Grid_Layout": { - "modified": "2019-03-18T21:34:10.349Z", + "Web/Security": { + "modified": "2019-09-10T16:32:01.356Z", "contributors": [ - "amaiafilo" + "SphinxKnight", + "npcsayfail", + "lejovaar7", + "fgcalderon", + "pablodonoso", + "marumari" ] }, - "Web/CSS/CSS_Grid_Layout/Relacion_de_Grid_Layout": { - "modified": "2019-12-18T12:24:17.824Z", + "Web/Security/Securing_your_site": { + "modified": "2019-03-23T22:04:13.465Z", "contributors": [ - "amazing79", - "natalygiraldo", - "amaiafilo", - "TavoTrash", - "aribet", - "jorgemontoyab" + "fgcalderon", + "mbm" ] }, - "Web/CSS/CSS_Logical_Properties": { - "modified": "2019-03-18T21:11:22.321Z", + "Web/Web_Components": { + "modified": "2020-05-21T13:06:07.299Z", "contributors": [ - "teffcode" + "aguilerajl", + "Ktoxcon", + "IsraelFloresDGA", + "mboo", + "Rodmore", + "maybe" ] }, - "Web/CSS/CSS_Logical_Properties/Basic_concepts": { - "modified": "2019-10-17T05:37:57.001Z", + "Web/Web_Components/Using_custom_elements": { + "modified": "2020-06-28T18:39:06.239Z", "contributors": [ - "blanchart", - "teffcode" + "lupomontero", + "aguilerajl" ] }, - "Web/CSS/CSS_Logical_Properties/Dimensionamiento": { - "modified": "2019-03-19T19:17:23.927Z", + "Web/Web_Components/Using_shadow_DOM": { + "modified": "2020-10-24T17:36:39.409Z", "contributors": [ - "teffcode" + "jephsanchez", + "Charlemagnes", + "quintero_japon", + "DavidGalvis" ] }, - "Web/CSS/CSS_Logical_Properties/Floating_and_positioning": { - "modified": "2019-03-18T20:35:38.553Z", + "Web/Web_Components/Using_templates_and_slots": { + "modified": "2020-03-26T15:38:45.869Z", "contributors": [ - "teffcode" + "olalinv", + "quintero_japon", + "BrunoUY", + "ulisestrujillo" ] }, - "Web/CSS/CSS_Logical_Properties/Margins_borders_padding": { - "modified": "2019-03-19T13:30:41.950Z", + "Web/XML": { + "modified": "2019-03-18T21:18:03.528Z", "contributors": [ - "teffcode" + "ExE-Boss" ] }, - "Web/CSS/CSS_Modelo_Caja": { - "modified": "2019-03-23T22:37:33.458Z", + "Web/XPath": { + "modified": "2019-01-16T14:32:30.886Z", "contributors": [ - "tipoqueno", - "pekechis" + "ExE-Boss", + "fscholz", + "Mgjbot", + "Jorolo" ] }, - "Web/CSS/CSS_Modelo_Caja/Introducción_al_modelo_de_caja_de_CSS": { - "modified": "2019-08-28T10:35:24.055Z", + "Web/XSLT": { + "modified": "2019-03-23T23:44:23.657Z", "contributors": [ - "tipoqueno" + "chrisdavidmills", + "Verruckt", + "Mgjbot", + "Jorolo", + "Nukeador", + "Piltrafeta" ] }, - "Web/CSS/CSS_Modelo_Caja/Mastering_margin_collapsing": { - "modified": "2019-03-23T22:32:15.462Z", + "Web/XSLT/Element": { + "modified": "2019-03-18T20:59:16.316Z", "contributors": [ - "amaiafilo", - "Ralexhx", - "javichito" + "SphinxKnight", + "ExE-Boss", + "chrisdavidmills", + "fscholz", + "Jorolo", + "ErickCastellanos" ] }, - "Web/CSS/CSS_Motion_Path": { - "modified": "2020-10-15T22:26:49.512Z", + "Web/XSLT/Element/element": { + "modified": "2019-03-18T20:59:21.788Z", "contributors": [ - "josegarciamanez" + "SphinxKnight", + "ExE-Boss", + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos" ] }, - "Web/CSS/CSS_Positioning": { - "modified": "2019-03-23T22:32:36.509Z", + "WebAssembly": { + "modified": "2020-10-15T22:25:36.765Z", "contributors": [ - "javichito", - "davidhbrown" + "jonathan.reyes33" ] }, - "Web/CSS/CSS_Positioning/entendiendo_z_index": { - "modified": "2019-03-18T20:42:17.583Z", + "WebAssembly/Concepts": { + "modified": "2020-12-06T14:14:45.486Z", "contributors": [ - "ChipTime", - "javichito" + "Sergio_Gonzalez_Collado", + "mastertrooper" ] }, - "Web/CSS/CSS_Positioning/entendiendo_z_index/Agregando_z-index": { - "modified": "2019-03-23T22:32:38.884Z", + "WebAssembly/Loading_and_running": { + "modified": "2020-09-15T19:19:35.117Z", "contributors": [ - "javichito" + "mastertrooper" ] }, - "Web/CSS/CSS_Positioning/entendiendo_z_index/Apilamiento_y_float": { - "modified": "2019-04-26T07:22:46.044Z", + "Mozilla/Firefox/Releases/3/Updating_web_applications": { + "modified": "2019-03-23T23:58:06.668Z", "contributors": [ + "wbamberg", "SphinxKnight", - "LaGallinaTuruleta", - "javichito" + "Sheppy", + "trada", + "manueljrs", + "flaviog", + "Rafavs", + "Marcomavil", + "Mgjbot" ] }, - "Web/CSS/CSS_Positioning/entendiendo_z_index/El_contexto_de_apilamiento": { - "modified": "2019-03-23T22:32:44.958Z", + "orphaned/Actualizar_extensiones_para_Firefox_3/Actualizar_extensiones_para_Firefox_3": { + "modified": "2019-12-13T20:34:57.052Z", "contributors": [ - "javichito" + "wbamberg", + "lajaso", + "teoli", + "Sheppy", + "Pgulijczuk", + "deimidis", + "Nukeador", + "Ffranz", + "HenryGR" ] }, - "Web/CSS/CSS_Positioning/entendiendo_z_index/Stacking_without_z-index": { - "modified": "2019-03-23T22:32:47.571Z", + "Mozilla/Firefox/Releases/3/Updating_extensions": { + "modified": "2019-03-23T23:58:10.215Z", "contributors": [ - "javichito" + "wbamberg", + "SphinxKnight", + "Pgulijczuk", + "deimidis", + "flaviog", + "Nukeador", + "Giovanisf13", + "Firewordy", + "Dfier", + "Rumont", + "Wrongloop", + "Mgjbot" ] }, - "Web/CSS/CSS_Positioning/entendiendo_z_index/ejemplo_1_del_contexto_de_apilamiento": { - "modified": "2019-03-23T22:32:36.821Z", + "orphaned/Actualizar_una_extensión_para_que_soporte_múltiples_aplicaciones_de_Mozilla": { + "modified": "2019-01-16T14:53:56.551Z", "contributors": [ - "javichito" + "DoctorRomi", + "Superruzafa" ] }, - "Web/CSS/CSS_Positioning/entendiendo_z_index/ejemplo_2_del_contexto_de_apilamiento": { - "modified": "2019-03-23T22:32:34.821Z", + "Mozilla/Firefox/Releases/2/Adding_feed_readers_to_Firefox": { + "modified": "2019-03-23T23:54:31.423Z", "contributors": [ - "javichito" + "wbamberg", + "Mgjbot", + "RickieesES", + "Nukeador", + "Anyulled" ] }, - "Web/CSS/CSS_Positioning/entendiendo_z_index/ejemplo_3_del_contexto_de_apilamiento": { - "modified": "2019-03-23T22:32:30.208Z", + "Web/SVG/Applying_SVG_effects_to_HTML_content": { + "modified": "2019-03-24T00:09:04.196Z", "contributors": [ - "javichito" + "elPatox" ] }, - "Web/CSS/CSS_Properties_Reference": { - "modified": "2019-03-18T21:24:27.305Z", + "Mozilla/Firefox/Releases/3/Notable_bugs_fixed": { + "modified": "2019-03-23T23:53:21.447Z", "contributors": [ - "pekechis" + "wbamberg", + "Mgjbot", + "Nathymig", + "Nukeador", + "HenryGR", + "RickieesES", + "Ciberman osman" ] }, - "Web/CSS/CSS_Reglas_Condicionales": { - "modified": "2019-03-23T22:05:34.864Z", + "Web/HTTP/Headers/User-Agent/Firefox": { + "modified": "2019-03-23T23:45:27.069Z", "contributors": [ - "arnulfolg" + "teoli", + "Orestesleal13022" ] }, - "Web/CSS/CSS_Transforms": { - "modified": "2019-03-23T22:43:47.978Z", + "orphaned/Code_snippets": { + "modified": "2019-01-16T13:52:37.564Z", "contributors": [ - "Sebastianz", - "fscholz" + "ffox" ] }, - "Web/CSS/CSS_Transforms/Using_CSS_transforms": { - "modified": "2019-03-24T00:05:10.570Z", + "orphaned/Code_snippets/Pestañas_del_navegador": { + "modified": "2019-01-16T13:52:57.159Z", "contributors": [ - "recortes", - "fscholz", - "teoli", - "cristianjav", - "ajimix", - "another_sam" + "ffox" ] }, - "Web/CSS/CSS_Transitions": { - "modified": "2019-07-24T08:01:48.708Z", + "Web/CSS/CSS_Columns/Using_multi-column_layouts": { + "modified": "2019-03-23T23:43:23.940Z", "contributors": [ - "SphinxKnight", - "FedericoMarmo", - "crojasf", - "pekechis" + "Mgjbot", + "Jorolo", + "Nukeador" ] }, - "Web/CSS/CSS_Types": { - "modified": "2019-03-18T21:35:39.343Z", + "Learn/Server-side/Configuring_server_MIME_types": { + "modified": "2020-07-16T22:36:04.341Z", "contributors": [ - "lajaso" + "Nukeador", + "Kroatan", + "Mtiscordio", + "Hostar", + "Iwa1", + "Markens", + "Brayan Habid" ] }, - "Web/CSS/CSS_Writing_Modes": { - "modified": "2019-04-10T10:27:10.380Z", + "orphaned/Creación_de_Componentes_XPCOM/Interior_del_Componente": { + "modified": "2019-04-20T03:45:43.371Z", "contributors": [ - "cristianmartinez" + "wbamberg", + "Maharba" ] }, - "Web/CSS/Cascade": { - "modified": "2020-04-20T15:19:07.785Z", + "orphaned/Creación_de_Componentes_XPCOM/Prefacio": { + "modified": "2019-04-20T03:45:45.365Z", "contributors": [ - "arjusgit", - "tw1ttt3r" + "wbamberg", + "Maharba" ] }, - "Web/CSS/Child_combinator": { - "modified": "2019-03-23T22:17:17.663Z", + "Web/OpenSearch": { + "modified": "2019-03-24T00:00:08.096Z", "contributors": [ - "ExE-Boss", - "maguz727", - "israel-munoz" + "teoli", + "Etrigan", + "tbusca", + "Nukeador", + "Rodrigoknascimento", + "Citora", + "Mgjbot", + "Fenomeno" ] }, - "Web/CSS/Class_selectors": { - "modified": "2019-03-23T22:17:19.977Z", + "orphaned/Creando_una_extensión": { + "modified": "2019-03-24T00:13:16.401Z", "contributors": [ - "israel-munoz" + "teoli", + "ethertank", + "Sheppy", + "athesto", + "StripTM", + "myfcr", + "DoctorRomi", + "Mgjbot", + "M4ur170", + "Nukeador", + "Wayner", + "El Hacker", + "Arcangelhak", + "Psanz", + "Victor-27-", + "Arteadonis", + "Gadolinio", + "Opevelyn", + "Verruckt", + "Spg2006", + "Gbulfon", + "Damien", + "Peperoni", + "CD77", + "Ordep", + "Indigo", + "Jp1", + "GMG", + "Ateneo", + "Doctormanfer", + "A Morenazo", + "Trace2x", + "Odo", + "Hatch", + "Jorolo", + "Lastjuan", + "Ulntux" ] }, - "Web/CSS/Columnas_CSS": { - "modified": "2019-03-23T22:28:10.699Z", + "orphaned/Crear_una_extensión_personalizada_de_Firefox_con_el_Mozilla_Build_System": { + "modified": "2019-04-26T15:53:18.603Z", "contributors": [ - "Anonymous" + "cantineoqueteveo", + "2stapps", + "teoli", + "DoctorRomi", + "Carok", + "Gustavo Ruiz", + "Nukeador", + "JuninhoBoy95", + "Kuriboh", + "Mgjbot", + "RickieesES", + "Geomorillo", + "Blank zero", + "Haelmx", + "Superruzafa" ] }, - "Web/CSS/Comentarios": { - "modified": "2019-03-23T22:16:58.806Z", + "orphaned/CSS_dinámico": { + "modified": "2019-01-16T14:14:46.881Z", "contributors": [ - "israel-munoz" + "RickieesES", + "Jorolo", + "Peperoni", + "Hande", + "Nukeador" ] }, - "Web/CSS/Comenzando_(tutorial_CSS)": { - "modified": "2019-03-23T23:39:37.048Z", + "Web/CSS/Media_Queries/Using_media_queries": { + "modified": "2019-10-03T11:52:26.928Z", "contributors": [ - "teoli", - "jsalinas" + "danielblazquez", + "brunonra-dev", + "kitab15", + "Sebastianz", + "jsx", + "carlossuarez", + "mrstork", + "malayaleecoder", + "seeker8", + "Xaviju", + "sinfallas", + "maedca" ] }, - "Web/CSS/Como_iniciar": { - "modified": "2019-01-16T13:59:37.327Z", + "Web/CSS/CSS_Images/Using_CSS_gradients": { + "modified": "2019-06-03T20:30:31.836Z", "contributors": [ - "teoli", - "Izel" + "GasGen", + "undest", + "Sebastianz", + "Eneagrama" ] }, - "Web/CSS/Como_iniciar/Por_que_usar_CSS": { - "modified": "2019-03-23T23:39:38.906Z", + "orphaned/Desarrollando_Mozilla": { + "modified": "2019-01-16T14:32:31.515Z", "contributors": [ - "teoli", - "jsalinas" + "another_sam", + "Mgjbot", + "Jorolo", + "Nukeador", + "Turin" ] }, - "Web/CSS/Como_iniciar/Que_es_CSS": { - "modified": "2019-03-24T00:11:28.788Z", + "orphaned/Detectar_la_orientación_del_dispositivo": { + "modified": "2019-03-24T00:07:57.131Z", "contributors": [ - "fernandomoreno605", - "DavidWebcreate", - "aguilarcarlos", - "teoli", - "LeoHirsch", - "dusvilopez", - "turekon", - "Izel" + "inma_610" ] }, - "Web/CSS/Descendant_combinator": { - "modified": "2019-03-23T23:13:24.480Z", + "orphaned/DHTML_Demostraciones_del_uso_de_DOM_Style": { + "modified": "2019-01-16T16:07:51.712Z", "contributors": [ - "ExE-Boss", - "Makiber" + "Mgjbot", + "Superruzafa", + "Trace2x", + "Fedora-core", + "Nukeador" ] }, - "Web/CSS/Elemento_reemplazo": { - "modified": "2019-03-23T23:08:30.961Z", + "Glossary/DHTML": { + "modified": "2019-03-23T23:44:54.880Z", "contributors": [ - "jdbazagaruiz" + "Mgjbot", + "Jorolo", + "Jos" ] }, - "Web/CSS/Especificidad": { - "modified": "2020-11-14T17:11:45.294Z", + "orphaned/Dibujando_Gráficos_con_Canvas": { + "modified": "2019-01-16T20:01:59.575Z", "contributors": [ - "0neomar", - "fer", - "glrodasz", - "mariupereyra", - "arjusgit", - "DavidGalvis", - "gcjuan", - "LuisSevillano", - "deimidis2", - "aeroxmotion", - "padrecedano", - "Remohir" + "Firegooploer" ] }, - "Web/CSS/Gradiente": { - "modified": "2019-03-23T22:37:34.623Z", - "contributors": [ - "devilkillermc", - "mym2013", - "Sebastianz", - "wizAmit", - "slayslot", - "Conradin88" + "Web/API/Canvas_API/Tutorial/Drawing_text": { + "modified": "2019-01-16T15:31:41.845Z", + "contributors": [ + "Mgjbot", + "HenryGR", + "Nukeador", + "RickieesES", + "Debianpc" ] }, - "Web/CSS/Herramientas": { - "modified": "2019-03-23T22:28:04.142Z", + "orphaned/Tools/Add-ons/DOM_Inspector": { + "modified": "2020-07-16T22:36:24.191Z", "contributors": [ - "arturoblack" + "Mgjbot", + "Jorolo", + "Tatan", + "TETSUO" ] }, - "Web/CSS/Herramientas/Cubic_Bezier_Generator": { - "modified": "2019-03-18T21:20:03.429Z", + "Web/API/Document/cookie": { + "modified": "2020-04-15T13:31:17.928Z", "contributors": [ - "gsalinase" + "atiliopereira", + "Skattspa", + "aralvarez", + "SphinxKnight", + "khalid32", + "Ogquir", + "strongville", + "Ciencia Al Poder", + "Markens", + "DR" ] }, - "Web/CSS/ID_selectors": { - "modified": "2020-10-15T21:52:30.474Z", + "Web/API/History_API/Example": { + "modified": "2019-03-23T22:29:32.414Z", "contributors": [ - "lajaso", - "israel-munoz" + "maitret" ] }, - "Web/CSS/Introducción": { - "modified": "2019-03-24T00:09:12.368Z", + "Web/API/History_API": { + "modified": "2019-09-07T17:44:48.428Z", "contributors": [ - "luismj", - "javierdp", + "seaug", + "HerniHdez", + "AlePerez92", + "SphinxKnight", + "talo242", + "mauroc8", + "javiernunez", + "dongerardor", + "StripTM", + "Galsas", "teoli", - "inma_610" + "Izel", + "Sheppy", + "translatoon" ] }, - "Web/CSS/Introducción/Boxes": { - "modified": "2019-03-23T23:02:20.733Z", + "Web/API/Touch_events": { + "modified": "2019-03-23T23:35:01.361Z", "contributors": [ - "albaluna" + "wbamberg", + "wffranco", + "fscholz", + "teoli", + "Fjaguero", + "jvmjunior", + "maedca" ] }, - "Web/CSS/Introducción/Cascading_and_inheritance": { - "modified": "2019-03-23T23:02:26.342Z", + "Web/API/HTML_Drag_and_Drop_API/File_drag_and_drop": { + "modified": "2020-11-01T11:34:07.543Z", "contributors": [ - "carlos.millan3", - "eljonims", - "mamptecnocrata", - "albaluna" + "juanrueda", + "davidpala.dev", + "brahAraya", + "ajuni880", + "israteneda", + "RVidalki", + "clarii", + "rgomez" ] }, - "Web/CSS/Introducción/Color": { - "modified": "2019-03-23T22:59:44.751Z", + "Web/API/HTML_Drag_and_Drop_API": { + "modified": "2019-03-24T00:07:57.845Z", "contributors": [ - "albaluna" + "ethertank", + "inma_610" ] }, - "Web/CSS/Introducción/How_CSS_works": { - "modified": "2019-03-23T23:02:23.335Z", + "Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types": { + "modified": "2019-03-23T23:18:24.597Z", "contributors": [ - "mamptecnocrata", - "albaluna" + "Evinton" ] }, - "Web/CSS/Introducción/Layout": { - "modified": "2019-03-23T22:20:39.961Z", + "orphaned/Estructura_de_directorios_de_código_fuente_de_Mozilla": { + "modified": "2019-03-24T00:17:11.569Z", "contributors": [ - "lavilofam1" + "ethertank", + "MiguelFRomeroR", + "Sheppy" ] }, - "Web/CSS/Introducción/Los:estilos_de_texto": { - "modified": "2019-03-23T23:02:09.062Z", + "orphaned/Etiquetas_audio_y_video_en_Firefox": { + "modified": "2019-03-23T23:59:36.294Z", "contributors": [ - "albaluna" + "Nukeador", + "deimidis" ] }, - "Web/CSS/Introducción/Media": { - "modified": "2019-03-18T21:15:11.297Z", + "orphaned/Extensiones/Actualización_de_extensiones_para_Firefox_4": { + "modified": "2019-03-24T00:05:58.390Z", "contributors": [ - "luismj" + "inma_610" ] }, - "Web/CSS/Introducción/Selectors": { - "modified": "2019-03-23T23:02:22.202Z", + "orphaned/FAQ_Incrustando_Mozilla": { + "modified": "2019-01-16T16:20:13.874Z", "contributors": [ - "albaluna" + "Lastjuan" ] }, - "Web/CSS/Layout_cookbook": { - "modified": "2019-03-18T21:22:35.394Z", + "Mozilla/Firefox/Releases/1.5": { + "modified": "2019-03-23T23:47:34.365Z", "contributors": [ - "StripTM" + "wbamberg", + "SphinxKnight", + "Rubenbae", + "Pachtonio", + "Sheppy", + "Mgjbot", + "Jorolo", + "Fedora-core", + "Nukeador", + "Takenbot", + "Willyaranda", + "Pasky", + "Angelr04", + "Epaclon" ] }, - "Web/CSS/Layout_mode": { - "modified": "2019-03-18T21:44:15.658Z", + "Mozilla/Firefox/Releases/19": { + "modified": "2019-03-18T20:54:04.568Z", "contributors": [ - "NeXuZZ-SCM" + "ulisestrujillo", + "wbamberg", + "Sebastianz", + "mannyatico" ] }, - "Web/CSS/Media_Queries": { - "modified": "2020-10-15T22:13:20.096Z", + "Mozilla/Firefox/Releases/2": { + "modified": "2019-03-23T23:58:56.168Z", "contributors": [ - "mikelmg" + "wbamberg", + "DoctorRomi", + "Markens", + "Mgjbot", + "Nukeador", + "Superruzafa", + "Guis", + "StripTM", + "Jorolo" ] }, - "Web/CSS/Mozilla_Extensions": { - "modified": "2019-03-23T23:21:23.902Z", + "Mozilla/Firefox/Releases/3": { + "modified": "2019-03-24T00:04:08.312Z", "contributors": [ - "ExE-Boss", - "Sebastianz", + "wbamberg", "teoli", - "jota1410" + "fscholz", + "Mgjbot", + "Nukeador", + "Surferosx", + "Nathymig", + "Dfier", + "Wrongloop", + "Garlock", + "Brahiam", + "Mariano", + "HenryGR", + "Jseldon" ] }, - "Web/CSS/Preguntas_frecuentes_sobre_CSS": { - "modified": "2020-07-16T22:25:44.798Z", + "Mozilla/Firefox/Releases/3.5": { + "modified": "2019-03-24T00:03:16.036Z", "contributors": [ - "teoli", - "inma_610" + "wbamberg", + "ethertank", + "another_sam", + "deimidis", + "Nukeador" ] }, - "Web/CSS/Primeros_pasos": { - "modified": "2019-03-24T00:05:34.862Z", + "orphaned/Firefox_addons_developer_guide/Introduction_to_Extensions": { + "modified": "2019-03-23T23:37:41.632Z", "contributors": [ - "teoli", - "deimidis" + "pacommozilla", + "AgustinAlvia" ] }, - "Web/CSS/Pseudo-classes": { - "modified": "2020-02-22T08:04:35.419Z", + "orphaned/Firefox_addons_developer_guide/Technologies_used_in_developing_extensions": { + "modified": "2019-03-18T21:16:06.336Z", "contributors": [ - "BraisOliveira", - "MrEscape54", - "MrCoffey", - "alkaithil", - "viro" + "AgustinAlvia" ] }, - "Web/CSS/Pseudoelementos": { - "modified": "2019-03-23T23:21:50.048Z", + "orphaned/Formatos_multimedia_admitidos_por_los_elementos_de_video_y_audio": { + "modified": "2019-01-16T14:22:48.165Z", "contributors": [ - "BubuAnabelas", - "VictorAbdon", - "teoli", - "jota1410" + "inma_610" ] }, - "Web/CSS/Referencia_CSS": { - "modified": "2019-03-24T00:14:13.384Z", + "orphaned/Fragmentos_de_código": { + "modified": "2019-01-16T13:52:44.049Z", "contributors": [ - "lajaso", - "israel-munoz", - "joshitobuba", - "mrstork", - "prayash", - "malayaleecoder", - "teoli", - "tregagnon", - "inma_610", - "fscholz", - "Nukeador" + "ffox" ] }, - "Web/CSS/Referencia_CSS/mix-blend-mode": { - "modified": "2020-10-15T21:37:53.265Z", + "orphaned/Funciones": { + "modified": "2019-01-16T16:18:04.260Z", "contributors": [ - "Undigon", - "mrstork", - "teoli", - "Sebastianz", - "msanz" + "Jorolo" ] }, - "Web/CSS/Selectores_CSS": { - "modified": "2019-07-09T01:16:13.123Z", + "Games/Tools/asm.js": { + "modified": "2019-03-18T21:21:31.919Z", "contributors": [ - "missmakita", - "blanchart", - "Benji1337", - "metal-gogo", - "kikolevante" + "WilsonIsAliveClone", + "serarroy" ] }, - "Web/CSS/Selectores_CSS/Usando_la_pseudo-clase_:target_en_selectores": { - "modified": "2020-07-31T07:57:08.167Z", + "Games/Tools": { + "modified": "2019-01-16T19:29:51.696Z", "contributors": [ - "blanchart", - "israel-munoz" + "wbamberg", + "atlas7jean" ] }, - "Web/CSS/Selectores_atributo": { - "modified": "2020-10-15T21:26:03.862Z", + "Games/Introduction_to_HTML5_Game_Development": { + "modified": "2019-08-05T12:49:59.324Z", "contributors": [ - "blanchart", - "MoisesGuevara", - "lajaso", - "teoli", - "jota1410" + "WilsonIsAliveClone" ] }, - "Web/CSS/Selectores_hermanos_adyacentes": { - "modified": "2019-03-23T22:39:30.908Z", + "Games/Introduction": { + "modified": "2020-11-28T21:23:49.961Z", "contributors": [ - "alkaithil" + "rayrojas", + "titox", + "gauchoscript", + "wbamberg", + "Mancux2", + "Albizures", + "atlas7jean" ] }, - "Web/CSS/Selectores_hermanos_generales": { - "modified": "2019-03-23T22:39:33.429Z", + "Games/Publishing_games/Game_monetization": { + "modified": "2019-03-18T21:22:04.540Z", "contributors": [ - "alkaithil" + "mikelmg", + "carlosgocereceda", + "WilsonIsAliveClone" ] - }, - "Web/CSS/Shorthand_properties": { - "modified": "2019-08-11T12:52:52.844Z", + }, + "Games/Tutorials/2D_breakout_game_Phaser/Buttons": { + "modified": "2019-11-03T00:22:01.318Z", "contributors": [ - "blanchart", - "EstebanRK", - "IsraelFloresDGA", - "huichops" + "AdryDev92", + "carlosgocereceda", + "serarroy" ] }, - "Web/CSS/Sintaxis_definición_de_valor": { - "modified": "2019-03-23T22:38:52.899Z", + "Games/Tutorials/2D_breakout_game_Phaser/Bounce_off_the_walls": { + "modified": "2019-03-18T21:18:55.239Z", "contributors": [ - "apazacoder", - "Sebastianz", - "Guillaume-Heras", - "VictorAbdon" + "WilsonIsAliveClone" ] }, - "Web/CSS/Syntax": { - "modified": "2020-09-29T20:54:10.526Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Bounce_off_the_walls": { + "modified": "2019-03-23T22:19:43.884Z", "contributors": [ - "lucasmmaidana", - "joseanpg", - "mili01gm", - "Derhks" + "wbamberg", + "regisdark", + "profesooooor", + "emolinerom" ] }, - "Web/CSS/Texto_CSS": { - "modified": "2019-03-23T22:36:23.444Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Build_the_brick_field": { + "modified": "2019-01-17T00:34:48.662Z", "contributors": [ - "pekechis" + "wbamberg", + "profesooooor", + "emolinerom" ] }, - "Web/CSS/Transiciones_de_CSS": { - "modified": "2019-08-01T05:58:17.579Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Paddle_and_keyboard_controls": { + "modified": "2019-01-17T00:34:24.542Z", "contributors": [ - "chrisdavidmills", - "mrstork", - "alberdigital", - "teoli", - "inma_610", - "deimidis" + "wbamberg", + "profesooooor", + "emolinerom" ] }, - "Web/CSS/Tutorials": { - "modified": "2019-03-23T22:52:34.225Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Mouse_controls": { + "modified": "2019-01-17T00:34:40.600Z", "contributors": [ - "mariolugo" + "wbamberg", + "profesooooor", + "emolinerom" ] }, - "Web/CSS/Type_selectors": { - "modified": "2020-10-15T21:52:26.603Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it": { + "modified": "2019-01-17T00:33:08.752Z", "contributors": [ - "lajaso", - "israel-munoz" + "wbamberg", + "profesooooor", + "jolosan" ] }, - "Web/CSS/Universal_selectors": { - "modified": "2020-10-15T21:52:26.325Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Collision_detection": { + "modified": "2019-03-18T20:48:38.662Z", "contributors": [ - "lajaso", - "israel-munoz" + "juanedsa", + "wbamberg", + "profesooooor", + "emolinerom" ] }, - "Web/CSS/Using_CSS_custom_properties": { - "modified": "2020-11-26T20:11:21.130Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Game_over": { + "modified": "2019-03-23T22:17:05.460Z", "contributors": [ - "lupomontero", - "betocantu93", - "sokaluis", - "chrisdavidmills", - "BubuAnabelas", - "Creasick", - "Maseria38", - "FlorTello" + "wbamberg", + "regisdark", + "profesooooor", + "jolosan" ] }, - "Web/CSS/Valor_calculado": { - "modified": "2019-03-23T23:53:20.456Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript": { + "modified": "2019-03-23T22:19:39.385Z", "contributors": [ - "teoli", - "Mgjbot", - "Firewordy", - "HenryGR" + "wbamberg", + "profesooooor", + "emolinerom", + "jolosan" ] }, - "Web/CSS/Valor_inicial": { - "modified": "2019-01-16T15:32:31.295Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Move_the_ball": { + "modified": "2019-03-23T22:19:10.641Z", "contributors": [ - "teoli", - "Mgjbot", - "Nathymig", - "HenryGR" + "wbamberg", + "profesooooor", + "jolosan", + "emolinerom" ] }, - "Web/CSS/actual_value": { - "modified": "2019-03-23T22:16:54.955Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Finishing_up": { + "modified": "2019-01-17T01:08:54.537Z", "contributors": [ - "israel-munoz" + "wbamberg", + "profesooooor" ] }, - "Web/CSS/align-content": { - "modified": "2019-06-23T02:54:26.562Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Track_the_score_and_win": { + "modified": "2019-01-17T01:08:23.453Z", "contributors": [ - "d0naldo", - "israel-munoz" + "wbamberg", + "profesooooor" ] }, - "Web/CSS/align-items": { - "modified": "2020-08-01T23:15:43.277Z", + "Games/Tutorials/HTML5_Gamedev_Phaser_Device_Orientation": { + "modified": "2019-03-23T23:11:29.148Z", "contributors": [ - "LorenzoSandoval", - "vanesa", - "AlePerez92", - "LuisJorgeLozano", - "israel-munoz" + "wbamberg", + "lauttttaro", + "chebit" ] }, - "Web/CSS/align-self": { - "modified": "2019-03-18T21:17:16.430Z", + "Games/Tutorials": { + "modified": "2019-01-16T19:25:39.809Z", "contributors": [ - "israel-munoz" + "wbamberg", + "groovecoder" ] }, - "Web/CSS/all": { - "modified": "2019-03-18T21:16:29.697Z", + "orphaned/Generación_de_GUIDs": { + "modified": "2019-03-24T00:06:07.388Z", "contributors": [ - "israel-munoz" + "ibnkhaldun" ] }, - "Web/CSS/angle": { - "modified": "2019-03-23T22:28:51.690Z", + "Glossary/Algorithm": { + "modified": "2019-01-17T00:09:54.063Z", "contributors": [ - "israel-munoz" + "ekros" ] }, - "Web/CSS/animation": { - "modified": "2019-03-23T23:38:13.777Z", + "Glossary/Argument": { + "modified": "2019-03-23T22:15:34.303Z", "contributors": [ - "evaferreira", - "teoli", - "Luis_Calvo", - "jesanchez", - "ccarruitero" + "gparra989" ] }, - "Web/CSS/animation-delay": { - "modified": "2019-03-23T23:38:13.594Z", + "Glossary/Information_architecture": { + "modified": "2020-09-06T16:32:32.362Z", "contributors": [ - "Maletil", - "teoli", - "Luis_Calvo", - "jesanchez", - "jsalinas" + "Nachec" ] }, - "Web/CSS/animation-direction": { - "modified": "2019-03-23T23:38:14.261Z", + "Glossary/array": { + "modified": "2020-05-28T13:51:10.546Z", "contributors": [ - "teoli", - "Luis_Calvo", - "jesanchez", - "jsalinas" + "fedoroffs", + "BubuAnabelas", + "Davids-Devel", + "Daniel_Martin", + "gparra989" ] }, - "Web/CSS/animation-duration": { - "modified": "2019-03-23T23:31:43.672Z", + "Glossary/Asynchronous": { + "modified": "2020-05-04T10:40:03.360Z", "contributors": [ - "teoli", - "Sebastianz", - "Luis_Calvo" + "jorgeCaster", + "fjluengo", + "gparra989" ] }, - "Web/CSS/animation-fill-mode": { - "modified": "2019-03-23T23:03:51.180Z", + "Glossary/Attribute": { + "modified": "2019-03-23T22:15:46.319Z", "contributors": [ - "teoli", - "Sebastianz", - "luigli", - "jesusr" + "gparra989" ] }, - "Web/CSS/animation-iteration-count": { - "modified": "2019-03-23T22:59:21.919Z", + "Glossary/General_header": { + "modified": "2019-03-18T21:34:28.155Z", "contributors": [ - "teoli", - "Sebastianz", - "maiky" + "Watermelonnable" ] }, - "Web/CSS/animation-name": { - "modified": "2019-03-23T22:59:26.717Z", + "Glossary/Cache": { + "modified": "2019-03-18T21:19:00.217Z", "contributors": [ - "teoli", - "Sebastianz", - "maiky" + "diegorhs" ] }, - "Web/CSS/animation-play-state": { - "modified": "2019-03-23T22:44:18.177Z", + "Glossary/Character": { + "modified": "2020-08-23T05:27:25.056Z", "contributors": [ - "Boton" + "Nachec" ] }, - "Web/CSS/animation-timing-function": { - "modified": "2019-03-23T22:44:11.502Z", + "Glossary/CIA": { + "modified": "2019-03-18T21:19:22.724Z", "contributors": [ - "ndeniche", - "mrstork", - "Boton" + "PabloDeTorre", + "sergiomgm" ] }, - "Web/CSS/appearance": { - "modified": "2019-03-23T22:44:40.090Z", + "Glossary/Cipher": { + "modified": "2019-03-18T21:19:02.237Z", "contributors": [ - "ExE-Boss", - "teoli", - "wbamberg", - "guerratron" + "PabloDeTorre", + "sergiomgm" ] }, - "Web/CSS/attr()": { - "modified": "2020-11-04T08:51:33.506Z", + "Glossary/Card_sorting": { + "modified": "2019-03-18T21:19:20.709Z", "contributors": [ - "chrisdavidmills", - "mrstork", - "prayash", - "ismachine" + "PabloDeTorre" ] }, - "Web/CSS/auto": { - "modified": "2019-01-16T15:41:51.944Z", + "Glossary/Closure": { + "modified": "2020-08-12T18:07:27.330Z", "contributors": [ - "teoli", - "Nathymig", - "HenryGR", - "Mgjbot" + "l1oret" ] }, - "Web/CSS/backdrop-filter": { - "modified": "2020-10-15T22:05:06.351Z", + "Glossary/Key": { + "modified": "2020-02-18T06:49:22.148Z", "contributors": [ - "lajaso" + "joseluisq", + "sergiomgm", + "GCF7" ] }, - "Web/CSS/backface-visibility": { - "modified": "2019-03-23T22:18:09.464Z", + "Glossary/Type_coercion": { + "modified": "2020-02-29T16:57:08.213Z", "contributors": [ - "israel-munoz" + "frankynztein" ] }, - "Web/CSS/background": { - "modified": "2020-04-23T17:42:59.807Z", + "Glossary/character_set": { + "modified": "2020-08-28T18:09:05.836Z", "contributors": [ - "JAMC", - "MMariscal", - "SphinxKnight", - "fscholz", - "teoli", - "sebasmagri", - "Yuichiro", - "Nathymig" + "Nachec" ] }, - "Web/CSS/background-attachment": { - "modified": "2020-12-12T11:33:06.443Z", + "Glossary/Constant": { + "modified": "2019-03-18T21:19:15.794Z", "contributors": [ - "ejcarreno", - "blanchart", - "smltalavera95", - "SphinxKnight", - "fscholz", - "teoli", - "Nathymig" + "PabloDeTorre" ] }, - "Web/CSS/background-blend-mode": { - "modified": "2019-03-23T22:59:28.908Z", + "Glossary/Cryptanalysis": { + "modified": "2019-03-18T21:18:36.783Z", "contributors": [ - "ExE-Boss", - "israel-munoz", - "mrstork", - "teoli", - "Sebastianz", - "maiky" + "sergiomgm", + "GCF7" ] }, - "Web/CSS/background-clip": { - "modified": "2019-03-18T20:52:42.788Z", + "Glossary/Cryptography": { + "modified": "2019-03-23T22:02:58.447Z", "contributors": [ - "Beatriz_Ortega_Valdes", - "Carlos_Gutierrez", - "teoli", - "Sebastianz", - "rurigk" + "velizluisma" ] }, - "Web/CSS/background-color": { - "modified": "2019-10-10T16:45:24.871Z", + "Glossary/Decryption": { + "modified": "2019-03-18T21:19:11.476Z", "contributors": [ - "SphinxKnight", - "danielfdez", - "teoli", - "Yuichiro", - "Nathymig" + "sergiomgm", + "GCF7" ] }, - "Web/CSS/background-image": { - "modified": "2020-05-06T04:02:29.611Z", + "orphaned/Glossary/elemento": { + "modified": "2019-01-16T19:38:18.287Z", "contributors": [ - "blanchart", - "evaferreira", - "SphinxKnight", - "alexisCan", - "andrpueb", - "teoli", - "Rayber", - "Nathymig", - "ethertank" + "BubuAnabelas", + "HerberWest" ] }, - "Web/CSS/background-origin": { - "modified": "2019-03-24T00:15:00.605Z", + "Glossary/Encryption": { + "modified": "2019-03-18T21:19:07.209Z", "contributors": [ - "teoli", - "Seanwalker" + "PabloDeTorre", + "carlosCharlie", + "sergiomgm" ] }, - "Web/CSS/background-position": { - "modified": "2020-05-06T06:30:15.110Z", + "Glossary/Entity": { + "modified": "2020-07-08T14:34:06.256Z", "contributors": [ - "blanchart", - "SphinxKnight", - "teoli", - "FredB", - "Nathymig", - "ethertank" + "lucasreta" ] }, - "Web/CSS/background-position-x": { - "modified": "2020-10-15T22:33:04.718Z", + "Glossary/Whitespace": { + "modified": "2020-08-24T04:59:10.953Z", "contributors": [ - "Ismael_Diaz" + "Nachec" ] }, - "Web/CSS/background-repeat": { - "modified": "2020-10-15T21:16:00.953Z", + "Glossary/Data_structure": { + "modified": "2019-03-18T21:24:31.453Z", "contributors": [ - "itxuixdev", - "SphinxKnight", - "teoli", - "Nathymig" + "edsonv" ] }, - "Web/CSS/background-size": { - "modified": "2019-03-23T23:38:13.094Z", + "Glossary/First-class_Function": { + "modified": "2020-05-14T19:36:29.513Z", "contributors": [ - "blanchart", - "samuelrb", - "Simplexible", - "Sebastianz", - "Prinz_Rana", - "fscholz", - "teoli", - "chux", - "aguztinrs" + "l1oret", + "hmorv", + "LaloHao" ] }, - "Web/CSS/basic-shape": { - "modified": "2019-03-23T22:21:44.895Z", + "Glossary/Function": { + "modified": "2019-03-18T21:19:19.995Z", "contributors": [ - "israel-munoz" + "PabloDeTorre" ] }, - "Web/CSS/blend-mode": { - "modified": "2020-12-04T10:45:45.837Z", + "Glossary/Main_thread": { + "modified": "2020-03-12T06:05:36.693Z", "contributors": [ - "israel-munoz" + "elimperiodelaweb" ] }, - "Web/CSS/block-size": { - "modified": "2019-03-25T00:21:59.271Z", + "Glossary/Identifier": { + "modified": "2020-08-28T17:30:13.071Z", "contributors": [ - "teffcode", - "israel-munoz" + "Nachec" ] }, - "Web/CSS/border": { - "modified": "2020-09-27T22:17:02.248Z", + "Glossary/Immutable": { + "modified": "2019-03-18T21:19:12.385Z", "contributors": [ - "usuarioMan", - "cgosorio", - "wbamberg", - "SphinxKnight", - "teoli", - "Yuichiro", - "Nathymig" + "PabloDeTorre" ] }, - "Web/CSS/border-block": { - "modified": "2020-10-15T22:16:25.322Z", + "Glossary/UI": { + "modified": "2019-03-18T21:18:49.573Z", "contributors": [ - "teffcode" + "diegorhs" ] }, - "Web/CSS/border-block-color": { - "modified": "2020-10-15T22:16:29.172Z", + "Glossary/Metadata": { + "modified": "2019-03-18T21:19:04.572Z", "contributors": [ - "teffcode" + "PabloDeTorre" ] }, - "Web/CSS/border-block-end": { - "modified": "2019-03-23T00:00:36.213Z", + "Glossary/Method": { + "modified": "2020-07-21T21:37:11.109Z", "contributors": [ - "teffcode", - "israel-munoz" + "Assael02", + "Davids-Devel" ] }, - "Web/CSS/border-block-end-color": { - "modified": "2019-03-24T11:12:10.336Z", + "Glossary/Breadcrumb": { + "modified": "2020-02-02T10:51:21.098Z", "contributors": [ - "teffcode", - "israel-munoz" + "blanchart" ] }, - "Web/CSS/border-block-end-style": { - "modified": "2019-03-23T22:11:28.819Z", + "Glossary/Domain_name": { + "modified": "2019-03-18T21:19:21.120Z", "contributors": [ - "israel-munoz" + "PabloDeTorre" ] }, - "Web/CSS/border-block-end-width": { - "modified": "2020-10-15T22:16:29.514Z", + "Glossary/Forbidden_header_name": { + "modified": "2019-03-23T22:02:11.147Z", "contributors": [ - "teffcode" + "Luiggy", + "tonialfaro" ] }, - "Web/CSS/border-block-start": { - "modified": "2020-10-15T22:16:31.641Z", + "Glossary/Number": { + "modified": "2019-03-23T22:58:03.851Z", "contributors": [ - "teffcode" + "Cleon" ] }, - "Web/CSS/border-block-start-color": { - "modified": "2020-10-15T22:16:30.534Z", + "Glossary/Object": { + "modified": "2019-03-23T22:58:05.221Z", "contributors": [ - "teffcode" + "Cleon" ] }, - "Web/CSS/border-block-start-style": { - "modified": "2020-10-15T22:16:32.074Z", + "Glossary/Operator": { + "modified": "2019-03-23T22:53:20.989Z", "contributors": [ - "teffcode" + "germanfr" ] }, - "Web/CSS/border-block-start-width": { - "modified": "2020-10-15T22:16:36.793Z", + "Glossary/Operand": { + "modified": "2020-09-05T17:33:42.415Z", "contributors": [ - "teffcode" + "brayan-orellanos" ] }, - "Web/CSS/border-block-style": { - "modified": "2020-10-15T22:16:36.371Z", + "Glossary/Call_stack": { + "modified": "2020-04-26T12:00:35.332Z", "contributors": [ - "teffcode" + "l1oret" ] }, - "Web/CSS/border-block-width": { - "modified": "2020-10-15T22:16:39.535Z", + "Glossary/Preflight_request": { + "modified": "2019-03-18T21:29:47.773Z", "contributors": [ - "teffcode" + "daviddelamo" ] }, - "Web/CSS/border-bottom": { - "modified": "2019-03-24T00:08:41.510Z", + "Glossary/CSS_preprocessor": { + "modified": "2019-03-23T22:02:54.782Z", "contributors": [ - "wbamberg", - "teoli", - "Yuichiro", - "Nathymig" + "ealch", + "velizluisma" ] }, - "Web/CSS/border-bottom-color": { - "modified": "2019-03-24T00:08:33.937Z", + "Glossary/Primitive": { + "modified": "2020-09-17T22:06:17.504Z", "contributors": [ - "wbamberg", - "teoli", - "Yuichiro", - "Nathymig" + "Nachec", + "cocososo", + "abaracedo", + "Cleon" ] }, - "Web/CSS/border-bottom-left-radius": { - "modified": "2019-03-18T21:16:45.497Z", + "Glossary/property": { + "modified": "2020-08-28T18:32:40.804Z", "contributors": [ - "israel-munoz" + "Nachec" ] }, - "Web/CSS/border-bottom-right-radius": { - "modified": "2019-03-18T21:15:46.042Z", + "Glossary/Pseudo-class": { + "modified": "2019-03-23T22:38:49.143Z", "contributors": [ - "israel-munoz" + "VictorAbdon" ] }, - "Web/CSS/border-bottom-style": { - "modified": "2019-03-24T00:08:38.365Z", + "Glossary/Pseudocode": { + "modified": "2019-03-18T21:19:15.497Z", "contributors": [ - "wbamberg", - "teoli", - "Yuichiro", - "Nathymig" + "PabloDeTorre" ] }, - "Web/CSS/border-bottom-width": { - "modified": "2019-03-24T00:12:49.342Z", + "Glossary/Recursion": { + "modified": "2019-03-18T21:19:02.064Z", "contributors": [ - "wbamberg", - "teoli", - "Yuichiro", - "Nathymig" + "PabloDeTorre", + "sergiomgm" ] }, - "Web/CSS/border-collapse": { - "modified": "2019-03-23T23:52:09.803Z", + "Glossary/SCM": { + "modified": "2019-03-18T21:19:21.440Z", "contributors": [ - "wbamberg", - "teoli", - "Mgjbot", - "Nathymig" + "carlosCharlie", + "sergiomgm" ] }, - "Web/CSS/border-color": { - "modified": "2019-03-24T00:08:40.211Z", + "Glossary/safe": { + "modified": "2019-03-18T21:18:23.904Z", "contributors": [ - "wbamberg", - "SphinxKnight", - "teoli", - "Yuichiro", - "Nathymig" + "SackmannDV" ] }, - "Web/CSS/border-end-end-radius": { - "modified": "2020-10-15T22:16:36.075Z", + "Glossary/Statement": { + "modified": "2019-03-23T22:57:58.260Z", "contributors": [ - "teffcode" + "abaracedo", + "Cleon" ] }, - "Web/CSS/border-end-start-radius": { - "modified": "2020-10-15T22:16:41.715Z", + "Glossary/Synchronous": { + "modified": "2020-11-14T06:15:42.366Z", "contributors": [ - "teffcode" + "Yuunichi" ] }, - "Web/CSS/border-image": { - "modified": "2019-03-23T23:21:15.962Z", + "Glossary/CMS": { + "modified": "2020-05-23T07:15:12.062Z", "contributors": [ - "teoli", - "Sebastianz", - "JuanCastela", - "yeyxav" + "l1oret" ] }, - "Web/CSS/border-image-outset": { - "modified": "2019-03-23T22:22:10.809Z", + "Glossary/Ciphertext": { + "modified": "2019-03-18T21:19:21.003Z", "contributors": [ - "israel-munoz" + "sergiomgm", + "GCF7" ] }, - "Web/CSS/border-image-repeat": { - "modified": "2020-10-15T21:51:01.640Z", + "Glossary/Plaintext": { + "modified": "2019-03-18T21:19:20.138Z", "contributors": [ - "SphinxKnight", - "israel-munoz" + "sergiomgm", + "GCF7" ] }, - "Web/CSS/border-image-slice": { - "modified": "2019-03-23T22:22:00.674Z", + "Glossary/Dynamic_typing": { + "modified": "2020-05-04T14:10:14.107Z", "contributors": [ - "israel-munoz" + "Caav98" ] }, - "Web/CSS/border-inline": { - "modified": "2020-10-15T22:16:39.413Z", + "Glossary/Static_typing": { + "modified": "2019-11-22T03:17:09.186Z", "contributors": [ - "teffcode" + "HugolJumex" ] }, - "Web/CSS/border-inline-color": { - "modified": "2020-10-15T22:16:39.129Z", + "Glossary/Validator": { + "modified": "2019-03-18T21:19:01.934Z", "contributors": [ - "teffcode" + "PabloDeTorre", + "carlosCharlie", + "sergiomgm" ] }, - "Web/CSS/border-inline-end": { - "modified": "2020-10-15T22:16:35.919Z", + "Glossary/Value": { + "modified": "2020-09-01T08:20:32.500Z", "contributors": [ - "teffcode" + "Nachec" ] }, - "Web/CSS/border-inline-end-color": { - "modified": "2020-10-15T22:16:44.169Z", + "Glossary/XForms": { + "modified": "2019-03-23T22:15:44.959Z", "contributors": [ - "teffcode" + "gparra989" ] }, - "Web/CSS/border-inline-end-style": { - "modified": "2020-10-15T22:16:36.354Z", + "orphaned/Guía_para_el_desarrollador_de_agregados_para_Firefox": { + "modified": "2019-01-16T14:29:03.747Z", "contributors": [ - "teffcode" + "teoli", + "Sheppy", + "Eloy" ] }, - "Web/CSS/border-inline-end-width": { - "modified": "2020-10-15T22:16:36.837Z", + "orphaned/Guía_para_el_desarrollador_de_agregados_para_Firefox/Introducción_a_las_extensiones": { + "modified": "2019-03-24T00:04:44.724Z", "contributors": [ - "teffcode" + "christopherccg", + "Sheppy", + "Eloy" ] }, - "Web/CSS/border-inline-start": { - "modified": "2020-10-15T22:16:44.782Z", + "orphaned/Guía_para_la_migración_a_catálogo": { + "modified": "2019-01-16T15:34:19.890Z", "contributors": [ - "teffcode" + "HenryGR", + "Mgjbot" ] }, - "Web/CSS/border-inline-start-color": { - "modified": "2020-10-15T22:16:35.643Z", + "orphaned/Herramientas": { + "modified": "2019-01-16T13:52:37.109Z", "contributors": [ - "teffcode" + "teoli", + "StripTM", + "inma_610", + "camilourd" ] }, - "Web/CSS/border-inline-start-style": { - "modified": "2020-10-15T22:16:41.098Z", + "Web/API/Document_object_model/How_to_create_a_DOM_tree": { + "modified": "2019-03-23T23:22:26.711Z", "contributors": [ - "teffcode" + "carrillog.luis" ] }, - "Web/CSS/border-inline-start-width": { - "modified": "2020-10-15T22:16:33.765Z", + "orphaned/HTML/Elemento/datalist": { + "modified": "2019-01-16T19:13:20.868Z", "contributors": [ - "teffcode" + "Darkgyro", + "teoli" ] }, - "Web/CSS/border-inline-style": { - "modified": "2020-10-15T22:16:43.176Z", + "orphaned/HTML/Elemento/form": { + "modified": "2019-01-16T21:24:44.882Z", "contributors": [ - "teffcode" + "eincioch" ] }, - "Web/CSS/border-inline-width": { - "modified": "2020-10-15T22:16:39.409Z", + "orphaned/HTML/Elemento/section": { + "modified": "2019-03-23T23:08:59.333Z", "contributors": [ - "teffcode" + "Raulpascual2", + "carllewisc", + "GeorgeAviateur" ] }, - "Web/CSS/border-left": { - "modified": "2019-03-24T00:08:37.376Z", + "Learn/Forms": { + "modified": "2019-03-24T00:17:58.788Z", "contributors": [ - "fscholz", + "DGarCam", "teoli", - "Yuichiro", - "Mgjbot", - "Wrongloop" + "prieto.any", + "deibyod", + "Ces", + "hugohabel", + "deimidis" ] }, - "Web/CSS/border-left-color": { - "modified": "2019-03-23T23:52:28.495Z", + "orphaned/Learn/HTML/Forms/HTML5_updates": { + "modified": "2019-03-24T00:07:51.068Z", "contributors": [ - "wbamberg", - "d8vjork", - "teoli", - "Wrongloop" + "inma_610", + "Izel", + "StripTM", + "deimidis" ] }, - "Web/CSS/border-radius": { - "modified": "2019-03-23T23:37:30.234Z", + "Web/Guide/HTML/HTML5/HTML5_Parser": { + "modified": "2019-03-24T00:07:09.448Z", "contributors": [ - "Barleby", - "Simplexible", - "Sebastianz", - "Prinz_Rana", "teoli", - "bytx", - "wilo" + "RickieesES", + "inma_610", + "StripTM", + "juanb", + "Izel" ] }, - "Web/CSS/border-right": { - "modified": "2020-10-15T22:17:02.534Z", + "Web/Guide/HTML/HTML5": { + "modified": "2020-05-16T09:08:08.720Z", "contributors": [ - "dlopez525", - "osperi" + "jonasdamher", + "SphinxKnight", + "anibalymariacantantes60", + "AzulMartin", + "264531666", + "fracp", + "damianed", + "alfredotemiquel", + "rossettistone", + "carlossuarez", + "teoli", + "JosueMolina", + "Pablo_Ivan", + "welm", + "bicentenario", + "jesusruiz", + "pierre_alfonso", + "pitufo_cabron", + "cesar_ortiz_elPatox", + "inma_610", + "vigia122", + "StripTM", + "deimidis", + "Izel" ] }, - "Web/CSS/border-spacing": { - "modified": "2019-03-23T23:52:00.961Z", + "Web/Guide/HTML/HTML5/Introduction_to_HTML5": { + "modified": "2019-03-24T00:05:36.058Z", "contributors": [ - "wbamberg", "teoli", - "Nathymig" + "inma_610" ] }, - "Web/CSS/border-start-end-radius": { - "modified": "2020-10-15T22:16:40.778Z", + "Web/Guide/HTML/HTML5/Constraint_validation": { + "modified": "2020-08-11T08:06:04.309Z", "contributors": [ - "teffcode" + "gerardo750711", + "israel-munoz" ] }, - "Web/CSS/border-start-start-radius": { - "modified": "2020-10-15T22:16:40.498Z", + "orphaned/Incrustando_Mozilla/Comunidad": { + "modified": "2019-03-23T22:39:14.279Z", "contributors": [ - "teffcode" + "vamm1981" ] }, - "Web/CSS/border-style": { - "modified": "2020-10-22T00:09:31.436Z", + "conflicting/Web/API/IndexedDB_API": { + "modified": "2019-03-18T21:11:08.379Z", "contributors": [ - "YairCaptain", - "SphinxKnight", - "javierpolit", + "duduindo", "teoli", - "Yuichiro", - "Nathymig" + "semptrion", + "CHORVAT", + "inma_610" ] }, - "Web/CSS/border-top": { - "modified": "2019-03-23T22:41:47.976Z", + "orphaned/Instalación_de_motores_de_búsqueda_desde_páginas_web": { + "modified": "2019-01-16T16:13:53.798Z", "contributors": [ - "cgosorio", - "mcclone2001" + "teoli", + "Nukeador", + "Jorolo" ] }, - "Web/CSS/border-top-color": { - "modified": "2020-10-15T21:59:59.493Z", + "Learn/Accessibility/What_is_accessibility": { + "modified": "2020-07-16T22:40:03.734Z", "contributors": [ - "jpmontoya182" + "editorUOC" ] }, - "Web/CSS/border-top-left-radius": { - "modified": "2019-03-23T22:27:25.384Z", + "Learn/Learning_and_getting_help": { + "modified": "2020-09-02T21:15:54.167Z", "contributors": [ - "israel-munoz" + "Nachec" ] }, - "Web/CSS/border-top-right-radius": { - "modified": "2019-03-23T22:27:24.905Z", + "Learn/Common_questions/How_much_does_it_cost": { + "modified": "2020-07-16T22:35:45.385Z", "contributors": [ - "israel-munoz" + "Beatriz_Ortega_Valdes" ] }, - "Web/CSS/border-width": { - "modified": "2020-12-03T13:55:01.337Z", + "Learn/Common_questions/Common_web_layouts": { + "modified": "2020-07-16T22:35:42.298Z", "contributors": [ - "rc925e", - "davisorb95", - "wbamberg", - "SphinxKnight", - "Yisus777", - "teoli", - "Yuichiro", - "Nathymig" + "Beatriz_Ortega_Valdes" + ] + }, + "Learn/Common_questions/What_is_a_web_server": { + "modified": "2020-10-27T18:34:43.608Z", + "contributors": [ + "noksenberg", + "Yel-Martinez-Consultor-Seo", + "Spectrum369", + "Luisk955", + "Sebaspaco", + "flaki53", + "welm" ] }, - "Web/CSS/bottom": { - "modified": "2019-01-16T15:42:01.210Z", + "Learn/Common_questions/What_is_a_URL": { + "modified": "2020-07-16T22:35:29.126Z", "contributors": [ - "teoli", - "Nathymig", - "HenryGR", - "Mgjbot" + "ezzep66", + "BubuAnabelas" ] }, - "Web/CSS/box-shadow": { - "modified": "2020-10-15T21:19:58.329Z", + "Learn/Common_questions/What_software_do_I_need": { + "modified": "2020-07-16T22:35:32.855Z", "contributors": [ - "davidpala.dev", - "IsraelFloresDGA", - "Sebastianz", - "Prinz_Rana", - "teoli", - "carloshs92" + "Beatriz_Ortega_Valdes" ] }, - "Web/CSS/box-sizing": { - "modified": "2020-10-15T21:37:29.482Z", + "orphaned/Learn/How_to_contribute": { + "modified": "2020-07-16T22:33:43.206Z", "contributors": [ - "amazing79", - "Soyaine", - "manuelizo", - "IsraelFloresDGA", - "GiioBass", - "Derhks", - "Sebastianz", - "juandiegoles" + "SphinxKnight", + "Code118", + "dervys19", + "javierdelpino", + "axgeon", + "Leonardo_Valdez", + "cgsramirez" ] }, - "Web/CSS/calc()": { - "modified": "2020-11-04T09:08:00.719Z", + "Learn/CSS/Building_blocks/Cascade_and_inheritance": { + "modified": "2020-09-10T08:32:11.848Z", "contributors": [ - "chrisdavidmills", - "blanchart", - "mrstork", - "prayash", - "teoli", - "MrBlogger" + "renatico", + "UOCccorcoles", + "Enesimus", + "editorUOC" ] }, - "Web/CSS/caret-color": { - "modified": "2019-03-23T22:08:56.287Z", + "Learn/CSS/Building_blocks/Overflowing_content": { + "modified": "2020-09-07T07:36:40.422Z", "contributors": [ - "israel-munoz" + "UOCccorcoles", + "editorUOC" ] }, - "Web/CSS/clear": { - "modified": "2020-10-30T03:42:19.832Z", + "Learn/CSS/Building_blocks/Debugging_CSS": { + "modified": "2020-10-15T22:26:23.448Z", "contributors": [ - "SphinxKnight", - "Alxbrz19", - "javichito" + "UOCccorcoles", + "editorUOC" ] }, - "Web/CSS/clip": { - "modified": "2019-03-23T23:33:36.877Z", + "Learn/CSS/Building_blocks/Sizing_items_in_CSS": { + "modified": "2020-07-16T22:29:20.704Z", "contributors": [ - "Sebastianz", - "teoli", - "nadiafaya" + "editorUOC" ] }, - "Web/CSS/clip-path": { - "modified": "2020-10-15T21:54:58.750Z", + "Learn/CSS/Building_blocks/The_box_model": { + "modified": "2020-09-06T15:07:38.107Z", "contributors": [ - "fscholz", - "jorgeherrera9103", - "david-velilla", - "CarlosLinares" + "UOCccorcoles", + "capitanzealot", + "editorUOC" ] }, - "Web/CSS/color": { - "modified": "2020-10-15T21:15:23.982Z", + "Learn/CSS/Building_blocks/Backgrounds_and_borders": { + "modified": "2020-09-06T17:26:53.330Z", "contributors": [ - "rhssr", - "SphinxKnight", - "teoli", - "trada", - "Mgjbot", - "HenryGR" + "UOCccorcoles", + "psotresc", + "editorUOC" ] }, - "Web/CSS/color_value": { - "modified": "2019-03-23T22:37:22.211Z", + "Learn/CSS/Building_blocks/Images_media_form_elements": { + "modified": "2020-07-16T22:29:24.707Z", "contributors": [ - "blanchart", - "Sebastianz", - "Simplexible", - "pekechis" + "editorUOC" ] }, - "Web/CSS/column-count": { - "modified": "2020-10-15T21:40:29.448Z", + "Learn/CSS/Building_blocks/Handling_different_text_directions": { + "modified": "2020-07-31T14:48:40.359Z", "contributors": [ - "AlePerez92", - "Anonymous", - "Sebastianz", - "Davier182" + "AndrewSKV", + "Enesimus" ] }, - "Web/CSS/column-span": { - "modified": "2020-10-15T22:21:55.127Z", + "Learn/CSS/Building_blocks/Selectors/Combinators": { + "modified": "2020-09-06T14:09:26.839Z", "contributors": [ - "AlePerez92" + "UOCccorcoles", + "editorUOC" ] }, - "Web/CSS/content": { - "modified": "2019-03-23T23:51:59.928Z", + "Learn/CSS/Building_blocks/Selectors": { + "modified": "2020-09-06T12:41:53.412Z", "contributors": [ - "teoli", - "Nathymig", - "HenryGR" + "UOCccorcoles", + "VichoReyes", + "editorUOC" ] }, - "Web/CSS/cursor": { - "modified": "2019-03-23T23:52:22.554Z", + "Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements": { + "modified": "2020-09-06T13:58:30.411Z", "contributors": [ - "wbamberg", - "teoli", - "Wrongloop" + "UOCccorcoles", + "editorUOC" ] }, - "Web/CSS/cursor/Uso_de_URL_como_valor_de_la_propiedad_cursor": { - "modified": "2019-03-24T00:04:04.275Z", + "Learn/CSS/Building_blocks/Selectors/Attribute_selectors": { + "modified": "2020-09-06T13:34:27.599Z", "contributors": [ - "teoli", - "fscholz", - "Mgjbot", - "Jorolo" + "UOCccorcoles", + "psotresc", + "editorUOC" ] }, - "Web/CSS/direction": { - "modified": "2019-01-16T15:40:27.790Z", + "Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors": { + "modified": "2020-09-06T13:13:47.580Z", "contributors": [ - "teoli", - "Nathymig", - "HenryGR", - "Mgjbot" + "UOCccorcoles", + "editorUOC" ] }, - "Web/CSS/display": { - "modified": "2020-10-21T14:14:21.533Z", + "Learn/CSS/Building_blocks/Values_and_units": { + "modified": "2020-09-07T09:35:00.652Z", "contributors": [ - "johanfvn", - "davidpala.dev", - "NeoFl3x", - "wbamberg", - "evaferreira", - "SphinxKnight", - "devCaso", - "FranciscoCastle" + "UOCccorcoles", + "editorUOC" ] }, - "Web/CSS/env()": { - "modified": "2020-11-10T11:09:30.133Z", + "Learn/CSS/CSS_layout/Responsive_Design": { + "modified": "2020-07-16T22:27:27.257Z", "contributors": [ - "chrisdavidmills", - "severo" + "editorUOC" ] }, - "Web/CSS/filter": { - "modified": "2019-03-23T22:59:24.815Z", + "Learn/CSS/CSS_layout/Normal_Flow": { + "modified": "2020-07-16T22:27:20.728Z", "contributors": [ - "israel-munoz", - "Sebastianz", - "teoli", - "maiky" + "editorUOC" ] }, - "Web/CSS/filter-function": { - "modified": "2019-03-18T21:34:50.284Z", + "Learn/CSS/CSS_layout/Introduction": { + "modified": "2020-09-15T13:39:37.384Z", "contributors": [ - "lajaso", - "mfluehr" + "UOCccorcoles", + "AndrewSKV", + "editorUOC", + "Jhonaz" ] }, - "Web/CSS/filter-function/blur()": { - "modified": "2020-11-05T09:45:32.642Z", + "Learn/CSS/CSS_layout/Supporting_Older_Browsers": { + "modified": "2020-07-16T22:27:17.501Z", "contributors": [ - "chrisdavidmills", - "lajaso" + "editorUOC" ] }, - "Web/CSS/filter-function/brightness()": { - "modified": "2020-11-05T09:57:09.596Z", + "Learn/CSS/First_steps/Getting_started": { + "modified": "2020-08-31T14:16:45.193Z", "contributors": [ - "chrisdavidmills", - "mjsorribas" + "UOCccorcoles", + "AndrewSKV", + "tito-ramirez", + "editorUOC" ] }, - "Web/CSS/filter-function/url": { - "modified": "2020-01-10T13:46:46.404Z", + "Learn/CSS/First_steps/How_CSS_works": { + "modified": "2020-09-18T07:47:46.630Z", "contributors": [ - "roocce" + "UOCccorcoles", + "editorUOC" ] }, - "Web/CSS/fit-content": { - "modified": "2020-10-15T22:06:18.387Z", + "Learn/CSS/First_steps/How_CSS_is_structured": { + "modified": "2020-08-31T16:55:37.346Z", "contributors": [ - "ocamachor" + "UOCccorcoles", + "editorUOC" ] }, - "Web/CSS/flex": { - "modified": "2019-03-23T22:31:42.324Z", + "Learn/CSS/First_steps/What_is_CSS": { + "modified": "2020-10-15T22:25:30.119Z", "contributors": [ - "Luis_Calvo", - "joshitobuba", - "Enfokat" + "UOCccorcoles", + "Enesimus", + "editorUOC" ] }, - "Web/CSS/flex-basis": { - "modified": "2020-08-16T18:24:46.422Z", + "Learn/CSS/First_steps/Using_your_new_knowledge": { + "modified": "2020-08-23T19:45:30.596Z", "contributors": [ - "metrapach", - "joshitobuba", - "jandrade" + "capitanzealot", + "AndrewSKV", + "Enesimus" ] }, - "Web/CSS/flex-direction": { - "modified": "2020-10-15T21:29:59.011Z", + "Learn/CSS/Building_blocks/Fundamental_CSS_comprehension": { + "modified": "2020-07-16T22:28:11.693Z", "contributors": [ - "Alex_Figueroa", - "evaferreira", - "Manuel-Kas", - "joshitobuba", - "fscholz", - "Sebastianz", - "elkinbernal" + "Creasick", + "Enesimus", + "javierpolit", + "DennisM" ] }, - "Web/CSS/flex-flow": { - "modified": "2019-03-18T21:15:12.282Z", + "Learn/CSS/Howto/Generated_content": { + "modified": "2020-07-16T22:25:47.515Z", "contributors": [ - "carlos.millan3", - "abaracedo" + "chrisdavidmills", + "Juansereina", + "lavilofam1" ] }, - "Web/CSS/flex-grow": { - "modified": "2020-05-06T21:30:31.507Z", + "Learn/CSS/Howto": { + "modified": "2020-07-16T22:25:42.139Z", "contributors": [ - "soniarecher", - "joshitobuba" + "alebarbaja", + "abestrad1" ] }, - "Web/CSS/flex-shrink": { - "modified": "2020-10-15T22:00:16.924Z", + "Learn/CSS/Styling_text/Web_fonts": { + "modified": "2020-09-01T07:26:18.054Z", "contributors": [ - "deluxury", - "Facundo-Corradini" + "UOCccorcoles", + "editorUOC" ] }, - "Web/CSS/flex-wrap": { - "modified": "2019-03-23T23:02:38.556Z", + "Learn/Front-end_web_developer": { + "modified": "2020-11-18T03:33:37.370Z", "contributors": [ - "joshitobuba", - "fscholz", - "Sebastianz", - "Rober84" + "SphinxKnight", + "marquezpedro151", + "andresf.duran", + "Nachec" ] }, - "Web/CSS/float": { - "modified": "2020-11-07T16:01:06.351Z", + "Learn/Getting_started_with_the_web/How_the_Web_works": { + "modified": "2020-07-16T22:33:59.672Z", "contributors": [ - "ppalma1963", - "melisb3", - "wbamberg", - "SphinxKnight", - "teoli", - "fscholz", - "Mgjbot", - "Nathymig", - "HenryGR" + "Enesimus", + "Maose", + "rulo_diaz", + "SphinxKnight" ] }, - "Web/CSS/font": { - "modified": "2019-03-23T23:53:27.791Z", + "Learn/Getting_started_with_the_web/Installing_basic_software": { + "modified": "2020-11-10T01:28:22.294Z", "contributors": [ - "wbamberg", - "fscholz", - "teoli", - "Mgjbot", - "Nathymig", - "Nukeador", - "RickieesES", - "HenryGR" + "rockoldo", + "Nachec", + "Maose", + "Anyito", + "ingridc", + "Enesimus", + "israel-munoz", + "Neto2412", + "AngelFQC", + "mads0306", + "Da_igual", + "Chrixos", + "darbalma" ] }, - "Web/CSS/font-family": { - "modified": "2019-03-23T23:52:00.350Z", + "Learn/Getting_started_with_the_web/The_web_and_web_standards": { + "modified": "2020-09-03T04:02:22.375Z", "contributors": [ - "wbamberg", - "fscholz", - "teoli", - "Nathymig", - "HenryGR", - "Mgjbot" + "Nachec" ] }, - "Web/CSS/font-size": { - "modified": "2019-03-23T23:52:02.387Z", + "Learn/Getting_started_with_the_web/Dealing_with_files": { + "modified": "2020-09-23T03:12:43.364Z", "contributors": [ - "wbamberg", - "fscholz", - "teoli", - "Nathymig", - "RickieesES", - "HenryGR", - "Mgjbot" + "Nachec", + "chrisdavidmills", + "NavetsArev", + "Maose", + "airmind97", + "hamfree", + "israel-munoz", + "GuilleMiranda", + "merol-dad", + "samshara1", + "mads0306", + "mamptecnocrata", + "Huarseral", + "diazwatson" ] }, - "Web/CSS/font-size-adjust": { - "modified": "2019-03-23T23:53:20.314Z", + "Learn/Tools_and_testing/Cross_browser_testing": { + "modified": "2020-07-16T22:38:59.665Z", "contributors": [ - "wbamberg", - "ivangrimaldo", - "fscholz", - "teoli", - "Mgjbot", - "Nathymig", - "HenryGR" + "arnoldobr" ] }, - "Web/CSS/font-style": { - "modified": "2019-03-23T23:54:11.290Z", + "Learn/Tools_and_testing/GitHub": { + "modified": "2020-10-01T17:01:32.394Z", "contributors": [ - "gustavodibasson", - "ivyixbvp", - "teoli", - "Mgjbot", - "Nathymig", - "RickieesES", - "HenryGR" + "IsraFloores", + "Nachec" ] }, - "Web/CSS/font-variant": { - "modified": "2019-03-23T23:54:15.244Z", + "Learn/Tools_and_testing": { + "modified": "2020-07-16T22:38:54.378Z", "contributors": [ - "wbamberg", - "fscholz", - "teoli", - "Mgjbot", - "Nathymig", - "RickieesES", - "HenryGR" + "WilsonIsAliveClone", + "carlosgocereceda", + "mikelmg" ] }, - "Web/CSS/font-variant-alternates": { - "modified": "2019-03-23T22:18:05.471Z", + "Learn/Tools_and_testing/Client-side_JavaScript_frameworks": { + "modified": "2020-08-22T19:34:32.519Z", "contributors": [ - "israel-munoz" + "spaceinvadev", + "jhonarielgj" ] }, - "Web/CSS/font-weight": { - "modified": "2020-10-08T18:46:18.623Z", + "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started": { + "modified": "2020-08-22T19:52:35.580Z", "contributors": [ - "jorgetoloza", - "EzeRamirez84", - "UbaldoRosas", - "ivyixbvp", - "SphinxKnight", - "fscholz", - "teoli", - "Mgjbot", - "ethertank", - "Nathymig", - "RickieesES", - "HenryGR" + "spaceinvadev" ] }, - "Web/CSS/frequency": { - "modified": "2019-03-23T22:22:14.267Z", + "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_getting_started": { + "modified": "2020-09-17T18:53:24.146Z", "contributors": [ - "israel-munoz" + "Faem0220" ] }, - "Web/CSS/grid": { - "modified": "2019-03-23T22:08:26.115Z", + "Learn/Tools_and_testing/Understanding_client-side_tools": { + "modified": "2020-07-28T15:51:57.413Z", "contributors": [ - "macagua", - "andresrisso" + "b3m3bi" ] }, - "Web/CSS/grid-auto-columns": { - "modified": "2020-10-15T22:07:00.570Z", + "Learn/HTML/Howto": { + "modified": "2020-07-16T22:22:28.075Z", "contributors": [ - "melisb3", - "robyirloreto" + "Loba25", + "blanchart", + "welm" ] }, - "Web/CSS/grid-auto-rows": { - "modified": "2020-10-15T22:00:41.266Z", + "Learn/HTML/Howto/Use_data_attributes": { + "modified": "2020-10-29T15:52:03.444Z", "contributors": [ - "chulesoft", - "deimidis2" + "angeljpa95", + "camsa", + "laatcode" ] }, - "Web/CSS/grid-column-gap": { - "modified": "2020-10-15T22:01:06.788Z", + "Learn/Forms/How_to_build_custom_form_controls": { + "modified": "2020-07-16T22:21:55.231Z", "contributors": [ - "agarcilazo", - "klaufel" + "laatcode" ] }, - "Web/CSS/grid-gap": { - "modified": "2019-03-23T22:13:30.250Z", + "Learn/Forms/How_to_structure_a_web_form": { + "modified": "2020-09-18T11:13:13.645Z", "contributors": [ - "ireneml.fr" + "UOCccorcoles", + "UOCjcanovasi", + "editorUOC", + "chrisdavidmills", + "eljonims" ] }, - "Web/CSS/grid-template-areas": { - "modified": "2019-03-23T22:11:49.454Z", + "conflicting/Learn/Forms": { + "modified": "2020-07-16T22:20:56.050Z", "contributors": [ - "diroco" + "xyvs", + "mikiangel10", + "chrisdavidmills", + "eljonims", + "sjmiles" ] }, - "Web/CSS/grid-template-columns": { - "modified": "2020-10-15T21:57:16.414Z", + "Learn/Forms/Property_compatibility_table_for_form_controls": { + "modified": "2020-08-30T01:12:52.090Z", "contributors": [ - "fscholz", - "IsraelFloresDGA" + "edchasw" ] }, - "Web/CSS/grid-template-rows": { - "modified": "2020-10-15T21:57:11.635Z", + "Learn/Forms/Test_your_skills:_HTML5_controls": { + "modified": "2020-07-16T22:22:11.445Z", "contributors": [ - "AlePerez92", - "fscholz", - "IsraelFloresDGA" + "Enesimus" ] }, - "Web/CSS/height": { - "modified": "2019-03-23T23:54:05.630Z", + "Learn/Forms/Test_your_skills:_Other_controls": { + "modified": "2020-07-16T22:22:12.140Z", "contributors": [ - "israel-munoz", - "teoli", - "Mgjbot", - "Nathymig", - "HenryGR" + "Enesimus" ] }, - "Web/CSS/hyphens": { - "modified": "2020-10-15T22:02:23.515Z", + "Learn/Forms/Sending_and_retrieving_form_data": { + "modified": "2020-07-16T22:21:26.056Z", "contributors": [ - "blanchart", - "AntonioNavajasOjeda" + "Rafasu", + "rocioDEV", + "MrGreen", + "OseChez", + "DaniNz", + "peternerd", + "SphinxKnight", + "chrisdavidmills", + "Ricky_Lomax" ] }, - "Web/CSS/image": { - "modified": "2019-03-23T22:28:08.883Z", + "Learn/Forms/Styling_web_forms": { + "modified": "2020-07-16T22:21:30.546Z", "contributors": [ - "israel-munoz" + "OMEGAYALFA", + "chrisdavidmills", + "cizquierdof" ] }, - "Web/CSS/image-rendering": { - "modified": "2020-10-15T22:02:06.401Z", + "Learn/Forms/Basic_native_form_controls": { + "modified": "2020-09-15T08:02:23.197Z", "contributors": [ - "rodrigorila" + "UOCccorcoles", + "editorUOC", + "rayrojas" ] }, - "Web/CSS/ime-mode": { - "modified": "2019-01-16T14:38:44.597Z", + "Learn/Forms/HTML5_input_types": { + "modified": "2020-10-30T10:06:35.877Z", "contributors": [ - "teoli", - "fscholz", - "Mgjbot", - "Nathymig", - "HenryGR" + "alejandro0619", + "panpy-web" ] }, - "Web/CSS/inherit": { - "modified": "2019-07-27T06:34:31.498Z", + "Learn/Forms/Form_validation": { + "modified": "2020-11-19T13:12:47.854Z", "contributors": [ - "josepaternina", - "AlejandroJSR7", - "teoli", - "Nathymig", - "HenryGR", - "Mgjbot" + "tcebrian", + "UOCccorcoles", + "UOCjcanovasi", + "editorUOC", + "blanchart", + "israel-munoz" ] }, - "Web/CSS/inheritance": { - "modified": "2019-03-23T23:53:04.499Z", + "Learn/Forms/Your_first_form": { + "modified": "2020-09-15T05:57:07.460Z", "contributors": [ - "joseanpg", - "teoli", - "Mgjbot", - "Nathymig", - "HenryGR" + "UOCccorcoles", + "editorUOC", + "BraisOliveira", + "OMEGAYALFA", + "OrlandoDeJesusCuxinYama", + "Giikah", + "chrisdavidmills", + "HGARZON" ] }, - "Web/CSS/initial": { - "modified": "2019-01-16T15:42:24.130Z", + "Learn/HTML/Introduction_to_HTML/Advanced_text_formatting": { + "modified": "2020-09-05T21:21:55.228Z", "contributors": [ - "teoli", - "Nathymig", - "HenryGR", - "Mgjbot" + "Nachec", + "UOCccorcoles", + "Enesimus", + "jmalsar", + "editorUOC", + "RG52", + "luchiano199", + "AlieYin" ] }, - "Web/CSS/inline-size": { - "modified": "2020-10-15T22:16:34.800Z", + "Learn/HTML/Introduction_to_HTML/Creating_hyperlinks": { + "modified": "2020-09-05T04:27:29.218Z", "contributors": [ - "teffcode" + "Nachec", + "UOCccorcoles", + "juan.grred", + "Enesimus", + "jmalsar", + "blanchart", + "editorUOC", + "Myuel", + "MichaelMejiaMora", + "ferlopezcarr", + "javierpolit" ] }, - "Web/CSS/inset": { - "modified": "2020-10-15T22:16:40.193Z", + "Learn/HTML/Introduction_to_HTML/Debugging_HTML": { + "modified": "2020-08-31T12:17:08.843Z", "contributors": [ - "teffcode" + "UOCccorcoles", + "editorUOC", + "javierpolit" ] }, - "Web/CSS/inset-block": { - "modified": "2020-10-15T22:16:40.204Z", + "Learn/HTML/Introduction_to_HTML/Document_and_website_structure": { + "modified": "2020-09-06T16:55:31.460Z", "contributors": [ - "teffcode" + "Nachec", + "UOCccorcoles", + "editorUOC", + "chaerf", + "AlidaContreras", + "javierpolit", + "SoftwareRVG", + "welm" ] }, - "Web/CSS/inset-block-end": { - "modified": "2020-10-15T22:16:39.037Z", + "Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content": { + "modified": "2020-07-16T22:24:18.388Z", "contributors": [ - "teffcode" + "SoftwareRVG" ] }, - "Web/CSS/inset-block-start": { - "modified": "2020-10-15T22:16:44.127Z", + "Learn/HTML/Introduction_to_HTML": { + "modified": "2020-09-03T05:18:15.831Z", "contributors": [ - "teffcode" + "Nachec", + "Enesimus", + "ivanagui2", + "Sergio_Gonzalez_Collado", + "cizquierdof", + "AngelFQC" ] }, - "Web/CSS/inset-inline": { - "modified": "2020-10-15T22:16:43.251Z", + "Learn/HTML/Introduction_to_HTML/Getting_started": { + "modified": "2020-11-24T21:57:47.560Z", "contributors": [ - "teffcode" + "nilo15", + "Nachec", + "UOCccorcoles", + "maodecolombia", + "Enesimus", + "editorUOC", + "narvmtz", + "dmipaguirre", + "BubuAnabelas", + "marlabarbz", + "erllanosr", + "r2fv", + "jonasmreza", + "Cjpertuz", + "yan-vega", + "Armando-Cruz", + "felixgomez", + "olvap", + "emermao", + "soedrego", + "Abihu", + "mitocondriaco", + "nahuelsotelo", + "dayamll", + "JimP99", + "EdwinTorres", + "salvarez1988", + "cizquierdof", + "juanluis", + "welm" ] }, - "Web/CSS/inset-inline-end": { - "modified": "2020-10-15T22:16:39.864Z", + "Learn/HTML/Introduction_to_HTML/Marking_up_a_letter": { + "modified": "2020-07-16T22:23:11.881Z", "contributors": [ - "teffcode" + "jmalsar", + "luchiano199", + "javierpolit" ] }, - "Web/CSS/inset-inline-start": { - "modified": "2020-10-15T22:16:43.418Z", + "Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML": { + "modified": "2020-11-07T18:07:55.376Z", "contributors": [ - "teffcode" + "nilo15", + "Nachec", + "UOCccorcoles", + "ccorcoles", + "editorUOC", + "hector080", + "clarii", + "Myuel", + "dmipaguirre", + "Armando-Cruz", + "MichaelMejiaMora", + "soedrego", + "absaucedo", + "venomdj2011", + "CarlosJose" ] }, - "Web/CSS/integer": { - "modified": "2019-03-23T23:50:21.071Z", + "Learn/HTML/Introduction_to_HTML/Test_your_skills:_Links": { + "modified": "2020-07-16T22:24:22.922Z", "contributors": [ - "fscholz", - "teoli", - "HenryGR", - "Mgjbot" + "Enesimus" ] }, - "Web/CSS/isolation": { - "modified": "2019-03-23T22:32:29.363Z", + "Learn/HTML/Introduction_to_HTML/Test_your_skills:_HTML_text_basics": { + "modified": "2020-07-16T22:24:21.949Z", "contributors": [ - "SoftwareRVG", - "javichito" + "Enesimus" ] }, - "Web/CSS/justify-content": { - "modified": "2019-03-23T22:48:18.861Z", + "Learn/HTML/Introduction_to_HTML/Test_your_skills:_Advanced_HTML_text": { + "modified": "2020-09-05T23:06:12.474Z", "contributors": [ - "amaiafilo", - "angelfeliz", - "teoli", - "Sebastianz", - "JoaquinBedoian" + "walter.boba79" ] }, - "Web/CSS/left": { - "modified": "2020-10-15T21:15:23.699Z", + "Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals": { + "modified": "2020-09-04T15:00:09.675Z", "contributors": [ - "SphinxKnight", - "miltonjosuerivascastro100", - "Sebastianz", - "teoli", - "ethertank", - "Mgjbot", - "fiorella", - "HenryGR" + "Nachec", + "UOCccorcoles", + "Enesimus", + "Maose", + "ccorcoles", + "editorUOC", + "hector080", + "JulianMahecha", + "BubuAnabelas", + "RafaelVentura", + "jadiosc", + "dcarmal-dayvo", + "Owildfox", + "Myuel", + "dmipaguirre", + "Dany07", + "welm" ] }, - "Web/CSS/length": { - "modified": "2019-03-23T23:54:15.791Z", + "Learn/HTML/Tables/Basics": { + "modified": "2020-09-09T11:52:38.720Z", "contributors": [ - "israel-munoz", - "fscholz", - "teoli", - "deibyod", - "Mgjbot", - "HenryGR" + "UOCccorcoles", + "editorUOC" ] }, - "Web/CSS/line-height": { - "modified": "2019-06-20T19:43:18.097Z", + "Learn/HTML/Tables/Advanced": { + "modified": "2020-09-14T06:33:13.790Z", "contributors": [ - "jalonnun", - "Daniel_Martin", - "wbamberg", - "IsaacAaron", - "SphinxKnight", - "garolard", - "teoli", - "Mgjbot", - "Nathymig", - "RickieesES", - "HenryGR" + "UOCccorcoles", + "editorUOC" ] }, - "Web/CSS/linear-gradient()": { - "modified": "2020-11-16T08:56:55.739Z", + "Learn/HTML/Tables": { + "modified": "2020-07-16T22:25:11.000Z", "contributors": [ - "chrisdavidmills", - "efrenmartinez", - "rgomez", - "Miguelslo27", - "Sebastianz", - "prayash", - "scarnagot" + "Drathveloper", + "IXTRUnai" ] }, - "Web/CSS/list-style": { - "modified": "2019-03-23T23:52:08.020Z", + "Learn/HTML/Tables/Structuring_planet_data": { + "modified": "2020-07-16T22:25:29.339Z", "contributors": [ - "SphinxKnight", - "teoli", - "Nathymig" + "IXTRUnai" ] }, - "Web/CSS/list-style-image": { - "modified": "2019-03-23T23:52:12.640Z", + "Learn/JavaScript/Building_blocks/Looping_code": { + "modified": "2020-10-10T18:54:10.014Z", "contributors": [ - "SphinxKnight", - "teoli", - "Nathymig" + "GianGuerra", + "Enesimus", + "josecampo", + "jesusvillalta", + "yohanolmedo", + "Zenchy", + "SebastianMaciel" ] }, - "Web/CSS/list-style-position": { - "modified": "2019-03-23T23:52:11.106Z", + "Learn/JavaScript/Building_blocks/Build_your_own_function": { + "modified": "2020-07-16T22:31:28.751Z", "contributors": [ - "magdic", - "SphinxKnight", - "teoli", - "Nathymig" + "InmobAli", + "serarroy", + "carlosgocereceda" ] }, - "Web/CSS/list-style-type": { - "modified": "2019-03-23T23:52:09.967Z", + "Learn/JavaScript/Building_blocks/Events": { + "modified": "2020-07-16T22:31:37.027Z", "contributors": [ - "SphinxKnight", - "teoli", - "Nathymig", - "ethertank" + "jhonarielgj", + "sebastiananea", + "maximilianotulian", + "ismamz" ] }, - "Web/CSS/margin": { - "modified": "2019-03-23T22:26:03.547Z", + "Learn/JavaScript/Building_blocks/Image_gallery": { + "modified": "2020-07-16T22:31:42.753Z", "contributors": [ - "Limbian" + "amIsmael" ] }, - "Web/CSS/margin-block": { - "modified": "2020-10-15T22:16:43.806Z", + "Learn/JavaScript/Client-side_web_APIs/Introduction": { + "modified": "2020-07-16T22:32:44.249Z", "contributors": [ - "mariadelrosario98", - "teffcode" + "robertsallent", + "gonzaa96", + "Usuario001", + "kevtinoco", + "Anonymous", + "OrlandoDeJesusCuxinYama" ] }, - "Web/CSS/margin-block-start": { - "modified": "2020-10-15T22:16:40.788Z", + "Learn/JavaScript/First_steps/Silly_story_generator": { + "modified": "2020-11-28T18:15:56.503Z", "contributors": [ - "teffcode" + "willian593", + "Enesimus", + "fj1261", + "keskyle17", + "antqted" ] }, - "Web/CSS/margin-bottom": { - "modified": "2019-03-23T23:13:38.811Z", + "Learn/JavaScript/First_steps/Math": { + "modified": "2020-08-11T20:21:00.937Z", "contributors": [ - "wbamberg", - "Sebastianz", - "fscholz", - "damesa" + "Nachec", + "Enesimus", + "keskyle17", + "Creasick", + "Aussith_9NT", + "JaviMartain", + "guibetancur", + "domingoacd", + "jjpc" ] }, - "Web/CSS/margin-inline": { - "modified": "2020-10-15T22:16:41.777Z", + "Learn/JavaScript/First_steps/Test_your_skills:_Strings": { + "modified": "2020-08-11T12:16:57.685Z", "contributors": [ - "karen-pal", - "teffcode" + "Nachec" ] }, - "Web/CSS/margin-inline-end": { - "modified": "2020-10-15T22:16:40.105Z", + "Learn/JavaScript/First_steps/What_is_JavaScript": { + "modified": "2020-08-08T22:05:17.982Z", "contributors": [ - "teffcode" + "Nachec", + "zgreco2000", + "jacobo.delgado", + "console", + "c9009", + "Creasick", + "bosspetta", + "alejoWeb", + "JorgeAML", + "eliud-c-delgado", + "roberbnd" ] }, - "Web/CSS/margin-inline-start": { - "modified": "2020-10-15T22:16:38.735Z", + "Learn/JavaScript/Objects/Object_building_practice": { + "modified": "2020-07-16T22:32:30.877Z", "contributors": [ - "teffcode" + "r-vasquez", + "rayrojas", + "luchiano199", + "Sergio_Gonzalez_Collado", + "pomarbar" ] }, - "Web/CSS/margin-right": { - "modified": "2019-03-23T23:54:10.369Z", + "Learn/Server-side/Django/Introduction": { + "modified": "2020-07-16T22:36:38.315Z", "contributors": [ - "teoli", - "Marti1125" + "dr2d4", + "jlpb97", + "oalberto96", + "javierdelpino", + "oscvic" ] }, - "Web/CSS/max-block-size": { - "modified": "2020-10-15T22:16:39.543Z", + "Learn/Server-side/First_steps": { + "modified": "2020-07-16T22:36:08.254Z", "contributors": [ - "teffcode" + "javierdelpino" ] }, - "Web/CSS/max-height": { - "modified": "2019-03-23T23:52:01.295Z", + "Learn/Server-side/First_steps/Introduction": { + "modified": "2020-07-16T22:36:13.094Z", "contributors": [ - "wbamberg", - "marc31bilbao", - "teoli", - "Mgjbot", - "Nathymig" + "AnaHertaj", + "SphinxKnight", + "mortyBL", + "javierdelpino" ] }, - "Web/CSS/max-inline-size": { - "modified": "2020-10-15T22:16:37.228Z", + "Learn/Server-side/First_steps/Website_security": { + "modified": "2020-07-16T22:36:27.856Z", "contributors": [ - "teffcode" + "isaine", + "Slb-Sbsz", + "javierdelpino" ] }, - "Web/CSS/max-width": { - "modified": "2020-10-15T21:16:38.209Z", + "Learn/Server-side/First_steps/Client-Server_overview": { + "modified": "2020-07-16T22:36:18.740Z", "contributors": [ - "SphinxKnight", - "teoli", - "HenryGR", - "Mgjbot" + "Slb-Sbsz", + "javierdelpino" ] }, - "Web/CSS/min()": { - "modified": "2020-12-03T10:19:50.144Z", + "Learn/Server-side/First_steps/Web_frameworks": { + "modified": "2020-07-16T22:36:23.784Z", "contributors": [ - "AlePerez92", - "chrisdavidmills", - "meolivares06" + "Slb-Sbsz", + "javierdelpino" ] }, - "Web/CSS/min-block-size": { - "modified": "2020-10-15T22:16:39.045Z", + "Learn/Common_questions/Using_Github_pages": { + "modified": "2020-07-16T22:35:51.571Z", "contributors": [ - "teffcode" + "DaniNz", + "LuyisiMiger", + "TAXIS" ] }, - "Web/CSS/min-height": { - "modified": "2019-03-23T23:51:59.533Z", + "Glossary/Localization": { + "modified": "2019-01-16T13:31:36.167Z", "contributors": [ - "wbamberg", - "Sebastianz", - "teoli", - "Nathymig" + "DirkS", + "RickieesES", + "Mgjbot", + "Verruckt", + "Jorolo", + "Takenbot", + "Nukeador", + "Radigar" ] }, - "Web/CSS/min-inline-size": { - "modified": "2020-10-15T22:16:37.579Z", + "orphaned/Localizar_con_Narro": { + "modified": "2019-03-24T00:12:25.538Z", "contributors": [ - "teffcode" + "jvmjunior", + "deimidis" ] }, - "Web/CSS/min-width": { - "modified": "2019-03-23T23:50:19.370Z", + "MDN/At_ten": { + "modified": "2019-03-23T22:49:57.954Z", "contributors": [ - "wbamberg", - "SphinxKnight", - "teoli", - "HenryGR", - "Mgjbot" + "pabloveintimilla", + "diego.mauricio.meneses.rios" ] }, - "Web/CSS/minmax()": { - "modified": "2020-11-16T09:05:45.467Z", + "orphaned/MDN/Community": { + "modified": "2020-04-24T19:14:03.228Z", "contributors": [ - "chrisdavidmills", - "jorgemontoyab" + "inwm", + "SphinxKnight", + "wbamberg", + "jenyvera", + "0zxo", + "Jeremie", + "LeoHirsch", + "luisgm76" ] }, - "Web/CSS/normal": { - "modified": "2019-03-23T23:50:19.746Z", + "orphaned/MDN/Community/Working_in_community": { + "modified": "2020-09-03T13:14:53.733Z", "contributors": [ - "teoli", - "FredB", - "HenryGR" + "FoulMangoPY", + "jswisher", + "wbamberg", + "welm", + "Sebastian.Nagles" ] }, - "Web/CSS/number": { - "modified": "2019-03-23T23:53:45.345Z", + "orphaned/MDN/Contribute/Howto/Create_an_MDN_account": { + "modified": "2020-08-21T18:14:17.930Z", "contributors": [ - "fscholz", - "teoli", - "Mgjbot", - "HenryGR" + "Tomillo", + "JADE-2006", + "wbamberg", + "JuniorBO", + "Arudb79", + "LeoHirsch" ] }, - "Web/CSS/object-fit": { - "modified": "2020-10-15T21:53:59.281Z", + "orphaned/MDN/Contribute/Howto/Document_a_CSS_property/Property_template": { + "modified": "2019-03-18T21:31:21.033Z", "contributors": [ - "AlePerez92", - "BubuAnabelas", - "Cristhian-Medina", - "fernandozarco", - "chrisvpr", - "cristianeph" + "wbamberg", + "B1tF8er" ] }, - "Web/CSS/object-position": { - "modified": "2019-03-23T22:31:02.066Z", + "orphaned/MDN/Contribute/Howto/Tag_JavaScript_pages": { + "modified": "2019-01-16T19:47:18.318Z", "contributors": [ - "thezeeck" + "wbamberg", + "LeoHirsch" ] }, - "Web/CSS/opacity": { - "modified": "2019-08-20T11:36:11.809Z", + "orphaned/MDN/Contribute/Howto/Remove_Experimental_Macros": { + "modified": "2020-07-05T17:06:56.383Z", "contributors": [ - "Armando-Cruz", - "blanchart", - "Manten19", - "UlisesGascon", - "teoli" + "Anibalismo" ] }, - "Web/CSS/order": { - "modified": "2019-03-23T22:28:06.551Z", + "orphaned/MDN/Contribute/Howto/Do_an_editorial_review": { + "modified": "2019-03-18T20:54:27.132Z", "contributors": [ - "evaferreira", - "joshitobuba" + "LauraJaime8", + "wbamberg", + "ElNobDeTfm", + "Arudb79", + "LeoHirsch" ] }, - "Web/CSS/outline": { - "modified": "2020-10-15T21:49:07.223Z", + "orphaned/MDN/Contribute/Howto/Do_a_technical_review": { + "modified": "2019-01-16T18:56:48.857Z", "contributors": [ - "danielblazquez", - "IsaacAaron", - "israel-munoz" + "wbamberg", + "MarkelCuesta", + "rowasc", + "LeoHirsch" ] }, - "Web/CSS/outline-color": { - "modified": "2019-03-18T21:15:39.790Z", + "orphaned/MDN/Contribute/Howto/Set_the_summary_for_a_page": { + "modified": "2020-07-05T16:17:53.925Z", "contributors": [ - "israel-munoz" + "Anibalismo", + "Maose", + "wbamberg", + "gerard.am", + "LeoHirsch" ] }, - "Web/CSS/outline-offset": { - "modified": "2019-03-23T22:27:28.876Z", + "orphaned/MDN/Contribute/Howto/Use_navigation_sidebars": { + "modified": "2019-05-08T17:34:30.854Z", "contributors": [ - "israel-munoz" + "ivanagui2" ] }, - "Web/CSS/outline-style": { - "modified": "2019-03-18T21:45:18.063Z", + "orphaned/MDN/Contribute/Howto/Write_an_article_to_help_learn_about_the_Web": { + "modified": "2020-06-26T02:13:25.044Z", "contributors": [ - "israel-munoz" + "Enesimus", + "pablorebora", + "blanchart", + "BubuAnabelas", + "SphinxKnight", + "FranciscoImanolSuarez" ] }, - "Web/CSS/outline-width": { - "modified": "2019-03-18T21:16:50.488Z", + "MDN/Contribute/Processes": { + "modified": "2019-01-17T02:12:44.469Z", "contributors": [ - "israel-munoz" + "wbamberg", + "astrapotro" ] }, - "Web/CSS/overflow": { - "modified": "2020-10-15T21:22:11.063Z", + "MDN/Guidelines/Conventions_definitions": { + "modified": "2020-09-30T15:28:56.412Z", "contributors": [ - "manuelizo", - "SJW", - "marc-ferrer", - "developingo", - "Sebastianz", - "Sheppy", - "teoli", - "_0x" + "chrisdavidmills", + "Nachec" ] }, - "Web/CSS/overflow-y": { - "modified": "2020-10-15T21:37:11.176Z", + "MDN/Guidelines/Writing_style_guide": { + "modified": "2020-09-30T15:28:56.038Z", "contributors": [ - "_deiberchacon", - "Silly-and_Clever", + "chrisdavidmills", + "blanchart", + "clarii", + "wbamberg", + "Jeremie", + "Salamandra101", + "Dgeek", + "fscholz", + "LeoHirsch", "teoli", - "Sebastianz", - "yvesmh" + "Pgulijczuk", + "DoctorRomi", + "Nukeador", + "Nanomo", + "Eqx", + "Jorolo" ] }, - "Web/CSS/padding": { - "modified": "2020-07-02T20:44:00.780Z", + "MDN/Yari": { + "modified": "2019-09-09T15:52:33.535Z", "contributors": [ - "kren.funes17", - "arielnoname", - "Sebastianz", - "fscholz", - "teoli", - "maiky" + "SphinxKnight", + "clarii", + "wbamberg", + "Jeremie", + "Diio", + "atlas7jean" ] }, - "Web/CSS/padding-block": { - "modified": "2020-10-15T22:16:40.169Z", + "MDN/Structures/Live_samples": { + "modified": "2020-09-30T09:06:15.983Z", "contributors": [ - "teffcode" + "chrisdavidmills", + "wbamberg", + "emanuelvega", + "LUISTGMDN", + "elihro" ] }, - "Web/CSS/padding-block-end": { - "modified": "2020-10-15T22:16:44.832Z", + "MDN/Structures/Macros/Other": { + "modified": "2020-09-30T09:06:17.522Z", "contributors": [ - "teffcode" + "chrisdavidmills", + "Nachec" ] }, - "Web/CSS/padding-block-start": { - "modified": "2020-10-15T22:16:44.371Z", + "MDN/Structures/Compatibility_tables": { + "modified": "2020-10-15T22:33:39.399Z", "contributors": [ - "teffcode" + "chrisdavidmills", + "Nachec" ] }, - "Web/CSS/padding-bottom": { - "modified": "2019-03-23T22:12:06.885Z", + "MDN/Tools/KumaScript": { + "modified": "2020-09-30T16:48:19.117Z", "contributors": [ - "qsanabria" + "chrisdavidmills", + "wbamberg", + "velizluisma", + "Jeremie", + "LeoHirsch" ] }, - "Web/CSS/padding-inline": { - "modified": "2020-10-15T22:16:45.046Z", + "orphaned/MDN/Tools/Page_regeneration": { + "modified": "2020-09-30T16:48:19.365Z", "contributors": [ - "teffcode" + "chrisdavidmills", + "Anibalismo" ] }, - "Web/CSS/padding-inline-end": { - "modified": "2020-10-15T22:16:39.998Z", + "orphaned/MDN/Tools/Template_editing": { + "modified": "2020-09-30T16:48:19.234Z", "contributors": [ - "teffcode" + "chrisdavidmills", + "wbamberg", + "juan-ferrer-toribio" ] }, - "Web/CSS/padding-inline-start": { - "modified": "2020-10-15T22:16:41.877Z", + "Mozilla/Firefox/Releases/3/DOM_improvements": { + "modified": "2019-03-23T23:50:52.840Z", "contributors": [ - "teffcode" + "wbamberg", + "Mgjbot", + "RickieesES", + "Nukeador", + "HenryGR", + "Talisker" ] }, - "Web/CSS/padding-top": { - "modified": "2019-03-23T22:12:05.180Z", + "Mozilla/Firefox/Releases/3/SVG_improvements": { + "modified": "2019-03-23T23:50:55.206Z", "contributors": [ - "qsanabria" + "wbamberg", + "Mgjbot", + "RickieesES", + "Nukeador", + "Talisker" ] }, - "Web/CSS/perspective": { - "modified": "2019-03-23T23:23:10.717Z", + "Mozilla/Firefox/Releases/3/XUL_improvements_in_Firefox_3": { + "modified": "2019-03-24T00:02:34.038Z", "contributors": [ - "Sebastianz", - "Prinz_Rana", + "wbamberg", "fscholz", + "Nukeador", + "Mgjbot", + "Nathymig", + "Dukebody" + ] + }, + "orphaned/Migrar_aplicaciones_desde_Internet_Explorer_a_Mozilla": { + "modified": "2019-03-23T23:59:56.566Z", + "contributors": [ "teoli", - "AngelFQC" + "Siyivan", + "krusch", + "Mgjbot", + "Mrgonzalez", + "Superruzafa", + "Ttataje", + "Nukeador" ] }, - "Web/CSS/porcentaje": { - "modified": "2019-03-23T23:25:05.075Z", + "orphaned/Modo_casi_estándar_de_Gecko": { + "modified": "2019-03-23T23:43:50.956Z", "contributors": [ - "fscholz", "teoli", - "aerotrink" + "Mgjbot", + "Jorolo" ] }, - "Web/CSS/position": { - "modified": "2020-10-15T21:15:59.180Z", + "orphaned/Módulos_JavaScript": { + "modified": "2019-03-23T23:53:21.168Z", "contributors": [ - "mollzilla", - "ismamz", - "mauriciopaterninar", - "phurtado1112", - "sejas", - "OttoChamo", - "plaso", - "Aleks07m", - "welm", "SphinxKnight", - "CarmenCamacho", - "enriqueabsurdum", - "killoblanco", "teoli", "Mgjbot", - "HenryGR" + "Ffranz", + "Mariano" ] }, - "Web/CSS/quotes": { - "modified": "2020-10-15T21:46:00.335Z", + "Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension": { + "modified": "2019-03-18T21:08:05.873Z", "contributors": [ - "SJW", - "arroutado" + "hecaxmmx", + "rgo", + "jde-gr", + "doztrock", + "yuniers" ] }, - "Web/CSS/radial-gradient()": { - "modified": "2020-11-18T14:42:09.252Z", + "orphaned/Mozilla/Add-ons/WebExtensions/Debugging": { + "modified": "2019-03-18T21:05:20.525Z", "contributors": [ - "chrisdavidmills", - "hectorcano", - "israel-munoz" + "Pau" ] }, - "Web/CSS/repeat()": { - "modified": "2020-11-18T14:44:16.857Z", + "orphaned/Mozilla/Add-ons/WebExtensions/Porting_a_Google_Chrome_extension": { + "modified": "2019-03-18T21:08:10.456Z", "contributors": [ - "chrisdavidmills", - "CrlsMrls", - "IsraelFloresDGA" + "fitojb", + "yuniers" ] }, - "Web/CSS/resize": { - "modified": "2019-03-23T22:49:42.378Z", + "Mozilla/Add-ons/WebExtensions/Prerequisites": { + "modified": "2019-03-23T22:45:28.352Z", "contributors": [ - "SphinxKnight", - "Sebastianz", - "gonzalec" + "yuniers" ] }, - "Web/CSS/resolución": { - "modified": "2019-03-23T22:38:44.850Z", + "orphaned/Mozilla/Add-ons/WebExtensions/Package_your_extension_": { + "modified": "2019-03-18T21:05:24.379Z", "contributors": [ - "Sebastianz", - "Prinz_Rana", - "Conradin88" + "FacundoCerezo", + "IXTRUnai" ] }, - "Web/CSS/resolved_value": { - "modified": "2019-03-23T22:16:57.498Z", + "Mozilla/Add-ons/WebExtensions/What_are_WebExtensions": { + "modified": "2020-11-23T00:59:33.889Z", "contributors": [ - "israel-munoz" + "kenliten", + "hecaxmmx", + "13539" ] }, - "Web/CSS/right": { - "modified": "2019-03-24T00:13:54.957Z", + "Mozilla/Add-ons/WebExtensions/Your_first_WebExtension": { + "modified": "2020-11-23T01:34:20.681Z", "contributors": [ - "wbamberg", - "SphinxKnight", - "Sebastianz", - "teoli", - "FredB", - "HenryGR", - "Mgjbot" + "kenliten", + "IgnacioMilia", + "mppfiles", + "adderou", + "hecaxmmx", + "Maller_Lagoon" ] }, - "Web/CSS/rtl": { - "modified": "2019-01-16T15:48:03.556Z", + "Mozilla/Add-ons/WebExtensions/Your_second_WebExtension": { + "modified": "2019-04-25T06:15:12.057Z", "contributors": [ - "teoli", - "HenryGR" + "Klius", + "IgnacioMilia", + "chicocoulomb", + "hecaxmmx", + "yuniers" ] }, - "Web/CSS/scroll-behavior": { - "modified": "2019-03-23T22:07:41.439Z", + "Mozilla/Add-ons/WebExtensions/user_interface/Browser_action": { + "modified": "2019-03-18T21:03:34.447Z", "contributors": [ - "pantuflo" + "adderou" ] }, - "Web/CSS/specified_value": { - "modified": "2019-03-23T22:16:53.752Z", + "Mozilla/Developer_guide/Mozilla_build_FAQ": { + "modified": "2019-03-23T23:58:56.616Z", "contributors": [ - "israel-munoz" + "chrisdavidmills", + "fscholz", + "teoli", + "DoctorRomi", + "Nukeador", + "Mgjbot", + "Blank zero" ] }, - "Web/CSS/text-decoration": { - "modified": "2019-03-23T22:21:38.548Z", + "Mozilla/Developer_guide/Source_Code/CVS": { + "modified": "2019-03-23T23:46:33.805Z", "contributors": [ - "fitojb", - "israel-munoz" + "chrisdavidmills", + "teoli", + "Nukeador", + "Mgjbot", + "Blank zero" ] }, - "Web/CSS/text-decoration-color": { - "modified": "2019-03-23T22:27:00.164Z", + "orphaned/nsDirectoryService": { + "modified": "2019-03-23T23:40:31.943Z", "contributors": [ - "israel-munoz" + "teoli", + "Breaking Pitt" ] }, - "Web/CSS/text-decoration-line": { - "modified": "2020-10-15T21:49:07.335Z", + "orphaned/Participar_en_el_proyecto_Mozilla": { + "modified": "2019-03-24T00:07:54.638Z", "contributors": [ - "AlePerez92", - "israel-munoz" + "teoli", + "inma_610" ] }, - "Web/CSS/text-decoration-style": { - "modified": "2019-03-18T21:17:28.073Z", + "Mozilla/Firefox/Releases/3/Templates": { + "modified": "2019-03-24T00:02:45.436Z", "contributors": [ - "JimP99", - "israel-munoz" + "wbamberg", + "fscholz", + "Nukeador", + "Kaltya", + "Mgjbot" ] }, - "Web/CSS/text-emphasis": { - "modified": "2019-03-23T22:09:46.786Z", + "orphaned/Preguntas_frecuentes_sobre_incrustación_en_Mozilla": { + "modified": "2019-01-16T15:02:38.544Z", "contributors": [ - "studioArtbliss" + "Anonymous" ] }, - "Web/CSS/text-emphasis-color": { - "modified": "2020-10-15T21:57:48.189Z", + "orphaned/Preguntas_frecuentes_sobre_incrustación_en_Mozilla/Introducción_a_Gecko_e_inscrustación": { + "modified": "2019-01-16T16:13:02.334Z", "contributors": [ - "BubuAnabelas", - "mym2013" + "Jorolo", + "Lastjuan" ] }, - "Web/CSS/text-orientation": { - "modified": "2020-10-15T22:02:16.878Z", + "orphaned/Principios_básicos_de_los_servicios_Web": { + "modified": "2019-01-16T16:13:03.069Z", "contributors": [ - "MikeOrtizTrivino" + "Jorolo", + "Xoan", + "Breaking Pitt" ] }, - "Web/CSS/text-overflow": { - "modified": "2020-10-15T21:59:14.245Z", + "orphaned/Recursos_en_modo_desconectado_en_Firefox": { + "modified": "2019-03-18T21:11:07.042Z", "contributors": [ - "davidelx", - "xpdv", - "plagasul", - "camilobuitrago" + "duduindo", + "Mgjbot", + "Nukeador", + "Nathymig", + "HenryGR" ] }, - "Web/CSS/text-shadow": { - "modified": "2019-03-23T22:27:32.186Z", + "orphaned/Referencia_de_XUL": { + "modified": "2019-04-19T23:18:32.719Z", "contributors": [ - "israel-munoz" + "wbamberg", + "teoli", + "chukito" ] }, - "Web/CSS/text-transform": { - "modified": "2019-10-10T16:32:05.528Z", + "Web/API/Document_Object_Model/Whitespace": { + "modified": "2020-08-24T04:42:05.596Z", "contributors": [ - "Makinita", - "evaferreira", - "israel-munoz" + "Nachec" ] }, - "Web/CSS/time": { - "modified": "2020-10-15T21:50:52.581Z", + "Web/API/Document_Object_Model/Examples": { + "modified": "2019-03-23T23:51:24.173Z", "contributors": [ - "lajaso", - "israel-munoz" + "SphinxKnight", + "khalid32", + "Mgjbot", + "Manu", + "Markens", + "Nathymig" ] }, - "Web/CSS/top": { - "modified": "2020-07-29T21:08:45.361Z", + "Web/API/Document_Object_Model/Events": { + "modified": "2019-03-18T21:45:13.362Z", "contributors": [ - "clancastor05", - "SphinxKnight", - "davidgg", - "solemoris", - "teoli", - "lcamacho", - "jaumesvdevelopers", - "HenryGR", - "Mgjbot" + "recortes" ] }, - "Web/CSS/transform": { - "modified": "2020-11-12T03:08:37.391Z", + "Web/API/Document_Object_Model": { + "modified": "2019-01-16T16:01:11.054Z", "contributors": [ - "SphinxKnight", - "rolivo288", - "SoftwareRVG", - "Sebastianz", - "GersonLazaro", - "fscholz", - "bicentenario", - "Xaviju", - "teoli", - "limonada_prototype" + "DR", + "Nathymig" ] }, - "Web/CSS/transform-function": { - "modified": "2019-03-23T23:10:41.562Z", + "Web/API/Document_Object_Model/Introduction": { + "modified": "2019-03-23T23:48:16.078Z", "contributors": [ - "israel-munoz", - "mrstork", - "prayash", - "limbus" + "LuisSevillano", + "IsaacAaron", + "Sheppy", + "Uri", + "Nathymig" ] }, - "Web/CSS/transform-function/rotate()": { - "modified": "2020-11-19T16:05:17.901Z", + "Web/API/Document_object_model/Locating_DOM_elements_using_selectors": { + "modified": "2020-06-14T19:56:35.416Z", "contributors": [ - "chrisdavidmills", - "danielblazquez", - "pekechis" + "snickArg" ] }, - "Web/CSS/transform-function/rotate3d()": { - "modified": "2020-11-19T16:07:08.348Z", + "Web/Guide/HTML/Using_HTML_sections_and_outlines": { + "modified": "2019-03-23T23:38:22.567Z", "contributors": [ - "chrisdavidmills", - "jeronimonunez", - "jjyepez" + "blanchart", + "eljonims", + "welm", + "javigaar", + "learnercys", + "pierre_alfonso", + "jesanchez" ] }, - "Web/CSS/transform-function/scale()": { - "modified": "2020-11-30T10:15:28.610Z", + "Mozilla/Firefox/Releases/2/Security_changes": { + "modified": "2019-03-23T23:42:29.185Z", "contributors": [ - "chrisdavidmills", - "ileonpxsp", - "BubuAnabelas", - "lizbethrojano", - "yomar-dev", - "quiqueciria", - "maramal" + "wbamberg", + "teoli", + "Nukeador" ] }, - "Web/CSS/transform-function/translate()": { - "modified": "2020-11-30T10:30:15.561Z", + "orphaned/Selección_de_modo_en_Mozilla": { + "modified": "2019-11-21T20:40:48.950Z", "contributors": [ - "chrisdavidmills", - "AlePerez92", - "hectoraldairah", - "Esteban26", - "murielsan", - "ShakMR" + "wbamberg", + "teoli", + "fscholz", + "Jorolo" ] }, - "Web/CSS/transform-function/translateY()": { - "modified": "2020-11-30T13:00:51.105Z", + "Web/API/Server-sent_events": { + "modified": "2019-03-23T23:24:42.323Z", "contributors": [ - "chrisdavidmills", - "israel-munoz" + "ethertank" ] }, - "Web/CSS/transform-function/translateZ()": { - "modified": "2020-11-30T13:02:44.123Z", + "Web/API/Server-sent_events/Using_server-sent_events": { + "modified": "2019-04-16T06:11:09.003Z", "contributors": [ - "chrisdavidmills", - "luisdev-works" + "albertoclarbrines", + "adlr", + "iamwao", + "jgutix", + "aztrock" ] }, - "Web/CSS/transform-origin": { - "modified": "2019-03-23T23:20:59.497Z", + "orphaned/Storage": { + "modified": "2019-03-24T00:09:02.141Z", "contributors": [ - "Sebastianz", - "fscholz", "teoli", - "limonada_prototype" + "elPatox", + "Francoyote", + "HenryGR", + "Mgjbot" ] }, - "Web/CSS/transform-style": { - "modified": "2020-10-15T22:31:22.949Z", + "Web/SVG/SVG_1.1_Support_in_Firefox": { + "modified": "2019-03-23T23:43:25.545Z", "contributors": [ - "luisdev-works" + "teoli", + "Superruzafa", + "Jorolo" ] }, - "Web/CSS/transition": { - "modified": "2019-03-23T22:53:01.094Z", + "Tools/Keyboard_shortcuts": { + "modified": "2020-07-28T10:35:37.425Z", "contributors": [ - "FedericoMarmo", - "fscholz", - "adlr", - "Sebastianz", - "yvesmh" + "Anibalismo", + "ssm", + "hugojavierduran9", + "marcorichetta" ] }, - "Web/CSS/transition-delay": { - "modified": "2019-03-23T23:21:44.912Z", + "orphaned/Tools/Add-ons": { + "modified": "2020-07-16T22:36:23.274Z", "contributors": [ - "mrstork", - "fscholz", - "Sebastianz", - "teoli", - "alcuinodeyork" + "mfluehr" ] }, - "Web/CSS/transition-duration": { - "modified": "2020-10-15T22:27:34.821Z", + "Tools/Debugger/How_to/Use_a_source_map": { + "modified": "2020-07-16T22:35:12.325Z", "contributors": [ - "luisafvaca" + "Makinita" ] }, - "Web/CSS/transition-property": { - "modified": "2020-10-15T21:58:20.034Z", + "Tools/Performance": { + "modified": "2020-07-16T22:36:12.530Z", "contributors": [ - "juan-ferrer-toribio" + "LesterGuerra", + "juanmapiquero", + "PorcoMaledette" ] }, - "Web/CSS/user-select": { - "modified": "2020-10-15T22:22:14.480Z", + "Tools/Performance/UI_Tour": { + "modified": "2020-07-16T22:36:14.726Z", "contributors": [ - "qwerty726" + "kynu", + "calcerrada", + "ramferposadas" ] }, - "Web/CSS/var()": { - "modified": "2020-11-04T09:10:15.439Z", + "Tools/Web_Audio_Editor": { + "modified": "2020-07-16T22:36:08.308Z", "contributors": [ - "chrisdavidmills", - "jroji" + "MPoli" ] }, - "Web/CSS/vertical-align": { - "modified": "2019-03-23T23:36:07.945Z", + "Tools/Style_Editor": { + "modified": "2020-07-16T22:35:00.009Z", "contributors": [ - "Sebastianz", - "teoli", - "riledhel" + "jwhitlock", + "cheline", + "SoftwareRVG", + "JosshuaCalixto1", + "maybe", + "padre629", + "CagsaBit" ] }, - "Web/CSS/visibility": { - "modified": "2019-03-23T23:52:08.163Z", + "Tools/Network_Monitor": { + "modified": "2020-07-16T22:35:29.709Z", "contributors": [ - "wbamberg", - "teoli", - "Nathymig", - "HenryGR", - "Mgjbot" + "sevillacode", + "Makinita", + "_cuco_", + "Ivan-Perez", + "Dieg" ] }, - "Web/CSS/white-space": { - "modified": "2019-06-12T21:57:59.855Z", + "Tools/Page_Inspector/3-pane_mode": { + "modified": "2020-07-16T22:34:53.611Z", "contributors": [ - "jdaison", - "missmakita" + "welm" ] }, - "Web/CSS/widows": { - "modified": "2020-10-15T21:59:52.045Z", + "Tools/Page_Inspector/How_to/Open_the_Inspector": { + "modified": "2020-07-16T22:34:32.611Z", "contributors": [ - "jpmontoya182" + "amaiafilo" ] }, - "Web/CSS/width": { - "modified": "2019-03-23T23:50:07.221Z", + "Tools/Page_Inspector/How_to/Examine_and_edit_the_box_model": { + "modified": "2020-07-16T22:34:34.150Z", "contributors": [ - "israel-munoz", - "diegocanal", - "teoli", - "HenryGR", - "Mgjbot" + "amaiafilo" ] }, - "Web/CSS/writing-mode": { - "modified": "2019-03-23T22:28:35.899Z", + "Tools/Page_Inspector/How_to/Examine_and_edit_HTML": { + "modified": "2020-07-16T22:34:40.440Z", "contributors": [ - "fitojb" + "amaiafilo" ] }, - "Web/CSS/z-index": { - "modified": "2020-03-20T18:20:08.966Z", + "Tools/Page_Inspector/How_to/Inspect_and_select_colors": { + "modified": "2020-07-16T22:34:34.877Z", "contributors": [ - "camsa", - "javichito", - "teoli", - "AntonioNavajas" + "amaiafilo" ] }, - "Web/CSS/zoom": { - "modified": "2019-03-23T22:35:36.401Z", + "Tools/Page_Inspector/How_to/Reposition_elements_in_the_page": { + "modified": "2020-07-16T22:34:45.756Z", "contributors": [ - "carloque", - "Sebastianz", - "pekechis" + "alebarbaja" ] }, - "Web/Demos_of_open_web_technologies": { - "modified": "2019-03-23T22:33:45.097Z", + "Tools/Remote_Debugging/Firefox_for_Android": { + "modified": "2020-07-16T22:35:38.980Z", "contributors": [ - "SoftwareRVG", - "elfoxero" + "odelrio", + "pawer13", + "pacommozilla", + "StripTM" ] }, - "Web/EXSLT": { - "modified": "2019-03-18T20:59:19.473Z", + "Tools/Responsive_Design_Mode": { + "modified": "2020-07-16T22:35:21.169Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "Mgjbot", - "Talisker" + "adolfotc", + "HugoM1682", + "amaiafilo", + "walter.atg", + "maedca" ] }, - "Web/EXSLT/exsl": { - "modified": "2019-01-16T15:21:39.795Z", + "Tools/Taking_screenshots": { + "modified": "2020-07-16T22:36:38.280Z", "contributors": [ - "ExE-Boss", - "teoli", - "Anonymous" + "picandocodigo" ] }, - "Web/EXSLT/exsl/node-set": { - "modified": "2019-03-18T20:59:21.647Z", + "Tools/Web_Console/UI_Tour": { + "modified": "2020-07-16T22:34:17.075Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "Mgjbot", - "Talisker" + "JonoyeMasuso" ] }, - "Web/EXSLT/exsl/object-type": { - "modified": "2019-03-23T23:51:27.324Z", + "Tools/Web_Console/The_command_line_interpreter": { + "modified": "2020-08-27T20:06:30.290Z", "contributors": [ - "ExE-Boss", - "lajaso", - "Mgjbot", - "Talisker" + "Nachec" ] }, - "Web/EXSLT/math": { - "modified": "2019-01-16T15:25:29.279Z", + "orphaned/Traducir_las_descripciones_de_las_extensiones": { + "modified": "2019-03-23T23:53:33.332Z", "contributors": [ - "ExE-Boss", "teoli", - "Anonymous" + "Nukeador", + "Sebastianzartner@gmx.de", + "D20v02d", + "Mgjbot" ] }, - "Web/EXSLT/math/highest": { - "modified": "2019-03-18T20:59:18.500Z", + "orphaned/Traducir_una_extensión": { + "modified": "2019-03-23T23:57:54.041Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "lajaso", + "Sebastianz", + "teoli", + "Sheppy", + "gironlievanos", "Mgjbot", - "Talisker" + "Superruzafa" ] }, - "Web/EXSLT/math/lowest": { - "modified": "2019-03-18T20:59:17.805Z", + "Web/API/Document_Object_Model/Traversing_an_HTML_table_with_JavaScript_and_DOM_Interfaces": { + "modified": "2019-03-23T23:20:26.633Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", "lajaso", - "Mgjbot", - "Talisker" + "jucazam", + "pablo.turati" ] }, - "Web/EXSLT/math/max": { - "modified": "2019-03-18T20:59:18.804Z", + "orphaned/Usando_archivos_desde_aplicaciones_web": { + "modified": "2019-03-24T00:07:10.927Z", "contributors": [ "SphinxKnight", - "ExE-Boss", - "lajaso", - "Talisker" + "AngelFQC", + "StripTM", + "Izel", + "deimidis", + "maedca" ] }, - "Web/EXSLT/math/min": { - "modified": "2019-03-18T20:59:20.254Z", + "orphaned/Usar_código_de_Mozilla_en_otros_proyectos": { + "modified": "2019-03-24T00:09:00.370Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "lajaso", - "Talisker" + "maedca", + "inma_610" ] }, - "Web/EXSLT/regexp": { - "modified": "2019-01-16T15:23:22.952Z", + "orphaned/Usar_web_workers": { + "modified": "2019-03-24T00:07:32.918Z", "contributors": [ - "ExE-Boss", "teoli", - "Anonymous" + "ajimix", + "inma_610" ] }, - "Web/EXSLT/regexp/match": { - "modified": "2019-03-18T20:59:21.504Z", + "orphaned/Usar_XPInstall_para_instalar_plugins": { + "modified": "2019-01-16T16:11:23.781Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "Talisker" + "Superruzafa", + "Fedora-core", + "Floot" ] }, - "Web/EXSLT/regexp/replace": { - "modified": "2019-03-18T20:59:20.093Z", + "Web/API/Document_object_model/Using_the_W3C_DOM_Level_1_Core": { + "modified": "2019-12-13T21:06:41.403Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "Talisker" + "wbamberg", + "jswisher" ] }, - "Web/EXSLT/regexp/test": { - "modified": "2019-03-18T20:59:20.575Z", + "orphaned/Uso_del_núcleo_del_nivel_1_del_DOM": { + "modified": "2019-12-13T21:10:23.918Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "Talisker" + "wbamberg", + "broxmgs", + "Superruzafa", + "Jorolo" ] }, - "Web/EXSLT/set": { - "modified": "2019-01-16T15:23:27.004Z", + "orphaned/Vigilar_plugins": { + "modified": "2019-01-16T15:35:57.481Z", "contributors": [ - "ExE-Boss", - "teoli", - "Anonymous" + "HenryGR" ] }, - "Web/EXSLT/set/difference": { - "modified": "2019-03-18T20:59:18.953Z", + "Web/API/Web_Audio_API": { + "modified": "2019-03-23T23:31:19.634Z", + "contributors": [ + "estebanborai", + "AngelFQC", + "Pau_Ilargia", + "maedca" + ] + }, + "Web/Accessibility/Community": { + "modified": "2019-03-23T23:41:25.430Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "Talisker" + "teoli", + "Jorolo" ] }, - "Web/EXSLT/set/distinct": { - "modified": "2019-03-18T20:59:22.067Z", + "Web/Accessibility": { + "modified": "2020-09-22T14:24:03.363Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "Talisker" + "FranciscoImanolSuarez", + "Gummox", + "Mediavilladiezj", + "cisval", + "monserratcallejaalmazan", + "chmutoff", + "teoli", + "DoctorRomi", + "Mgjbot", + "Jorolo", + "Lowprofile", + "Wikier", + "Nukeador", + "Gonzobonzoo" ] }, - "Web/EXSLT/set/has-same-node": { - "modified": "2019-03-18T20:59:20.421Z", + "Web/Accessibility/Understanding_WCAG/Text_labels_and_names": { + "modified": "2020-05-21T19:43:48.950Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "Talisker" + "giioaj", + "IsraelFloresDGA" ] }, - "Web/EXSLT/set/intersection": { - "modified": "2019-03-18T20:59:18.660Z", + "Web/Accessibility/Understanding_WCAG": { + "modified": "2019-03-18T21:25:29.001Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "Talisker" + "evaferreira" ] }, - "Web/EXSLT/set/leading": { - "modified": "2019-03-18T20:59:17.662Z", + "Web/Accessibility/Understanding_WCAG/Perceivable/Color_contrast": { + "modified": "2020-06-09T06:15:36.471Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "teoli", - "Talisker" + "11bits", + "apenab" ] }, - "Web/EXSLT/set/trailing": { - "modified": "2019-03-18T20:59:19.267Z", + "Web/Accessibility/Understanding_WCAG/Perceivable": { + "modified": "2019-03-18T21:25:19.991Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "teoli", - "Talisker" + "evaferreira" ] }, - "Web/EXSLT/str": { - "modified": "2019-01-16T15:24:51.477Z", + "Web/Accessibility/Understanding_WCAG/Keyboard": { + "modified": "2020-09-28T17:32:58.697Z", "contributors": [ - "ExE-Boss", - "teoli", - "Anonymous" + "megatux", + "IsraelFloresDGA" ] }, - "Web/EXSLT/str/concat": { - "modified": "2019-03-18T20:59:20.717Z", + "Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-required_attribute": { + "modified": "2019-08-28T11:54:04.515Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "Talisker" + "IsraelFloresDGA", + "Karla_Glez" ] }, - "Web/EXSLT/str/split": { - "modified": "2019-03-18T20:59:17.504Z", + "Web/Accessibility/ARIA/ARIA_Techniques/Using_the_alertdialog_role": { + "modified": "2019-08-28T12:48:39.532Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "Talisker" + "IsraelFloresDGA" ] }, - "Web/EXSLT/str/tokenize": { - "modified": "2019-03-18T20:59:19.116Z", + "Web/Accessibility/ARIA/forms/alerts": { + "modified": "2020-08-13T01:22:34.331Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "Talisker" + "Nachec" ] }, - "Web/Events": { - "modified": "2019-03-23T23:21:27.399Z", + "Web/Accessibility/ARIA/forms/Basic_form_hints": { + "modified": "2019-03-18T21:22:07.007Z", "contributors": [ - "ExE-Boss", - "wbamberg", - "gabo8611" + "IsraelFloresDGA" ] }, - "Web/Events/DOMContentLoaded": { - "modified": "2019-09-06T00:37:43.389Z", + "Web/Accessibility/ARIA/forms/Multipart_labels": { + "modified": "2019-11-27T15:16:55.571Z", "contributors": [ - "wbamberg", - "jramcast", - "ExE-Boss", - "fscholz", - "AlexOfSoCal", - "jdmgarcia", - "daniville" + "IsaacAaron", + "IsraelFloresDGA" ] }, - "Web/Events/abort": { - "modified": "2019-04-30T13:47:43.431Z", + "Web/API/Animation/Animation": { + "modified": "2019-03-23T22:05:09.399Z", "contributors": [ - "wbamberg", - "ExE-Boss", - "fscholz", - "balboag" + "IngoBongo" ] }, - "Web/Events/animationend": { - "modified": "2019-03-23T22:31:35.580Z", + "Web/API/Animation/finished": { + "modified": "2019-03-23T22:05:06.573Z", "contributors": [ - "ExE-Boss", - "soncco" + "IngoBongo" ] }, - "Web/Events/beforeunload": { - "modified": "2019-04-30T14:05:00.135Z", + "Web/API/Animation/currentTime": { + "modified": "2019-03-23T22:05:12.506Z", "contributors": [ - "wbamberg", - "ExE-Boss", - "anasyusef", - "Bant89" + "IngoBongo" ] }, - "Web/Events/blur": { - "modified": "2019-03-23T22:40:57.440Z", + "Web/API/Web_Storage_API": { + "modified": "2019-03-23T22:46:51.819Z", "contributors": [ - "ExE-Boss", + "fherce", "AlePerez92", - "fscholz", - "teoli", - "javier-alba" + "VictorAbdon" ] }, - "Web/Events/load": { - "modified": "2019-04-30T13:43:52.776Z", + "Web/API/Web_Storage_API/Using_the_Web_Storage_API": { + "modified": "2020-08-14T20:09:18.391Z", "contributors": [ - "wbamberg", - "ExE-Boss", - "AlePerez92" + "Enesimus", + "fherce" ] }, - "Web/Events/loadend": { - "modified": "2019-03-23T22:09:49.071Z", + "Web/API/Clipboard_API": { + "modified": "2020-10-15T22:31:40.101Z", "contributors": [ - "ExE-Boss", - "fscholz", - "darioperez" + "gato" ] }, - "Web/Events/pointerlockchange": { - "modified": "2019-03-18T21:16:43.654Z", + "Web/API/Canvas_API/Tutorial/Compositing/Example": { + "modified": "2019-03-18T21:36:04.043Z", "contributors": [ - "ExE-Boss", - "fscholz", - "arquigames" + "lajaso" ] }, - "Web/Events/transitioncancel": { - "modified": "2019-04-30T14:14:15.478Z", + "Web/API/Console/table": { + "modified": "2019-03-23T22:20:30.589Z", "contributors": [ - "wbamberg", - "ExE-Boss", - "juan-ferrer-toribio" + "AlePerez92" ] }, - "Web/Events/transitionend": { - "modified": "2019-03-23T22:04:18.976Z", + "Web/API/Document/open": { + "modified": "2020-10-15T22:31:23.051Z", "contributors": [ - "ExE-Boss", - "fscholz", - "juan-ferrer-toribio" + "WillieMensa" ] }, - "Web/Guide": { - "modified": "2019-07-18T20:35:32.528Z", + "Web/API/XMLDocument/async": { + "modified": "2019-03-23T22:57:43.989Z", "contributors": [ - "clarii", - "D3Portillo", - "Breaking Pitt", - "VictorAbdon", - "n2nand", - "Puchoti", - "DrTrucho", - "DanielCarron", - "daroswing", - "osodi", - "LeoHirsch", - "hjaguen", - "ethertank", - "Sheppy" + "MauroEldritch" ] }, - "Web/Guide/AJAX": { - "modified": "2019-03-18T21:14:54.246Z", + "Web/API/Document/createAttribute": { + "modified": "2020-10-15T21:55:08.825Z", "contributors": [ - "AlePerez92", - "chrisdavidmills", - "ccarruitero", - "chukito", - "Mgjbot", - "Nukeador", - "Summit677", - "Pascalc", - "Jorolo", - "Marianov", - "Takenbot", - "Baluart", - "Breaking Pitt", - "Seres" + "rodririobo", + "juanseromo12", + "FenixAlive" ] }, - "Web/Guide/AJAX/Comunidad": { - "modified": "2019-03-23T23:41:30.919Z", + "Web/API/DocumentOrShadowRoot/pointerLockElement": { + "modified": "2019-03-23T22:05:31.350Z", "contributors": [ - "chrisdavidmills", - "teoli", - "Jorolo" + "arquigames" ] }, - "Web/Guide/AJAX/Primeros_Pasos": { - "modified": "2019-03-23T23:54:11.584Z", + "Web/API/DOMString/Binary": { + "modified": "2020-08-29T03:33:22.030Z", "contributors": [ - "padrecedano", - "chrisdavidmills", - "mili01gm", - "Mgjbot", - "Luis Hidalgo", - "Hegael", - "Tatan", - "Takenbot", - "Jorolo", - "Puxaalonso", - "Nukeador", - "Noctuido", - "Seres" + "Nachec" ] }, - "Web/Guide/API": { - "modified": "2019-09-11T09:31:45.916Z", + "Web/API/GlobalEventHandlers/onwheel": { + "modified": "2019-03-18T21:09:09.483Z", "contributors": [ - "SphinxKnight", - "VictorAbdon", - "Sheppy" + "fscholz", + "SoftwareRVG" ] }, - "Web/Guide/API/DOM/Events/Orientation_and_motion_data_explained/Orientation_and_motion_data_explained": { - "modified": "2019-03-23T23:27:10.499Z", + "Web/API/HTMLVideoElement": { + "modified": "2019-06-22T13:44:40.927Z", "contributors": [ - "Sheppy", - "rubencidlara" + "Santi72Alc", + "myrnafig" ] }, - "Web/Guide/API/Vibration": { - "modified": "2019-03-23T23:03:32.169Z", + "Web/API/Fetch_API/Basic_concepts": { + "modified": "2019-03-18T21:24:00.327Z", "contributors": [ - "juancjara" + "IsraelFloresDGA" ] }, - "Web/Guide/CSS/Block_formatting_context": { - "modified": "2019-03-23T22:32:27.340Z", + "Web/API/Fetch_API/Using_Fetch": { + "modified": "2020-12-08T11:29:15.934Z", "contributors": [ - "Enesimus", - "javichito" + "mondeja", + "arturojimenezmedia", + "camsa", + "jccuevas", + "MateoVelilla", + "crimoniv", + "danielM9521", + "SphinxKnight", + "Ruluk", + "jpuerto", + "baumannzone", + "anjerago", + "icedrek", + "royexr", + "AlePerez92" ] }, - "Web/Guide/CSS/probando_media_queries": { - "modified": "2019-03-23T23:07:40.812Z", + "Web/API/WindowEventHandlers/onunload": { + "modified": "2019-03-23T23:39:28.498Z", "contributors": [ - "TibicenasDesign" + "fscholz", + "khalid32", + "Sheppy" ] }, - "Web/Guide/DOM": { - "modified": "2019-03-23T23:27:17.444Z", + "Web/API/HTMLOrForeignElement/dataset": { + "modified": "2020-10-15T22:06:35.887Z", "contributors": [ - "Sheppy" + "OneLoneFox", + "PacoVela", + "ultraklon", + "pipepico", + "AlePerez92" ] }, - "Web/Guide/DOM/Events": { - "modified": "2019-03-23T23:27:18.635Z", + "Web/API/HTMLOrForeignElement/focus": { + "modified": "2020-10-15T21:51:27.517Z", "contributors": [ - "Sheppy" + "IsraelFloresDGA", + "AlePerez92", + "jesumv" ] }, - "Web/Guide/DOM/Events/Creacion_y_Activación_Eventos": { - "modified": "2019-03-23T22:58:27.867Z", + "Web/API/ElementCSSInlineStyle/style": { + "modified": "2019-03-23T23:58:09.934Z", "contributors": [ - "gAval997", - "juanpablocarrillo", - "BrunoViera", - "enreda", - "Soid" + "SphinxKnight", + "fscholz", + "khalid32", + "teoli", + "HenryGR" ] }, - "Web/Guide/DOM/Events/eventos_controlador": { - "modified": "2020-08-01T23:47:25.815Z", + "Web/API/IndexedDB_API/Basic_Concepts_Behind_IndexedDB": { + "modified": "2020-01-13T04:48:11.759Z", "contributors": [ - "Enesimus", - "alesalva" + "chrisdavidmills", + "fscholz", + "elin3t", + "sebasmagri" ] }, - "Web/Guide/Graphics": { - "modified": "2020-05-19T14:31:25.384Z", + "Web/API/IndexedDB_API/Using_IndexedDB": { + "modified": "2020-01-13T04:48:12.209Z", "contributors": [ - ".bkjop0", - "lassergraf", - "CarlosEduardoEncinas", - "pescadito.2007", - "rogeliomtx", - "CarlosQuijano", - "lalo2013" + "chrisdavidmills", + "gama", + "Pcost8300", + "franvalmo", + "frank-orellana", + "otif11", + "urbanogb", + "AlePerez92", + "beatriz-merino", + "matajm", + "elin3t", + "maparrar" ] }, - "Web/Guide/HTML/Canvas_tutorial": { - "modified": "2019-03-23T23:18:23.090Z", + "Web/API/Navigator/geolocation": { + "modified": "2019-03-23T23:31:55.176Z", "contributors": [ - "fniwes", - "DeiberChacon", - "jeancgarciaq" + "jabarrioss", + "AlePerez92", + "fscholz", + "jsx", + "lfentanes" ] }, - "Web/Guide/HTML/Canvas_tutorial/Advanced_animations": { - "modified": "2019-03-23T22:11:01.831Z", + "Web/API/NavigatorOnLine/Online_and_offline_events": { + "modified": "2019-01-16T15:46:38.836Z", "contributors": [ - "elagat" + "chrisdavidmills", + "Mgjbot", + "Nukeador", + "RickieesES", + "Unixcoder" ] }, - "Web/Guide/HTML/Canvas_tutorial/Applying_styles_and_colors": { - "modified": "2020-05-15T18:35:37.655Z", + "Web/API/Node/parentElement": { + "modified": "2020-10-15T21:55:42.512Z", "contributors": [ - "dimaio77" + "AlePerez92", + "LRojas", + "tureey" ] }, - "Web/Guide/HTML/Canvas_tutorial/Basic_animations": { - "modified": "2019-10-10T16:52:52.102Z", + "Web/API/Node/insertBefore": { + "modified": "2020-10-15T21:36:49.326Z", "contributors": [ - "Sergio_Gonzalez_Collado", - "lajaso", - "Huarseral" + "AlePerez92", + "danvao", + "Sedoy", + "carpasse" ] }, - "Web/Guide/HTML/Canvas_tutorial/Basic_usage": { - "modified": "2020-04-24T15:40:04.067Z", + "Web/API/Notifications_API/Using_the_Notifications_API": { + "modified": "2020-04-11T06:35:05.696Z", "contributors": [ - "Davidaz", - "mariogalan", - "teoli", - "guillermomartinmarco", - "eoasakura", - "mamigove" + "davidelx", + "IXTRUnai" ] }, - "Web/Guide/HTML/Canvas_tutorial/Dibujando_formas": { - "modified": "2019-03-23T23:15:03.361Z", + "Web/API/Crypto/getRandomValues": { + "modified": "2020-10-15T21:49:57.084Z", "contributors": [ - "cepeami01", - "AlexisRC463", - "matiasrvergara", - "Blackangel1965", - "ErikMj69", - "alkaithil", - "faqndo", - "martinzaraterafael", - "gabriel15", - "Marezelej" + "hecmonter", + "joseluisq", + "julianmoji" ] }, - "Web/Guide/HTML/Canvas_tutorial/Hit_regions_and_accessibility": { - "modified": "2019-03-18T21:31:01.983Z", + "Web/HTTP/Headers/Digest": { + "modified": "2020-10-15T22:27:29.781Z", "contributors": [ - "cepeami01" + "joseluisq" ] }, - "Web/Guide/HTML/Canvas_tutorial/Optimizing_canvas": { - "modified": "2019-03-23T23:18:04.030Z", + "orphaned/Web/API/Web_Crypto_API/Checking_authenticity_with_password": { + "modified": "2019-03-23T22:10:43.026Z", "contributors": [ - "Cax" + "haxdai" ] }, - "Web/Guide/HTML/Canvas_tutorial/Pixel_manipulation_with_canvas": { - "modified": "2019-03-18T21:42:58.094Z", + "Web/API/Web_Speech_API/Using_the_Web_Speech_API": { + "modified": "2020-05-10T18:32:28.954Z", "contributors": [ - "Luis_Gentil", - "JulianSoto", - "anfuca" + "mcarou" ] }, - "Web/Guide/HTML/Editable_content": { - "modified": "2019-03-23T22:09:49.599Z", + "Web/API/WebGL_API/Tutorial/Creating_3D_objects_using_WebGL": { + "modified": "2019-03-23T22:37:32.127Z", "contributors": [ - "vinyetcg", - "JoaquinGiordano", - "V.Morantes" + "asarch", + "Giovan" ] }, - "Web/Guide/HTML/Introduction_alhtml_clone": { - "modified": "2019-03-23T23:11:36.473Z", + "Web/API/WebGL_API/Tutorial/Using_textures_in_WebGL": { + "modified": "2019-03-23T22:15:44.225Z", "contributors": [ - "emanuelvega", - "Cristhoper" + "BubuAnabelas", + "marce_1994" ] }, - "Web/Guide/HTML/categorias_de_contenido": { - "modified": "2020-09-06T09:32:45.431Z", + "Web/API/WebSockets_API/Writing_WebSocket_server": { + "modified": "2019-05-21T02:54:42.354Z", "contributors": [ - "Nachec", - "BrayanAvian", - "raecillacastellana", - "eljonims", - "eliasrodeloso" + "SphinxKnight", + "manueljrs", + "Yantup", + "jjmontes" ] }, - "Web/Guide/Movil": { - "modified": "2019-03-23T22:48:50.706Z", + "Web/API/WebSockets_API/Writing_WebSocket_servers": { + "modified": "2019-06-21T20:55:28.443Z", "contributors": [ - "miguelsp" + "alesalva", + "SphinxKnight", + "juanmanuelramallo", + "8manuel", + "llekn", + "jjmontes", + "augus1990" ] }, - "Web/Guide/Parsing_and_serializing_XML": { - "modified": "2019-03-23T22:10:22.365Z", + "Web/API/WindowOrWorkerGlobalScope/atob": { + "modified": "2019-03-23T23:03:12.715Z", "contributors": [ - "FenixAlive" + "fscholz", + "sathyasanles" ] }, - "Web/Guide/Performance": { - "modified": "2019-03-23T23:21:17.984Z", + "Glossary/Base64": { + "modified": "2020-10-08T22:36:13.676Z", "contributors": [ - "DeiberChacon", - "Sheppy" + "kevinandresviedmanlopez", + "carloscasalar", + "Arukantara", + "sathyasanles" ] }, - "Web/Guide/Performance/Usando_web_workers": { - "modified": "2020-09-27T14:14:17.948Z", + "Web/API/WindowOrWorkerGlobalScope/clearInterval": { + "modified": "2019-03-23T22:56:16.485Z", "contributors": [ - "hendaniel", - "arbesulo", - "zynt1102", - "albertovelazmoliner", - "luisdos", - "EricMoIr", - "hmorv", - "DeiberChacon", - "rsalgado", - "mvargasmoran" + "Guitxo" ] }, - "Web/Guide/Usando_Objetos_FormData": { - "modified": "2019-03-23T23:19:26.530Z", + "Web/API/WindowOrWorkerGlobalScope/clearTimeout": { + "modified": "2019-06-18T10:20:27.972Z", "contributors": [ - "ramingar", - "Siro_Diaz", - "wilo" + "AlePerez92", + "fscholz", + "basemnassar11", + "VictorArias" ] }, - "Web/HTML": { - "modified": "2020-12-10T12:38:08.697Z", + "Web/API/WindowOrWorkerGlobalScope/setInterval": { + "modified": "2020-08-24T18:02:23.092Z", "contributors": [ - "ojgarciab", - "SphinxKnight", - "cesarmerino.ec71", - "barriosines07", - "Nachec", - "Enesimus", - "Neto503", - "hackertj", - "chrisdavidmills", - "blanchart", - "roocce", - "titox", - "donpaginasweboficial", - "Kenikser", - "RayPL", - "YeseniaMariela", - "gabriel-ar", - "PabloLajarin", - "JoseBarakat", - "raecillacastellana", - "israel-munoz", - "jsx", - "Hteemo", - "eduMXM", - "enesimo", - "MARVINFLORENTINO", - "pekechis", - "monserratcallejaalmazan", - "thzunder", - "roheru", - "vltamara", - "ArcangelZith", - "ronyworld", - "LeoHirsch", - "CarlosQuijano", - "AngelFQC" + "mastertrooper", + "Makinita", + "Klius", + "claudionebbia" ] }, - "Web/HTML/Atributos": { - "modified": "2019-03-23T23:21:50.772Z", + "Web/API/WindowOrWorkerGlobalScope/setTimeout": { + "modified": "2019-03-23T23:17:29.378Z", "contributors": [ - "raecillacastellana", - "Cdam", + "BubuAnabelas", "vltamara", - "Shinigami-sama", - "welm", - "noografo", - "Benito", - "LeoHirsch", - "sha" + "nauj27", + "fscholz", + "AshfaqHossain", + "VictorArias" ] }, - "Web/HTML/Atributos/accept": { - "modified": "2020-10-15T22:34:00.656Z", + "Web/API/FormData": { + "modified": "2020-10-15T21:22:58.694Z", "contributors": [ - "Nachec" + "AlePerez92", + "vladimirbat", + "alvaromorenomorales", + "ojgarciab", + "Sheppy", + "AngelFQC", + "wilo", + "marco_mucino" ] }, - "Web/HTML/Atributos/autocomplete": { - "modified": "2019-04-06T00:39:59.162Z", + "Web/CSS/:user-invalid": { + "modified": "2019-03-23T22:30:48.940Z", "contributors": [ - "qmarquez", - "Raulpascual2" + "teoli", + "pekechis" ] }, - "Web/HTML/Atributos/min": { - "modified": "2020-10-15T22:33:58.169Z", + "Web/CSS/:autofill": { + "modified": "2019-03-23T22:29:31.809Z", "contributors": [ - "Nachec" + "teoli", + "pekechis" ] }, - "Web/HTML/Atributos/minlength": { - "modified": "2020-10-15T22:33:56.870Z", + "Web/CSS/:not": { + "modified": "2020-11-30T09:54:17.195Z", "contributors": [ - "Nachec" + "blanchart", + "lajaso", + "teoli", + "jotadeaa", + "luisgagocasas" ] }, - "Web/HTML/Atributos/multiple": { - "modified": "2020-09-08T01:48:55.405Z", + "Web/CSS/::file-selector-button": { + "modified": "2019-03-18T21:21:36.190Z", "contributors": [ - "Nachec" + "teoli", + "pekechis" ] }, - "Web/HTML/Atributos_Globales": { - "modified": "2020-10-15T21:39:25.776Z", + "Web/CSS/box-flex": { + "modified": "2019-03-23T22:36:18.128Z", "contributors": [ - "Nachec", - "PacoVela", - "imangas", - "vltamara" + "teoli", + "pekechis" ] }, - "Web/HTML/Atributos_Globales/accesskey": { - "modified": "2019-03-23T22:41:37.238Z", + "Web/CSS/box-pack": { + "modified": "2019-03-23T22:36:13.348Z", "contributors": [ - "jcr4" + "teoli", + "pekechis" ] }, - "Web/HTML/Atributos_Globales/autocapitalize": { - "modified": "2020-10-15T22:12:15.178Z", + "Web/CSS/user-modify": { + "modified": "2019-03-23T22:35:48.381Z", "contributors": [ - "Nachec", - "carlosgocereceda", - "WilsonIsAliveClone", - "Raulpascual2" + "teoli", + "pekechis" ] }, - "Web/HTML/Atributos_Globales/class": { - "modified": "2019-03-23T22:41:38.505Z", + "Web/CSS/@media/height": { + "modified": "2020-10-15T22:23:38.815Z", "contributors": [ - "imangas", - "jcr4" + "IsraelFloresDGA" ] }, - "Web/HTML/Atributos_Globales/contenteditable": { - "modified": "2019-03-23T22:41:31.507Z", + "Web/CSS/@media/resolution": { + "modified": "2019-03-23T22:38:40.675Z", "contributors": [ - "ManuAlvarado22", - "jcr4" + "Conradin88" ] }, - "Web/HTML/Atributos_Globales/contextmenu": { - "modified": "2019-03-23T22:41:33.594Z", + "Web/CSS/CSS_Columns": { + "modified": "2019-03-23T22:28:10.699Z", "contributors": [ - "jcr4" + "Anonymous" ] }, - "Web/HTML/Atributos_Globales/data-*": { - "modified": "2019-06-27T12:32:36.980Z", + "Web/CSS/Comments": { + "modified": "2019-03-23T22:16:58.806Z", "contributors": [ - "deyvirosado", - "jcr4" + "israel-munoz" ] }, - "Web/HTML/Atributos_Globales/dir": { - "modified": "2019-03-23T22:41:19.442Z", + "orphaned/Web/CSS/Comenzando_(tutorial_CSS)": { + "modified": "2019-03-23T23:39:37.048Z", "contributors": [ - "jcr4" + "teoli", + "jsalinas" ] }, - "Web/HTML/Atributos_Globales/draggable": { - "modified": "2019-03-23T22:41:17.791Z", + "orphaned/Web/CSS/Como_iniciar": { + "modified": "2019-01-16T13:59:37.327Z", "contributors": [ - "JuanSerrano02", - "jcr4" + "teoli", + "Izel" ] }, - "Web/HTML/Atributos_Globales/dropzone": { - "modified": "2019-03-23T22:41:19.266Z", + "Web/CSS/CSS_Animations/Detecting_CSS_animation_support": { + "modified": "2019-03-23T22:41:48.122Z", "contributors": [ - "JuanSerrano02", - "jcr4" + "wbamberg", + "CristhianLora1", + "DracotMolver" ] }, - "Web/HTML/Atributos_Globales/hidden": { - "modified": "2019-03-23T22:41:18.690Z", + "Web/CSS/CSS_Animations/Using_CSS_animations": { + "modified": "2020-07-06T16:16:21.887Z", "contributors": [ - "jcr4" + "Jazperist", + "miguelgilmartinez", + "fermelli", + "GasGen", + "KattyaCuevas", + "rod232", + "Jvalenz1982", + "SphinxKnight", + "teoli", + "onerbs", + "Luis_Calvo", + "ulisescab" ] }, - "Web/HTML/Atributos_Globales/id": { - "modified": "2019-03-23T22:45:39.709Z", + "Web/CSS/CSS_Background_and_Borders/Border-image_generator": { + "modified": "2019-03-23T22:41:48.777Z", "contributors": [ - "vanesa", - "DavidZabaleta", - "eoasakura" + "teoli", + "mcclone2001" ] }, - "Web/HTML/Atributos_Globales/is": { - "modified": "2020-10-15T22:04:27.264Z", + "Web/CSS/CSS_Colors/Color_picker_tool": { + "modified": "2019-03-23T22:23:27.596Z", "contributors": [ - "daniel.duarte" + "elihro" ] }, - "Web/HTML/Atributos_Globales/itemid": { - "modified": "2019-03-23T22:37:36.858Z", + "Web/CSS/CSS_Flexible_Box_Layout/Typical_Use_Cases_of_Flexbox": { + "modified": "2019-03-18T21:18:33.523Z", "contributors": [ - "pekechis" + "danpaltor" ] }, - "Web/HTML/Atributos_Globales/itemprop": { - "modified": "2019-03-23T22:41:15.543Z", + "Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox": { + "modified": "2020-03-25T21:15:58.856Z", "contributors": [ - "rhssr", - "jcr4" + "amazing79", + "otello1971", + "cwalternicolas" ] }, - "Web/HTML/Atributos_Globales/itemref": { - "modified": "2019-03-23T22:36:41.055Z", + "Web/CSS/CSS_Grid_Layout/Basic_Concepts_of_Grid_Layout": { + "modified": "2019-10-01T23:38:23.285Z", "contributors": [ - "jcr4" + "jcastillaingeniero", + "amaiafilo", + "IsraelFloresDGA", + "jorgemontoyab" ] }, - "Web/HTML/Atributos_Globales/itemscope": { - "modified": "2020-10-15T21:41:28.202Z", + "Web/CSS/CSS_Grid_Layout/Relationship_of_Grid_Layout": { + "modified": "2019-12-18T12:24:17.824Z", "contributors": [ - "JuanSerrano02", - "chrisvpr", - "jcr4" + "amazing79", + "natalygiraldo", + "amaiafilo", + "TavoTrash", + "aribet", + "jorgemontoyab" ] }, - "Web/HTML/Atributos_Globales/lang": { - "modified": "2019-03-23T22:41:11.276Z", + "Web/CSS/CSS_Logical_Properties/Sizing": { + "modified": "2019-03-19T19:17:23.927Z", "contributors": [ - "agonzalezml", - "jcr4" + "teffcode" ] }, - "Web/HTML/Atributos_Globales/slot": { - "modified": "2020-10-15T22:04:16.315Z", + "Web/CSS/CSS_Box_Model": { + "modified": "2019-03-23T22:37:33.458Z", "contributors": [ - "daniel.duarte" + "tipoqueno", + "pekechis" ] }, - "Web/HTML/Atributos_Globales/spellcheck": { - "modified": "2019-03-23T22:41:06.455Z", + "Web/CSS/CSS_Box_Model/Introduction_to_the_CSS_box_model": { + "modified": "2019-08-28T10:35:24.055Z", "contributors": [ - "jcr4" + "tipoqueno" ] }, - "Web/HTML/Atributos_Globales/style": { - "modified": "2019-03-23T22:41:09.210Z", + "Web/CSS/CSS_Box_Model/Mastering_margin_collapsing": { + "modified": "2019-03-23T22:32:15.462Z", "contributors": [ - "jcr4" + "amaiafilo", + "Ralexhx", + "javichito" ] }, - "Web/HTML/Atributos_Globales/tabindex": { - "modified": "2019-07-12T03:22:15.997Z", + "Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index": { + "modified": "2019-03-23T22:32:38.884Z", "contributors": [ - "ChrisMHM", - "bamvoo", - "cabetancourtc", - "StripTM", - "jcr4" + "javichito" ] }, - "Web/HTML/Atributos_Globales/title": { - "modified": "2019-03-23T22:40:44.282Z", + "Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_and_float": { + "modified": "2019-04-26T07:22:46.044Z", "contributors": [ - "jcr4" + "SphinxKnight", + "LaGallinaTuruleta", + "javichito" ] }, - "Web/HTML/Atributos_Globales/translate": { - "modified": "2019-03-23T22:40:27.406Z", + "Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1": { + "modified": "2019-03-23T22:32:36.821Z", "contributors": [ - "jcr4" + "javichito" ] }, - "Web/HTML/Atributos_Globales/x-ms-acceleratorkey": { - "modified": "2019-03-18T21:20:44.665Z", + "Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_2": { + "modified": "2019-03-23T22:32:34.821Z", "contributors": [ - "WriestTavo" + "javichito" ] }, - "Web/HTML/Atributos_de_configuracion_CORS": { - "modified": "2019-03-23T22:46:11.986Z", + "Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_3": { + "modified": "2019-03-23T22:32:30.208Z", "contributors": [ - "eporta88", - "virlliNia", - "vltamara" + "javichito" ] }, - "Web/HTML/Block-level_elements": { - "modified": "2019-03-18T20:44:10.775Z", + "Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context": { + "modified": "2019-03-23T22:32:44.958Z", "contributors": [ - "ManuelPalominochirote", - "raecillacastellana", - "dinael", - "pekechis", - "erdavo", - "vltamara", - "teoli", - "MILTON.AGUILAR" + "javichito" ] }, - "Web/HTML/Canvas": { - "modified": "2019-10-10T16:45:32.554Z", + "Web/CSS/CSS_Positioning/Understanding_z_index": { + "modified": "2019-03-18T20:42:17.583Z", + "contributors": [ + "ChipTime", + "javichito" + ] + }, + "Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index": { + "modified": "2019-03-23T22:32:47.571Z", + "contributors": [ + "javichito" + ] + }, + "Web/CSS/CSS_Conditional_Rules": { + "modified": "2019-03-23T22:05:34.864Z", + "contributors": [ + "arnulfolg" + ] + }, + "Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property": { + "modified": "2019-03-24T00:04:04.275Z", "contributors": [ - "lajaso", - "jagomf", "teoli", - "ethertank", - "jesusmercado", - "dextra", - "beto21", - "inma_610", - "RickieesES", - "Pgulijczuk", - "kourt_xand", - "Fifthtoe", - "Mgjbot" + "fscholz", + "Mgjbot", + "Jorolo" ] }, - "Web/HTML/Canvas/A_basic_ray-caster": { - "modified": "2019-03-19T08:57:21.057Z", + "Web/CSS/Replaced_element": { + "modified": "2019-03-23T23:08:30.961Z", "contributors": [ - "AzazelN28", - "Fandres91", - "dkocho4", - "preteric" + "jdbazagaruiz" ] }, - "Web/HTML/Canvas/Drawing_graphics_with_canvas": { - "modified": "2019-03-23T23:19:53.719Z", + "Web/CSS/Specificity": { + "modified": "2020-11-14T17:11:45.294Z", "contributors": [ - "teoli", - "rubencidlara" + "0neomar", + "fer", + "glrodasz", + "mariupereyra", + "arjusgit", + "DavidGalvis", + "gcjuan", + "LuisSevillano", + "deimidis2", + "aeroxmotion", + "padrecedano", + "Remohir" ] }, - "Web/HTML/Consejos_para_la_creación_de_páginas_HTML_de_carga_rápida": { - "modified": "2020-07-16T22:22:32.156Z", + "Web/CSS/gradient": { + "modified": "2019-03-23T22:37:34.623Z", "contributors": [ - "ZKoaLa", - "nazhaj", - "JuanC_01" + "devilkillermc", + "mym2013", + "Sebastianz", + "wizAmit", + "slayslot", + "Conradin88" ] }, - "Web/HTML/Elemento": { - "modified": "2020-07-13T03:12:39.708Z", + "Web/CSS/Tools/Cubic_Bezier_Generator": { + "modified": "2019-03-18T21:20:03.429Z", "contributors": [ - "Enesimus", - "IsraelFloresDGA", - "ivanhelo", - "gabriel-ar", - "raecillacastellana", - "imangas", - "jccancelo", - "vltamara", - "teoli", - "LinoJaime", - "Rkovac", - "betoscopio", - "semptrion", - "StripTM", - "deimidis", - "Mgjbot", - "Klosma", - "Jorolo" + "gsalinase" ] }, - "Web/HTML/Elemento/Elementos_títulos": { - "modified": "2019-03-23T23:41:24.635Z", + "Web/CSS/Tools": { + "modified": "2019-03-23T22:28:04.142Z", "contributors": [ - "evaferreira", - "chrisdavidmills", - "israel-munoz", - "teoli", - "Jorolo" + "arturoblack" ] }, - "Web/HTML/Elemento/Etiqueta_Personalizada_HTML5": { - "modified": "2019-03-23T22:40:57.260Z", + "Web/Progressive_web_apps/Responsive/Media_types": { + "modified": "2019-03-18T21:15:11.297Z", "contributors": [ - "Lazaro" + "luismj" ] }, - "Web/HTML/Elemento/Shadow": { - "modified": "2019-03-23T22:06:38.273Z", + "Web/CSS/percentage": { + "modified": "2019-03-23T23:25:05.075Z", "contributors": [ - "H4isan" + "fscholz", + "teoli", + "aerotrink" ] }, - "Web/HTML/Elemento/Tipos_de_elementos": { - "modified": "2019-03-23T23:46:22.404Z", + "Learn/CSS/Howto/CSS_FAQ": { + "modified": "2020-07-16T22:25:44.798Z", "contributors": [ - "Sebastianz", - "jigs12", "teoli", - "ethertank", - "Klosma", - "Jorolo" + "inma_610" ] }, - "Web/HTML/Elemento/a": { - "modified": "2020-12-02T02:55:47.706Z", + "orphaned/Web/CSS/Primeros_pasos": { + "modified": "2019-03-24T00:05:34.862Z", "contributors": [ - "SphinxKnight", - "xtrs84zk", - "HectorFranco", - "sergio_p_d", - "julioematasv", - "ManuelSLemos", - "raecillacastellana", "teoli", - "Nukeador", - "RickieesES", - "HenryGR", - "Mgjbot" + "deimidis" ] }, - "Web/HTML/Elemento/abbr": { - "modified": "2019-03-23T23:41:48.686Z", + "Web/CSS/Pseudo-elements": { + "modified": "2019-03-23T23:21:50.048Z", "contributors": [ - "vanesa", - "abaracedo", - "jigs12", - "welm", + "BubuAnabelas", + "VictorAbdon", "teoli", - "Jorolo" + "jota1410" ] }, - "Web/HTML/Elemento/acronym": { - "modified": "2019-03-23T23:41:54.391Z", + "Web/CSS/Reference": { + "modified": "2019-03-24T00:14:13.384Z", "contributors": [ - "Sebastianz", - "jigs12", + "lajaso", + "israel-munoz", + "joshitobuba", + "mrstork", + "prayash", + "malayaleecoder", "teoli", - "Jorolo" + "tregagnon", + "inma_610", + "fscholz", + "Nukeador" ] }, - "Web/HTML/Elemento/address": { - "modified": "2019-03-23T23:41:48.972Z", + "Web/CSS/mix-blend-mode": { + "modified": "2020-10-15T21:37:53.265Z", "contributors": [ - "abaracedo", - "jigs12", + "Undigon", + "mrstork", "teoli", - "Jorolo" + "Sebastianz", + "msanz" ] }, - "Web/HTML/Elemento/applet": { - "modified": "2019-03-23T23:42:26.076Z", + "Web/CSS/resolution": { + "modified": "2019-03-23T22:38:44.850Z", "contributors": [ "Sebastianz", - "teoli", - "Jorolo" + "Prinz_Rana", + "Conradin88" ] }, - "Web/HTML/Elemento/area": { - "modified": "2019-03-23T23:41:50.345Z", + "orphaned/Web/CSS/rtl": { + "modified": "2019-01-16T15:48:03.556Z", "contributors": [ - "Sebastianz", - "jigs12", "teoli", - "Jorolo" + "HenryGR" ] }, - "Web/HTML/Elemento/article": { - "modified": "2020-04-14T03:59:04.779Z", + "Web/CSS/Attribute_selectors": { + "modified": "2020-10-15T21:26:03.862Z", "contributors": [ - "Jx1ls", - "wbamberg", + "blanchart", + "MoisesGuevara", + "lajaso", "teoli", - "deimidis" + "jota1410" ] }, - "Web/HTML/Elemento/aside": { - "modified": "2019-05-13T08:38:38.128Z", + "Web/CSS/CSS_Selectors": { + "modified": "2019-07-09T01:16:13.123Z", "contributors": [ + "missmakita", "blanchart", - "wbamberg", - "teoli", - "trevorh", - "ccarruitero", - "inma_610" + "Benji1337", + "metal-gogo", + "kikolevante" ] }, - "Web/HTML/Elemento/audio": { - "modified": "2019-03-24T00:17:32.335Z", + "Web/CSS/CSS_Selectors/Using_the_:target_pseudo-class_in_selectors": { + "modified": "2020-07-31T07:57:08.167Z", "contributors": [ - "wbamberg", - "teoli", - "tregagnon", - "RickieesES", - "inma_610" + "blanchart", + "israel-munoz" ] }, - "Web/HTML/Elemento/b": { - "modified": "2019-03-23T23:41:59.385Z", + "Web/CSS/Adjacent_sibling_combinator": { + "modified": "2019-03-23T22:39:30.908Z", "contributors": [ - "gabrielvol", - "Sebastianz", - "jigs12", - "teoli", - "Jorolo" + "alkaithil" ] }, - "Web/HTML/Elemento/base": { - "modified": "2019-03-23T23:41:55.648Z", + "Web/CSS/General_sibling_combinator": { + "modified": "2019-03-23T22:39:33.429Z", "contributors": [ - "raecillacastellana", - "Sebastianz", - "jigs12", - "teoli", - "Jorolo" + "alkaithil" ] }, - "Web/HTML/Elemento/basefont": { - "modified": "2019-03-23T23:42:33.059Z", + "Web/CSS/Value_definition_syntax": { + "modified": "2019-03-23T22:38:52.899Z", "contributors": [ + "apazacoder", "Sebastianz", - "jigs12", - "teoli", - "Jorolo" + "Guillaume-Heras", + "VictorAbdon" ] }, - "Web/HTML/Elemento/bdi": { - "modified": "2019-03-23T22:37:44.087Z", + "Web/CSS/CSS_Text": { + "modified": "2019-03-23T22:36:23.444Z", "contributors": [ - "pekechis", - "teoli" + "pekechis" ] }, - "Web/HTML/Elemento/bdo": { - "modified": "2019-03-23T23:41:59.174Z", + "Web/CSS/CSS_Transitions/Using_CSS_transitions": { + "modified": "2019-08-01T05:58:17.579Z", "contributors": [ - "Sebastianz", - "jigs12", + "chrisdavidmills", + "mrstork", + "alberdigital", "teoli", - "Jorolo" + "inma_610", + "deimidis" ] }, - "Web/HTML/Elemento/bgsound": { - "modified": "2019-10-10T16:35:21.119Z", + "Web/CSS/computed_value": { + "modified": "2019-03-23T23:53:20.456Z", "contributors": [ - "jcr4" + "teoli", + "Mgjbot", + "Firewordy", + "HenryGR" ] }, - "Web/HTML/Elemento/big": { - "modified": "2019-03-23T23:42:00.157Z", + "Web/CSS/initial_value": { + "modified": "2019-01-16T15:32:31.295Z", "contributors": [ - "Sebastianz", - "jigs12", - "welm", "teoli", - "Jorolo" + "Mgjbot", + "Nathymig", + "HenryGR" ] }, - "Web/HTML/Elemento/blink": { - "modified": "2019-10-10T16:37:40.291Z", + "Web/API/HTMLElement/animationend_event": { + "modified": "2019-03-23T22:31:35.580Z", "contributors": [ - "teoli", - "jcr4" + "ExE-Boss", + "soncco" ] }, - "Web/HTML/Elemento/blockquote": { - "modified": "2019-03-23T23:42:29.095Z", + "Web/API/Window/beforeunload_event": { + "modified": "2019-04-30T14:05:00.135Z", "contributors": [ - "Sebastianz", - "jigs12", + "wbamberg", + "ExE-Boss", + "anasyusef", + "Bant89" + ] + }, + "Web/API/Element/blur_event": { + "modified": "2019-03-23T22:40:57.440Z", + "contributors": [ + "ExE-Boss", + "AlePerez92", + "fscholz", "teoli", - "Jorolo" + "javier-alba" + ] + }, + "Web/API/Window/DOMContentLoaded_event": { + "modified": "2019-09-06T00:37:43.389Z", + "contributors": [ + "wbamberg", + "jramcast", + "ExE-Boss", + "fscholz", + "AlexOfSoCal", + "jdmgarcia", + "daniville" ] }, - "Web/HTML/Elemento/body": { - "modified": "2020-10-15T22:34:39.725Z", + "Web/API/Window/load_event": { + "modified": "2019-04-30T13:43:52.776Z", "contributors": [ - "Nachec" + "wbamberg", + "ExE-Boss", + "AlePerez92" ] }, - "Web/HTML/Elemento/br": { - "modified": "2019-03-23T23:42:25.427Z", + "Web/API/XMLHttpRequest/loadend_event": { + "modified": "2019-03-23T22:09:49.071Z", "contributors": [ - "vanesa", - "abaracedo", - "jigs12", - "teoli", - "Jorolo" + "ExE-Boss", + "fscholz", + "darioperez" ] }, - "Web/HTML/Elemento/button": { - "modified": "2020-10-15T21:13:54.408Z", + "Web/API/Document/pointerlockchange_event": { + "modified": "2019-03-18T21:16:43.654Z", "contributors": [ - "MarielaBR", - "evaferreira", - "Sebastianz", - "jigs12", - "oece", - "teoli", - "ethertank", - "Jorolo" + "ExE-Boss", + "fscholz", + "arquigames" ] }, - "Web/HTML/Elemento/canvas": { - "modified": "2019-03-24T00:07:43.236Z", + "Web/API/HTMLElement/transitioncancel_event": { + "modified": "2019-04-30T14:14:15.478Z", "contributors": [ "wbamberg", - "evaferreira", - "teoli", - "inma_610", - "xaky" + "ExE-Boss", + "juan-ferrer-toribio" ] }, - "Web/HTML/Elemento/caption": { - "modified": "2019-03-23T23:42:13.711Z", + "Web/API/HTMLElement/transitionend_event": { + "modified": "2019-03-23T22:04:18.976Z", "contributors": [ - "camilai", - "Sebastianz", - "jigs12", - "teoli", - "Jorolo" + "ExE-Boss", + "fscholz", + "juan-ferrer-toribio" ] }, - "Web/HTML/Elemento/center": { - "modified": "2020-04-23T17:50:49.499Z", + "Web/Guide/AJAX/Community": { + "modified": "2019-03-23T23:41:30.919Z", "contributors": [ - "JAMC", - "blanchart", - "Sebastianz", + "chrisdavidmills", "teoli", "Jorolo" ] }, - "Web/HTML/Elemento/cite": { - "modified": "2019-03-23T23:42:34.535Z", + "Web/Guide/AJAX/Getting_Started": { + "modified": "2019-03-23T23:54:11.584Z", "contributors": [ - "Sebastianz", - "jigs12", - "teoli", - "Jorolo" + "padrecedano", + "chrisdavidmills", + "mili01gm", + "Mgjbot", + "Luis Hidalgo", + "Hegael", + "Tatan", + "Takenbot", + "Jorolo", + "Puxaalonso", + "Nukeador", + "Noctuido", + "Seres" ] }, - "Web/HTML/Elemento/code": { - "modified": "2019-03-23T23:41:28.451Z", + "Web/Guide/Events/Orientation_and_motion_data_explained": { + "modified": "2019-03-23T23:27:10.499Z", "contributors": [ - "BubuAnabelas", - "teoli", - "Jorolo" + "Sheppy", + "rubencidlara" ] }, - "Web/HTML/Elemento/col": { - "modified": "2019-03-23T23:42:14.518Z", + "Web/API/Vibration_API": { + "modified": "2019-03-23T23:03:32.169Z", "contributors": [ - "Sebastianz", - "jigs12", - "teoli", - "Jorolo" + "juancjara" ] }, - "Web/HTML/Elemento/colgroup": { - "modified": "2019-03-23T23:42:18.079Z", + "Web/CSS/Media_Queries/Testing_media_queries": { + "modified": "2019-03-23T23:07:40.812Z", "contributors": [ - "Sebastianz", - "jigs12", - "teoli", - "Jorolo" + "TibicenasDesign" ] }, - "Web/HTML/Elemento/command": { - "modified": "2019-10-05T04:48:52.506Z", + "Web/Guide/Events/Creating_and_triggering_events": { + "modified": "2019-03-23T22:58:27.867Z", "contributors": [ - "titox", - "jcr4" + "gAval997", + "juanpablocarrillo", + "BrunoViera", + "enreda", + "Soid" ] }, - "Web/HTML/Elemento/content": { - "modified": "2019-03-23T22:36:12.624Z", + "Web/Guide/Events/Event_handlers": { + "modified": "2020-08-01T23:47:25.815Z", "contributors": [ - "jcr4" + "Enesimus", + "alesalva" ] }, - "Web/HTML/Elemento/data": { - "modified": "2019-07-24T08:09:10.849Z", + "Web/Guide/Events": { + "modified": "2019-03-23T23:27:18.635Z", "contributors": [ - "SphinxKnight", - "mikecolina", - "raecillacastellana" + "Sheppy" ] }, - "Web/HTML/Elemento/datalist": { - "modified": "2020-10-15T21:13:43.994Z", + "Web/API/Canvas_API/Tutorial/Advanced_animations": { + "modified": "2019-03-23T22:11:01.831Z", "contributors": [ - "mfranzke", - "hernanarica", - "miguelgilmartinez", - "Luuis", - "SphinxKnight", - "teoli", - "translatoon", - "Izel" + "elagat" ] }, - "Web/HTML/Elemento/dd": { - "modified": "2020-10-15T21:18:43.107Z", + "Web/API/Canvas_API/Tutorial/Applying_styles_and_colors": { + "modified": "2020-05-15T18:35:37.655Z", "contributors": [ - "IsraelFloresDGA", - "jigs12", - "johnmejia", - "teoli", - "Jorolo" + "dimaio77" ] }, - "Web/HTML/Elemento/del": { - "modified": "2019-03-18T21:11:06.542Z", + "Web/API/Canvas_API/Tutorial/Basic_animations": { + "modified": "2019-10-10T16:52:52.102Z", "contributors": [ - "duduindo", + "Sergio_Gonzalez_Collado", + "lajaso", + "Huarseral" + ] + }, + "Web/API/Canvas_API/Tutorial/Basic_usage": { + "modified": "2020-04-24T15:40:04.067Z", + "contributors": [ + "Davidaz", + "mariogalan", "teoli", - "torresnicolas", - "Jorolo" + "guillermomartinmarco", + "eoasakura", + "mamigove" ] }, - "Web/HTML/Elemento/details": { - "modified": "2019-07-23T13:52:13.415Z", + "Web/API/Canvas_API/Tutorial/Drawing_shapes": { + "modified": "2019-03-23T23:15:03.361Z", "contributors": [ - "Krnan", - "jcr4" + "cepeami01", + "AlexisRC463", + "matiasrvergara", + "Blackangel1965", + "ErikMj69", + "alkaithil", + "faqndo", + "martinzaraterafael", + "gabriel15", + "Marezelej" ] }, - "Web/HTML/Elemento/dfn": { - "modified": "2019-03-18T21:11:06.323Z", + "Web/API/Canvas_API/Tutorial/Hit_regions_and_accessibility": { + "modified": "2019-03-18T21:31:01.983Z", "contributors": [ - "duduindo", - "teoli", - "Jorolo" + "cepeami01" ] }, - "Web/HTML/Elemento/dialog": { - "modified": "2020-10-15T21:43:09.315Z", + "Web/API/Canvas_API/Tutorial": { + "modified": "2019-03-23T23:18:23.090Z", "contributors": [ - "danielblazquez", - "abaracedo" + "fniwes", + "DeiberChacon", + "jeancgarciaq" ] }, - "Web/HTML/Elemento/dir": { - "modified": "2019-03-18T21:11:06.122Z", + "Web/API/Canvas_API/Tutorial/Optimizing_canvas": { + "modified": "2019-03-23T23:18:04.030Z", "contributors": [ - "duduindo", - "teoli", - "Jorolo" + "Cax" ] }, - "Web/HTML/Elemento/div": { - "modified": "2019-03-23T23:42:24.990Z", + "Web/API/Canvas_API/Tutorial/Pixel_manipulation_with_canvas": { + "modified": "2019-03-18T21:42:58.094Z", "contributors": [ - "Neto2412", - "Sebastianz", - "jigs12", - "teoli", - "Jorolo" + "Luis_Gentil", + "JulianSoto", + "anfuca" ] }, - "Web/HTML/Elemento/dl": { - "modified": "2020-10-15T21:18:47.033Z", + "Web/Guide/HTML/Content_categories": { + "modified": "2020-09-06T09:32:45.431Z", "contributors": [ - "iign", - "IsraelFloresDGA", - "jigs12", - "johnmejia", - "teoli", - "Jorolo" + "Nachec", + "BrayanAvian", + "raecillacastellana", + "eljonims", + "eliasrodeloso" ] }, - "Web/HTML/Elemento/dt": { - "modified": "2020-10-15T21:18:46.570Z", + "orphaned/Web/Guide/HTML/Introduction_alhtml_clone": { + "modified": "2019-03-23T23:11:36.473Z", "contributors": [ - "IsraelFloresDGA", - "jigs12", - "ander2", - "teoli", - "Jorolo" + "emanuelvega", + "Cristhoper" ] }, - "Web/HTML/Elemento/element": { - "modified": "2019-03-23T22:38:36.820Z", + "Web/Guide/Mobile": { + "modified": "2019-03-23T22:48:50.706Z", "contributors": [ - "raecillacastellana", - "kramery" + "miguelsp" ] }, - "Web/HTML/Elemento/em": { - "modified": "2019-03-23T23:41:24.943Z", + "Web/API/Web_Workers_API/Using_web_workers": { + "modified": "2020-09-27T14:14:17.948Z", "contributors": [ - "BubuAnabelas", - "teoli", - "Jorolo" + "hendaniel", + "arbesulo", + "zynt1102", + "albertovelazmoliner", + "luisdos", + "EricMoIr", + "hmorv", + "DeiberChacon", + "rsalgado", + "mvargasmoran" ] }, - "Web/HTML/Elemento/embed": { - "modified": "2019-03-24T00:07:02.501Z", + "Web/API/Canvas_API/Manipulating_video_using_canvas": { + "modified": "2019-03-24T00:07:00.528Z", "contributors": [ - "wbamberg", "teoli", "inma_610" ] }, - "Web/HTML/Elemento/fieldset": { - "modified": "2019-03-24T00:04:28.839Z", + "Web/HTML/Attributes/crossorigin": { + "modified": "2019-03-23T22:46:11.986Z", "contributors": [ - "dmarchena", - "Sebastianz", - "teoli", - "roperzh", - "ethertank", - "Klosma", - "Jorolo" + "eporta88", + "virlliNia", + "vltamara" + ] + }, + "Web/HTML/Global_attributes/accesskey": { + "modified": "2019-03-23T22:41:37.238Z", + "contributors": [ + "jcr4" ] }, - "Web/HTML/Elemento/figcaption": { - "modified": "2020-10-15T21:43:37.764Z", + "Web/HTML/Global_attributes/autocapitalize": { + "modified": "2020-10-15T22:12:15.178Z", "contributors": [ - "danieltacho", - "danielblazquez", - "BrayanAvian", - "pekechis" + "Nachec", + "carlosgocereceda", + "WilsonIsAliveClone", + "Raulpascual2" ] }, - "Web/HTML/Elemento/figure": { - "modified": "2019-03-24T00:07:44.105Z", + "Web/HTML/Global_attributes/class": { + "modified": "2019-03-23T22:41:38.505Z", "contributors": [ - "wbamberg", - "teoli", - "inma_610", - "translatoon" + "imangas", + "jcr4" ] }, - "Web/HTML/Elemento/font": { - "modified": "2019-03-23T23:42:25.753Z", + "Web/HTML/Global_attributes/contenteditable": { + "modified": "2019-03-23T22:41:31.507Z", "contributors": [ - "Sebastianz", - "jigs12", - "teoli", - "Jorolo" + "ManuAlvarado22", + "jcr4" ] }, - "Web/HTML/Elemento/footer": { - "modified": "2019-03-24T00:06:10.667Z", + "Web/HTML/Global_attributes/contextmenu": { + "modified": "2019-03-23T22:41:33.594Z", "contributors": [ - "teoli", - "translatoon" + "jcr4" ] }, - "Web/HTML/Elemento/form": { - "modified": "2019-03-23T23:38:31.636Z", + "Web/HTML/Global_attributes/data-*": { + "modified": "2019-06-27T12:32:36.980Z", "contributors": [ - "teoli", - "jesanchez", - "jsalinas" + "deyvirosado", + "jcr4" ] }, - "Web/HTML/Elemento/frame": { - "modified": "2019-03-23T23:42:33.478Z", + "Web/HTML/Global_attributes/dir": { + "modified": "2019-03-23T22:41:19.442Z", "contributors": [ - "Sebastianz", - "jigs12", - "teoli", - "Jorolo" + "jcr4" ] }, - "Web/HTML/Elemento/frameset": { - "modified": "2019-03-23T23:42:33.678Z", + "Web/HTML/Global_attributes/draggable": { + "modified": "2019-03-23T22:41:17.791Z", "contributors": [ - "Sebastianz", - "jigs12", - "teoli", - "Jorolo" + "JuanSerrano02", + "jcr4" ] }, - "Web/HTML/Elemento/head": { - "modified": "2019-03-23T23:41:19.487Z", + "orphaned/Web/HTML/Global_attributes/dropzone": { + "modified": "2019-03-23T22:41:19.266Z", "contributors": [ - "israel-munoz", - "teoli", - "Jorolo" + "JuanSerrano02", + "jcr4" ] }, - "Web/HTML/Elemento/header": { - "modified": "2019-09-22T13:38:40.530Z", + "Web/HTML/Global_attributes/hidden": { + "modified": "2019-03-23T22:41:18.690Z", "contributors": [ - "duduindo", - "erix2016", - "wbamberg", - "teoli", - "trevorh", - "deimidis", - "translatoon" + "jcr4" ] }, - "Web/HTML/Elemento/hgroup": { - "modified": "2020-04-16T18:54:49.840Z", + "Web/HTML/Global_attributes/id": { + "modified": "2019-03-23T22:45:39.709Z", "contributors": [ - "camsa", - "wbamberg", - "eazel7", - "harthe13", - "teoli", - "ccarruitero", - "percy@mozilla.pe" + "vanesa", + "DavidZabaleta", + "eoasakura" ] }, - "Web/HTML/Elemento/hr": { - "modified": "2019-03-23T23:41:46.133Z", + "Web/HTML/Global_attributes": { + "modified": "2020-10-15T21:39:25.776Z", "contributors": [ - "wissol", - "gabrielvol", - "jigs12", - "teoli", - "welm", - "Jorolo" + "Nachec", + "PacoVela", + "imangas", + "vltamara" ] }, - "Web/HTML/Elemento/html": { - "modified": "2019-03-23T23:41:20.478Z", + "Web/HTML/Global_attributes/is": { + "modified": "2020-10-15T22:04:27.264Z", "contributors": [ - "raecillacastellana", - "arturoblack", - "teoli", - "Jorolo" + "daniel.duarte" ] }, - "Web/HTML/Elemento/i": { - "modified": "2019-03-18T21:11:05.917Z", + "Web/HTML/Global_attributes/itemid": { + "modified": "2019-03-23T22:37:36.858Z", "contributors": [ - "duduindo", - "teoli", - "Jorolo" + "pekechis" ] }, - "Web/HTML/Elemento/iframe": { - "modified": "2020-10-15T21:20:22.917Z", + "Web/HTML/Global_attributes/itemprop": { + "modified": "2019-03-23T22:41:15.543Z", "contributors": [ - "mirinnes", - "nadya.serrano", - "danielblazquez", - "duduindo", - "wbamberg", - "antoiba86", - "jhonnycano@hotmail.com", - "teoli", - "aguztinrs" + "rhssr", + "jcr4" ] }, - "Web/HTML/Elemento/image": { - "modified": "2019-03-23T22:38:59.070Z", + "Web/HTML/Global_attributes/itemref": { + "modified": "2019-03-23T22:36:41.055Z", "contributors": [ "jcr4" ] }, - "Web/HTML/Elemento/img": { - "modified": "2020-07-12T20:16:35.983Z", + "Web/HTML/Global_attributes/itemscope": { + "modified": "2020-10-15T21:41:28.202Z", "contributors": [ - "maodecolombia", - "thzunder", - "teoli", - "makoescalzo" + "JuanSerrano02", + "chrisvpr", + "jcr4" ] }, - "Web/HTML/Elemento/input": { - "modified": "2020-07-14T01:15:57.719Z", + "Web/HTML/Global_attributes/lang": { + "modified": "2019-03-23T22:41:11.276Z", "contributors": [ - "maodecolombia", - "KacosPro", - "moisesalmonte", - "israel-munoz", - "Alejandra.B", - "garciaFullana", - "j-light", - "chech", - "dennistobar", - "welm", - "Johsua", - "byverdu", - "chipsweb", - "teoli", - "ovnicraft" + "agonzalezml", + "jcr4" ] }, - "Web/HTML/Elemento/input/Botón": { - "modified": "2019-04-18T16:11:40.984Z", + "Web/HTML/Global_attributes/slot": { + "modified": "2020-10-15T22:04:16.315Z", "contributors": [ - "IsaacAaron", - "joelarmad", - "LexAenima" + "daniel.duarte" ] }, - "Web/HTML/Elemento/input/checkbox": { - "modified": "2019-05-13T05:40:59.628Z", + "Web/HTML/Global_attributes/spellcheck": { + "modified": "2019-03-23T22:41:06.455Z", "contributors": [ - "AlePerez92", - "BetsabethTorrres", - "j-light", - "FranRomero", - "JoseEnrique" + "jcr4" ] }, - "Web/HTML/Elemento/input/color": { - "modified": "2019-03-23T22:37:43.300Z", + "Web/HTML/Global_attributes/style": { + "modified": "2019-03-23T22:41:09.210Z", "contributors": [ - "fitojb", - "Alesan7" + "jcr4" ] }, - "Web/HTML/Elemento/input/date": { - "modified": "2019-10-10T16:45:44.142Z", + "Web/HTML/Global_attributes/tabindex": { + "modified": "2019-07-12T03:22:15.997Z", "contributors": [ - "ANAIDJM1", - "fitojb" + "ChrisMHM", + "bamvoo", + "cabetancourtc", + "StripTM", + "jcr4" ] }, - "Web/HTML/Elemento/input/datetime": { - "modified": "2019-03-23T22:36:20.508Z", + "Web/HTML/Global_attributes/title": { + "modified": "2019-03-23T22:40:44.282Z", "contributors": [ - "AngelMunoz", "jcr4" ] }, - "Web/HTML/Elemento/input/email": { - "modified": "2020-10-15T22:11:48.198Z", + "Web/HTML/Global_attributes/translate": { + "modified": "2019-03-23T22:40:27.406Z", "contributors": [ - "Nachec", - "facuarmo", - "MarielaBR" + "jcr4" ] }, - "Web/HTML/Elemento/input/hidden": { - "modified": "2020-10-15T22:10:33.714Z", + "Web/HTML/Global_attributes/x-ms-acceleratorkey": { + "modified": "2019-03-18T21:20:44.665Z", "contributors": [ - "IsraelFloresDGA" + "WriestTavo" ] }, - "Web/HTML/Elemento/input/number": { - "modified": "2020-10-15T22:26:16.273Z", + "Web/HTML/Attributes/accept": { + "modified": "2020-10-15T22:34:00.656Z", "contributors": [ - "roocce" + "Nachec" ] }, - "Web/HTML/Elemento/input/password": { - "modified": "2019-03-23T22:38:38.107Z", + "Web/HTML/Attributes/autocomplete": { + "modified": "2019-04-06T00:39:59.162Z", "contributors": [ - "MarielaBR", - "xxx41", - "AlvaroNieto" + "qmarquez", + "Raulpascual2" ] }, - "Web/HTML/Elemento/input/range": { - "modified": "2019-03-18T20:57:13.760Z", + "Web/HTML/Attributes": { + "modified": "2019-03-23T23:21:50.772Z", "contributors": [ - "SphinxKnight", - "KikeSan", - "Luis_Calvo" + "raecillacastellana", + "Cdam", + "vltamara", + "Shinigami-sama", + "welm", + "noografo", + "Benito", + "LeoHirsch", + "sha" ] }, - "Web/HTML/Elemento/input/text": { - "modified": "2020-10-15T22:34:26.828Z", + "Web/HTML/Attributes/min": { + "modified": "2020-10-15T22:33:58.169Z", "contributors": [ "Nachec" ] }, - "Web/HTML/Elemento/ins": { - "modified": "2019-07-06T05:38:19.222Z", + "Web/HTML/Attributes/minlength": { + "modified": "2020-10-15T22:33:56.870Z", "contributors": [ - "baumannzone", - "duduindo", - "welm", - "teoli", - "torresnicolas", - "Jorolo" + "Nachec" ] }, - "Web/HTML/Elemento/isindex": { - "modified": "2019-03-23T22:36:13.994Z", + "Web/HTML/Attributes/multiple": { + "modified": "2020-09-08T01:48:55.405Z", "contributors": [ - "jcr4" + "Nachec" ] }, - "Web/HTML/Elemento/kbd": { - "modified": "2019-03-18T21:11:05.093Z", + "Web/API/Canvas_API/A_basic_ray-caster": { + "modified": "2019-03-19T08:57:21.057Z", "contributors": [ - "duduindo", - "welm", + "AzazelN28", + "Fandres91", + "dkocho4", + "preteric" + ] + }, + "Web/API/Canvas_API": { + "modified": "2019-10-10T16:45:32.554Z", + "contributors": [ + "lajaso", + "jagomf", "teoli", - "Jorolo" + "ethertank", + "jesusmercado", + "dextra", + "beto21", + "inma_610", + "RickieesES", + "Pgulijczuk", + "kourt_xand", + "Fifthtoe", + "Mgjbot" ] }, - "Web/HTML/Elemento/keygen": { - "modified": "2019-03-24T00:06:20.618Z", + "Learn/HTML/Howto/Author_fast-loading_HTML_pages": { + "modified": "2020-07-16T22:22:32.156Z", "contributors": [ - "wbamberg", - "teoli", - "deimidis" + "ZKoaLa", + "nazhaj", + "JuanC_01" ] }, - "Web/HTML/Elemento/label": { - "modified": "2019-03-23T23:22:26.460Z", + "Web/HTML/Element/a": { + "modified": "2020-12-02T02:55:47.706Z", "contributors": [ - "ardillan", - "gcejas", + "SphinxKnight", + "xtrs84zk", + "HectorFranco", + "sergio_p_d", + "julioematasv", + "ManuelSLemos", + "raecillacastellana", "teoli", - "WillyMaikowski" + "Nukeador", + "RickieesES", + "HenryGR", + "Mgjbot" ] }, - "Web/HTML/Elemento/legend": { - "modified": "2019-06-05T17:18:09.680Z", + "Web/HTML/Element/abbr": { + "modified": "2019-03-23T23:41:48.686Z", "contributors": [ - "Ivnosing", - "Sebastianz", - "saski", + "vanesa", + "abaracedo", + "jigs12", + "welm", "teoli", - "Klosma", "Jorolo" ] }, - "Web/HTML/Elemento/li": { - "modified": "2019-03-18T21:11:04.870Z", + "Web/HTML/Element/acronym": { + "modified": "2019-03-23T23:41:54.391Z", "contributors": [ - "duduindo", - "chepegeek", + "Sebastianz", + "jigs12", "teoli", "Jorolo" ] }, - "Web/HTML/Elemento/link": { - "modified": "2019-03-23T23:41:37.686Z", + "Web/HTML/Element/address": { + "modified": "2019-03-23T23:41:48.972Z", "contributors": [ - "pawer13", - "israel-munoz", - "Sebastianz", + "abaracedo", "jigs12", "teoli", "Jorolo" ] }, - "Web/HTML/Elemento/main": { - "modified": "2019-03-23T23:25:22.761Z", + "Web/HTML/Element/applet": { + "modified": "2019-03-23T23:42:26.076Z", "contributors": [ - "evaferreira", - "jesusbotella", + "Sebastianz", "teoli", - "jsalinas" + "Jorolo" ] }, - "Web/HTML/Elemento/map": { - "modified": "2019-03-23T23:41:43.985Z", + "Web/HTML/Element/area": { + "modified": "2019-03-23T23:41:50.345Z", "contributors": [ "Sebastianz", "jigs12", @@ -16693,80 +17022,58 @@ "Jorolo" ] }, - "Web/HTML/Elemento/mark": { - "modified": "2020-10-15T21:04:57.447Z", + "Web/HTML/Element/article": { + "modified": "2020-04-14T03:59:04.779Z", "contributors": [ - "danielblazquez", - "feliperomero3", + "Jx1ls", "wbamberg", "teoli", - "Flerex", - "hugohabel", - "inma_610", - "translatoon" + "deimidis" ] }, - "Web/HTML/Elemento/marquee": { - "modified": "2019-03-18T20:57:46.110Z", + "Web/HTML/Element/aside": { + "modified": "2019-05-13T08:38:38.128Z", "contributors": [ - "gabriell24", - "erix2016", - "alexander171294" + "blanchart", + "wbamberg", + "teoli", + "trevorh", + "ccarruitero", + "inma_610" ] }, - "Web/HTML/Elemento/menu": { - "modified": "2019-03-18T21:11:04.661Z", + "Web/HTML/Element/audio": { + "modified": "2019-03-24T00:17:32.335Z", "contributors": [ - "duduindo", + "wbamberg", "teoli", - "Jorolo" + "tregagnon", + "RickieesES", + "inma_610" ] }, - "Web/HTML/Elemento/meta": { - "modified": "2019-03-23T23:42:35.250Z", + "Web/HTML/Element/b": { + "modified": "2019-03-23T23:41:59.385Z", "contributors": [ + "gabrielvol", "Sebastianz", - "feardarkness", "jigs12", "teoli", "Jorolo" ] }, - "Web/HTML/Elemento/multicol": { - "modified": "2019-03-23T22:36:14.458Z", - "contributors": [ - "jcr4" - ] - }, - "Web/HTML/Elemento/nav": { - "modified": "2020-12-08T21:27:47.077Z", - "contributors": [ - "benito-san", - "DagoGuevara", - "driconmax", - "teoli", - "martinbarce", - "makoescalzo" - ] - }, - "Web/HTML/Elemento/nobr": { - "modified": "2019-03-18T21:35:49.711Z", - "contributors": [ - "rhssr", - "Mexicotec" - ] - }, - "Web/HTML/Elemento/noframes": { - "modified": "2019-03-23T23:42:28.640Z", + "Web/HTML/Element/base": { + "modified": "2019-03-23T23:41:55.648Z", "contributors": [ + "raecillacastellana", "Sebastianz", "jigs12", "teoli", "Jorolo" ] }, - "Web/HTML/Elemento/noscript": { - "modified": "2019-03-23T23:42:26.569Z", + "Web/HTML/Element/basefont": { + "modified": "2019-03-23T23:42:33.059Z", "contributors": [ "Sebastianz", "jigs12", @@ -16774,182 +17081,115 @@ "Jorolo" ] }, - "Web/HTML/Elemento/object": { - "modified": "2020-10-15T22:22:23.263Z", + "Web/HTML/Element/bdi": { + "modified": "2019-03-23T22:37:44.087Z", "contributors": [ - "siregalado", - "iarah" + "pekechis", + "teoli" ] }, - "Web/HTML/Elemento/ol": { - "modified": "2020-02-03T21:28:29.355Z", + "Web/HTML/Element/bdo": { + "modified": "2019-03-23T23:41:59.174Z", "contributors": [ - "kevinar53", - "duduindo", + "Sebastianz", + "jigs12", "teoli", "Jorolo" ] }, - "Web/HTML/Elemento/option": { - "modified": "2019-03-23T22:38:56.017Z", - "contributors": [ - "pekechis" - ] - }, - "Web/HTML/Elemento/p": { - "modified": "2019-03-23T23:41:31.103Z", + "Web/HTML/Element/bgsound": { + "modified": "2019-10-10T16:35:21.119Z", "contributors": [ - "Sebastianz", - "jigs12", - "teoli", - "Jorolo" + "jcr4" ] }, - "Web/HTML/Elemento/param": { - "modified": "2019-03-23T23:42:31.653Z", + "Web/HTML/Element/big": { + "modified": "2019-03-23T23:42:00.157Z", "contributors": [ "Sebastianz", "jigs12", + "welm", "teoli", "Jorolo" ] }, - "Web/HTML/Elemento/picture": { - "modified": "2019-07-20T20:15:37.196Z", - "contributors": [ - "DagoGuevara", - "JulianSoto", - "alexlndn", - "danieltacho", - "IsraelFloresDGA", - "diegos2" - ] - }, - "Web/HTML/Elemento/pre": { - "modified": "2019-03-18T21:11:04.209Z", + "Web/HTML/Element/blink": { + "modified": "2019-10-10T16:37:40.291Z", "contributors": [ - "duduindo", "teoli", - "_0x" + "jcr4" ] }, - "Web/HTML/Elemento/progress": { - "modified": "2020-10-15T21:22:45.390Z", + "Web/HTML/Element/blockquote": { + "modified": "2019-03-23T23:42:29.095Z", "contributors": [ - "SphinxKnight", - "androsfenollosa", - "wbamberg", + "Sebastianz", + "jigs12", "teoli", - "rubencidlara" + "Jorolo" ] }, - "Web/HTML/Elemento/q": { - "modified": "2020-10-15T22:34:03.995Z", + "Web/HTML/Element/body": { + "modified": "2020-10-15T22:34:39.725Z", "contributors": [ "Nachec" ] }, - "Web/HTML/Elemento/s": { - "modified": "2019-03-18T21:11:03.985Z", + "Web/HTML/Element/br": { + "modified": "2019-03-23T23:42:25.427Z", "contributors": [ - "duduindo", + "vanesa", + "abaracedo", + "jigs12", "teoli", "Jorolo" ] }, - "Web/HTML/Elemento/samp": { - "modified": "2019-10-11T12:30:51.315Z", + "Web/HTML/Element/button": { + "modified": "2020-10-15T21:13:54.408Z", "contributors": [ - "danielblazquez", - "duduindo", - "Johsua", + "MarielaBR", + "evaferreira", + "Sebastianz", + "jigs12", + "oece", "teoli", + "ethertank", "Jorolo" ] }, - "Web/HTML/Elemento/script": { - "modified": "2019-03-23T22:38:36.106Z", - "contributors": [ - "ignasivs", - "raecillacastellana", - "ivandevp", - "alexander171294" - ] - }, - "Web/HTML/Elemento/section": { - "modified": "2020-07-15T11:06:51.948Z", + "Web/HTML/Element/canvas": { + "modified": "2019-03-24T00:07:43.236Z", "contributors": [ - "timetrvlr", "wbamberg", - "diegocanal", - "eljonims", - "teoli", - "ccarruitero", - "artopal" - ] - }, - "Web/HTML/Elemento/select": { - "modified": "2019-03-23T22:38:39.246Z", - "contributors": [ - "Fx-Enlcxx", - "AleV" - ] - }, - "Web/HTML/Elemento/slot": { - "modified": "2020-10-15T22:05:53.326Z", - "contributors": [ - "aguilerajl", - "Carlos-T", - "rhssr" - ] - }, - "Web/HTML/Elemento/small": { - "modified": "2019-04-04T15:23:46.402Z", - "contributors": [ - "danieltacho", - "drakzig", - "SphinxKnight", - "carloque", - "teoli", - "Jorolo" - ] - }, - "Web/HTML/Elemento/source": { - "modified": "2020-10-15T21:13:44.488Z", - "contributors": [ - "guillermomartinmarco", + "evaferreira", "teoli", - "inma_610" + "inma_610", + "xaky" ] }, - "Web/HTML/Elemento/span": { - "modified": "2019-03-24T00:17:34.814Z", + "Web/HTML/Element/caption": { + "modified": "2019-03-23T23:42:13.711Z", "contributors": [ + "camilai", "Sebastianz", "jigs12", "teoli", - "torresnicolas", - "Jorolo" - ] - }, - "Web/HTML/Elemento/strike": { - "modified": "2019-03-18T21:11:03.623Z", - "contributors": [ - "duduindo", - "teoli", "Jorolo" ] }, - "Web/HTML/Elemento/strong": { - "modified": "2019-03-18T21:11:02.931Z", + "Web/HTML/Element/center": { + "modified": "2020-04-23T17:50:49.499Z", "contributors": [ - "duduindo", + "JAMC", + "blanchart", + "Sebastianz", "teoli", "Jorolo" ] }, - "Web/HTML/Elemento/style": { - "modified": "2019-03-23T23:42:38.349Z", + "Web/HTML/Element/cite": { + "modified": "2019-03-23T23:42:34.535Z", "contributors": [ "Sebastianz", "jigs12", @@ -16957,1125 +17197,1164 @@ "Jorolo" ] }, - "Web/HTML/Elemento/sub": { - "modified": "2020-10-15T21:18:49.449Z", + "Web/HTML/Element/code": { + "modified": "2019-03-23T23:41:28.451Z", "contributors": [ - "IsaacAaron", - "carloque", + "BubuAnabelas", "teoli", "Jorolo" ] }, - "Web/HTML/Elemento/sup": { - "modified": "2020-10-15T21:18:45.044Z", + "Web/HTML/Element/col": { + "modified": "2019-03-23T23:42:14.518Z", "contributors": [ - "IsaacAaron", - "carloque", + "Sebastianz", + "jigs12", "teoli", "Jorolo" ] }, - "Web/HTML/Elemento/table": { - "modified": "2019-09-03T15:32:58.837Z", + "Web/HTML/Element/colgroup": { + "modified": "2019-03-23T23:42:18.079Z", "contributors": [ + "Sebastianz", + "jigs12", "teoli", - "jesanchez", - "cortega", - "tany" + "Jorolo" ] }, - "Web/HTML/Elemento/td": { - "modified": "2019-03-23T22:38:37.555Z", + "orphaned/Web/HTML/Element/command": { + "modified": "2019-10-05T04:48:52.506Z", "contributors": [ - "Kerinoxio", - "Zarkiel", - "raecillacastellana", - "tolano97" + "titox", + "jcr4" ] }, - "Web/HTML/Elemento/template": { - "modified": "2020-10-15T21:52:05.945Z", + "Web/HTML/Element/content": { + "modified": "2019-03-23T22:36:12.624Z", "contributors": [ - "aguilerajl", - "ArtistNeverStop", - "Diego674", - "AlePerez92" + "jcr4" ] }, - "Web/HTML/Elemento/textarea": { - "modified": "2020-10-15T21:43:13.029Z", + "Web/HTML/Element/data": { + "modified": "2019-07-24T08:09:10.849Z", "contributors": [ - "camsa", - "fscholz", - "pekechis" + "SphinxKnight", + "mikecolina", + "raecillacastellana" ] }, - "Web/HTML/Elemento/th": { - "modified": "2020-04-22T05:00:45.306Z", + "Web/HTML/Element/datalist": { + "modified": "2020-10-15T21:13:43.994Z", "contributors": [ - "blanchart", - "AgustinDPino", - "IXTRUnai", - "sapales" + "mfranzke", + "hernanarica", + "miguelgilmartinez", + "Luuis", + "SphinxKnight", + "teoli", + "translatoon", + "Izel" ] }, - "Web/HTML/Elemento/time": { - "modified": "2020-10-15T21:18:39.499Z", + "Web/HTML/Element/dd": { + "modified": "2020-10-15T21:18:43.107Z", "contributors": [ - "pardo-bsso", - "blanchart", "IsraelFloresDGA", - "dsolism", - "mauriciabad", + "jigs12", + "johnmejia", "teoli", - "sebasmagri", - "makoescalzo" + "Jorolo" ] }, - "Web/HTML/Elemento/title": { - "modified": "2019-10-10T16:32:45.843Z", + "Web/HTML/Element/del": { + "modified": "2019-03-18T21:11:06.542Z", "contributors": [ "duduindo", "teoli", + "torresnicolas", "Jorolo" ] }, - "Web/HTML/Elemento/tr": { - "modified": "2019-03-23T22:38:35.421Z", - "contributors": [ - "raecillacastellana", - "FelipeGL" - ] - }, - "Web/HTML/Elemento/track": { - "modified": "2020-10-15T22:33:21.321Z", + "Web/HTML/Element/details": { + "modified": "2019-07-23T13:52:13.415Z", "contributors": [ - "Pablo-No" + "Krnan", + "jcr4" ] }, - "Web/HTML/Elemento/tt": { - "modified": "2019-03-18T21:11:03.301Z", + "Web/HTML/Element/dfn": { + "modified": "2019-03-18T21:11:06.323Z", "contributors": [ "duduindo", "teoli", "Jorolo" ] }, - "Web/HTML/Elemento/u": { - "modified": "2019-03-18T21:11:03.114Z", + "Web/HTML/Element/dialog": { + "modified": "2020-10-15T21:43:09.315Z", + "contributors": [ + "danielblazquez", + "abaracedo" + ] + }, + "Web/HTML/Element/dir": { + "modified": "2019-03-18T21:11:06.122Z", "contributors": [ "duduindo", "teoli", "Jorolo" ] }, - "Web/HTML/Elemento/ul": { - "modified": "2019-03-23T23:42:39.154Z", + "Web/HTML/Element/div": { + "modified": "2019-03-23T23:42:24.990Z", "contributors": [ + "Neto2412", "Sebastianz", "jigs12", "teoli", "Jorolo" ] }, - "Web/HTML/Elemento/var": { - "modified": "2019-03-23T23:41:16.113Z", + "Web/HTML/Element/dl": { + "modified": "2020-10-15T21:18:47.033Z", "contributors": [ - "BubuAnabelas", + "iign", + "IsraelFloresDGA", + "jigs12", + "johnmejia", "teoli", "Jorolo" ] }, - "Web/HTML/Elemento/video": { - "modified": "2019-03-24T00:06:49.642Z", + "Web/HTML/Element/dt": { + "modified": "2020-10-15T21:18:46.570Z", "contributors": [ - "wbamberg", - "untilbit", - "AlePerez92", + "IsraelFloresDGA", + "jigs12", + "ander2", "teoli", - "inma_610", - "Izel" + "Jorolo" ] }, - "Web/HTML/Elemento/wbr": { - "modified": "2019-04-26T19:10:14.131Z", + "orphaned/Web/HTML/Element/element": { + "modified": "2019-03-23T22:38:36.820Z", "contributors": [ - "reymundus2", - "jcr4" + "raecillacastellana", + "kramery" ] }, - "Web/HTML/Elemento/xmp": { - "modified": "2019-03-23T22:38:49.554Z", + "Web/HTML/Element/Heading_Elements": { + "modified": "2019-03-23T23:41:24.635Z", "contributors": [ - "jcr4" + "evaferreira", + "chrisdavidmills", + "israel-munoz", + "teoli", + "Jorolo" ] }, - "Web/HTML/Elementos_en_línea": { - "modified": "2019-03-23T22:46:15.359Z", + "Web/HTML/Element/em": { + "modified": "2019-03-23T23:41:24.943Z", "contributors": [ - "juanbrujo", - "raecillacastellana", - "vltamara" + "BubuAnabelas", + "teoli", + "Jorolo" ] }, - "Web/HTML/Formatos_admitidos_de_audio_y_video_en_html5": { - "modified": "2019-03-23T23:26:59.594Z", + "Web/HTML/Element/embed": { + "modified": "2019-03-24T00:07:02.501Z", "contributors": [ "wbamberg", - "vltamara", "teoli", - "nekside" + "inma_610" ] }, - "Web/HTML/Imagen_con_CORS_habilitado": { - "modified": "2019-03-23T22:46:06.691Z", + "orphaned/Web/HTML/Elemento/Etiqueta_Personalizada_HTML5": { + "modified": "2019-03-23T22:40:57.260Z", "contributors": [ - "MrCesar107", - "antoiba86", - "vltamara" + "Lazaro" ] }, - "Web/HTML/La_importancia_de_comentar_correctamente": { - "modified": "2019-03-23T23:53:31.079Z", + "Web/HTML/Element/fieldset": { + "modified": "2019-03-24T00:04:28.839Z", "contributors": [ + "dmarchena", + "Sebastianz", "teoli", - "Mgjbot", + "roperzh", + "ethertank", + "Klosma", "Jorolo" ] }, - "Web/HTML/Microdatos": { - "modified": "2019-03-23T22:12:50.480Z", - "contributors": [ - "fitojb" - ] - }, - "Web/HTML/Optimizing_your_pages_for_speculative_parsing": { - "modified": "2019-03-23T23:15:52.979Z", - "contributors": [ - "jsapiains", - "joeljose", - "vltamara", - "manufosela", - "Montherdez" - ] - }, - "Web/HTML/Quirks_Mode_and_Standards_Mode": { - "modified": "2019-03-23T22:00:35.023Z", + "Web/HTML/Element/figcaption": { + "modified": "2020-10-15T21:43:37.764Z", "contributors": [ - "chrisdavidmills", - "alvaromontoro", - "mamptecnocrata", - "ungatoquecomesushi" + "danieltacho", + "danielblazquez", + "BrayanAvian", + "pekechis" ] }, - "Web/HTML/Recursos_offline_en_firefox": { - "modified": "2019-03-19T07:43:37.221Z", + "Web/HTML/Element/figure": { + "modified": "2019-03-24T00:07:44.105Z", "contributors": [ - "pixelmin", - "dmoralesm", + "wbamberg", "teoli", - "vltamara", - "CodeMaxter", - "LuisArt", - "FCuchietti", - "MPoli", - "hugohabel", - "RickieesES", "inma_610", - "Izel" - ] - }, - "Web/HTML/Referencia": { - "modified": "2019-09-09T07:16:42.154Z", - "contributors": [ - "SphinxKnight", - "wbamberg", - "raecillacastellana", - "cosmesantos", - "vltamara", - "MegaChrono" - ] - }, - "Web/HTML/Tipos_de_enlaces": { - "modified": "2019-03-23T22:46:17.969Z", - "contributors": [ - "cmmp0112", - "_delta_", - "moisesalmonte", - "alvaromontoro", - "ivansx", - "vltamara" - ] - }, - "Web/HTML/Transision_adaptativa_DASH": { - "modified": "2019-03-23T22:46:14.015Z", - "contributors": [ - "AzazelN28", - "vltamara" + "translatoon" ] }, - "Web/HTML/Usando_audio_y_video_con_HTML5": { - "modified": "2019-10-10T16:52:54.661Z", + "Web/HTML/Element/font": { + "modified": "2019-03-23T23:42:25.753Z", "contributors": [ - "ElNobDeTfm", - "estebanz01", - "hedmon", - "blanchart", + "Sebastianz", + "jigs12", "teoli", - "ciroid", - "cesar_ortiz_elPatox", - "StripTM", - "AngelFQC" + "Jorolo" ] }, - "Web/HTML/anipular_video_por_medio_de_canvas": { - "modified": "2019-03-24T00:07:00.528Z", + "Web/HTML/Element/footer": { + "modified": "2019-03-24T00:06:10.667Z", "contributors": [ "teoli", - "inma_610" - ] - }, - "Web/HTML/microformatos": { - "modified": "2019-03-23T22:46:15.016Z", - "contributors": [ - "vltamara" + "translatoon" ] }, - "Web/HTML/Índice": { - "modified": "2019-01-16T22:12:02.767Z", + "Web/HTML/Element/form": { + "modified": "2019-03-23T23:38:31.636Z", "contributors": [ - "raecillacastellana", - "pekechis" + "teoli", + "jesanchez", + "jsalinas" ] }, - "Web/HTTP": { - "modified": "2019-03-18T20:34:58.542Z", + "Web/HTML/Element/frame": { + "modified": "2019-03-23T23:42:33.478Z", "contributors": [ - "IsraelFloresDGA", - "MarioECU", - "locolauty97", - "Sergio_Gonzalez_Collado", - "Ferrmolina", - "raecillacastellana", - "migdonio1", - "Erto", - "teoli" + "Sebastianz", + "jigs12", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Access_control_CORS": { - "modified": "2020-08-10T16:23:20.546Z", + "Web/HTML/Element/frameset": { + "modified": "2019-03-23T23:42:33.678Z", "contributors": [ - "wbamberg", - "afelopez", - "jbarcas", - "cefaloide", - "alcastic", - "franklevel", - "JuanMacias", - "psyban", - "manatico4", - "signados", - "Ricardolau", - "afbayonac", - "aurigadl", - "dcruz", - "Manhru", - "maedca" + "Sebastianz", + "jigs12", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Authentication": { - "modified": "2019-10-24T13:52:25.126Z", + "Web/HTML/Element/head": { + "modified": "2019-03-23T23:41:19.487Z", "contributors": [ - "bood-dev", - "Gochip", - "fcanellas", - "diegorec", - "kraneok", - "JuanMacias", - "_deiberchacon", - "DavidPeniafiel" + "israel-munoz", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Basics_of_HTTP": { - "modified": "2020-04-20T02:59:31.392Z", + "Web/HTML/Element/header": { + "modified": "2019-09-22T13:38:40.530Z", "contributors": [ - "obed3113", - "sanxofon", - "Sergio_Gonzalez_Collado", - "cissoid" + "duduindo", + "erix2016", + "wbamberg", + "teoli", + "trevorh", + "deimidis", + "translatoon" ] }, - "Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs": { - "modified": "2019-03-18T21:22:07.450Z", + "Web/HTML/Element/hgroup": { + "modified": "2020-04-16T18:54:49.840Z", "contributors": [ - "Adorta4", - "carlosgocereceda" + "camsa", + "wbamberg", + "eazel7", + "harthe13", + "teoli", + "ccarruitero", + "percy@mozilla.pe" ] }, - "Web/HTTP/Basics_of_HTTP/Datos_URIs": { - "modified": "2019-03-23T22:24:54.977Z", + "Web/HTML/Element/hr": { + "modified": "2019-03-23T23:41:46.133Z", "contributors": [ - "Sergio_Gonzalez_Collado", - "AzazelN28", - "uclides" + "wissol", + "gabrielvol", + "jigs12", + "teoli", + "welm", + "Jorolo" ] }, - "Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP": { - "modified": "2019-03-23T22:10:11.567Z", + "Web/HTML/Element/html": { + "modified": "2019-03-23T23:41:20.478Z", "contributors": [ - "Sergio_Gonzalez_Collado", - "ChrisMHM" + "raecillacastellana", + "arturoblack", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Basics_of_HTTP/Identificación_recursos_en_la_Web": { - "modified": "2019-03-23T22:24:51.387Z", + "Web/HTML/Element/i": { + "modified": "2019-03-18T21:11:05.917Z", "contributors": [ - "DaniNz", - "Sergio_Gonzalez_Collado", - "ChrisMHM", - "uclides" + "duduindo", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Basics_of_HTTP/MIME_types": { - "modified": "2019-11-18T08:03:54.325Z", + "Web/HTML/Element/iframe": { + "modified": "2020-10-15T21:20:22.917Z", "contributors": [ - "IsaacAaron", - "sanxofon", - "Sergio_Gonzalez_Collado", - "kevinmont", - "juanrarodriguez18", - "strattadb" + "mirinnes", + "nadya.serrano", + "danielblazquez", + "duduindo", + "wbamberg", + "antoiba86", + "jhonnycano@hotmail.com", + "teoli", + "aguztinrs" ] }, - "Web/HTTP/Basics_of_HTTP/MIME_types/Common_types": { - "modified": "2020-02-28T13:10:45.613Z", + "Web/HTML/Element/image": { + "modified": "2019-03-23T22:38:59.070Z", "contributors": [ - "chrisdavidmills", - "sanxofon", - "franklevel", - "gabrielnoe" + "jcr4" ] }, - "Web/HTTP/CORS/Errors": { - "modified": "2019-03-18T21:26:43.815Z", + "Web/HTML/Element/img": { + "modified": "2020-07-12T20:16:35.983Z", "contributors": [ - "nchevobbe" + "maodecolombia", + "thzunder", + "teoli", + "makoescalzo" ] }, - "Web/HTTP/CORS/Errors/CORSDidNotSucceed": { - "modified": "2020-03-20T09:22:59.137Z", + "Web/HTML/Element": { + "modified": "2020-07-13T03:12:39.708Z", "contributors": [ - "javier.camus", - "rotcl", - "MarianoRDZ" + "Enesimus", + "IsraelFloresDGA", + "ivanhelo", + "gabriel-ar", + "raecillacastellana", + "imangas", + "jccancelo", + "vltamara", + "teoli", + "LinoJaime", + "Rkovac", + "betoscopio", + "semptrion", + "StripTM", + "deimidis", + "Mgjbot", + "Klosma", + "Jorolo" ] }, - "Web/HTTP/CORS/Errors/CORSMissingAllowOrigin": { - "modified": "2020-03-10T05:27:13.697Z", + "Web/HTML/Element/input/button": { + "modified": "2019-04-18T16:11:40.984Z", "contributors": [ - "HermosinNunez", - "danhiel98", - "pyumbillo", - "rewin23" + "IsaacAaron", + "joelarmad", + "LexAenima" ] }, - "Web/HTTP/CORS/Errors/CORSNotSupportingCredentials": { - "modified": "2020-03-25T19:41:08.379Z", + "Web/HTML/Element/input/checkbox": { + "modified": "2019-05-13T05:40:59.628Z", "contributors": [ - "pablogalvezfotografiadeportiva" + "AlePerez92", + "BetsabethTorrres", + "j-light", + "FranRomero", + "JoseEnrique" ] }, - "Web/HTTP/CORS/Errors/CORSPreflightDidNotSucceed": { - "modified": "2019-10-08T04:58:57.176Z", + "Web/HTML/Element/input/color": { + "modified": "2019-03-23T22:37:43.300Z", "contributors": [ - "Concatenacion" + "fitojb", + "Alesan7" ] }, - "Web/HTTP/CORS/Errors/CORSRequestNotHttp": { - "modified": "2020-07-09T00:32:19.159Z", + "Web/HTML/Element/input/date": { + "modified": "2019-10-10T16:45:44.142Z", "contributors": [ - "agf0710", - "advica2016", - "BubuAnabelas", - "Juan_Pablo" + "ANAIDJM1", + "fitojb" ] }, - "Web/HTTP/CSP": { - "modified": "2020-10-15T22:03:58.031Z", + "Web/HTML/Element/input/datetime": { + "modified": "2019-03-23T22:36:20.508Z", "contributors": [ - "lautaropaske", - "herleym", - "BubuAnabelas", - "vk496", - "CarlosRomeroVera" + "AngelMunoz", + "jcr4" ] }, - "Web/HTTP/Caching": { - "modified": "2019-03-18T21:21:15.259Z", + "Web/HTML/Element/input/email": { + "modified": "2020-10-15T22:11:48.198Z", "contributors": [ - "WilsonIsAliveClone", - "serarroy", - "ulisestrujillo" + "Nachec", + "facuarmo", + "MarielaBR" ] }, - "Web/HTTP/Cookies": { - "modified": "2020-06-27T19:11:54.360Z", + "Web/HTML/Element/input/hidden": { + "modified": "2020-10-15T22:10:33.714Z", "contributors": [ - "vinjatovix", - "SphinxKnight", - "g.baldemar.77", - "alexlndn", - "rayrojas", - "jesuscampos", - "nachoperassi", - "cguimaraenz", - "eortizromero", - "omertafox" + "IsraelFloresDGA" ] }, - "Web/HTTP/Gestion_de_la_conexion_en_HTTP_1.x": { - "modified": "2019-03-23T22:03:37.565Z", + "Web/HTML/Element/input": { + "modified": "2020-07-14T01:15:57.719Z", "contributors": [ - "jose89gp", - "Sergio_Gonzalez_Collado" + "maodecolombia", + "KacosPro", + "moisesalmonte", + "israel-munoz", + "Alejandra.B", + "garciaFullana", + "j-light", + "chech", + "dennistobar", + "welm", + "Johsua", + "byverdu", + "chipsweb", + "teoli", + "ovnicraft" ] }, - "Web/HTTP/Headers": { - "modified": "2019-12-10T13:29:15.931Z", + "Web/HTML/Element/input/number": { + "modified": "2020-10-15T22:26:16.273Z", "contributors": [ - "OneLoneFox", - "hamethassaf", - "darianbenito", - "MrcRjs", - "Watermelonnable", - "JurgenBlitz", - "ampersand89", - "fjuarez", - "fscholz" + "roocce" + ] + }, + "Web/HTML/Element/input/password": { + "modified": "2019-03-23T22:38:38.107Z", + "contributors": [ + "MarielaBR", + "xxx41", + "AlvaroNieto" ] }, - "Web/HTTP/Headers/Accept": { - "modified": "2020-10-15T21:55:42.853Z", + "Web/HTML/Element/input/range": { + "modified": "2019-03-18T20:57:13.760Z", "contributors": [ - "gabriel-ar" + "SphinxKnight", + "KikeSan", + "Luis_Calvo" ] }, - "Web/HTTP/Headers/Accept-Charset": { - "modified": "2020-10-15T22:13:56.858Z", + "Web/HTML/Element/input/text": { + "modified": "2020-10-15T22:34:26.828Z", "contributors": [ - "ArnoldFZ" + "Nachec" ] }, - "Web/HTTP/Headers/Accept-Ranges": { - "modified": "2020-10-15T21:52:24.088Z", + "Web/HTML/Element/ins": { + "modified": "2019-07-06T05:38:19.222Z", "contributors": [ - "gerardo1sanchez" + "baumannzone", + "duduindo", + "welm", + "teoli", + "torresnicolas", + "Jorolo" ] }, - "Web/HTTP/Headers/Access-Control-Allow-Credentials": { - "modified": "2020-10-15T22:29:00.518Z", + "Web/HTML/Element/isindex": { + "modified": "2019-03-23T22:36:13.994Z", "contributors": [ - "BubuAnabelas", - "IsraelFloresDGA" + "jcr4" ] }, - "Web/HTTP/Headers/Access-Control-Allow-Headers": { - "modified": "2020-10-15T22:07:25.027Z", + "Web/HTML/Element/kbd": { + "modified": "2019-03-18T21:11:05.093Z", "contributors": [ - "_deiberchacon" + "duduindo", + "welm", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Headers/Access-Control-Allow-Methods": { - "modified": "2020-10-15T21:54:50.843Z", + "Web/HTML/Element/keygen": { + "modified": "2019-03-24T00:06:20.618Z", "contributors": [ - "irsequisious" + "wbamberg", + "teoli", + "deimidis" ] }, - "Web/HTTP/Headers/Access-Control-Allow-Origin": { - "modified": "2020-10-15T21:56:44.483Z", + "Web/HTML/Element/label": { + "modified": "2019-03-23T23:22:26.460Z", "contributors": [ - "estrelow", - "IsraelFloresDGA", - "aranzuze35", - "_deiberchacon", - "anxobotana", - "JhonAguiar" + "ardillan", + "gcejas", + "teoli", + "WillyMaikowski" ] }, - "Web/HTTP/Headers/Access-Control-Expose-Headers": { - "modified": "2020-10-15T22:06:29.086Z", + "Web/HTML/Element/legend": { + "modified": "2019-06-05T17:18:09.680Z", "contributors": [ - "jorgeCaster", - "kraneok" + "Ivnosing", + "Sebastianz", + "saski", + "teoli", + "Klosma", + "Jorolo" ] }, - "Web/HTTP/Headers/Age": { - "modified": "2020-10-15T22:10:53.345Z", + "Web/HTML/Element/li": { + "modified": "2019-03-18T21:11:04.870Z", "contributors": [ - "0xCGonzalo" + "duduindo", + "chepegeek", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Headers/Allow": { - "modified": "2019-03-18T21:23:10.971Z", + "Web/HTML/Element/link": { + "modified": "2019-03-23T23:41:37.686Z", "contributors": [ - "ogaston" + "pawer13", + "israel-munoz", + "Sebastianz", + "jigs12", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Headers/Authorization": { - "modified": "2019-03-18T21:34:28.554Z", + "Web/HTML/Element/main": { + "modified": "2019-03-23T23:25:22.761Z", "contributors": [ - "kraneok", - "Watermelonnable" + "evaferreira", + "jesusbotella", + "teoli", + "jsalinas" ] }, - "Web/HTTP/Headers/Cache-Control": { - "modified": "2020-10-28T14:39:35.644Z", + "Web/HTML/Element/map": { + "modified": "2019-03-23T23:41:43.985Z", "contributors": [ - "noksenberg", - "IsraelFloresDGA", - "ervin_santos" + "Sebastianz", + "jigs12", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Headers/Content-Disposition": { - "modified": "2020-10-15T21:58:39.489Z", + "Web/HTML/Element/mark": { + "modified": "2020-10-15T21:04:57.447Z", "contributors": [ - "kbono", - "lagwy" + "danielblazquez", + "feliperomero3", + "wbamberg", + "teoli", + "Flerex", + "hugohabel", + "inma_610", + "translatoon" ] }, - "Web/HTTP/Headers/Content-Encoding": { - "modified": "2020-10-15T21:53:14.848Z", + "Web/HTML/Element/marquee": { + "modified": "2019-03-18T20:57:46.110Z", "contributors": [ - "IT-Rafa", - "sevillacode" + "gabriell24", + "erix2016", + "alexander171294" ] }, - "Web/HTTP/Headers/Content-Length": { - "modified": "2020-10-15T22:07:26.889Z", + "Web/HTML/Element/menu": { + "modified": "2019-03-18T21:11:04.661Z", "contributors": [ - "aliciava00", - "efrencruz" + "duduindo", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Headers/Content-Location": { - "modified": "2020-10-15T22:29:48.071Z", + "Web/HTML/Element/meta": { + "modified": "2019-03-23T23:42:35.250Z", "contributors": [ - "hecmonter" + "Sebastianz", + "feardarkness", + "jigs12", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Headers/Content-Security-Policy": { - "modified": "2020-10-15T22:18:45.176Z", + "Web/HTML/Element/multicol": { + "modified": "2019-03-23T22:36:14.458Z", "contributors": [ - "rayrojas", - "mauril26", - "27z" + "jcr4" ] }, - "Web/HTTP/Headers/Content-Type": { - "modified": "2020-10-15T21:58:35.257Z", + "Web/HTML/Element/nav": { + "modified": "2020-12-08T21:27:47.077Z", "contributors": [ - "ivanfretes", - "omertafox", - "ValeriaRamos" + "benito-san", + "DagoGuevara", + "driconmax", + "teoli", + "martinbarce", + "makoescalzo" ] }, - "Web/HTTP/Headers/Cookie": { - "modified": "2020-10-15T21:55:41.792Z", + "Web/HTML/Element/nobr": { + "modified": "2019-03-18T21:35:49.711Z", "contributors": [ - "SSantiago90" + "rhssr", + "Mexicotec" ] }, - "Web/HTTP/Headers/Cross-Origin-Resource-Policy": { - "modified": "2020-10-15T22:29:00.325Z", + "Web/HTML/Element/noframes": { + "modified": "2019-03-23T23:42:28.640Z", "contributors": [ - "IsraelFloresDGA" + "Sebastianz", + "jigs12", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Headers/ETag": { - "modified": "2020-10-15T21:57:09.273Z", + "Web/HTML/Element/noscript": { + "modified": "2019-03-23T23:42:26.569Z", "contributors": [ - "zechworld", - "evalenzuela", - "stwilberth", - "edgarrod71" + "Sebastianz", + "jigs12", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Headers/Expires": { - "modified": "2020-10-15T21:56:44.738Z", + "Web/HTML/Element/object": { + "modified": "2020-10-15T22:22:23.263Z", "contributors": [ - "ernesto.palafox" + "siregalado", + "iarah" ] }, - "Web/HTTP/Headers/Host": { - "modified": "2020-10-15T22:24:56.306Z", + "Web/HTML/Element/ol": { + "modified": "2020-02-03T21:28:29.355Z", "contributors": [ - "escatel.bernal10", - "Alvarito-056" + "kevinar53", + "duduindo", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Headers/Keep-Alive": { - "modified": "2020-10-15T22:02:52.123Z", + "Web/HTML/Element/option": { + "modified": "2019-03-23T22:38:56.017Z", "contributors": [ - "fernomenoide" + "pekechis" ] }, - "Web/HTTP/Headers/Link": { - "modified": "2020-10-15T22:28:59.441Z", + "Web/HTML/Element/p": { + "modified": "2019-03-23T23:41:31.103Z", "contributors": [ - "threevanny" + "Sebastianz", + "jigs12", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Headers/Origin": { - "modified": "2020-10-15T22:00:47.248Z", + "Web/HTML/Element/param": { + "modified": "2019-03-23T23:42:31.653Z", + "contributors": [ + "Sebastianz", + "jigs12", + "teoli", + "Jorolo" + ] + }, + "Web/HTML/Element/picture": { + "modified": "2019-07-20T20:15:37.196Z", "contributors": [ + "DagoGuevara", + "JulianSoto", + "alexlndn", + "danieltacho", "IsraelFloresDGA", - "Abelhg" + "diegos2" ] }, - "Web/HTTP/Headers/Pragma": { - "modified": "2020-10-15T22:09:54.700Z", + "Web/HTML/Element/pre": { + "modified": "2019-03-18T21:11:04.209Z", "contributors": [ - "ervin_santos" + "duduindo", + "teoli", + "_0x" ] }, - "Web/HTTP/Headers/Referer": { - "modified": "2020-10-15T21:53:10.093Z", + "Web/HTML/Element/progress": { + "modified": "2020-10-15T21:22:45.390Z", "contributors": [ - "LastCyborg", - "fitojb", - "UltimoOrejonDelTarro" + "SphinxKnight", + "androsfenollosa", + "wbamberg", + "teoli", + "rubencidlara" ] }, - "Web/HTTP/Headers/Referrer-Policy": { - "modified": "2020-10-15T22:01:34.403Z", + "Web/HTML/Element/q": { + "modified": "2020-10-15T22:34:03.995Z", "contributors": [ - "fitojb" + "Nachec" ] }, - "Web/HTTP/Headers/Server": { - "modified": "2020-10-15T21:55:40.335Z", + "Web/HTML/Element/s": { + "modified": "2019-03-18T21:11:03.985Z", "contributors": [ - "sevillacode", - "TheSgtPepper23", - "irsequisious" + "duduindo", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Headers/Set-Cookie": { - "modified": "2020-10-26T12:24:29.884Z", + "Web/HTML/Element/samp": { + "modified": "2019-10-11T12:30:51.315Z", "contributors": [ - "ignacio-ifm", - "IsraelFloresDGA", - "rayrojas", - "ramonserrano", - "garolard" + "danielblazquez", + "duduindo", + "Johsua", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Headers/Strict-Transport-Security": { - "modified": "2020-10-15T21:54:14.546Z", + "Web/SVG/Element/script": { + "modified": "2019-03-23T22:38:36.106Z", "contributors": [ - "AmadPS", - "pipe01", - "heilop", - "JulianSoto", - "pablolopezmera", - "Oxicode" + "ignasivs", + "raecillacastellana", + "ivandevp", + "alexander171294" ] }, - "Web/HTTP/Headers/Transfer-Encoding": { - "modified": "2020-10-15T22:24:54.193Z", + "Web/HTML/Element/section": { + "modified": "2020-07-15T11:06:51.948Z", "contributors": [ - "0xCGonzalo" + "timetrvlr", + "wbamberg", + "diegocanal", + "eljonims", + "teoli", + "ccarruitero", + "artopal" ] }, - "Web/HTTP/Headers/User-Agent": { - "modified": "2020-10-15T22:00:44.883Z", + "Web/HTML/Element/select": { + "modified": "2019-03-23T22:38:39.246Z", "contributors": [ - "LeoOliva", - "Imvi10" + "Fx-Enlcxx", + "AleV" ] }, - "Web/HTTP/Headers/Vary": { - "modified": "2020-10-15T21:56:44.020Z", + "Web/HTML/Element/shadow": { + "modified": "2019-03-23T22:06:38.273Z", "contributors": [ - "JhonAguiar" + "H4isan" ] }, - "Web/HTTP/Headers/WWW-Authenticate": { - "modified": "2020-10-15T22:19:30.337Z", + "Web/HTML/Element/slot": { + "modified": "2020-10-15T22:05:53.326Z", "contributors": [ - "malonso", - "Gytree" + "aguilerajl", + "Carlos-T", + "rhssr" ] }, - "Web/HTTP/Headers/X-Content-Type-Options": { - "modified": "2020-10-15T21:59:06.832Z", + "Web/HTML/Element/small": { + "modified": "2019-04-04T15:23:46.402Z", "contributors": [ - "clbustos", - "tonialfaro" + "danieltacho", + "drakzig", + "SphinxKnight", + "carloque", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Headers/X-Forwarded-For": { - "modified": "2020-10-15T22:16:47.635Z", + "Web/HTML/Element/source": { + "modified": "2020-10-15T21:13:44.488Z", "contributors": [ - "choadev", - "martinfrad", - "camsa" + "guillermomartinmarco", + "teoli", + "inma_610" ] }, - "Web/HTTP/Headers/X-Frame-Options": { - "modified": "2020-10-15T21:57:01.709Z", + "Web/HTML/Element/span": { + "modified": "2019-03-24T00:17:34.814Z", "contributors": [ - "ervin_santos", - "Luiggy", - "setlord" + "Sebastianz", + "jigs12", + "teoli", + "torresnicolas", + "Jorolo" ] }, - "Web/HTTP/Headers/X-XSS-Protection": { - "modified": "2020-10-15T21:59:06.897Z", + "Web/HTML/Element/strike": { + "modified": "2019-03-18T21:11:03.623Z", "contributors": [ - "JulioMoreyra", - "francinysalles", - "tonialfaro" + "duduindo", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Messages": { - "modified": "2019-11-12T11:40:26.816Z", + "Web/HTML/Element/strong": { + "modified": "2019-03-18T21:11:02.931Z", "contributors": [ - "emiedes", - "jose89gp", - "anibalortegap", - "Sergio_Gonzalez_Collado" + "duduindo", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Methods": { - "modified": "2020-10-15T21:51:09.574Z", + "Web/HTML/Element/style": { + "modified": "2019-03-23T23:42:38.349Z", "contributors": [ - "andrpueb", - "eddydeath", - "JRaiden", - "JulianSoto", - "RamsesMartinez" + "Sebastianz", + "jigs12", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Methods/CONNECT": { - "modified": "2020-10-15T22:09:12.273Z", + "Web/HTML/Element/sub": { + "modified": "2020-10-15T21:18:49.449Z", "contributors": [ - "jadiosc" + "IsaacAaron", + "carloque", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Methods/GET": { - "modified": "2020-12-13T00:32:42.441Z", + "Web/HTML/Element/sup": { + "modified": "2020-10-15T21:18:45.044Z", "contributors": [ - "victorgabardini", - "SphinxKnight", - "sercorc.12", - "oespino", - "RetelboP" + "IsaacAaron", + "carloque", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Methods/PATCH": { - "modified": "2020-10-04T20:15:30.024Z", + "Web/HTML/Element/table": { + "modified": "2019-09-03T15:32:58.837Z", "contributors": [ - "hamishwillee", - "cnietoc", - "SackmannDV", - "noecende" + "teoli", + "jesanchez", + "cortega", + "tany" ] }, - "Web/HTTP/Methods/POST": { - "modified": "2020-11-06T16:08:25.707Z", + "Web/HTML/Element/td": { + "modified": "2019-03-23T22:38:37.555Z", "contributors": [ - "Max_Gremory", - "JGarnica", - "qmarquez", - "DavidGalvis", - "sammye70", - "Sheppy", - "mtnalonso", - "Juenesis" + "Kerinoxio", + "Zarkiel", + "raecillacastellana", + "tolano97" ] }, - "Web/HTTP/Methods/PUT": { - "modified": "2020-10-15T21:58:39.134Z", + "Web/HTML/Element/template": { + "modified": "2020-10-15T21:52:05.945Z", "contributors": [ - "mtnalonso" + "aguilerajl", + "ArtistNeverStop", + "Diego674", + "AlePerez92" ] }, - "Web/HTTP/Methods/TRACE": { - "modified": "2020-10-15T22:12:36.763Z", + "Web/HTML/Element/textarea": { + "modified": "2020-10-15T21:43:13.029Z", "contributors": [ - "pablobiedma" + "camsa", + "fscholz", + "pekechis" ] }, - "Web/HTTP/Overview": { - "modified": "2020-08-07T11:46:49.430Z", + "Web/HTML/Element/th": { + "modified": "2020-04-22T05:00:45.306Z", "contributors": [ - "marcusdesantis", - "Enesimus", - "Rafasu", - "ChrisMHM", - "LuisGalicia", - "jose89gp", - "DaniNz", - "cabaag", - "Sergio_Gonzalez_Collado" + "blanchart", + "AgustinDPino", + "IXTRUnai", + "sapales" ] }, - "Web/HTTP/Peticiones_condicionales": { - "modified": "2019-03-18T21:19:37.220Z", + "Web/HTML/Element/time": { + "modified": "2020-10-15T21:18:39.499Z", "contributors": [ - "christianmg99" + "pardo-bsso", + "blanchart", + "IsraelFloresDGA", + "dsolism", + "mauriciabad", + "teoli", + "sebasmagri", + "makoescalzo" ] }, - "Web/HTTP/Sesión": { - "modified": "2019-03-23T22:05:36.352Z", + "orphaned/Web/HTML/Elemento/Tipos_de_elementos": { + "modified": "2019-03-23T23:46:22.404Z", "contributors": [ - "Sergio_Gonzalez_Collado" + "Sebastianz", + "jigs12", + "teoli", + "ethertank", + "Klosma", + "Jorolo" ] }, - "Web/HTTP/Status": { - "modified": "2020-10-01T02:41:07.109Z", + "Web/HTML/Element/title": { + "modified": "2019-10-10T16:32:45.843Z", "contributors": [ - "SphinxKnight", - "gonzalestino924", - "manuelguido", - "juliocesardeveloper", - "ismanapa", - "santiago.lator", - "leticia-acib", - "josecarbajalbolbot", - "StarViruZ", - "amircp", - "SebastianBar", - "serivt", - "Jens.B" + "duduindo", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Status/100": { - "modified": "2020-10-15T21:56:53.445Z", + "Web/HTML/Element/tr": { + "modified": "2019-03-23T22:38:35.421Z", "contributors": [ - "serivt" + "raecillacastellana", + "FelipeGL" ] }, - "Web/HTTP/Status/101": { - "modified": "2019-03-18T21:22:02.098Z", + "Web/HTML/Element/track": { + "modified": "2020-10-15T22:33:21.321Z", + "contributors": [ + "Pablo-No" + ] + }, + "Web/HTML/Element/tt": { + "modified": "2019-03-18T21:11:03.301Z", "contributors": [ - "jlamasfripp" + "duduindo", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Status/200": { - "modified": "2020-10-15T22:05:24.611Z", + "Web/HTML/Element/u": { + "modified": "2019-03-18T21:11:03.114Z", "contributors": [ - "SphinxKnight", - "alexibarra55", - "jlamasfripp", - "gbarriosf", - "snaven10", - "Adriel_from_Nav" + "duduindo", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Status/201": { - "modified": "2020-10-15T22:08:02.661Z", + "Web/HTML/Element/ul": { + "modified": "2019-03-23T23:42:39.154Z", "contributors": [ - "WriestTavo" + "Sebastianz", + "jigs12", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Status/202": { - "modified": "2019-04-19T16:13:12.876Z", + "Web/HTML/Element/var": { + "modified": "2019-03-23T23:41:16.113Z", "contributors": [ - "Hibot12" + "BubuAnabelas", + "teoli", + "Jorolo" ] }, - "Web/HTTP/Status/203": { - "modified": "2020-06-14T20:53:26.311Z", + "Web/HTML/Element/video": { + "modified": "2019-03-24T00:06:49.642Z", "contributors": [ - "rayrojas" + "wbamberg", + "untilbit", + "AlePerez92", + "teoli", + "inma_610", + "Izel" ] }, - "Web/HTTP/Status/206": { - "modified": "2020-10-15T22:02:08.111Z", + "Web/HTML/Element/wbr": { + "modified": "2019-04-26T19:10:14.131Z", "contributors": [ - "qpdian" + "reymundus2", + "jcr4" ] }, - "Web/HTTP/Status/301": { - "modified": "2020-10-15T22:24:06.781Z", + "Web/HTML/Element/xmp": { + "modified": "2019-03-23T22:38:49.554Z", "contributors": [ - "nullxx" + "jcr4" ] }, - "Web/HTTP/Status/302": { - "modified": "2020-10-15T21:59:00.277Z", + "Web/HTML/Inline_elements": { + "modified": "2019-03-23T22:46:15.359Z", "contributors": [ - "B1tF8er", - "kraptor", - "astrapotro" + "juanbrujo", + "raecillacastellana", + "vltamara" ] }, - "Web/HTTP/Status/304": { - "modified": "2020-10-15T22:12:46.751Z", + "Web/HTML/CORS_enabled_image": { + "modified": "2019-03-23T22:46:06.691Z", "contributors": [ - "jairoFg12" + "MrCesar107", + "antoiba86", + "vltamara" ] }, - "Web/HTTP/Status/400": { - "modified": "2019-08-03T10:06:53.857Z", + "Web/HTML/Index": { + "modified": "2019-01-16T22:12:02.767Z", "contributors": [ - "molavec", - "Hibot12" + "raecillacastellana", + "pekechis" ] }, - "Web/HTTP/Status/401": { - "modified": "2020-10-15T21:55:15.004Z", + "Web/HTML/Microdata": { + "modified": "2019-03-23T22:12:50.480Z", "contributors": [ - "Clipi", - "JuanMacias", - "mjaque", - "andreximo" + "fitojb" ] }, - "Web/HTTP/Status/403": { - "modified": "2020-10-15T21:58:50.466Z", + "Web/HTML/microformats": { + "modified": "2019-03-23T22:46:15.016Z", "contributors": [ - "JuanMacias" + "vltamara" ] }, - "Web/HTTP/Status/404": { - "modified": "2020-10-15T21:56:47.503Z", + "Glossary/speculative_parsing": { + "modified": "2019-03-23T23:15:52.979Z", "contributors": [ - "BrodaNoel" + "jsapiains", + "joeljose", + "vltamara", + "manufosela", + "Montherdez" ] }, - "Web/HTTP/Status/408": { - "modified": "2019-03-18T21:30:00.279Z", + "Web/HTML/Using_the_application_cache": { + "modified": "2019-03-19T07:43:37.221Z", "contributors": [ - "juusechec" + "pixelmin", + "dmoralesm", + "teoli", + "vltamara", + "CodeMaxter", + "LuisArt", + "FCuchietti", + "MPoli", + "hugohabel", + "RickieesES", + "inma_610", + "Izel" ] }, - "Web/HTTP/Status/418": { - "modified": "2020-10-15T22:21:28.070Z", + "Web/HTML/Reference": { + "modified": "2019-09-09T07:16:42.154Z", "contributors": [ - "joseluisq", - "paolo667" + "SphinxKnight", + "wbamberg", + "raecillacastellana", + "cosmesantos", + "vltamara", + "MegaChrono" ] }, - "Web/HTTP/Status/500": { - "modified": "2020-12-07T12:32:25.820Z", + "Web/HTML/Link_types": { + "modified": "2019-03-23T22:46:17.969Z", "contributors": [ - "dayanhernandez353", - "karenonaly", - "duduindo", - "marcelokruk", - "Viejofon" + "cmmp0112", + "_delta_", + "moisesalmonte", + "alvaromontoro", + "ivansx", + "vltamara" ] }, - "Web/HTTP/Status/502": { - "modified": "2020-10-15T21:56:55.208Z", + "Web/Media/DASH_Adaptive_Streaming_for_HTML_5_Video": { + "modified": "2019-03-23T22:46:14.015Z", "contributors": [ - "josecarbajalbolbot", - "AlePerez92", - "josmelnoel" + "AzazelN28", + "vltamara" ] }, - "Web/HTTP/Status/503": { - "modified": "2020-10-15T22:10:17.555Z", + "Web/HTTP/CORS": { + "modified": "2020-08-10T16:23:20.546Z", "contributors": [ - "Parodper", - "ajuni880", - "diego-bustamante" + "wbamberg", + "afelopez", + "jbarcas", + "cefaloide", + "alcastic", + "franklevel", + "JuanMacias", + "psyban", + "manatico4", + "signados", + "Ricardolau", + "afbayonac", + "aurigadl", + "dcruz", + "Manhru", + "maedca" ] }, - "Web/HTTP/Status/504": { - "modified": "2020-10-15T22:08:08.336Z", + "Web/HTTP/Basics_of_HTTP/Data_URIs": { + "modified": "2019-03-23T22:24:54.977Z", "contributors": [ - "ojeanicolas" + "Sergio_Gonzalez_Collado", + "AzazelN28", + "uclides" ] }, - "Web/HTTP/Status/505": { - "modified": "2020-04-03T20:59:26.896Z", + "Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web": { + "modified": "2019-03-23T22:24:51.387Z", "contributors": [ - "lp4749791" + "DaniNz", + "Sergio_Gonzalez_Collado", + "ChrisMHM", + "uclides" ] }, - "Web/HTTP/Status/8080": { - "modified": "2020-03-18T21:09:54.600Z", + "Web/HTTP/Connection_management_in_HTTP_1.x": { + "modified": "2019-03-23T22:03:37.565Z", "contributors": [ - "guzmanoscaralexis" + "jose89gp", + "Sergio_Gonzalez_Collado" ] }, - "Web/HTTP/mecanismo_actualizacion_protocolo": { + "Web/HTTP/Protocol_upgrade_mechanism": { "modified": "2019-03-18T21:45:03.291Z", "contributors": [ "patoezequiel", "Sergio_Gonzalez_Collado" ] }, - "Web/HTTP/recursos_y_especificaciones": { + "Web/HTTP/Conditional_requests": { + "modified": "2019-03-18T21:19:37.220Z", + "contributors": [ + "christianmg99" + ] + }, + "Web/HTTP/Resources_and_specifications": { "modified": "2019-03-23T22:03:46.656Z", "contributors": [ "_deiberchacon" ] }, - "Web/JavaScript": { - "modified": "2020-11-23T12:49:37.646Z", + "Web/HTTP/Session": { + "modified": "2019-03-23T22:05:36.352Z", "contributors": [ - "SphinxKnight", - "kramosr68", - "ivanfernandez5209", - "Tonatew", - "alejogomes944", - "Nachec", - "victitor800", - "Enesimus", - "franchesco182001", - "pauli.rodriguez.c", - "jhonarielgj", - "Fegaan", - "OOJuanferOO", - "nicolas25ramirez", - "andreamv2807", - "tomasvillarragaperez", - "Yel-Martinez-Consultor-Seo", - "rodririobo", - "isabelsvelasquezv", - "fedegianni04", - "jaomix1", - "TheJarX", - "clarii", - "NataliaCba", - "NicoleCleto1998", - "JavScars", - "untilbit", - "AlePerez92", - "aluxito", - "luisNavasArg", - "jsx", - "carlossuarez", - "Pablo_Ivan", - "teoli", - "LeoHirsch", - "smarchioni", - "ricardo777", - "CarlosQuijano", - "Scipion", - "alquimista", - "Nukeador", - "ethertank", - "Jorge.villalobos", - "arleytriana", - "arpunk", - "inma_610", - "StripTM", - "Mgjbot", - "Superruzafa", - "Verruckt", - "Jorolo", - "Vyk", - "Takenbot", - "RJacinto" + "Sergio_Gonzalez_Collado" + ] + }, + "Web/HTTP/Status/413": { + "modified": "2020-03-18T21:09:54.600Z", + "contributors": [ + "guzmanoscaralexis" ] }, - "Web/JavaScript/Acerca_de_JavaScript": { + "Web/JavaScript/About_JavaScript": { "modified": "2020-09-12T13:33:01.910Z", "contributors": [ "Nachec", @@ -18087,44 +18366,7 @@ "StripTM" ] }, - "Web/JavaScript/Closures": { - "modified": "2020-04-08T19:26:44.700Z", - "contributors": [ - "camsa", - "wbamberg", - "AzazelN28", - "JonasBrandel", - "fscholz", - "guty", - "Siro_Diaz", - "luigli", - "teoli", - "FNK", - "juanc.jara", - "Josias", - "neosergio", - "hjoaco" - ] - }, - "Web/JavaScript/Data_structures": { - "modified": "2020-08-30T02:21:59.996Z", - "contributors": [ - "Nachec", - "edwinmunguia", - "arzr", - "rayrojas", - "melgard", - "mmngreco", - "AngryDev", - "Gorzas", - "alejandrochung", - "IXTRUnai", - "damnyorch", - "devconcept", - "sancospi" - ] - }, - "Web/JavaScript/Descripción_de_las_tecnologías_JavaScript": { + "Web/JavaScript/JavaScript_technologies_overview": { "modified": "2020-09-02T05:54:39.004Z", "contributors": [ "Nachec", @@ -18135,27 +18377,15 @@ "geinerjv" ] }, - "Web/JavaScript/Equality_comparisons_and_sameness": { - "modified": "2020-03-24T18:47:23.011Z", - "contributors": [ - "camsa", - "abestrad1", - "EduardoCasanova", - "pekechis" - ] - }, - "Web/JavaScript/EventLoop": { - "modified": "2020-03-12T19:43:05.672Z", + "Web/JavaScript/Enumerability_and_ownership_of_properties": { + "modified": "2020-08-30T03:56:15.697Z", "contributors": [ - "AzazelN28", - "omonteon", - "guillermojmc", - "eljonims", - "MrCoffey", - "Anonymous" + "Nachec", + "teoli", + "LeoHirsch" ] }, - "Web/JavaScript/Gestion_de_Memoria": { + "Web/JavaScript/Memory_Management": { "modified": "2020-03-12T19:40:38.018Z", "contributors": [ "Jairgc", @@ -18166,28 +18396,7 @@ "cesaralvarado9" ] }, - "Web/JavaScript/Guide": { - "modified": "2020-09-12T21:03:22.983Z", - "contributors": [ - "Nachec", - "AmazonianCodeGuy", - "tezece", - "MarcyG1", - "nhuamani", - "manuhdez", - "e.g.m.g.", - "Pablo_Ivan", - "nelson6e65", - "walterpaoli", - "joanvasa", - "fscholz", - "Benjalorc", - "teoli", - "mitogh", - "xavo7" - ] - }, - "Web/JavaScript/Guide/Bucles_e_iteración": { + "Web/JavaScript/Guide/Loops_and_iteration": { "modified": "2020-10-21T16:48:14.421Z", "contributors": [ "sofi8825", @@ -18205,7 +18414,21 @@ "joanvasa" ] }, - "Web/JavaScript/Guide/Control_de_flujo_y_manejo_de_errores": { + "Web/JavaScript/Guide/Indexed_collections": { + "modified": "2020-08-20T18:50:37.500Z", + "contributors": [ + "Nachec", + "EstebanRK", + "ccasadom", + "jreyesgs", + "recortes", + "Cxistian", + "douwiD", + "frantcisko", + "joanvasa" + ] + }, + "Web/JavaScript/Guide/Control_flow_and_error_handling": { "modified": "2020-09-14T09:17:05.043Z", "contributors": [ "Nachec", @@ -18232,56 +18455,7 @@ "isnardi" ] }, - "Web/JavaScript/Guide/Details_of_the_Object_Model": { - "modified": "2020-08-17T15:38:30.288Z", - "contributors": [ - "Nachec", - "MariaBarros", - "AmazonianCodeGuy", - "wbamberg", - "fherce", - "SphinxKnight", - "ObsoleteHuman", - "ValentinTapiaTorti", - "brodriguezs", - "DiegoA1114", - "montogeek", - "fscholz", - "teoli", - "pheras" - ] - }, - "Web/JavaScript/Guide/Expressions_and_Operators": { - "modified": "2020-09-13T21:58:37.783Z", - "contributors": [ - "Nachec", - "gcjuan", - "Orlando-Flores-Huanca", - "wajari", - "anglozm", - "recortes", - "Ernesto385291", - "Jkierem", - "gsalinase", - "abestrad1", - "milouri23", - "Odol", - "victorsanchezm", - "ElChiniNet", - "UshioSan", - "siluvana", - "juanbrujo", - "01luisrene", - "gustavgil", - "Jaston", - "Alexis88", - "smarquez1", - "ricardochavarri", - "fscholz", - "spachecojimenez" - ] - }, - "Web/JavaScript/Guide/Funciones": { + "Web/JavaScript/Guide/Functions": { "modified": "2020-10-02T18:21:48.240Z", "contributors": [ "alejandro.fca", @@ -18307,38 +18481,7 @@ "epcode" ] }, - "Web/JavaScript/Guide/Grammar_and_types": { - "modified": "2020-09-12T23:09:43.446Z", - "contributors": [ - "Nachec", - "luis-al-merino", - "AmazonianCodeGuy", - "teknotica", - "feliperomero3", - "nullx5", - "abelosky", - "jlopezfdez", - "enriqueabsurdum", - "Ayman", - "AnthonyGareca", - "chuyinEF", - "estebancito", - "bytx", - "Pablo_Ivan", - "cgsramirez", - "eugenioNovas", - "marioalvazquez", - "joanvasa", - "fscholz", - "Cleon", - "angelnajera", - "vinixio", - "diegogaysaez", - "teoli", - "Amatos" - ] - }, - "Web/JavaScript/Guide/Introducción": { + "Web/JavaScript/Guide/Introduction": { "modified": "2020-09-14T00:29:05.489Z", "contributors": [ "Nachec", @@ -18349,139 +18492,60 @@ "gfvcastro", "RamiroNeher", "fscholz", - "MauroEldritch", - "Cleon", - "orasio", - "angelnajera", - "rianby64" - ] - }, - "Web/JavaScript/Guide/Iterators_and_Generators": { - "modified": "2020-03-12T19:42:41.976Z", - "contributors": [ - "camsa", - "DJphilomath", - "mjaque", - "lassmann", - "eycopia", - "nefter", - "dieguezz", - "Breaking_Pitt" - ] - }, - "Web/JavaScript/Guide/Keyed_collections": { - "modified": "2020-09-02T02:09:58.803Z", - "contributors": [ - "Nachec", - "MariaBarros", - "jesus92gz", - "eljonims" - ] - }, - "Web/JavaScript/Guide/Meta_programming": { - "modified": "2020-08-18T02:34:39.284Z", - "contributors": [ - "Nachec", - "asamajamasa", - "jaomix1", - "jzatarain" - ] - }, - "Web/JavaScript/Guide/Módulos": { - "modified": "2020-10-15T22:27:31.770Z", - "contributors": [ - "Nachec", - "luis.m1tech", - "antonioHigueron", - "jorgeherrera9103", - "FDSoil" - ] - }, - "Web/JavaScript/Guide/Numbers_and_dates": { - "modified": "2020-09-14T23:27:03.154Z", - "contributors": [ - "Nachec", - "ds-developer1", - "la-syl", - "IsraelFloresDGA", - "ingcarlosperez", - "georgenevets", - "yakashiro" - ] - }, - "Web/JavaScript/Guide/Regular_Expressions": { - "modified": "2020-10-15T21:29:34.015Z", - "contributors": [ - "Nachec", - "wilmer2000", - "Ricardo_F.", - "lebubic", - "franklevel", - "recortes", - "LuisSevillano", - "pangeasi", - "Jabi", - "bartolocarrasco", - "fortil", - "BoyFerruco", - "Lehmer", - "wffranco", - "eljonims", - "jpmontoya182", - "guillermomartinmarco", - "fscholz", - "eespitia.rea", - "jcvergar" + "MauroEldritch", + "Cleon", + "orasio", + "angelnajera", + "rianby64" + ] + }, + "Web/JavaScript/Guide/Modules": { + "modified": "2020-10-15T22:27:31.770Z", + "contributors": [ + "Nachec", + "luis.m1tech", + "antonioHigueron", + "jorgeherrera9103", + "FDSoil" ] }, - "Web/JavaScript/Guide/Regular_Expressions/Aserciones": { + "Web/JavaScript/Guide/Regular_Expressions/Assertions": { "modified": "2020-09-16T20:45:25.257Z", "contributors": [ "Nachec" ] }, - "Web/JavaScript/Guide/Regular_Expressions/Clases_de_caracteres": { + "Web/JavaScript/Guide/Regular_Expressions/Character_Classes": { "modified": "2020-09-17T03:20:44.595Z", "contributors": [ "Nachec" ] }, - "Web/JavaScript/Guide/Regular_Expressions/Cuantificadores": { + "Web/JavaScript/Guide/Regular_Expressions/Quantifiers": { "modified": "2020-09-15T21:48:26.513Z", "contributors": [ "Nachec" ] }, - "Web/JavaScript/Guide/Regular_Expressions/Escapes_de_propiedades_Unicode": { + "Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes": { "modified": "2020-09-17T10:02:16.387Z", "contributors": [ "Nachec" ] }, - "Web/JavaScript/Guide/Regular_Expressions/Grupos_y_rangos": { + "Web/JavaScript/Guide/Regular_Expressions/Groups_and_Ranges": { "modified": "2020-09-17T10:14:04.470Z", "contributors": [ "Nachec" ] }, - "Web/JavaScript/Guide/Regular_Expressions/Hoja_de_referencia": { + "Web/JavaScript/Guide/Regular_Expressions/Cheatsheet": { "modified": "2020-08-16T23:08:15.173Z", "contributors": [ "Nachec" ] }, - "Web/JavaScript/Guide/Text_formatting": { - "modified": "2020-09-15T10:00:50.941Z", - "contributors": [ - "Nachec", - "surielmx", - "IsraelFloresDGA", - "diegarta", - "Enesimus", - "jalmeida" - ] - }, - "Web/JavaScript/Guide/Trabajando_con_objectos": { + "Web/JavaScript/Guide/Working_with_Objects": { "modified": "2020-08-18T17:28:58.690Z", "contributors": [ "Nachec", @@ -18515,7 +18579,7 @@ "bluesky777" ] }, - "Web/JavaScript/Guide/Usar_promesas": { + "Web/JavaScript/Guide/Using_promises": { "modified": "2020-05-16T20:15:48.240Z", "contributors": [ "angelmartinez", @@ -18526,21 +18590,7 @@ "hamfree" ] }, - "Web/JavaScript/Guide/colecciones_indexadas": { - "modified": "2020-08-20T18:50:37.500Z", - "contributors": [ - "Nachec", - "EstebanRK", - "ccasadom", - "jreyesgs", - "recortes", - "Cxistian", - "douwiD", - "frantcisko", - "joanvasa" - ] - }, - "Web/JavaScript/Herencia_y_la_cadena_de_protipos": { + "Web/JavaScript/Inheritance_and_the_prototype_chain": { "modified": "2020-03-12T19:41:32.707Z", "contributors": [ "LeChonch", @@ -18562,28 +18612,7 @@ "blacknack" ] }, - "Web/JavaScript/Introducción_a_JavaScript_orientado_a_objetos": { - "modified": "2020-03-12T19:36:14.050Z", - "contributors": [ - "ivanagui2", - "libre8bit", - "alejandrochung", - "victorsanchezm", - "gchifflet", - "hmorv", - "Lorenzoygata", - "xxxtonixxx", - "joan.leon", - "fscholz", - "DeiberChacon", - "chebit", - "teoli", - "arpunk", - "inma_610", - "StripTM" - ] - }, - "Web/JavaScript/Introduction_to_using_XPath_in_JavaScript": { + "Web/XPath/Introduction_to_using_XPath_in_JavaScript": { "modified": "2019-05-08T19:05:57.937Z", "contributors": [ "AlbertoPrado70", @@ -18593,250 +18622,44 @@ "joakku" ] }, - "Web/JavaScript/Language_Resources": { - "modified": "2020-03-12T19:47:17.832Z", - "contributors": [ - "lajaso", - "jpmontoya182" - ] - }, - "Web/JavaScript/Reference/Errors": { - "modified": "2020-03-12T19:45:01.208Z", - "contributors": [ - "JavScars", - "Sheppy" - ] - }, - "Web/JavaScript/Reference/Errors/Bad_octal": { - "modified": "2020-03-12T19:45:41.442Z", - "contributors": [ - "HaroldV" - ] - }, - "Web/JavaScript/Reference/Errors/Deprecated_source_map_pragma": { - "modified": "2020-03-12T19:45:51.961Z", + "Web/JavaScript/Reference/Errors/Illegal_character": { + "modified": "2020-03-12T19:47:34.313Z", "contributors": [ - "BubuAnabelas", - "Andres62", - "ingjosegarrido", - "JaimeNorato" + "kaycdc" ] }, - "Web/JavaScript/Reference/Errors/Falta_puntoycoma_antes_de_declaracion": { + "Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement": { "modified": "2020-03-12T19:46:13.102Z", "contributors": [ "jonatanroot", "Lunacye" ] }, - "Web/JavaScript/Reference/Errors/Indicador_regexp_no-val": { + "Web/JavaScript/Reference/Errors/Bad_regexp_flag": { "modified": "2020-09-01T13:12:41.234Z", "contributors": [ "Nachec" ] }, - "Web/JavaScript/Reference/Errors/Invalid_array_length": { - "modified": "2020-03-12T19:46:48.651Z", - "contributors": [ - "Tlauipil" - ] - }, - "Web/JavaScript/Reference/Errors/Invalid_date": { - "modified": "2020-03-12T19:47:15.708Z", - "contributors": [ - "untilbit" - ] - }, - "Web/JavaScript/Reference/Errors/Malformed_formal_parameter": { - "modified": "2019-10-12T12:26:22.919Z", - "contributors": [ - "JGmr5" - ] - }, - "Web/JavaScript/Reference/Errors/Missing_curly_after_property_list": { - "modified": "2020-03-12T19:46:53.938Z", - "contributors": [ - "DGun17" - ] - }, - "Web/JavaScript/Reference/Errors/Missing_formal_parameter": { - "modified": "2020-03-12T19:47:16.712Z", - "contributors": [ - "TheEpicSimple" - ] - }, - "Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list": { - "modified": "2020-03-12T19:46:54.683Z", - "contributors": [ - "hiuxmaycry", - "ivandevp" - ] - }, - "Web/JavaScript/Reference/Errors/More_arguments_needed": { - "modified": "2020-03-12T19:49:21.407Z", - "contributors": [ - "dragonmenorka" - ] - }, - "Web/JavaScript/Reference/Errors/No_variable_name": { - "modified": "2020-03-12T19:48:33.901Z", - "contributors": [ - "CatalinaCampos" - ] - }, - "Web/JavaScript/Reference/Errors/Not_a_codepoint": { - "modified": "2020-03-12T19:46:46.603Z", - "contributors": [ - "DGun17" - ] - }, - "Web/JavaScript/Reference/Errors/Not_a_function": { - "modified": "2020-03-12T19:45:06.322Z", - "contributors": [ - "PatoDeTuring", - "untilbit", - "josegarciaclm95" - ] - }, - "Web/JavaScript/Reference/Errors/Not_defined": { - "modified": "2020-10-08T09:22:13.757Z", - "contributors": [ - "ludoescribano.2016", - "FacuBustamaante", - "ozavala", - "ccorcoles", - "Heranibus", - "jsgaonac", - "Luis_Armando" - ] - }, - "Web/JavaScript/Reference/Errors/Precision_range": { - "modified": "2020-08-10T12:14:52.122Z", - "contributors": [ - "Sgewux" - ] - }, - "Web/JavaScript/Reference/Errors/Property_access_denied": { - "modified": "2020-03-12T19:46:35.795Z", - "contributors": [ - "untilbit", - "Tlauipil" - ] - }, - "Web/JavaScript/Reference/Errors/Stmt_after_return": { - "modified": "2020-03-12T19:46:14.065Z", - "contributors": [ - "WCHARRIERE", - "NanoSpicer", - "marco_Lozano" - ] - }, - "Web/JavaScript/Reference/Errors/Strict_y_parámetros_complejos": { + "Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params": { "modified": "2020-08-31T05:09:49.990Z", "contributors": [ "Nachec" ] }, - "Web/JavaScript/Reference/Errors/Too_much_recursion": { - "modified": "2020-03-12T19:45:04.878Z", - "contributors": [ - "josegarciaclm95" - ] - }, - "Web/JavaScript/Reference/Errors/Undefined_prop": { - "modified": "2020-03-12T19:47:46.684Z", - "contributors": [ - "antixsuperstar" - ] - }, - "Web/JavaScript/Reference/Errors/Unexpected_token": { - "modified": "2020-03-12T19:46:40.968Z", - "contributors": [ - "dariomaim" - ] - }, - "Web/JavaScript/Reference/Errors/Unexpected_type": { - "modified": "2020-03-12T19:45:53.118Z", - "contributors": [ - "BubuAnabelas", - "JaimeNorato" - ] - }, - "Web/JavaScript/Reference/Errors/caracter_ilegal": { - "modified": "2020-03-12T19:47:34.313Z", - "contributors": [ - "kaycdc" - ] - }, - "Web/JavaScript/Reference/Errors/in_operator_no_object": { - "modified": "2020-03-12T19:47:18.421Z", - "contributors": [ - "presercomp" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler": { - "modified": "2020-10-15T21:58:11.434Z", - "contributors": [ - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/getOwnPropertyDescriptor": { + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor": { "modified": "2020-10-15T21:58:10.848Z", "contributors": [ - "tutugordillo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/set": { - "modified": "2020-10-15T21:58:32.473Z", - "contributors": [ - "tutugordillo" - ] - }, - "Web/JavaScript/Reference/Global_Objects/RangeError": { - "modified": "2019-03-23T22:47:01.907Z", - "contributors": [ - "gfernandez", - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/RangeError/prototype": { - "modified": "2019-01-16T21:30:19.248Z", - "contributors": [ - "gfernandez" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Reflect": { - "modified": "2019-03-18T21:14:43.908Z", - "contributors": [ - "javierlopm", - "trofrigo", - "lecruz01", - "roberbnd", - "jameshkramer" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Reflect/set": { - "modified": "2019-03-23T22:08:25.189Z", - "contributors": [ - "pedro-otero" + "tutugordillo" ] }, - "Web/JavaScript/Referencia": { - "modified": "2020-03-12T19:36:20.902Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set": { + "modified": "2020-10-15T21:58:32.473Z", "contributors": [ - "fscholz", - "teoli", - "zerospalencia", - "Scipion", - "ADP13", - "DSN_XP", - "Talisker", - "Sheppy", - "Nathymig", - "Mgjbot" + "tutugordillo" ] }, - "Web/JavaScript/Referencia/Acerca_de": { + "Web/JavaScript/Reference/About": { "modified": "2020-03-12T19:36:12.769Z", "contributors": [ "fscholz", @@ -18845,7 +18668,7 @@ "Sheppy" ] }, - "Web/JavaScript/Referencia/Características_Desaprobadas": { + "Web/JavaScript/Reference/Deprecated_and_obsolete_features": { "modified": "2020-08-12T05:30:59.632Z", "contributors": [ "Nachec", @@ -18855,13 +18678,40 @@ "DSN XP" ] }, - "Web/JavaScript/Referencia/Características_Desaprobadas/The_legacy_Iterator_protocol": { + "Web/JavaScript/Reference/Deprecated_and_obsolete_features/The_legacy_Iterator_protocol": { "modified": "2020-03-12T19:42:42.667Z", "contributors": [ "clystian" ] }, - "Web/JavaScript/Referencia/Classes": { + "Web/JavaScript/Reference/Classes/Public_class_fields": { + "modified": "2020-10-15T22:24:11.873Z", + "contributors": [ + "mgg.isco", + "carlos.valicenti", + "juanarbol" + ] + }, + "Web/JavaScript/Reference/Classes/constructor": { + "modified": "2020-12-08T22:06:53.151Z", + "contributors": [ + "gonzalopr.94", + "Mar.vin.26", + "kant", + "fscholz", + "SphinxKnight", + "balboag", + "bryanvargas" + ] + }, + "Web/JavaScript/Reference/Classes/extends": { + "modified": "2020-03-12T19:43:14.828Z", + "contributors": [ + "miguelusque", + "PauPeinado" + ] + }, + "Web/JavaScript/Reference/Classes": { "modified": "2020-08-20T12:39:55.631Z", "contributors": [ "jorendorff-moz", @@ -18891,40 +18741,13 @@ "GoToLoop" ] }, - "Web/JavaScript/Referencia/Classes/Class_fields": { - "modified": "2020-10-15T22:24:11.873Z", - "contributors": [ - "mgg.isco", - "carlos.valicenti", - "juanarbol" - ] - }, - "Web/JavaScript/Referencia/Classes/Private_class_fields": { + "Web/JavaScript/Reference/Classes/Private_class_fields": { "modified": "2020-10-15T22:33:54.045Z", "contributors": [ "aronvx" ] }, - "Web/JavaScript/Referencia/Classes/constructor": { - "modified": "2020-12-08T22:06:53.151Z", - "contributors": [ - "gonzalopr.94", - "Mar.vin.26", - "kant", - "fscholz", - "SphinxKnight", - "balboag", - "bryanvargas" - ] - }, - "Web/JavaScript/Referencia/Classes/extends": { - "modified": "2020-03-12T19:43:14.828Z", - "contributors": [ - "miguelusque", - "PauPeinado" - ] - }, - "Web/JavaScript/Referencia/Classes/static": { + "Web/JavaScript/Reference/Classes/static": { "modified": "2020-03-12T19:41:02.475Z", "contributors": [ "mizhac", @@ -18934,27 +18757,37 @@ "MauroEldritch" ] }, - "Web/JavaScript/Referencia/Funciones": { - "modified": "2020-03-12T19:37:38.529Z", + "Web/JavaScript/Reference/Functions/arguments/callee": { + "modified": "2020-03-12T19:37:01.881Z", "contributors": [ - "ricardosikic", - "JoseHernan", - "sergioqa123", - "DavidGalvis", - "miguelitolaparra", - "FranciscoCastle", - "SantiagoHdez", - "arai", - "estebancito", - "hugoatenco", - "mishelashala", + "fscholz", "teoli", - "javiertarrio", - "Nathymig", - "Sheppy" + "Mgjbot", + "Talisker" + ] + }, + "Web/JavaScript/Reference/Functions/arguments": { + "modified": "2020-10-15T21:08:39.471Z", + "contributors": [ + "Nachec", + "gorydev", + "AlePerez92", + "oblomobka", + "teoli", + "DeiberChacon", + "leopic", + "Mgjbot", + "Talisker" + ] + }, + "Web/JavaScript/Reference/Functions/arguments/length": { + "modified": "2020-03-12T19:44:25.066Z", + "contributors": [ + "hmorv", + "NestorAlbelo" ] }, - "Web/JavaScript/Referencia/Funciones/Arrow_functions": { + "Web/JavaScript/Reference/Functions/Arrow_functions": { "modified": "2020-10-15T21:39:05.489Z", "contributors": [ "Nachec", @@ -18975,65 +18808,55 @@ "davecarter" ] }, - "Web/JavaScript/Referencia/Funciones/Method_definitions": { - "modified": "2020-03-12T19:44:13.294Z", - "contributors": [ - "Grijander81" - ] - }, - "Web/JavaScript/Referencia/Funciones/Parametros_por_defecto": { - "modified": "2020-10-15T21:39:27.233Z", - "contributors": [ - "Nachec", - "SphinxKnight", - "danielsalgadop", - "pancheps" - ] - }, - "Web/JavaScript/Referencia/Funciones/arguments": { - "modified": "2020-10-15T21:08:39.471Z", + "Web/JavaScript/Reference/Functions/get": { + "modified": "2020-03-12T19:37:59.268Z", "contributors": [ - "Nachec", - "gorydev", - "AlePerez92", - "oblomobka", + "ramadis", + "DarkScarbo", + "MarkelCuesta", + "fscholz", "teoli", - "DeiberChacon", - "leopic", - "Mgjbot", - "Talisker" + "carloshs92", + "jesanchez", + "ccarruitero" ] }, - "Web/JavaScript/Referencia/Funciones/arguments/callee": { - "modified": "2020-03-12T19:37:01.881Z", + "Web/JavaScript/Reference/Functions": { + "modified": "2020-03-12T19:37:38.529Z", "contributors": [ - "fscholz", + "ricardosikic", + "JoseHernan", + "sergioqa123", + "DavidGalvis", + "miguelitolaparra", + "FranciscoCastle", + "SantiagoHdez", + "arai", + "estebancito", + "hugoatenco", + "mishelashala", "teoli", - "Mgjbot", - "Talisker" + "javiertarrio", + "Nathymig", + "Sheppy" ] }, - "Web/JavaScript/Referencia/Funciones/arguments/length": { - "modified": "2020-03-12T19:44:25.066Z", + "Web/JavaScript/Reference/Functions/Method_definitions": { + "modified": "2020-03-12T19:44:13.294Z", "contributors": [ - "hmorv", - "NestorAlbelo" + "Grijander81" ] }, - "Web/JavaScript/Referencia/Funciones/get": { - "modified": "2020-03-12T19:37:59.268Z", + "Web/JavaScript/Reference/Functions/Default_parameters": { + "modified": "2020-10-15T21:39:27.233Z", "contributors": [ - "ramadis", - "DarkScarbo", - "MarkelCuesta", - "fscholz", - "teoli", - "carloshs92", - "jesanchez", - "ccarruitero" + "Nachec", + "SphinxKnight", + "danielsalgadop", + "pancheps" ] }, - "Web/JavaScript/Referencia/Funciones/parametros_rest": { + "Web/JavaScript/Reference/Functions/rest_parameters": { "modified": "2020-08-05T19:22:32.660Z", "contributors": [ "paching12", @@ -19046,7 +18869,7 @@ "mikicegal14" ] }, - "Web/JavaScript/Referencia/Funciones/set": { + "Web/JavaScript/Reference/Functions/set": { "modified": "2020-10-20T12:54:09.106Z", "contributors": [ "alejandro.fca", @@ -19054,125 +18877,83 @@ "DavidBernal" ] }, - "Web/JavaScript/Referencia/Gramatica_lexica": { + "Web/JavaScript/Reference/Lexical_grammar": { "modified": "2020-10-15T22:24:10.289Z", "contributors": [ "Nachec", "fitojb" ] }, - "Web/JavaScript/Referencia/Iteration_protocols": { - "modified": "2020-03-12T19:41:22.496Z", - "contributors": [ - "SphinxKnight", - "oagarcia" - ] - }, - "Web/JavaScript/Referencia/Modo_estricto": { - "modified": "2020-08-30T21:51:49.146Z", - "contributors": [ - "Nachec", - "martin_jaime", - "javier-aguilera", - "olijyat", - "Sotelio", - "juangpc", - "MateoVelilla", - "krthr", - "Phoneix", - "nhuamani", - "octopusinvitro", - "frasko21", - "Anonymous", - "federicobond", - "elkinbernal21", - "migueljo_12", - "seeker8" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales": { - "modified": "2020-03-12T19:36:16.167Z", + "Web/JavaScript/Reference": { + "modified": "2020-03-12T19:36:20.902Z", "contributors": [ - "Jethrotul", - "yohanolmedo", - "JoseGB", - "lajaso", - "Imvi10", - "chavesrdj", - "SphinxKnight", + "fscholz", "teoli", - "KENARKI", - "chebit", - "ethertank", - "Garf", - "tiangolo", + "zerospalencia", + "Scipion", + "ADP13", + "DSN_XP", + "Talisker", "Sheppy", "Nathymig", "Mgjbot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/AggregateError": { - "modified": "2020-10-15T22:31:08.318Z", + "Web/JavaScript/Reference/Iteration_protocols": { + "modified": "2020-03-12T19:41:22.496Z", "contributors": [ - "Nachec", - "Gardeky" + "SphinxKnight", + "oagarcia" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array": { - "modified": "2020-12-13T21:16:28.670Z", + "Web/JavaScript/Reference/Strict_mode": { + "modified": "2020-08-30T21:51:49.146Z", "contributors": [ - "SamuelOuteda", - "JotaCé", - "Daniel1404", - "MartinCJ08", - "lorenzo-sc", - "Pagua", - "Marito10", - "lajaso", - "AlePerez92", - "patoezequiel", - "FranciscoCastle", - "Pulits", - "Th3Cod3", - "rec", - "BubuAnabelas", - "abaracedo", - "Pablo_Bangueses", - "gfernandez", - "davegomez", - "viartola", - "Albizures", - "germanio", - "a0viedo", - "teoli", - "LuisArt", - "Nukeador", - "ADP13", - "Errepunto", - "Sheppy", - "Nathymig", - "Mgjbot" + "Nachec", + "martin_jaime", + "javier-aguilera", + "olijyat", + "Sotelio", + "juangpc", + "MateoVelilla", + "krthr", + "Phoneix", + "nhuamani", + "octopusinvitro", + "frasko21", + "Anonymous", + "federicobond", + "elkinbernal21", + "migueljo_12", + "seeker8" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/@@iterator": { + "Web/JavaScript/Reference/Global_Objects/AggregateError": { + "modified": "2020-10-15T22:31:08.318Z", + "contributors": [ + "Nachec", + "Gardeky" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/@@iterator": { "modified": "2020-10-15T22:06:23.853Z", "contributors": [ "lajaso" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/@@species": { + "Web/JavaScript/Reference/Global_Objects/Array/@@species": { "modified": "2020-10-15T22:07:11.429Z", "contributors": [ "lajaso" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/@@unscopables": { + "Web/JavaScript/Reference/Global_Objects/Array/@@unscopables": { "modified": "2020-10-15T22:04:47.805Z", "contributors": [ "lajaso" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/concat": { + "Web/JavaScript/Reference/Global_Objects/Array/concat": { "modified": "2020-10-15T21:38:20.137Z", "contributors": [ "AlePerez92", @@ -19184,7 +18965,7 @@ "gonzalog" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/copyWithin": { + "Web/JavaScript/Reference/Global_Objects/Array/copyWithin": { "modified": "2020-10-15T21:46:52.733Z", "contributors": [ "lajaso", @@ -19193,7 +18974,7 @@ "eljonims" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/entries": { + "Web/JavaScript/Reference/Global_Objects/Array/entries": { "modified": "2020-10-15T21:45:28.326Z", "contributors": [ "lajaso", @@ -19201,7 +18982,7 @@ "imNicoSuarez" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/every": { + "Web/JavaScript/Reference/Global_Objects/Array/every": { "modified": "2020-10-15T21:38:36.565Z", "contributors": [ "camsa", @@ -19212,7 +18993,7 @@ "vltamara" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/fill": { + "Web/JavaScript/Reference/Global_Objects/Array/fill": { "modified": "2020-10-15T21:37:55.734Z", "contributors": [ "camsa", @@ -19223,7 +19004,7 @@ "cesarve77" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/filter": { + "Web/JavaScript/Reference/Global_Objects/Array/filter": { "modified": "2020-12-14T06:55:37.970Z", "contributors": [ "Adil_Casamayor_Silvar", @@ -19245,7 +19026,7 @@ "matajm" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/find": { + "Web/JavaScript/Reference/Global_Objects/Array/find": { "modified": "2020-10-15T21:37:55.410Z", "contributors": [ "AlePerez92", @@ -19256,7 +19037,7 @@ "alo5" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/findIndex": { + "Web/JavaScript/Reference/Global_Objects/Array/findIndex": { "modified": "2020-10-15T21:46:40.264Z", "contributors": [ "AlePerez92", @@ -19266,7 +19047,7 @@ "andrpueb" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/flat": { + "Web/JavaScript/Reference/Global_Objects/Array/flat": { "modified": "2020-10-15T22:04:41.717Z", "contributors": [ "amarin95", @@ -19276,7 +19057,7 @@ "lajaso" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/flatMap": { + "Web/JavaScript/Reference/Global_Objects/Array/flatMap": { "modified": "2020-10-15T22:04:40.380Z", "contributors": [ "alejandro.figuera", @@ -19284,7 +19065,7 @@ "lajaso" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/forEach": { + "Web/JavaScript/Reference/Global_Objects/Array/forEach": { "modified": "2020-10-15T21:25:13.328Z", "contributors": [ "maximocapital", @@ -19304,7 +19085,7 @@ "elfoxero" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/from": { + "Web/JavaScript/Reference/Global_Objects/Array/from": { "modified": "2020-10-15T21:41:11.903Z", "contributors": [ "AlePerez92", @@ -19315,7 +19096,7 @@ "thzunder" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/includes": { + "Web/JavaScript/Reference/Global_Objects/Array/includes": { "modified": "2020-10-15T21:41:08.738Z", "contributors": [ "emilianot", @@ -19329,7 +19110,43 @@ "DRayX" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/indexOf": { + "Web/JavaScript/Reference/Global_Objects/Array": { + "modified": "2020-12-13T21:16:28.670Z", + "contributors": [ + "SamuelOuteda", + "JotaCé", + "Daniel1404", + "MartinCJ08", + "lorenzo-sc", + "Pagua", + "Marito10", + "lajaso", + "AlePerez92", + "patoezequiel", + "FranciscoCastle", + "Pulits", + "Th3Cod3", + "rec", + "BubuAnabelas", + "abaracedo", + "Pablo_Bangueses", + "gfernandez", + "davegomez", + "viartola", + "Albizures", + "germanio", + "a0viedo", + "teoli", + "LuisArt", + "Nukeador", + "ADP13", + "Errepunto", + "Sheppy", + "Nathymig", + "Mgjbot" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/indexOf": { "modified": "2020-10-15T21:21:34.369Z", "contributors": [ "ChristianMarca", @@ -19341,7 +19158,7 @@ "AntonioNavajas" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/isArray": { + "Web/JavaScript/Reference/Global_Objects/Array/isArray": { "modified": "2020-10-15T21:36:49.146Z", "contributors": [ "lajaso", @@ -19351,7 +19168,7 @@ "EddieV1" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/join": { + "Web/JavaScript/Reference/Global_Objects/Array/join": { "modified": "2020-10-15T21:37:05.645Z", "contributors": [ "lajaso", @@ -19359,14 +19176,14 @@ "davegomez" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/keys": { + "Web/JavaScript/Reference/Global_Objects/Array/keys": { "modified": "2020-10-15T21:46:47.383Z", "contributors": [ "lajaso", "eljonims" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/lastIndexOf": { + "Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf": { "modified": "2020-10-15T21:44:42.909Z", "contributors": [ "luchosr", @@ -19375,7 +19192,7 @@ "cesiztel" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/length": { + "Web/JavaScript/Reference/Global_Objects/Array/length": { "modified": "2020-10-15T21:36:04.137Z", "contributors": [ "lajaso", @@ -19384,7 +19201,7 @@ "martinweingart" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/map": { + "Web/JavaScript/Reference/Global_Objects/Array/map": { "modified": "2019-07-29T10:38:41.705Z", "contributors": [ "AndCotOli", @@ -19398,7 +19215,7 @@ "fcomabella" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/of": { + "Web/JavaScript/Reference/Global_Objects/Array/of": { "modified": "2020-10-15T21:39:43.805Z", "contributors": [ "lajaso", @@ -19408,7 +19225,7 @@ "adelamata" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/pop": { + "Web/JavaScript/Reference/Global_Objects/Array/pop": { "modified": "2020-10-15T21:34:39.833Z", "contributors": [ "AlePerez92", @@ -19420,14 +19237,14 @@ "Guitxo" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/prototype": { + "orphaned/Web/JavaScript/Reference/Global_Objects/Array/prototype": { "modified": "2020-10-15T21:35:31.913Z", "contributors": [ "lajaso", "humbertaco" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/push": { + "Web/JavaScript/Reference/Global_Objects/Array/push": { "modified": "2020-10-15T21:20:34.074Z", "contributors": [ "AlePerez92", @@ -19439,7 +19256,7 @@ "mhauptma73" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/reduce": { + "Web/JavaScript/Reference/Global_Objects/Array/Reduce": { "modified": "2020-10-15T21:16:20.520Z", "contributors": [ "AlePerez92", @@ -19455,7 +19272,7 @@ "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/reduceRight": { + "Web/JavaScript/Reference/Global_Objects/Array/ReduceRight": { "modified": "2019-03-23T23:50:45.331Z", "contributors": [ "fuzzyalej", @@ -19463,7 +19280,7 @@ "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/reverse": { + "Web/JavaScript/Reference/Global_Objects/Array/reverse": { "modified": "2020-10-15T21:34:38.313Z", "contributors": [ "AlePerez92", @@ -19475,7 +19292,7 @@ "arthusu" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/shift": { + "Web/JavaScript/Reference/Global_Objects/Array/shift": { "modified": "2020-08-27T12:47:35.128Z", "contributors": [ "AlePerez92", @@ -19484,7 +19301,7 @@ "gfernandez" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/slice": { + "Web/JavaScript/Reference/Global_Objects/Array/slice": { "modified": "2019-03-23T22:52:20.266Z", "contributors": [ "olijyat", @@ -19499,7 +19316,7 @@ "oillescas" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/some": { + "Web/JavaScript/Reference/Global_Objects/Array/some": { "modified": "2020-10-15T21:36:10.705Z", "contributors": [ "AlePerez92", @@ -19510,7 +19327,7 @@ "martinweingart" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/sort": { + "Web/JavaScript/Reference/Global_Objects/Array/sort": { "modified": "2020-10-10T21:23:15.977Z", "contributors": [ "Gardeky", @@ -19532,7 +19349,7 @@ "lombareload" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/splice": { + "Web/JavaScript/Reference/Global_Objects/Array/splice": { "modified": "2020-10-15T21:33:06.435Z", "contributors": [ "AlePerez92", @@ -19545,20 +19362,20 @@ "alvarouribe" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/toLocaleString": { + "Web/JavaScript/Reference/Global_Objects/Array/toLocaleString": { "modified": "2020-10-15T22:10:13.626Z", "contributors": [ "estebanpanelli" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/toSource": { + "Web/JavaScript/Reference/Global_Objects/Array/toSource": { "modified": "2019-03-23T22:08:25.338Z", "contributors": [ "teoli", "pedro-otero" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/toString": { + "Web/JavaScript/Reference/Global_Objects/Array/toString": { "modified": "2020-10-15T21:37:53.754Z", "contributors": [ "AlePerez92", @@ -19567,14 +19384,14 @@ "dgrizzla" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/unshift": { + "Web/JavaScript/Reference/Global_Objects/Array/unshift": { "modified": "2020-10-15T21:36:39.291Z", "contributors": [ "AlePerez92", "elhesuu" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Array/values": { + "Web/JavaScript/Reference/Global_Objects/Array/values": { "modified": "2020-10-15T21:47:36.548Z", "contributors": [ "AlePerez92", @@ -19582,36 +19399,35 @@ "clystian" ] }, - "Web/JavaScript/Referencia/Objetos_globales/ArrayBuffer": { - "modified": "2020-10-15T21:40:07.554Z", - "contributors": [ - "lajaso", - "joseluisq", - "mlealvillarreal", - "AzazelN28", - "tamat" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/ArrayBuffer/@@species": { + "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/@@species": { "modified": "2020-10-15T22:05:03.686Z", "contributors": [ "lajaso" ] }, - "Web/JavaScript/Referencia/Objetos_globales/ArrayBuffer/byteLength": { + "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/byteLength": { "modified": "2020-10-15T22:05:03.452Z", "contributors": [ "lajaso" ] }, - "Web/JavaScript/Referencia/Objetos_globales/ArrayBuffer/prototype": { - "modified": "2020-10-15T21:51:49.315Z", + "Web/JavaScript/Reference/Global_Objects/ArrayBuffer": { + "modified": "2020-10-15T21:40:07.554Z", "contributors": [ "lajaso", - "AzazelN28" + "joseluisq", + "mlealvillarreal", + "AzazelN28", + "tamat" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Boolean/Boolean": { + "modified": "2020-10-15T22:33:47.964Z", + "contributors": [ + "Nachec" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Boolean": { + "Web/JavaScript/Reference/Global_Objects/Boolean": { "modified": "2020-10-15T21:16:58.681Z", "contributors": [ "Nachec", @@ -19625,38 +19441,14 @@ "Sheppy" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Boolean/Boolean": { - "modified": "2020-10-15T22:33:47.964Z", - "contributors": [ - "Nachec" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Boolean/toSource": { + "Web/JavaScript/Reference/Global_Objects/Boolean/toSource": { "modified": "2019-09-14T17:25:31.875Z", "contributors": [ "teoli", "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date": { - "modified": "2019-10-10T16:53:04.977Z", - "contributors": [ - "wbamberg", - "Eduardo_66", - "teoli", - "Talisker", - "Mgjbot", - "Sheppy" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Date/UTC": { - "modified": "2019-03-23T23:48:17.886Z", - "contributors": [ - "teoli", - "Talisker" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Date/getDate": { + "Web/JavaScript/Reference/Global_Objects/Date/getDate": { "modified": "2019-03-23T22:47:58.851Z", "contributors": [ "DanielFRB", @@ -19664,7 +19456,7 @@ "ycanales" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/getDay": { + "Web/JavaScript/Reference/Global_Objects/Date/getDay": { "modified": "2019-03-23T22:41:58.390Z", "contributors": [ "odelrio", @@ -19672,7 +19464,7 @@ "thzunder" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/getFullYear": { + "Web/JavaScript/Reference/Global_Objects/Date/getFullYear": { "modified": "2020-12-12T18:35:30.034Z", "contributors": [ "AlePerez92", @@ -19680,38 +19472,38 @@ "Guitxo" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/getHours": { + "Web/JavaScript/Reference/Global_Objects/Date/getHours": { "modified": "2019-03-23T22:25:54.207Z", "contributors": [ "davElsanto" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/getMilliseconds": { + "Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds": { "modified": "2019-03-23T22:19:54.449Z", "contributors": [ "Undre4m" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/getMinutes": { + "Web/JavaScript/Reference/Global_Objects/Date/getMinutes": { "modified": "2019-03-23T22:50:56.451Z", "contributors": [ "jezdez", "jorgeLightwave" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/getMonth": { + "Web/JavaScript/Reference/Global_Objects/Date/getMonth": { "modified": "2019-03-23T22:51:30.861Z", "contributors": [ "cristobalramos" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/getSeconds": { + "Web/JavaScript/Reference/Global_Objects/Date/getSeconds": { "modified": "2020-10-15T22:04:39.573Z", "contributors": [ "AlePerez92" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/getTime": { + "Web/JavaScript/Reference/Global_Objects/Date/getTime": { "modified": "2020-10-18T16:10:45.747Z", "contributors": [ "feliperomero3", @@ -19719,19 +19511,30 @@ "Marttharomero" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/getUTCFullYear": { + "Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear": { "modified": "2019-03-23T22:20:31.228Z", "contributors": [ "e.g.m.g." ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/getUTCHours": { + "Web/JavaScript/Reference/Global_Objects/Date/getUTCHours": { "modified": "2019-03-23T22:23:56.170Z", "contributors": [ "eltrikiman" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/now": { + "Web/JavaScript/Reference/Global_Objects/Date": { + "modified": "2019-10-10T16:53:04.977Z", + "contributors": [ + "wbamberg", + "Eduardo_66", + "teoli", + "Talisker", + "Mgjbot", + "Sheppy" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/now": { "modified": "2019-03-23T23:48:17.746Z", "contributors": [ "teoli", @@ -19739,38 +19542,32 @@ "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/parse": { + "Web/JavaScript/Reference/Global_Objects/Date/parse": { "modified": "2019-03-23T23:48:18.384Z", "contributors": [ "teoli", "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/prototype": { - "modified": "2019-03-23T23:11:22.072Z", - "contributors": [ - "teoli" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Date/setFullYear": { + "Web/JavaScript/Reference/Global_Objects/Date/setFullYear": { "modified": "2019-03-23T22:20:28.916Z", "contributors": [ "e.g.m.g." ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/setMonth": { + "Web/JavaScript/Reference/Global_Objects/Date/setMonth": { "modified": "2020-10-15T22:26:32.061Z", "contributors": [ "mavega998" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/toDateString": { + "Web/JavaScript/Reference/Global_Objects/Date/toDateString": { "modified": "2020-10-15T22:00:03.156Z", "contributors": [ "thisisalexis" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/toISOString": { + "Web/JavaScript/Reference/Global_Objects/Date/toISOString": { "modified": "2020-10-18T16:02:20.913Z", "contributors": [ "feliperomero3", @@ -19781,106 +19578,171 @@ "developingo" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/toJSON": { + "Web/JavaScript/Reference/Global_Objects/Date/toJSON": { "modified": "2020-10-15T22:34:58.674Z", "contributors": [ "w3pdsoft" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/toLocaleDateString": { + "Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString": { "modified": "2020-10-15T22:26:52.505Z", "contributors": [ "AntonioM." ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/toLocaleString": { + "Web/JavaScript/Reference/Global_Objects/Date/toLocaleString": { "modified": "2020-10-15T22:28:03.714Z", "contributors": [ "jestebans", "Juanpredev" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/toLocaleTimeString": { + "Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString": { "modified": "2020-10-15T22:28:25.409Z", "contributors": [ "antixsuperstar" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Date/toUTCString": { + "Web/JavaScript/Reference/Global_Objects/Date/toUTCString": { "modified": "2020-10-15T22:26:46.954Z", "contributors": [ "batik" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Error": { - "modified": "2020-10-15T21:17:01.621Z", + "Web/JavaScript/Reference/Global_Objects/Date/UTC": { + "modified": "2019-03-23T23:48:17.886Z", "contributors": [ - "Nachec", - "akadoshin", - "gfernandez", "teoli", - "Talisker", + "Talisker" + ] + }, + "Web/JavaScript/Reference/Global_Objects/decodeURI": { + "modified": "2020-03-12T19:36:57.753Z", + "contributors": [ + "teoli", + "SphinxKnight", + "ADP13", "Mgjbot", "Sheppy" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Error/constructor_Error": { + "Web/JavaScript/Reference/Global_Objects/decodeURIComponent": { + "modified": "2020-03-12T19:37:00.546Z", + "contributors": [ + "jabarrioss", + "SphinxKnight", + "teoli", + "ADP13", + "Mgjbot", + "Sheppy" + ] + }, + "Web/JavaScript/Reference/Global_Objects/encodeURI": { + "modified": "2020-03-12T19:36:55.391Z", + "contributors": [ + "espipj", + "SphinxKnight", + "teoli", + "ADP13", + "Mgjbot", + "Sheppy" + ] + }, + "Web/JavaScript/Reference/Global_Objects/encodeURIComponent": { + "modified": "2020-03-12T19:37:33.179Z", + "contributors": [ + "jazjay", + "SphinxKnight", + "teoli", + "Mgjbot", + "Sheppy" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/Error": { "modified": "2020-10-15T22:33:54.309Z", "contributors": [ "Nachec" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Error/fileName": { + "Web/JavaScript/Reference/Global_Objects/Error/fileName": { "modified": "2020-10-15T22:33:52.450Z", "contributors": [ "Nachec" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Error/lineNumber": { + "Web/JavaScript/Reference/Global_Objects/Error": { + "modified": "2020-10-15T21:17:01.621Z", + "contributors": [ + "Nachec", + "akadoshin", + "gfernandez", + "teoli", + "Talisker", + "Mgjbot", + "Sheppy" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/lineNumber": { "modified": "2019-03-23T22:44:34.178Z", "contributors": [ "KikinRdz" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Error/message": { + "Web/JavaScript/Reference/Global_Objects/Error/message": { "modified": "2019-03-23T22:31:48.655Z", "contributors": [ "RiazaValverde" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Error/name": { + "Web/JavaScript/Reference/Global_Objects/Error/name": { "modified": "2020-10-15T21:51:31.702Z", "contributors": [ "Nachec", "Bumxu" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Error/prototype": { - "modified": "2019-03-23T22:31:40.887Z", - "contributors": [ - "RiazaValverde" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Error/toSource": { + "Web/JavaScript/Reference/Global_Objects/Error/toSource": { "modified": "2020-10-15T22:33:54.410Z", "contributors": [ "Nachec" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Error/toString": { + "Web/JavaScript/Reference/Global_Objects/Error/toString": { "modified": "2020-10-15T22:33:57.174Z", "contributors": [ "Nachec" ] }, - "Web/JavaScript/Referencia/Objetos_globales/EvalError": { + "Web/JavaScript/Reference/Global_Objects/escape": { + "modified": "2020-10-15T21:56:14.356Z", + "contributors": [ + "SphinxKnight", + "RozyP", + "IXTRUnai" + ] + }, + "Web/JavaScript/Reference/Global_Objects/eval": { + "modified": "2020-03-12T19:37:01.878Z", + "contributors": [ + "driera", + "sergio_p_d", + "_cuco_", + "ericmartinezr", + "SphinxKnight", + "teoli", + "Mgjbot", + "Talisker", + "Sheppy" + ] + }, + "Web/JavaScript/Reference/Global_Objects/EvalError": { "modified": "2020-08-30T20:35:42.248Z", "contributors": [ "YHWHSGP88", "Undre4m" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Funcionesasíncronas": { + "Web/JavaScript/Reference/Global_Objects/AsyncFunction": { "modified": "2020-10-15T22:06:23.441Z", "contributors": [ "akacoronel", @@ -19888,26 +19750,7 @@ "miguelrijo" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Function": { - "modified": "2020-10-15T21:14:31.534Z", - "contributors": [ - "Nachec", - "Tzikin100", - "teoli", - "ethertank", - "Skorney", - "ADP13", - "Mgjbot", - "Sheppy" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Function/Función": { - "modified": "2020-10-15T22:33:51.294Z", - "contributors": [ - "Nachec" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Function/apply": { + "Web/JavaScript/Reference/Global_Objects/Function/apply": { "modified": "2019-03-23T23:31:02.682Z", "contributors": [ "AdrianSkar", @@ -19924,7 +19767,7 @@ "gtoroap" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Function/arguments": { + "Web/JavaScript/Reference/Global_Objects/Function/arguments": { "modified": "2019-03-23T23:48:35.727Z", "contributors": [ "teoli", @@ -19932,7 +19775,7 @@ "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Function/bind": { + "Web/JavaScript/Reference/Global_Objects/Function/bind": { "modified": "2019-03-23T23:02:28.323Z", "contributors": [ "Imvi10", @@ -19944,7 +19787,7 @@ "cobogt" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Function/call": { + "Web/JavaScript/Reference/Global_Objects/Function/call": { "modified": "2020-11-13T21:36:49.496Z", "contributors": [ "alejandro.fca", @@ -19954,20 +19797,39 @@ "bluesky777" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Function/caller": { + "Web/JavaScript/Reference/Global_Objects/Function/caller": { "modified": "2019-03-23T22:52:58.734Z", "contributors": [ "DavidBernal", "fabianlucena" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Function/displayName": { + "Web/JavaScript/Reference/Global_Objects/Function/displayName": { "modified": "2020-10-15T21:59:29.332Z", "contributors": [ "juliandavidmr" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Function/length": { + "Web/JavaScript/Reference/Global_Objects/Function/Function": { + "modified": "2020-10-15T22:33:51.294Z", + "contributors": [ + "Nachec" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function": { + "modified": "2020-10-15T21:14:31.534Z", + "contributors": [ + "Nachec", + "Tzikin100", + "teoli", + "ethertank", + "Skorney", + "ADP13", + "Mgjbot", + "Sheppy" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/length": { "modified": "2020-02-10T13:03:52.789Z", "contributors": [ "kant", @@ -19975,7 +19837,7 @@ "HyMaN" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Function/name": { + "Web/JavaScript/Reference/Global_Objects/Function/name": { "modified": "2019-03-18T20:38:56.122Z", "contributors": [ "SunWithIssues", @@ -19984,31 +19846,20 @@ "jorgecasar" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Function/prototype": { - "modified": "2019-03-23T23:53:55.022Z", - "contributors": [ - "mcardozo", - "teoli", - "shaggyrd", - "Mgjbot", - "Wrongloop", - "Sheppy" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Function/toSource": { + "Web/JavaScript/Reference/Global_Objects/Function/toSource": { "modified": "2019-03-23T22:42:12.644Z", "contributors": [ "teoli", "gpdiaz" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Function/toString": { + "Web/JavaScript/Reference/Global_Objects/Function/toString": { "modified": "2019-03-23T22:31:32.582Z", "contributors": [ "Grijander81" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Generador": { + "Web/JavaScript/Reference/Global_Objects/Generator": { "modified": "2020-09-30T15:33:08.419Z", "contributors": [ "alejandro.fca", @@ -20017,25 +19868,46 @@ "nicolasolmos" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Generador/next": { + "Web/JavaScript/Reference/Global_Objects/Generator/next": { "modified": "2020-10-15T22:03:24.006Z", "contributors": [ "DJphilomath" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Generador/return": { + "Web/JavaScript/Reference/Global_Objects/Generator/return": { "modified": "2020-10-15T22:03:25.741Z", "contributors": [ "DJphilomath" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Generador/throw": { + "Web/JavaScript/Reference/Global_Objects/Generator/throw": { "modified": "2020-10-15T22:03:23.876Z", "contributors": [ "DJphilomath" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Infinity": { + "Web/JavaScript/Reference/Global_Objects": { + "modified": "2020-03-12T19:36:16.167Z", + "contributors": [ + "Jethrotul", + "yohanolmedo", + "JoseGB", + "lajaso", + "Imvi10", + "chavesrdj", + "SphinxKnight", + "teoli", + "KENARKI", + "chebit", + "ethertank", + "Garf", + "tiangolo", + "Sheppy", + "Nathymig", + "Mgjbot" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Infinity": { "modified": "2020-03-12T19:36:58.042Z", "contributors": [ "SphinxKnight", @@ -20046,19 +19918,19 @@ "Sheppy" ] }, - "Web/JavaScript/Referencia/Objetos_globales/InternalError": { - "modified": "2020-10-15T22:33:54.342Z", + "Web/JavaScript/Reference/Global_Objects/InternalError/InternalError": { + "modified": "2020-10-15T22:33:52.933Z", "contributors": [ "Nachec" ] }, - "Web/JavaScript/Referencia/Objetos_globales/InternalError/Constructor_InternalError": { - "modified": "2020-10-15T22:33:52.933Z", + "Web/JavaScript/Reference/Global_Objects/InternalError": { + "modified": "2020-10-15T22:33:54.342Z", "contributors": [ "Nachec" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Intl": { + "Web/JavaScript/Reference/Global_Objects/Intl": { "modified": "2020-10-15T21:58:20.138Z", "contributors": [ "LucasDeFarias", @@ -20066,28 +19938,49 @@ "puentesdiaz" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Intl/NumberFormat": { - "modified": "2020-10-15T21:29:49.289Z", + "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format": { + "modified": "2020-10-15T22:26:32.434Z", "contributors": [ "fscholz", - "IsraelFloresDGA", - "eespitia.rea" + "Daniel7Byte" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Intl/NumberFormat/format": { - "modified": "2020-10-15T22:26:32.434Z", + "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat": { + "modified": "2020-10-15T21:29:49.289Z", "contributors": [ "fscholz", - "Daniel7Byte" + "IsraelFloresDGA", + "eespitia.rea" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Intl/RelativeTimeFormat": { + "Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat": { "modified": "2020-10-15T22:33:27.123Z", "contributors": [ "midudev" ] }, - "Web/JavaScript/Referencia/Objetos_globales/JSON": { + "Web/JavaScript/Reference/Global_Objects/isFinite": { + "modified": "2020-03-12T19:37:31.231Z", + "contributors": [ + "SphinxKnight", + "teoli", + "jarneygm", + "Mgjbot", + "Talisker" + ] + }, + "Web/JavaScript/Reference/Global_Objects/isNaN": { + "modified": "2020-10-15T21:17:00.242Z", + "contributors": [ + "jmmarco", + "juanarbol", + "SphinxKnight", + "teoli", + "Mgjbot", + "Talisker" + ] + }, + "Web/JavaScript/Reference/Global_Objects/JSON": { "modified": "2020-09-19T17:44:12.200Z", "contributors": [ "cristian.valdivieso", @@ -20100,7 +19993,7 @@ "fscholz" ] }, - "Web/JavaScript/Referencia/Objetos_globales/JSON/parse": { + "Web/JavaScript/Reference/Global_Objects/JSON/parse": { "modified": "2019-03-23T23:09:22.011Z", "contributors": [ "bufalo1973", @@ -20110,7 +20003,7 @@ "PepeBeat" ] }, - "Web/JavaScript/Referencia/Objetos_globales/JSON/stringify": { + "Web/JavaScript/Reference/Global_Objects/JSON/stringify": { "modified": "2020-10-15T21:26:39.053Z", "contributors": [ "AlePerez92", @@ -20128,46 +20021,26 @@ "carlosgctes" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Map": { - "modified": "2020-10-15T21:30:28.950Z", - "contributors": [ - "Almiqui", - "AntonioSalazar", - "SphinxKnight", - "Sebastiancbvz", - "vaavJSdev", - "timgivois", - "aeroxmotion", - "PepeAleu", - "xavier.gallofre", - "rn3w", - "Grijander81", - "GustavoFernandez", - "rec", - "Kouen", - "facundoj" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Map/clear": { + "Web/JavaScript/Reference/Global_Objects/Map/clear": { "modified": "2019-03-23T22:33:57.332Z", "contributors": [ "Grijander81" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Map/delete": { + "Web/JavaScript/Reference/Global_Objects/Map/delete": { "modified": "2019-06-22T21:43:58.894Z", "contributors": [ "gerardonavart", "Grijander81" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Map/entries": { + "Web/JavaScript/Reference/Global_Objects/Map/entries": { "modified": "2019-03-23T22:33:46.712Z", "contributors": [ "Grijander81" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Map/forEach": { + "Web/JavaScript/Reference/Global_Objects/Map/forEach": { "modified": "2020-10-15T21:59:58.539Z", "contributors": [ "gerardonavart", @@ -20175,125 +20048,64 @@ "katuno1981" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Map/get": { + "Web/JavaScript/Reference/Global_Objects/Map/get": { "modified": "2020-10-15T22:01:57.424Z", "contributors": [ "Marte", "Sebastiancbvz" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Map/has": { + "Web/JavaScript/Reference/Global_Objects/Map/has": { "modified": "2020-10-15T22:32:18.735Z", "contributors": [ "fredydeltoro" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Map/keys": { - "modified": "2019-03-23T22:31:40.425Z", + "Web/JavaScript/Reference/Global_Objects/Map": { + "modified": "2020-10-15T21:30:28.950Z", "contributors": [ - "jesusfchavarro" + "Almiqui", + "AntonioSalazar", + "SphinxKnight", + "Sebastiancbvz", + "vaavJSdev", + "timgivois", + "aeroxmotion", + "PepeAleu", + "xavier.gallofre", + "rn3w", + "Grijander81", + "GustavoFernandez", + "rec", + "Kouen", + "facundoj" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Map/prototype": { - "modified": "2019-03-23T22:06:29.334Z", + "Web/JavaScript/Reference/Global_Objects/Map/keys": { + "modified": "2019-03-23T22:31:40.425Z", "contributors": [ - "JuanMacias" + "jesusfchavarro" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Map/set": { + "Web/JavaScript/Reference/Global_Objects/Map/set": { "modified": "2019-03-23T22:28:28.999Z", "contributors": [ "guillermojmc" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Map/size": { + "Web/JavaScript/Reference/Global_Objects/Map/size": { "modified": "2019-03-23T22:34:02.057Z", "contributors": [ "Grijander81" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Map/values": { + "Web/JavaScript/Reference/Global_Objects/Map/values": { "modified": "2020-10-15T22:12:33.830Z", "contributors": [ "AlePerez92" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math": { - "modified": "2020-10-15T21:17:08.782Z", - "contributors": [ - "RomnSD", - "Pedro-vk", - "lajaso", - "Enesimus", - "maxbalter", - "raecillacastellana", - "mrajente47", - "enesimo", - "Jaston", - "AugustoEsquen", - "teoli", - "ethertank", - "Talisker", - "Mgjbot", - "Sheppy" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Math/E": { - "modified": "2020-10-15T21:21:06.485Z", - "contributors": [ - "lajaso", - "teoli", - "jessest" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Math/LN10": { - "modified": "2020-10-15T21:21:04.066Z", - "contributors": [ - "lajaso", - "teoli", - "jessest" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Math/LN2": { - "modified": "2020-10-15T21:21:06.933Z", - "contributors": [ - "lajaso", - "teoli", - "jessest" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Math/LOG10E": { - "modified": "2019-03-23T22:21:51.531Z", - "contributors": [ - "aocodermx" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Math/LOG2E": { - "modified": "2019-03-23T23:35:28.496Z", - "contributors": [ - "teoli", - "jessest" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Math/PI": { - "modified": "2019-03-23T22:21:48.729Z", - "contributors": [ - "aocodermx" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Math/SQRT1_2": { - "modified": "2019-03-23T22:22:44.049Z", - "contributors": [ - "aocodermx" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Math/SQRT2": { - "modified": "2019-03-23T22:18:15.216Z", - "contributors": [ - "geradrum" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Math/abs": { + "Web/JavaScript/Reference/Global_Objects/Math/abs": { "modified": "2019-10-29T19:51:46.768Z", "contributors": [ "jaomix1", @@ -20301,56 +20113,56 @@ "Sotelio" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/acos": { + "Web/JavaScript/Reference/Global_Objects/Math/acos": { "modified": "2020-10-15T21:58:17.630Z", "contributors": [ "Enesimus" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/acosh": { + "Web/JavaScript/Reference/Global_Objects/Math/acosh": { "modified": "2020-10-15T21:59:09.931Z", "contributors": [ "nickobre", "Enesimus" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/asin": { + "Web/JavaScript/Reference/Global_Objects/Math/asin": { "modified": "2019-03-23T22:11:21.124Z", "contributors": [ "hckt" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/asinh": { + "Web/JavaScript/Reference/Global_Objects/Math/asinh": { "modified": "2020-10-15T22:00:15.403Z", "contributors": [ "josegarciamanez" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/atan": { + "Web/JavaScript/Reference/Global_Objects/Math/atan": { "modified": "2020-10-15T22:02:19.566Z", "contributors": [ "alejocas" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/atan2": { + "Web/JavaScript/Reference/Global_Objects/Math/atan2": { "modified": "2019-03-23T22:52:46.887Z", "contributors": [ "maik10s" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/atanh": { + "Web/JavaScript/Reference/Global_Objects/Math/atanh": { "modified": "2020-11-01T00:27:58.552Z", "contributors": [ "carlitosnu41" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/cbrt": { + "Web/JavaScript/Reference/Global_Objects/Math/cbrt": { "modified": "2020-11-01T15:23:46.179Z", "contributors": [ "carlitosnu41" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/ceil": { + "Web/JavaScript/Reference/Global_Objects/Math/ceil": { "modified": "2020-10-15T21:49:24.207Z", "contributors": [ "RubiVG", @@ -20362,25 +20174,33 @@ "Roberto2883" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/cos": { + "Web/JavaScript/Reference/Global_Objects/Math/cos": { "modified": "2020-10-15T22:32:41.209Z", "contributors": [ "JGalazan" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/exp": { + "Web/JavaScript/Reference/Global_Objects/Math/E": { + "modified": "2020-10-15T21:21:06.485Z", + "contributors": [ + "lajaso", + "teoli", + "jessest" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/exp": { "modified": "2019-03-23T22:13:13.656Z", "contributors": [ "maramal" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/expm1": { + "Web/JavaScript/Reference/Global_Objects/Math/expm1": { "modified": "2020-11-19T20:10:09.526Z", "contributors": [ "lpg7793" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/floor": { + "Web/JavaScript/Reference/Global_Objects/Math/floor": { "modified": "2020-11-03T13:27:31.226Z", "contributors": [ "LuisGalicia", @@ -20391,38 +20211,87 @@ "harleshinn" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/fround": { + "Web/JavaScript/Reference/Global_Objects/Math/fround": { "modified": "2020-10-15T22:21:30.568Z", "contributors": [ "Itaiu" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/hypot": { + "Web/JavaScript/Reference/Global_Objects/Math/hypot": { "modified": "2020-10-15T22:01:35.023Z", "contributors": [ "AzazelN28", "MarioECU" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/log": { + "Web/JavaScript/Reference/Global_Objects/Math": { + "modified": "2020-10-15T21:17:08.782Z", + "contributors": [ + "RomnSD", + "Pedro-vk", + "lajaso", + "Enesimus", + "maxbalter", + "raecillacastellana", + "mrajente47", + "enesimo", + "Jaston", + "AugustoEsquen", + "teoli", + "ethertank", + "Talisker", + "Mgjbot", + "Sheppy" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/LN10": { + "modified": "2020-10-15T21:21:04.066Z", + "contributors": [ + "lajaso", + "teoli", + "jessest" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/LN2": { + "modified": "2020-10-15T21:21:06.933Z", + "contributors": [ + "lajaso", + "teoli", + "jessest" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/log": { "modified": "2020-10-15T22:16:12.754Z", "contributors": [ "reymundus2" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/log10": { + "Web/JavaScript/Reference/Global_Objects/Math/log10": { "modified": "2019-03-23T22:26:16.691Z", "contributors": [ "amcrsanchez" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/log2": { + "Web/JavaScript/Reference/Global_Objects/Math/LOG10E": { + "modified": "2019-03-23T22:21:51.531Z", + "contributors": [ + "aocodermx" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/log2": { "modified": "2020-10-15T22:02:09.980Z", "contributors": [ "asdrubalivan" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/max": { + "Web/JavaScript/Reference/Global_Objects/Math/LOG2E": { + "modified": "2019-03-23T23:35:28.496Z", + "contributors": [ + "teoli", + "jessest" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/max": { "modified": "2019-03-23T22:58:23.136Z", "contributors": [ "roberbnd", @@ -20432,21 +20301,27 @@ "allangonzalezmiceli" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/min": { + "Web/JavaScript/Reference/Global_Objects/Math/min": { "modified": "2019-03-23T22:39:26.032Z", "contributors": [ "kutyel", "alonso.vazquez" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/pow": { + "Web/JavaScript/Reference/Global_Objects/Math/PI": { + "modified": "2019-03-23T22:21:48.729Z", + "contributors": [ + "aocodermx" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/pow": { "modified": "2020-05-11T01:41:03.777Z", "contributors": [ "paguilar", "carral" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/random": { + "Web/JavaScript/Reference/Global_Objects/Math/random": { "modified": "2019-03-23T23:00:21.676Z", "contributors": [ "hdesoto", @@ -20455,7 +20330,7 @@ "daiant" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/round": { + "Web/JavaScript/Reference/Global_Objects/Math/round": { "modified": "2020-07-28T16:21:17.637Z", "contributors": [ "FacundoF1", @@ -20465,21 +20340,21 @@ "YerkoPalma" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/seno": { + "Web/JavaScript/Reference/Global_Objects/Math/sin": { "modified": "2019-03-23T22:51:39.313Z", "contributors": [ "jezdez", "germanfr" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/sign": { + "Web/JavaScript/Reference/Global_Objects/Math/sign": { "modified": "2019-03-23T22:16:42.806Z", "contributors": [ "Vickysolo", "frankman123" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/sqrt": { + "Web/JavaScript/Reference/Global_Objects/Math/sqrt": { "modified": "2019-03-23T22:28:35.014Z", "contributors": [ "MarioECU", @@ -20488,19 +20363,31 @@ "LotarMC" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/tan": { + "Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2": { + "modified": "2019-03-23T22:22:44.049Z", + "contributors": [ + "aocodermx" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/SQRT2": { + "modified": "2019-03-23T22:18:15.216Z", + "contributors": [ + "geradrum" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/tan": { "modified": "2020-10-15T22:30:22.119Z", "contributors": [ "spaceinvadev" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/tanh": { + "Web/JavaScript/Reference/Global_Objects/Math/tanh": { "modified": "2020-10-15T22:08:08.543Z", "contributors": [ "smuurf" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Math/trunc": { + "Web/JavaScript/Reference/Global_Objects/Math/trunc": { "modified": "2020-06-23T08:00:29.509Z", "contributors": [ "GioSJ47", @@ -20509,7 +20396,7 @@ "kenin4" ] }, - "Web/JavaScript/Referencia/Objetos_globales/NaN": { + "Web/JavaScript/Reference/Global_Objects/NaN": { "modified": "2020-03-12T19:36:10.137Z", "contributors": [ "jaomix1", @@ -20521,7 +20408,19 @@ "Sheppy" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number": { + "Web/JavaScript/Reference/Global_Objects/null": { + "modified": "2020-03-12T19:42:06.401Z", + "contributors": [ + "mkiramu", + "ivanagui2", + "diegoazh", + "BubuAnabelas", + "hmorv", + "AugustoEsquen", + "AsLogd" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number": { "modified": "2020-11-24T10:13:32.926Z", "contributors": [ "gise-s", @@ -20537,72 +20436,65 @@ "Sheppy" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number/MAX_SAFE_INTEGER": { - "modified": "2020-10-15T22:00:45.784Z", + "Web/JavaScript/Reference/Global_Objects/Number/isFinite": { + "modified": "2020-10-15T22:02:19.829Z", "contributors": [ - "urielmx" + "dahsser" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number/MAX_VALUE": { - "modified": "2019-03-23T22:40:03.550Z", + "Web/JavaScript/Reference/Global_Objects/Number/isInteger": { + "modified": "2020-10-15T21:44:12.806Z", "contributors": [ - "abaracedo", - "UlisesGascon" + "AlePerez92", + "Rafaelox" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number/MIN_VALUE": { - "modified": "2019-03-23T22:39:33.277Z", + "Web/JavaScript/Reference/Global_Objects/Number/isNaN": { + "modified": "2020-10-14T19:49:07.774Z", "contributors": [ + "alejandro.fca", "abaracedo" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number/NEGATIVE_INFINITY": { - "modified": "2019-03-23T23:20:29.197Z", - "contributors": [ - "teoli", - "jarneygm" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Number/NaN": { - "modified": "2020-10-15T22:30:30.437Z", + "Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger": { + "modified": "2020-10-15T22:02:33.932Z", "contributors": [ - "oldanirenzo" + "chrishenx" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number/POSITIVE_INFINITY": { - "modified": "2019-03-23T23:20:30.481Z", + "Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER": { + "modified": "2020-10-15T22:00:45.784Z", "contributors": [ - "teoli", - "jarneygm" + "urielmx" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number/isFinite": { - "modified": "2020-10-15T22:02:19.829Z", + "Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE": { + "modified": "2019-03-23T22:40:03.550Z", "contributors": [ - "dahsser" + "abaracedo", + "UlisesGascon" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number/isInteger": { - "modified": "2020-10-15T21:44:12.806Z", + "Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE": { + "modified": "2019-03-23T22:39:33.277Z", "contributors": [ - "AlePerez92", - "Rafaelox" + "abaracedo" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number/isNaN": { - "modified": "2020-10-14T19:49:07.774Z", + "Web/JavaScript/Reference/Global_Objects/Number/NaN": { + "modified": "2020-10-15T22:30:30.437Z", "contributors": [ - "alejandro.fca", - "abaracedo" + "oldanirenzo" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number/isSafeInteger": { - "modified": "2020-10-15T22:02:33.932Z", + "Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY": { + "modified": "2019-03-23T23:20:29.197Z", "contributors": [ - "chrishenx" + "teoli", + "jarneygm" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number/parseFloat": { + "Web/JavaScript/Reference/Global_Objects/Number/parseFloat": { "modified": "2020-10-15T22:11:38.614Z", "contributors": [ "pilichanampe", @@ -20610,20 +20502,20 @@ "IsraelFloresDGA" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number/parseInt": { + "Web/JavaScript/Reference/Global_Objects/Number/parseInt": { "modified": "2020-10-15T22:29:44.854Z", "contributors": [ "HarryzMoba_10" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number/prototype": { - "modified": "2019-03-23T23:46:16.155Z", + "Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY": { + "modified": "2019-03-23T23:20:30.481Z", "contributors": [ "teoli", - "Sheppy" + "jarneygm" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number/toFixed": { + "Web/JavaScript/Reference/Global_Objects/Number/toFixed": { "modified": "2020-05-26T21:48:51.844Z", "contributors": [ "EtelS", @@ -20634,19 +20526,19 @@ "isabido" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number/toLocaleString": { + "Web/JavaScript/Reference/Global_Objects/Number/toLocaleString": { "modified": "2020-11-04T23:22:26.363Z", "contributors": [ "ccarruitero-mdn" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number/toPrecision": { + "Web/JavaScript/Reference/Global_Objects/Number/toPrecision": { "modified": "2020-10-15T22:05:51.600Z", "contributors": [ "jtorresheredia" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number/toString": { + "Web/JavaScript/Reference/Global_Objects/Number/toString": { "modified": "2019-06-15T08:43:31.612Z", "contributors": [ "IbraBach", @@ -20655,50 +20547,26 @@ "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Number/valueOf": { + "Web/JavaScript/Reference/Global_Objects/Number/valueOf": { "modified": "2020-10-15T21:58:23.022Z", "contributors": [ "Enesimus" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object": { - "modified": "2020-10-15T21:17:02.144Z", - "contributors": [ - "luisjorquera", - "fedoroffs", - "ramirobg94", - "marcelorodcla", - "hecsoto1", - "gabrielrincon", - "fscholz", - "DanielAmaro", - "taniaReyesM", - "pedro-otero", - "ragutimar", - "hmorv", - "mishelashala", - "teoli", - "diegogaysaez", - "neosergio", - "Talisker", - "Mgjbot", - "Sheppy" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Object/__defineGetter__": { + "Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__": { "modified": "2019-03-23T22:39:13.909Z", "contributors": [ "p1errot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/__lookupGetter__": { + "Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__": { "modified": "2020-10-15T21:59:55.328Z", "contributors": [ "al-shmlan", "jerssonjgar" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/assign": { + "Web/JavaScript/Reference/Global_Objects/Object/assign": { "modified": "2020-10-15T21:34:18.548Z", "contributors": [ "camsa", @@ -20716,7 +20584,7 @@ "fscholz" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/constructor": { + "Web/JavaScript/Reference/Global_Objects/Object/constructor": { "modified": "2019-03-23T23:16:25.847Z", "contributors": [ "alejandrochung", @@ -20726,7 +20594,7 @@ "carlosmantilla" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/create": { + "Web/JavaScript/Reference/Global_Objects/Object/create": { "modified": "2020-11-08T21:02:55.557Z", "contributors": [ "Hunter3195", @@ -20738,7 +20606,7 @@ "carlosmantilla" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/defineProperties": { + "Web/JavaScript/Reference/Global_Objects/Object/defineProperties": { "modified": "2019-03-23T23:15:47.453Z", "contributors": [ "Thargelion", @@ -20747,7 +20615,7 @@ "guillermojmc" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/defineProperty": { + "Web/JavaScript/Reference/Global_Objects/Object/defineProperty": { "modified": "2019-03-23T23:08:49.016Z", "contributors": [ "JoanSerna", @@ -20758,7 +20626,7 @@ "Siro_Diaz" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/entries": { + "Web/JavaScript/Reference/Global_Objects/Object/entries": { "modified": "2019-07-12T06:16:58.372Z", "contributors": [ "ajuanjojjj", @@ -20766,7 +20634,7 @@ "JooseNavarro" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/freeze": { + "Web/JavaScript/Reference/Global_Objects/Object/freeze": { "modified": "2020-10-15T21:40:07.065Z", "contributors": [ "D3Portillo", @@ -20776,14 +20644,14 @@ "mishelashala" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/fromEntries": { + "Web/JavaScript/Reference/Global_Objects/Object/fromEntries": { "modified": "2020-10-15T22:16:55.358Z", "contributors": [ "emileond", "Belquira" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/getOwnPropertyDescriptor": { + "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor": { "modified": "2020-04-01T17:55:45.485Z", "contributors": [ "SoyZatarain", @@ -20792,33 +20660,33 @@ "mishelashala" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/getOwnPropertyDescriptors": { + "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors": { "modified": "2020-10-15T22:04:17.154Z", "contributors": [ "cbalderasc" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/getOwnPropertyNames": { + "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames": { "modified": "2019-03-23T23:11:13.666Z", "contributors": [ "teland" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/getOwnPropertySymbols": { + "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols": { "modified": "2019-03-23T22:44:20.977Z", "contributors": [ "SphinxKnight", "mishelashala" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/getPrototypeOf": { + "Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf": { "modified": "2019-03-23T23:08:23.955Z", "contributors": [ "tutugordillo", "Siro_Diaz" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/hasOwnProperty": { + "Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty": { "modified": "2019-03-23T23:16:40.759Z", "contributors": [ "mlealvillarreal", @@ -20826,7 +20694,31 @@ "Siro_Diaz" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/is": { + "Web/JavaScript/Reference/Global_Objects/Object": { + "modified": "2020-10-15T21:17:02.144Z", + "contributors": [ + "luisjorquera", + "fedoroffs", + "ramirobg94", + "marcelorodcla", + "hecsoto1", + "gabrielrincon", + "fscholz", + "DanielAmaro", + "taniaReyesM", + "pedro-otero", + "ragutimar", + "hmorv", + "mishelashala", + "teoli", + "diegogaysaez", + "neosergio", + "Talisker", + "Mgjbot", + "Sheppy" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/is": { "modified": "2020-10-25T20:02:03.267Z", "contributors": [ "Cesaraugp", @@ -20835,31 +20727,31 @@ "adelamata" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/isExtensible": { + "Web/JavaScript/Reference/Global_Objects/Object/isExtensible": { "modified": "2019-03-23T22:44:00.950Z", "contributors": [ "mishelashala" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/isFrozen": { + "Web/JavaScript/Reference/Global_Objects/Object/isFrozen": { "modified": "2019-03-23T22:44:03.171Z", "contributors": [ "mishelashala" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/isPrototypeOf": { + "Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf": { "modified": "2019-03-23T22:31:29.220Z", "contributors": [ "Grijander81" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/isSealed": { + "Web/JavaScript/Reference/Global_Objects/Object/isSealed": { "modified": "2020-10-15T22:04:16.292Z", "contributors": [ "cbalderasc" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/keys": { + "Web/JavaScript/Reference/Global_Objects/Object/keys": { "modified": "2020-10-15T21:31:27.965Z", "contributors": [ "jose-setaworkshop", @@ -20876,19 +20768,19 @@ "rcchristiane" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/preventExtensions": { + "Web/JavaScript/Reference/Global_Objects/Object/preventExtensions": { "modified": "2019-04-27T00:07:22.331Z", "contributors": [ "mishelashala" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/propertyIsEnumerable": { + "Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable": { "modified": "2019-03-23T22:50:44.591Z", "contributors": [ "aldoromo88" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/proto": { + "Web/JavaScript/Reference/Global_Objects/Object/proto": { "modified": "2019-03-23T22:45:52.056Z", "contributors": [ "swsoftware", @@ -20896,27 +20788,14 @@ "adelamata" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/prototype": { - "modified": "2020-10-15T21:28:24.470Z", - "contributors": [ - "lajaso", - "Sergio_Gonzalez_Collado", - "educalleja", - "AlexanderEstebanZapata1994", - "emilianodiaz", - "mishelashala", - "teoli", - "diegogaysaez" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Object/seal": { + "Web/JavaScript/Reference/Global_Objects/Object/seal": { "modified": "2019-04-27T00:05:41.633Z", "contributors": [ "JoniJnm", "Grijander81" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/setPrototypeOf": { + "Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf": { "modified": "2019-03-23T22:43:30.332Z", "contributors": [ "SphinxKnight", @@ -20924,19 +20803,19 @@ "mishelashala" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/toLocaleString": { + "Web/JavaScript/Reference/Global_Objects/Object/toLocaleString": { "modified": "2020-10-15T22:31:29.977Z", "contributors": [ "JotaCé" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/toSource": { + "Web/JavaScript/Reference/Global_Objects/Object/toSource": { "modified": "2020-10-15T21:59:52.415Z", "contributors": [ "taniaReyesM" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/toString": { + "Web/JavaScript/Reference/Global_Objects/Object/toString": { "modified": "2019-03-23T23:48:33.504Z", "contributors": [ "gutyfas", @@ -20947,7 +20826,7 @@ "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/valueOf": { + "Web/JavaScript/Reference/Global_Objects/Object/valueOf": { "modified": "2019-03-23T23:07:28.561Z", "contributors": [ "JuanMacias", @@ -20955,7 +20834,7 @@ "emiliot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Object/values": { + "Web/JavaScript/Reference/Global_Objects/Object/values": { "modified": "2020-10-15T21:51:49.001Z", "contributors": [ "camsa", @@ -20964,27 +20843,28 @@ "ramses512" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Promise": { - "modified": "2020-10-15T21:34:31.961Z", + "Web/JavaScript/Reference/Global_Objects/parseFloat": { + "modified": "2020-07-04T20:00:21.182Z", "contributors": [ - "chrisdavidmills", - "javigaralva", - "ManuelEsp", - "atpollmann", - "jwhitlock", - "zgluis", - "joseconstela", - "luisrodriguezchaves", - "LazaroOnline", - "leopic", + "pilichanampe", + "SphinxKnight", "teoli", - "JhonAlx", - "dennistobar", - "alagos", - "jorgecasar" + "Mgjbot", + "Talisker" + ] + }, + "Web/JavaScript/Reference/Global_Objects/parseInt": { + "modified": "2020-03-12T19:37:31.195Z", + "contributors": [ + "mitsurugi", + "teoli", + "daiant", + "SphinxKnight", + "Mgjbot", + "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Promise/all": { + "Web/JavaScript/Reference/Global_Objects/Promise/all": { "modified": "2020-10-15T21:50:20.796Z", "contributors": [ "baumannzone", @@ -20994,7 +20874,7 @@ "FranBacoSoft" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Promise/catch": { + "Web/JavaScript/Reference/Global_Objects/Promise/catch": { "modified": "2020-10-15T21:54:38.286Z", "contributors": [ "JuanMacias", @@ -21002,20 +20882,34 @@ "walbuc" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Promise/finally": { + "Web/JavaScript/Reference/Global_Objects/Promise/finally": { "modified": "2020-10-15T22:16:46.629Z", "contributors": [ "javigallego", "smvilar" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Promise/prototype": { - "modified": "2020-10-15T21:52:03.650Z", + "Web/JavaScript/Reference/Global_Objects/Promise": { + "modified": "2020-10-15T21:34:31.961Z", "contributors": [ - "atpollmann" + "chrisdavidmills", + "javigaralva", + "ManuelEsp", + "atpollmann", + "jwhitlock", + "zgluis", + "joseconstela", + "luisrodriguezchaves", + "LazaroOnline", + "leopic", + "teoli", + "JhonAlx", + "dennistobar", + "alagos", + "jorgecasar" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Promise/race": { + "Web/JavaScript/Reference/Global_Objects/Promise/race": { "modified": "2020-10-15T21:50:20.173Z", "contributors": [ "JuanMacias", @@ -21023,7 +20917,7 @@ "FranBacoSoft" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Promise/reject": { + "Web/JavaScript/Reference/Global_Objects/Promise/reject": { "modified": "2020-10-15T22:00:43.489Z", "contributors": [ "edeyglez95", @@ -21031,14 +20925,14 @@ "giturra" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Promise/resolve": { + "Web/JavaScript/Reference/Global_Objects/Promise/resolve": { "modified": "2020-10-15T22:06:37.624Z", "contributors": [ "HappyEduardoMilk", "ChristianMarca" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Promise/then": { + "Web/JavaScript/Reference/Global_Objects/Promise/then": { "modified": "2020-11-30T12:11:41.749Z", "contributors": [ "StripTM", @@ -21055,7 +20949,7 @@ "manumora" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Proxy": { + "Web/JavaScript/Reference/Global_Objects/Proxy": { "modified": "2020-10-30T19:48:13.357Z", "contributors": [ "Ramdhei-codes", @@ -21067,13 +20961,31 @@ "pedropablomt95" ] }, - "Web/JavaScript/Referencia/Objetos_globales/ReferenceError": { + "Web/JavaScript/Reference/Global_Objects/ReferenceError": { "modified": "2020-10-15T22:33:51.476Z", "contributors": [ "Nachec" ] }, - "Web/JavaScript/Referencia/Objetos_globales/RegExp": { + "Web/JavaScript/Reference/Global_Objects/RegExp/compile": { + "modified": "2020-10-15T22:23:39.381Z", + "contributors": [ + "raiman264" + ] + }, + "Web/JavaScript/Reference/Global_Objects/RegExp/exec": { + "modified": "2019-03-23T22:08:57.043Z", + "contributors": [ + "Sebastiancbvz" + ] + }, + "Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase": { + "modified": "2019-03-23T22:10:00.611Z", + "contributors": [ + "Cuadraman" + ] + }, + "Web/JavaScript/Reference/Global_Objects/RegExp": { "modified": "2020-10-15T21:12:12.221Z", "contributors": [ "Nachec", @@ -21091,144 +21003,94 @@ "Sheppy" ] }, - "Web/JavaScript/Referencia/Objetos_globales/RegExp/RegExp": { + "Web/JavaScript/Reference/Global_Objects/RegExp/RegExp": { "modified": "2020-10-15T22:34:22.734Z", "contributors": [ "Nachec" ] }, - "Web/JavaScript/Referencia/Objetos_globales/RegExp/compile": { - "modified": "2020-10-15T22:23:39.381Z", - "contributors": [ - "raiman264" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/RegExp/exec": { - "modified": "2019-03-23T22:08:57.043Z", - "contributors": [ - "Sebastiancbvz" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/RegExp/ignoreCase": { - "modified": "2019-03-23T22:10:00.611Z", - "contributors": [ - "Cuadraman" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/RegExp/rightContext": { + "Web/JavaScript/Reference/Global_Objects/RegExp/rightContext": { "modified": "2020-10-15T22:22:06.547Z", "contributors": [ "higuitadiaz" ] }, - "Web/JavaScript/Referencia/Objetos_globales/RegExp/test": { + "Web/JavaScript/Reference/Global_Objects/RegExp/test": { "modified": "2019-03-23T22:20:42.368Z", "contributors": [ "Undre4m" ] }, - "Web/JavaScript/Referencia/Objetos_globales/RegExp/toString": { + "Web/JavaScript/Reference/Global_Objects/RegExp/toString": { "modified": "2019-03-23T22:20:44.971Z", "contributors": [ "Undre4m" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Set": { - "modified": "2020-10-15T21:43:41.104Z", - "contributors": [ - "camsa", - "IsraelFloresDGA", - "albertor21", - "robe007", - "taniaReyesM", - "mjlescano", - "germanio", - "frank-orellana", - "Chofoteddy" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Set/@@iterator": { + "Web/JavaScript/Reference/Global_Objects/Set/@@iterator": { "modified": "2020-10-15T22:23:37.310Z", "contributors": [ "devtoni" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Set/add": { + "Web/JavaScript/Reference/Global_Objects/Set/add": { "modified": "2019-03-23T22:37:23.989Z", "contributors": [ "Chofoteddy" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Set/clear": { + "Web/JavaScript/Reference/Global_Objects/Set/clear": { "modified": "2019-03-23T22:25:09.145Z", "contributors": [ "frank-orellana" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Set/delete": { + "Web/JavaScript/Reference/Global_Objects/Set/delete": { "modified": "2019-03-23T22:25:14.047Z", "contributors": [ "frank-orellana" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Set/entries": { + "Web/JavaScript/Reference/Global_Objects/Set/entries": { "modified": "2020-10-15T22:06:44.315Z", "contributors": [ "AMongeMoreno" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Set/has": { + "Web/JavaScript/Reference/Global_Objects/Set/has": { "modified": "2019-03-23T22:25:15.879Z", "contributors": [ "frank-orellana" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Set/size": { - "modified": "2019-03-23T22:37:32.002Z", + "Web/JavaScript/Reference/Global_Objects/Set": { + "modified": "2020-10-15T21:43:41.104Z", "contributors": [ + "camsa", + "IsraelFloresDGA", "albertor21", + "robe007", + "taniaReyesM", + "mjlescano", + "germanio", + "frank-orellana", "Chofoteddy" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Set/values": { - "modified": "2020-10-15T22:23:08.370Z", - "contributors": [ - "jvelasquez-cl" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/String": { - "modified": "2020-10-15T21:15:27.929Z", + "Web/JavaScript/Reference/Global_Objects/Set/size": { + "modified": "2019-03-23T22:37:32.002Z", "contributors": [ - "Nachec", - "robertsallent", - "sujumayas", - "AriManto", - "BubuAnabelas", - "wbamberg", - "SphinxKnight", - "Gilbertrdz", - "vik231982", - "alejandrochung", - "DevManny", - "teoli", - "ADP13", - "Talisker", - "Mgjbot", - "Sheppy" + "albertor21", + "Chofoteddy" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/Trim": { - "modified": "2019-08-18T16:00:14.454Z", + "Web/JavaScript/Reference/Global_Objects/Set/values": { + "modified": "2020-10-15T22:23:08.370Z", "contributors": [ - "valen2004vega", - "raulgg", - "baumannzone", - "andrpueb", - "thzunder", - "AnuarMB" + "jvelasquez-cl" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/anchor": { + "Web/JavaScript/Reference/Global_Objects/String/anchor": { "modified": "2019-03-23T23:48:20.117Z", "contributors": [ "paradoja", @@ -21237,7 +21099,7 @@ "Mgjbot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/big": { + "Web/JavaScript/Reference/Global_Objects/String/big": { "modified": "2019-03-23T23:48:12.468Z", "contributors": [ "Feder1997Clinton", @@ -21246,7 +21108,7 @@ "Mgjbot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/blink": { + "Web/JavaScript/Reference/Global_Objects/String/blink": { "modified": "2019-03-23T23:48:14.789Z", "contributors": [ "teoli", @@ -21254,7 +21116,7 @@ "Mgjbot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/bold": { + "Web/JavaScript/Reference/Global_Objects/String/bold": { "modified": "2019-03-23T23:48:17.641Z", "contributors": [ "teoli", @@ -21262,7 +21124,7 @@ "Mgjbot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/charAt": { + "Web/JavaScript/Reference/Global_Objects/String/charAt": { "modified": "2019-03-23T23:48:14.397Z", "contributors": [ "manatico4", @@ -21274,7 +21136,7 @@ "Mgjbot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/charCodeAt": { + "Web/JavaScript/Reference/Global_Objects/String/charCodeAt": { "modified": "2019-03-23T23:48:12.586Z", "contributors": [ "GermanRodrickson", @@ -21284,13 +21146,13 @@ "Mgjbot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/codePointAt": { + "Web/JavaScript/Reference/Global_Objects/String/codePointAt": { "modified": "2020-10-15T21:56:01.225Z", "contributors": [ "thepianist2" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/concat": { + "Web/JavaScript/Reference/Global_Objects/String/concat": { "modified": "2020-11-17T12:46:24.732Z", "contributors": [ "AlePerez92", @@ -21300,7 +21162,7 @@ "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/endsWith": { + "Web/JavaScript/Reference/Global_Objects/String/endsWith": { "modified": "2020-11-17T13:03:14.946Z", "contributors": [ "AlePerez92", @@ -21309,7 +21171,7 @@ "thzunder" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/fixed": { + "Web/JavaScript/Reference/Global_Objects/String/fixed": { "modified": "2019-03-23T23:48:13.182Z", "contributors": [ "teoli", @@ -21317,19 +21179,19 @@ "Mgjbot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/fontcolor": { + "Web/JavaScript/Reference/Global_Objects/String/fontcolor": { "modified": "2019-03-23T22:43:01.091Z", "contributors": [ "thzunder" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/fontsize": { + "Web/JavaScript/Reference/Global_Objects/String/fontsize": { "modified": "2019-03-23T22:42:58.033Z", "contributors": [ "thzunder" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/fromCharCode": { + "Web/JavaScript/Reference/Global_Objects/String/fromCharCode": { "modified": "2019-03-23T23:48:18.539Z", "contributors": [ "pierina27", @@ -21338,14 +21200,14 @@ "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/fromCodePoint": { + "Web/JavaScript/Reference/Global_Objects/String/fromCodePoint": { "modified": "2019-03-23T22:54:48.266Z", "contributors": [ "SphinxKnight", "iKenshu" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/includes": { + "Web/JavaScript/Reference/Global_Objects/String/includes": { "modified": "2020-11-17T13:18:02.027Z", "contributors": [ "AlePerez92", @@ -21355,7 +21217,28 @@ "jairoFg12" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/indexOf": { + "Web/JavaScript/Reference/Global_Objects/String": { + "modified": "2020-10-15T21:15:27.929Z", + "contributors": [ + "Nachec", + "robertsallent", + "sujumayas", + "AriManto", + "BubuAnabelas", + "wbamberg", + "SphinxKnight", + "Gilbertrdz", + "vik231982", + "alejandrochung", + "DevManny", + "teoli", + "ADP13", + "Talisker", + "Mgjbot", + "Sheppy" + ] + }, + "Web/JavaScript/Reference/Global_Objects/String/indexOf": { "modified": "2019-03-18T21:12:49.473Z", "contributors": [ "aalmadar", @@ -21367,7 +21250,7 @@ "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/italics": { + "Web/JavaScript/Reference/Global_Objects/String/italics": { "modified": "2019-03-23T23:48:19.418Z", "contributors": [ "teoli", @@ -21375,7 +21258,7 @@ "Mgjbot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/lastIndexOf": { + "Web/JavaScript/Reference/Global_Objects/String/lastIndexOf": { "modified": "2019-03-23T23:48:26.628Z", "contributors": [ "chepegeek", @@ -21385,7 +21268,7 @@ "Mgjbot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/length": { + "Web/JavaScript/Reference/Global_Objects/String/length": { "modified": "2020-11-17T13:10:35.617Z", "contributors": [ "AlePerez92", @@ -21397,7 +21280,7 @@ "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/link": { + "Web/JavaScript/Reference/Global_Objects/String/link": { "modified": "2019-03-23T23:48:12.131Z", "contributors": [ "germun", @@ -21405,13 +21288,13 @@ "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/localeCompare": { + "Web/JavaScript/Reference/Global_Objects/String/localeCompare": { "modified": "2020-10-15T22:04:12.741Z", "contributors": [ "DesarrolloJon" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/match": { + "Web/JavaScript/Reference/Global_Objects/String/match": { "modified": "2019-03-23T23:48:25.734Z", "contributors": [ "germun", @@ -21421,19 +21304,19 @@ "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/matchAll": { + "Web/JavaScript/Reference/Global_Objects/String/matchAll": { "modified": "2020-10-15T22:22:31.534Z", "contributors": [ "juanarbol" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/normalize": { + "Web/JavaScript/Reference/Global_Objects/String/normalize": { "modified": "2020-10-15T22:04:13.627Z", "contributors": [ "daniel.duarte" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/padStart": { + "Web/JavaScript/Reference/Global_Objects/String/padStart": { "modified": "2019-03-23T22:19:55.544Z", "contributors": [ "teoli", @@ -21441,23 +21324,14 @@ "EdgarOrtegaRamirez" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/prototype": { - "modified": "2019-03-23T23:53:48.515Z", - "contributors": [ - "DevManny", - "teoli", - "Mgjbot", - "Talisker" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/String/raw": { + "Web/JavaScript/Reference/Global_Objects/String/raw": { "modified": "2020-10-15T21:58:34.921Z", "contributors": [ "leomicheloni", "RaulRueda" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/repeat": { + "Web/JavaScript/Reference/Global_Objects/String/repeat": { "modified": "2020-10-15T21:38:22.279Z", "contributors": [ "SphinxKnight", @@ -21466,7 +21340,7 @@ "GabrielNicolasAvellaneda" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/replace": { + "Web/JavaScript/Reference/Global_Objects/String/replace": { "modified": "2020-01-29T20:30:57.565Z", "contributors": [ "camsa", @@ -21480,7 +21354,7 @@ "Mgjbot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/search": { + "Web/JavaScript/Reference/Global_Objects/String/search": { "modified": "2019-03-23T23:48:25.507Z", "contributors": [ "AlePerez92", @@ -21490,7 +21364,7 @@ "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/slice": { + "Web/JavaScript/Reference/Global_Objects/String/slice": { "modified": "2019-03-23T23:48:27.527Z", "contributors": [ "ibejarano", @@ -21501,14 +21375,14 @@ "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/small": { + "Web/JavaScript/Reference/Global_Objects/String/small": { "modified": "2019-03-23T23:48:20.862Z", "contributors": [ "teoli", "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/split": { + "Web/JavaScript/Reference/Global_Objects/String/split": { "modified": "2019-03-23T23:52:25.005Z", "contributors": [ "germun", @@ -21520,7 +21394,7 @@ "Mgjbot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/startsWith": { + "Web/JavaScript/Reference/Global_Objects/String/startsWith": { "modified": "2020-11-17T06:29:46.581Z", "contributors": [ "AlePerez92", @@ -21529,7 +21403,7 @@ "mautematico" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/strike": { + "Web/JavaScript/Reference/Global_Objects/String/strike": { "modified": "2019-03-23T23:48:19.929Z", "contributors": [ "teoli", @@ -21537,7 +21411,7 @@ "Mgjbot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/sub": { + "Web/JavaScript/Reference/Global_Objects/String/sub": { "modified": "2019-03-23T23:48:12.360Z", "contributors": [ "teoli", @@ -21545,7 +21419,7 @@ "Mgjbot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/substr": { + "Web/JavaScript/Reference/Global_Objects/String/substr": { "modified": "2019-03-23T23:59:51.386Z", "contributors": [ "olijyat", @@ -21557,7 +21431,7 @@ "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/substring": { + "Web/JavaScript/Reference/Global_Objects/String/substring": { "modified": "2019-03-24T00:03:43.568Z", "contributors": [ "alejandrochung", @@ -21567,7 +21441,7 @@ "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/sup": { + "Web/JavaScript/Reference/Global_Objects/String/sup": { "modified": "2019-03-23T23:48:12.249Z", "contributors": [ "teoli", @@ -21575,19 +21449,19 @@ "Mgjbot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/toLocaleLowerCase": { + "Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase": { "modified": "2020-10-15T22:11:36.514Z", "contributors": [ "MarkCBB" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/toLocaleUpperCase": { + "Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase": { "modified": "2020-10-15T21:55:35.801Z", "contributors": [ "padrecedano" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/toLowerCase": { + "Web/JavaScript/Reference/Global_Objects/String/toLowerCase": { "modified": "2019-03-23T23:48:13.663Z", "contributors": [ "Daniel_Martin", @@ -21598,13 +21472,13 @@ "Mgjbot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/toSource": { + "Web/JavaScript/Reference/Global_Objects/String/toSource": { "modified": "2020-10-15T22:22:52.809Z", "contributors": [ "SoyZatarain" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/toString": { + "Web/JavaScript/Reference/Global_Objects/String/toString": { "modified": "2019-03-23T23:48:26.799Z", "contributors": [ "teoli", @@ -21612,7 +21486,7 @@ "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/toUpperCase": { + "Web/JavaScript/Reference/Global_Objects/String/toUpperCase": { "modified": "2019-03-23T23:48:19.033Z", "contributors": [ "hgutierrez", @@ -21621,21 +21495,44 @@ "Mgjbot" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/trimEnd": { + "Web/JavaScript/Reference/Global_Objects/String/Trim": { + "modified": "2019-08-18T16:00:14.454Z", + "contributors": [ + "valen2004vega", + "raulgg", + "baumannzone", + "andrpueb", + "thzunder", + "AnuarMB" + ] + }, + "Web/JavaScript/Reference/Global_Objects/String/trimEnd": { "modified": "2020-10-15T22:32:40.984Z", "contributors": [ - "cardotrejos" + "cardotrejos" + ] + }, + "Web/JavaScript/Reference/Global_Objects/String/valueOf": { + "modified": "2019-03-23T23:48:30.713Z", + "contributors": [ + "teoli", + "Talisker", + "Mgjbot" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Symbol/for": { + "modified": "2019-03-23T22:06:38.566Z", + "contributors": [ + "dariomaim" ] }, - "Web/JavaScript/Referencia/Objetos_globales/String/valueOf": { - "modified": "2019-03-23T23:48:30.713Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance": { + "modified": "2019-03-23T22:06:44.647Z", "contributors": [ - "teoli", - "Talisker", - "Mgjbot" + "aeroxmotion" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Symbol": { + "Web/JavaScript/Reference/Global_Objects/Symbol": { "modified": "2019-06-24T09:01:16.062Z", "contributors": [ "PCASME", @@ -21649,19 +21546,7 @@ "joseanpg" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Symbol/for": { - "modified": "2019-03-23T22:06:38.566Z", - "contributors": [ - "dariomaim" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Symbol/hasInstance": { - "modified": "2019-03-23T22:06:44.647Z", - "contributors": [ - "aeroxmotion" - ] - }, - "Web/JavaScript/Referencia/Objetos_globales/Symbol/iterator": { + "Web/JavaScript/Reference/Global_Objects/Symbol/iterator": { "modified": "2020-10-15T22:03:24.581Z", "contributors": [ "leovenezia", @@ -21669,19 +21554,20 @@ "DJphilomath" ] }, - "Web/JavaScript/Referencia/Objetos_globales/SyntaxError": { + "Web/JavaScript/Reference/Global_Objects/SyntaxError": { "modified": "2019-03-23T22:31:22.099Z", "contributors": [ "BubuAnabelas" ] }, - "Web/JavaScript/Referencia/Objetos_globales/SyntaxError/prototype": { - "modified": "2019-03-23T22:31:16.833Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/buffer": { + "modified": "2019-03-23T22:12:04.645Z", "contributors": [ - "BubuAnabelas" + "SphinxKnight", + "joseluisq" ] }, - "Web/JavaScript/Referencia/Objetos_globales/TypedArray": { + "Web/JavaScript/Reference/Global_Objects/TypedArray": { "modified": "2020-10-15T21:54:18.777Z", "contributors": [ "Nachec", @@ -21690,2058 +21576,2172 @@ "fscholz" ] }, - "Web/JavaScript/Referencia/Objetos_globales/TypedArray/buffer": { - "modified": "2019-03-23T22:12:04.645Z", + "Web/JavaScript/Reference/Global_Objects/Uint8Array": { + "modified": "2019-03-23T22:26:47.572Z", "contributors": [ - "SphinxKnight", - "joseluisq" + "joseluisq", + "misan", + "pelu" ] }, - "Web/JavaScript/Referencia/Objetos_globales/URIError": { - "modified": "2020-10-15T22:14:48.739Z", + "Web/JavaScript/Reference/Global_Objects/undefined": { + "modified": "2020-03-12T19:36:57.621Z", "contributors": [ - "omoldes" + "IsaacAaron", + "Undre4m", + "BubuAnabelas", + "SphinxKnight", + "teoli", + "ADP13", + "Talisker", + "Mgjbot", + "Sheppy" ] }, - "Web/JavaScript/Referencia/Objetos_globales/Uint8Array": { - "modified": "2019-03-23T22:26:47.572Z", + "Web/JavaScript/Reference/Global_Objects/unescape": { + "modified": "2020-03-12T19:43:34.960Z", "contributors": [ - "joseluisq", - "misan", - "pelu" + "DracotMolver" ] }, - "Web/JavaScript/Referencia/Objetos_globales/WeakMap": { - "modified": "2020-10-06T14:36:19.625Z", + "Web/JavaScript/Reference/Global_Objects/URIError": { + "modified": "2020-10-15T22:14:48.739Z", "contributors": [ - "oleksandrstarov", - "SphinxKnight", - "kdex", - "frank-orellana", - "oagarcia", - "willemsh" + "omoldes" ] }, - "Web/JavaScript/Referencia/Objetos_globales/WeakMap/clear": { + "Web/JavaScript/Reference/Global_Objects/WeakMap/clear": { "modified": "2020-10-15T22:13:14.699Z", "contributors": [ "xochilpili" ] }, - "Web/JavaScript/Referencia/Objetos_globales/WeakMap/delete": { + "Web/JavaScript/Reference/Global_Objects/WeakMap/delete": { "modified": "2019-03-23T22:25:14.754Z", "contributors": [ "xochilpili", "frank-orellana" ] }, - "Web/JavaScript/Referencia/Objetos_globales/WeakMap/get": { + "Web/JavaScript/Reference/Global_Objects/WeakMap/get": { "modified": "2020-10-15T22:13:26.011Z", "contributors": [ "xochilpili" ] }, - "Web/JavaScript/Referencia/Objetos_globales/WeakMap/has": { + "Web/JavaScript/Reference/Global_Objects/WeakMap/has": { "modified": "2020-10-15T22:13:17.587Z", "contributors": [ "xochilpili" ] }, - "Web/JavaScript/Referencia/Objetos_globales/WeakMap/prototype": { - "modified": "2019-03-23T22:25:12.395Z", + "Web/JavaScript/Reference/Global_Objects/WeakMap": { + "modified": "2020-10-06T14:36:19.625Z", "contributors": [ - "frank-orellana" + "oleksandrstarov", + "SphinxKnight", + "kdex", + "frank-orellana", + "oagarcia", + "willemsh" ] }, - "Web/JavaScript/Referencia/Objetos_globales/WeakMap/set": { + "Web/JavaScript/Reference/Global_Objects/WeakMap/set": { "modified": "2020-10-15T22:13:19.744Z", "contributors": [ "xochilpili" ] }, - "Web/JavaScript/Referencia/Objetos_globales/WeakSet": { + "Web/JavaScript/Reference/Global_Objects/WeakSet": { "modified": "2019-03-23T22:06:27.270Z", "contributors": [ "OliverAcosta", "roberbnd" ] }, - "Web/JavaScript/Referencia/Objetos_globales/WebAssembly": { + "Web/JavaScript/Reference/Global_Objects/WebAssembly": { "modified": "2020-10-15T22:00:20.969Z", "contributors": [ "jvalencia" ] }, - "Web/JavaScript/Referencia/Objetos_globales/decodeURI": { - "modified": "2020-03-12T19:36:57.753Z", + "Web/JavaScript/Reference/Operators/Addition": { + "modified": "2020-10-15T22:31:13.303Z", "contributors": [ - "teoli", + "lord-reptilia" + ] + }, + "Web/JavaScript/Reference/Operators/Assignment": { + "modified": "2020-10-15T22:33:15.275Z", + "contributors": [ + "FranciscoImanolSuarez" + ] + }, + "Web/JavaScript/Reference/Operators/async_function": { + "modified": "2020-10-15T22:26:51.970Z", + "contributors": [ + "IsraelFloresDGA" + ] + }, + "Web/JavaScript/Reference/Operators/await": { + "modified": "2020-10-15T21:58:10.309Z", + "contributors": [ + "esjuanma", + "jpinto7", + "JavierHspn", + "rcchristiane" + ] + }, + "Web/JavaScript/Reference/Operators/class": { + "modified": "2020-03-12T19:45:04.654Z", + "contributors": [ + "AlePerez92" + ] + }, + "Web/JavaScript/Reference/Operators/Equality": { + "modified": "2020-10-15T22:33:16.730Z", + "contributors": [ + "FranciscoImanolSuarez" + ] + }, + "Web/JavaScript/Reference/Operators/Conditional_Operator": { + "modified": "2020-03-12T19:42:08.865Z", + "contributors": [ + "mauroflamig", + "osmar-vil", + "maedca", + "CesarBustios", + "eacp", + "cornezuelo", + "joeljose" + ] + }, + "Web/JavaScript/Reference/Operators/Decrement": { + "modified": "2020-11-17T13:27:35.616Z", + "contributors": [ + "FranciscoImanolSuarez" + ] + }, + "Web/JavaScript/Reference/Operators/delete": { + "modified": "2020-03-12T19:40:27.821Z", + "contributors": [ + "abaracedo", + "elenatorro", + "oagarcia", + "rippe2hl" + ] + }, + "Web/JavaScript/Reference/Operators/Destructuring_assignment": { + "modified": "2020-10-15T21:38:20.062Z", + "contributors": [ + "Nachec", + "oscaretu", + "camsa", + "nstraub", + "FiliBits", "SphinxKnight", - "ADP13", - "Mgjbot", - "Sheppy" + "emtsnz", + "moyadf", + "kdex", + "Anyulled", + "seleenne", + "rvazquezglez" ] }, - "Web/JavaScript/Referencia/Objetos_globales/decodeURIComponent": { - "modified": "2020-03-12T19:37:00.546Z", + "Web/JavaScript/Reference/Operators/Division": { + "modified": "2020-10-15T22:33:13.828Z", "contributors": [ - "jabarrioss", + "FranciscoImanolSuarez" + ] + }, + "Web/JavaScript/Reference/Operators/Optional_chaining": { + "modified": "2020-10-15T22:30:07.517Z", + "contributors": [ + "glrodasz" + ] + }, + "Web/JavaScript/Reference/Operators/function*": { + "modified": "2020-10-15T22:04:00.800Z", + "contributors": [ + "daniel.duarte" + ] + }, + "Web/JavaScript/Reference/Operators/function": { + "modified": "2020-03-12T19:37:57.703Z", + "contributors": [ + "germanf", "SphinxKnight", "teoli", - "ADP13", - "Mgjbot", - "Sheppy" + "jesanchez", + "artopal" ] }, - "Web/JavaScript/Referencia/Objetos_globales/encodeURI": { - "modified": "2020-03-12T19:36:55.391Z", + "Web/JavaScript/Reference/Operators/Grouping": { + "modified": "2020-03-12T19:41:24.847Z", "contributors": [ - "espipj", + "oagarcia" + ] + }, + "Web/JavaScript/Reference/Operators/in": { + "modified": "2020-10-15T21:19:59.064Z", + "contributors": [ + "AlePerez92", + "MMarinero", "SphinxKnight", "teoli", - "ADP13", - "Mgjbot", - "Sheppy" + "carloshs92" ] }, - "Web/JavaScript/Referencia/Objetos_globales/encodeURIComponent": { - "modified": "2020-03-12T19:37:33.179Z", + "Web/JavaScript/Reference/Operators": { + "modified": "2020-10-15T21:16:41.341Z", "contributors": [ - "jazjay", + "Nachec", + "BubuAnabelas", + "oagarcia", + "Alaon", "SphinxKnight", + "Siro_Diaz", "teoli", "Mgjbot", + "Nathymig", "Sheppy" ] }, - "Web/JavaScript/Referencia/Objetos_globales/escape": { - "modified": "2020-10-15T21:56:14.356Z", + "Web/JavaScript/Reference/Operators/instanceof": { + "modified": "2020-03-12T19:37:27.128Z", "contributors": [ + "KikeSan", + "oliverhr", "SphinxKnight", - "RozyP", - "IXTRUnai" + "olivercs", + "teoli", + "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/eval": { - "modified": "2020-03-12T19:37:01.878Z", + "Web/JavaScript/Reference/Operators/Property_Accessors": { + "modified": "2020-03-12T19:37:28.144Z", "contributors": [ - "driera", - "sergio_p_d", - "_cuco_", - "ericmartinezr", + "fpoumian", + "MarkelCuesta", "SphinxKnight", "teoli", - "Mgjbot", - "Talisker", - "Sheppy" + "Talisker" + ] + }, + "Web/JavaScript/Reference/Operators/new.target": { + "modified": "2020-03-12T19:45:24.263Z", + "contributors": [ + "jorgecas" + ] + }, + "Web/JavaScript/Reference/Operators/new": { + "modified": "2020-10-15T21:27:34.155Z", + "contributors": [ + "Nachec", + "fercreek", + "fel.gaete", + "edsonjmv", + "fscholz", + "SphinxKnight", + "teoli", + "jansanchez" + ] + }, + "Web/JavaScript/Reference/Operators/Comma_Operator": { + "modified": "2020-03-12T19:43:05.807Z", + "contributors": [ + "aeroxmotion", + "eduardogm" + ] + }, + "Web/JavaScript/Reference/Operators/Operator_Precedence": { + "modified": "2020-03-12T19:39:15.282Z", + "contributors": [ + "lopezz", + "fscholz", + "teoli", + "aerotrink" + ] + }, + "Web/JavaScript/Reference/Operators/Pipeline_operator": { + "modified": "2020-10-15T22:24:00.271Z", + "contributors": [ + "nachofelpete" + ] + }, + "Web/JavaScript/Reference/Operators/Remainder": { + "modified": "2020-12-04T18:18:23.327Z", + "contributors": [ + "lucasmmaidana" + ] + }, + "Web/JavaScript/Reference/Operators/Spread_syntax": { + "modified": "2020-10-15T22:05:27.684Z", + "contributors": [ + "jeissonh", + "samm0023", + "jelduran", + "Aerz", + "duttyapps", + "alegnaaived" ] }, - "Web/JavaScript/Referencia/Objetos_globales/isFinite": { - "modified": "2020-03-12T19:37:31.231Z", + "Web/JavaScript/Reference/Operators/Strict_equality": { + "modified": "2020-10-15T22:31:14.496Z", "contributors": [ - "SphinxKnight", - "teoli", - "jarneygm", - "Mgjbot", - "Talisker" + "lord-reptilia" ] }, - "Web/JavaScript/Referencia/Objetos_globales/isNaN": { - "modified": "2020-10-15T21:17:00.242Z", + "Web/JavaScript/Reference/Operators/super": { + "modified": "2020-10-15T21:36:09.783Z", "contributors": [ - "jmmarco", - "juanarbol", + "caepalomo", + "lajaso", "SphinxKnight", - "teoli", - "Mgjbot", - "Talisker" + "oagarcia" ] }, - "Web/JavaScript/Referencia/Objetos_globales/null": { - "modified": "2020-03-12T19:42:06.401Z", + "Web/JavaScript/Reference/Operators/Subtraction": { + "modified": "2020-10-15T22:31:11.477Z", "contributors": [ - "mkiramu", - "ivanagui2", - "diegoazh", - "BubuAnabelas", - "hmorv", - "AugustoEsquen", - "AsLogd" + "lord-reptilia" ] }, - "Web/JavaScript/Referencia/Objetos_globales/parseFloat": { - "modified": "2020-07-04T20:00:21.182Z", + "Web/JavaScript/Reference/Operators/this": { + "modified": "2020-04-05T17:39:51.929Z", "contributors": [ - "pilichanampe", + "ridry", + "AugustoBarco", + "Litchstarken", + "xabitrigo", + "alejandrochung", + "garciadecastro", + "Miguel-Ramirez", + "FMauricioS", "SphinxKnight", "teoli", - "Mgjbot", - "Talisker" + "chebit", + "carloshs92" ] }, - "Web/JavaScript/Referencia/Objetos_globales/parseInt": { - "modified": "2020-03-12T19:37:31.195Z", + "Web/JavaScript/Reference/Operators/typeof": { + "modified": "2020-03-12T19:37:27.888Z", "contributors": [ - "mitsurugi", - "teoli", - "daiant", + "dashaus", + "maurodibert", + "ggomez91", + "area73", + "carmelo12341", "SphinxKnight", + "teoli", + "Siro_Diaz", "Mgjbot", "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/undefined": { - "modified": "2020-03-12T19:36:57.621Z", + "Web/JavaScript/Reference/Operators/void": { + "modified": "2020-03-12T19:37:37.188Z", "contributors": [ - "IsaacAaron", - "Undre4m", - "BubuAnabelas", + "JuanMaRuiz", + "mauroc8", + "dongerardor", "SphinxKnight", "teoli", - "ADP13", - "Talisker", - "Mgjbot", - "Sheppy" + "Talisker" ] }, - "Web/JavaScript/Referencia/Objetos_globales/unescape": { - "modified": "2020-03-12T19:43:34.960Z", + "Web/JavaScript/Reference/Operators/yield*": { + "modified": "2020-03-12T19:43:03.721Z", "contributors": [ - "DracotMolver" + "germanf" ] }, - "Web/JavaScript/Referencia/Operadores": { - "modified": "2020-10-15T21:16:41.341Z", + "Web/JavaScript/Reference/Operators/yield": { + "modified": "2020-10-15T21:59:31.243Z", "contributors": [ "Nachec", - "BubuAnabelas", - "oagarcia", - "Alaon", - "SphinxKnight", - "Siro_Diaz", - "teoli", - "Mgjbot", - "Nathymig", - "Sheppy" - ] - }, - "Web/JavaScript/Referencia/Operadores/Adición": { - "modified": "2020-10-15T22:31:13.303Z", - "contributors": [ - "lord-reptilia" + "nicoan", + "Binariado", + "hamfree", + "juliandavidmr" ] }, - "Web/JavaScript/Referencia/Operadores/Aritméticos": { - "modified": "2020-10-15T21:17:29.666Z", + "Web/JavaScript/Reference/Statements/block": { + "modified": "2020-03-12T19:37:26.144Z", "contributors": [ - "lajaso", - "nelruk", - "enesimo", + "IsaacAaron", "SphinxKnight", "teoli", - "Mgjbot", - "Nathymig" + "Talisker" ] }, - "Web/JavaScript/Referencia/Operadores/Asignacion": { - "modified": "2020-10-15T22:33:15.275Z", + "Web/JavaScript/Reference/Statements/break": { + "modified": "2020-03-12T19:37:25.893Z", "contributors": [ - "FranciscoImanolSuarez" + "SphinxKnight", + "teoli", + "Talisker" ] }, - "Web/JavaScript/Referencia/Operadores/Assignment_Operators": { - "modified": "2020-07-23T18:11:35.190Z", + "Web/JavaScript/Reference/Statements/class": { + "modified": "2020-03-12T19:43:15.247Z", "contributors": [ - "n306r4ph", - "esreal12", - "BrodaNoel", - "maxbfmv55", - "maxbfmv" + "AlePerez92", + "PauPeinado" ] }, - "Web/JavaScript/Referencia/Operadores/Bitwise_Operators": { - "modified": "2020-03-12T19:42:13.818Z", + "Web/JavaScript/Reference/Statements/const": { + "modified": "2020-05-18T16:35:39.912Z", "contributors": [ - "Binariado", - "hugomosh", - "EduardoSebastian", - "jnreynoso", - "mizhac", - "lizzie136", - "josewhitetower", - "miparnisari", - "elenatorro", - "CarlosRuizAscacibar" + "jorgetoloza", + "Daniel_Martin", + "SphinxKnight", + "calbertts", + "IsaacAaron", + "MarkelCuesta", + "zucchinidev", + "teoli", + "Scipion" ] }, - "Web/JavaScript/Referencia/Operadores/Comparacion": { - "modified": "2020-10-15T22:33:16.730Z", + "Web/JavaScript/Reference/Statements/continue": { + "modified": "2020-03-12T19:37:24.424Z", "contributors": [ - "FranciscoImanolSuarez" + "SphinxKnight", + "teoli", + "Talisker" ] }, - "Web/JavaScript/Referencia/Operadores/Comparison_Operators": { - "modified": "2020-10-15T21:37:54.340Z", + "Web/JavaScript/Reference/Statements/debugger": { + "modified": "2020-03-12T19:43:07.073Z", "contributors": [ - "FranciscoImanolSuarez", - "lajaso", - "mfuentesg" + "VictorAbdon", + "ericpennachini" ] }, - "Web/JavaScript/Referencia/Operadores/Conditional_Operator": { - "modified": "2020-03-12T19:42:08.865Z", + "Web/JavaScript/Reference/Statements/do...while": { + "modified": "2020-03-19T20:41:26.735Z", "contributors": [ - "mauroflamig", - "osmar-vil", - "maedca", - "CesarBustios", - "eacp", - "cornezuelo", - "joeljose" + "danielclavijo19380", + "AlePerez92", + "SphinxKnight", + "teoli", + "Talisker" ] }, - "Web/JavaScript/Referencia/Operadores/Decremento": { - "modified": "2020-11-17T13:27:35.616Z", + "Web/JavaScript/Reference/Statements/Empty": { + "modified": "2020-03-12T19:45:08.866Z", "contributors": [ - "FranciscoImanolSuarez" + "Undre4m" ] }, - "Web/JavaScript/Referencia/Operadores/Destructuring_assignment": { - "modified": "2020-10-15T21:38:20.062Z", + "Web/JavaScript/Reference/Statements/export": { + "modified": "2020-10-15T21:13:05.178Z", "contributors": [ - "Nachec", - "oscaretu", - "camsa", - "nstraub", - "FiliBits", + "AlePerez92", + "frank-orellana", + "fxisco", + "hmorv", + "guumo", + "Jdiaz", "SphinxKnight", - "emtsnz", - "moyadf", - "kdex", - "Anyulled", - "seleenne", - "rvazquezglez" + "teoli", + "Scipion" ] }, - "Web/JavaScript/Referencia/Operadores/Division": { - "modified": "2020-10-15T22:33:13.828Z", + "Web/JavaScript/Reference/Statements/for-await...of": { + "modified": "2020-10-15T22:22:58.735Z", "contributors": [ - "FranciscoImanolSuarez" + "daniel.duarte" ] }, - "Web/JavaScript/Referencia/Operadores/Encadenamiento_opcional": { - "modified": "2020-10-15T22:30:07.517Z", + "Web/JavaScript/Reference/Statements/for...in": { + "modified": "2020-10-15T21:14:45.435Z", "contributors": [ - "glrodasz" + "Nachec", + "VichoReyes", + "antonygiomarx", + "tenthlive", + "enmanuelduran", + "manatico4", + "pardo-bsso", + "jsinner", + "Carlos-T", + "mariosotoxoom", + "SphinxKnight", + "teoli", + "angeldiaz", + "Talisker" ] }, - "Web/JavaScript/Referencia/Operadores/Grouping": { - "modified": "2020-03-12T19:41:24.847Z", + "Web/JavaScript/Reference/Statements/for...of": { + "modified": "2020-03-12T19:43:09.602Z", "contributors": [ - "oagarcia" + "camsa", + "chabisoriano", + "petermota", + "Bumxu", + "jdazacon", + "Angarsk8" ] }, - "Web/JavaScript/Referencia/Operadores/Miembros": { - "modified": "2020-03-12T19:37:28.144Z", + "Web/JavaScript/Reference/Statements/for": { + "modified": "2020-03-12T19:37:24.852Z", "contributors": [ - "fpoumian", - "MarkelCuesta", "SphinxKnight", "teoli", "Talisker" ] }, - "Web/JavaScript/Referencia/Operadores/Operadores_lógicos": { - "modified": "2020-03-12T19:42:52.811Z", - "contributors": [ - "albertor21", - "JuanMacias", - "lifescripter" - ] - }, - "Web/JavaScript/Referencia/Operadores/Operator_Precedence": { - "modified": "2020-03-12T19:39:15.282Z", + "Web/JavaScript/Reference/Statements/async_function": { + "modified": "2020-10-15T21:53:45.353Z", "contributors": [ - "lopezz", - "fscholz", - "teoli", - "aerotrink" + "docxml", + "fitojb", + "mnax001", + "lexnapoles", + "JooseNavarro", + "feserafim" ] }, - "Web/JavaScript/Referencia/Operadores/Pipeline_operator": { - "modified": "2020-10-15T22:24:00.271Z", + "Web/JavaScript/Reference/Statements/function*": { + "modified": "2020-03-12T19:41:28.405Z", "contributors": [ - "nachofelpete" + "SphinxKnight", + "kdex", + "cnexans", + "mlealvillarreal", + "TheBronx", + "mrtuto2012", + "rippe2hl", + "germanfr" ] }, - "Web/JavaScript/Referencia/Operadores/Resto": { - "modified": "2020-12-04T18:18:23.327Z", + "Web/JavaScript/Reference/Statements/function": { + "modified": "2020-03-12T19:37:28.203Z", "contributors": [ - "lucasmmaidana" + "SphinxKnight", + "teoli", + "Talisker" ] }, - "Web/JavaScript/Referencia/Operadores/Sintaxis_Spread": { - "modified": "2020-10-15T22:05:27.684Z", + "Web/JavaScript/Reference/Statements/if...else": { + "modified": "2020-03-12T19:35:35.125Z", "contributors": [ - "jeissonh", - "samm0023", - "jelduran", - "Aerz", - "duttyapps", - "alegnaaived" + "IsaacAaron", + "SphinxKnight", + "teoli", + "Pablo_Cabrera", + "Mgjbot", + "Sheppy" ] }, - "Web/JavaScript/Referencia/Operadores/Spread_operator": { - "modified": "2020-03-12T19:41:27.743Z", + "Web/JavaScript/Reference/Statements/import.meta": { + "modified": "2020-10-15T22:29:50.934Z", "contributors": [ - "SphinxKnight", - "Scipion", - "oagarcia" + "cinthylli" ] }, - "Web/JavaScript/Referencia/Operadores/Strict_equality": { - "modified": "2020-10-15T22:31:14.496Z", + "Web/JavaScript/Reference/Statements/import": { + "modified": "2020-10-15T21:37:35.456Z", "contributors": [ - "lord-reptilia" + "AlePerez92", + "frank-orellana", + "feserafim", + "guumo", + "javiernunez", + "Siro_Diaz", + "jepumares" ] }, - "Web/JavaScript/Referencia/Operadores/Sustracción": { - "modified": "2020-10-15T22:31:11.477Z", + "Web/JavaScript/Reference/Statements": { + "modified": "2020-05-11T14:52:51.956Z", "contributors": [ - "lord-reptilia" + "chrisdavidmills", + "Daniel_Martin", + "ffulgencio", + "BubuAnabelas", + "katrina.warsaw", + "SphinxKnight", + "teoli", + "Nathymig", + "Sheppy" ] }, - "Web/JavaScript/Referencia/Operadores/async_function": { - "modified": "2020-10-15T22:26:51.970Z", + "Web/JavaScript/Reference/Statements/label": { + "modified": "2020-03-12T19:37:26.348Z", "contributors": [ - "IsraelFloresDGA" + "SphinxKnight", + "teoli", + "Talisker" ] }, - "Web/JavaScript/Referencia/Operadores/await": { - "modified": "2020-10-15T21:58:10.309Z", + "Web/JavaScript/Reference/Statements/let": { + "modified": "2020-12-07T12:54:41.333Z", "contributors": [ - "esjuanma", - "jpinto7", - "JavierHspn", - "rcchristiane" + "FacuBustamaante", + "Nachec", + "jomoji", + "SphinxKnight", + "IsaacAaron", + "Braulyw8", + "MarkelCuesta", + "Th3Cod3", + "kdex", + "devlcp", + "fjcapdevila", + "mishelashala", + "madroneropaulo", + "nicobot", + "jtanori" ] }, - "Web/JavaScript/Referencia/Operadores/class": { - "modified": "2020-03-12T19:45:04.654Z", + "Web/JavaScript/Reference/Statements/return": { + "modified": "2020-03-12T19:37:28.480Z", "contributors": [ - "AlePerez92" + "devconcept", + "rrodriguez", + "SphinxKnight", + "teoli", + "Mgjbot", + "Talisker" ] }, - "Web/JavaScript/Referencia/Operadores/delete": { - "modified": "2020-03-12T19:40:27.821Z", + "Web/JavaScript/Reference/Statements/switch": { + "modified": "2020-12-10T14:59:55.680Z", "contributors": [ - "abaracedo", - "elenatorro", - "oagarcia", - "rippe2hl" + "Celiamf", + "EliottoYT", + "RubiVG", + "nahif", + "jesusvillalta", + "SSantiago90", + "Herkom", + "renetejada7", + "rafaelgus", + "garciadecastro", + "MarioAr", + "Cubo", + "esmarti", + "christpher_c" ] }, - "Web/JavaScript/Referencia/Operadores/function": { - "modified": "2020-03-12T19:37:57.703Z", + "Web/JavaScript/Reference/Statements/throw": { + "modified": "2020-03-12T19:37:27.469Z", "contributors": [ - "germanf", + "imNicoSuarez", "SphinxKnight", "teoli", - "jesanchez", - "artopal" - ] - }, - "Web/JavaScript/Referencia/Operadores/function*": { - "modified": "2020-10-15T22:04:00.800Z", - "contributors": [ - "daniel.duarte" + "Talisker" ] }, - "Web/JavaScript/Referencia/Operadores/in": { - "modified": "2020-10-15T21:19:59.064Z", + "Web/JavaScript/Reference/Statements/try...catch": { + "modified": "2020-05-28T10:16:13.325Z", "contributors": [ + "dkmstr", + "BubuAnabelas", + "henryvanner", "AlePerez92", - "MMarinero", + "ManuelRubio", + "JooseNavarro", + "juanrapoport", + "habax", "SphinxKnight", "teoli", - "carloshs92" + "Mgjbot", + "Talisker" ] }, - "Web/JavaScript/Referencia/Operadores/instanceof": { - "modified": "2020-03-12T19:37:27.128Z", + "Web/JavaScript/Reference/Statements/var": { + "modified": "2020-03-12T19:36:22.778Z", "contributors": [ - "KikeSan", - "oliverhr", + "IsaacAaron", + "carlo.romero1991", "SphinxKnight", - "olivercs", "teoli", - "Talisker" + "Scipion", + "Mgjbot", + "Sheppy" ] }, - "Web/JavaScript/Referencia/Operadores/new": { - "modified": "2020-10-15T21:27:34.155Z", + "Web/JavaScript/Reference/Statements/while": { + "modified": "2020-03-12T19:35:40.292Z", "contributors": [ - "Nachec", - "fercreek", - "fel.gaete", - "edsonjmv", - "fscholz", + "MaurooRen", "SphinxKnight", "teoli", - "jansanchez" + "Pablo_Cabrera", + "Mgjbot", + "Talisker" ] }, - "Web/JavaScript/Referencia/Operadores/new.target": { - "modified": "2020-03-12T19:45:24.263Z", + "Web/JavaScript/Reference/Statements/with": { + "modified": "2020-03-12T19:42:08.065Z", "contributors": [ - "jorgecas" + "MarkelCuesta", + "lokcito" ] }, - "Web/JavaScript/Referencia/Operadores/operador_coma": { - "modified": "2020-03-12T19:43:05.807Z", + "Web/JavaScript/Reference/Template_literals": { + "modified": "2020-10-14T18:58:58.164Z", "contributors": [ - "aeroxmotion", - "eduardogm" + "Magdiel", + "sanchezalvarezjp", + "JuanWTF", + "IsaacLf", + "theelmix", + "SphinxKnight", + "MarkelCuesta", + "kdex", + "mishelashala", + "orasio" ] }, - "Web/JavaScript/Referencia/Operadores/super": { - "modified": "2020-10-15T21:36:09.783Z", + "Web/JavaScript/A_re-introduction_to_JavaScript": { + "modified": "2020-09-01T08:31:36.135Z", "contributors": [ - "caepalomo", - "lajaso", - "SphinxKnight", - "oagarcia" + "Nachec", + "pmcarballo", + "VictorSan45", + "DaniNz", + "jlopezfdez", + "mariodev12", + "javier_junin", + "GdoSan", + "unaisainz", + "oleurud", + "JavierHspn", + "jlmurgas", + "rivacubano", + "aaguilera", + "StripTM", + "bicentenario", + "NatiiDC", + "NicolasMendoza", + "LeoHirsch", + "lomejordejr", + "rogeliomtx", + "Jarkaos" ] }, - "Web/JavaScript/Referencia/Operadores/this": { - "modified": "2020-04-05T17:39:51.929Z", + "Web/JavaScript/Typed_arrays": { + "modified": "2020-10-15T21:37:33.978Z", "contributors": [ - "ridry", - "AugustoBarco", - "Litchstarken", - "xabitrigo", - "alejandrochung", - "garciadecastro", - "Miguel-Ramirez", - "FMauricioS", - "SphinxKnight", - "teoli", - "chebit", - "carloshs92" + "Nachec", + "LeoE" ] }, - "Web/JavaScript/Referencia/Operadores/typeof": { - "modified": "2020-03-12T19:37:27.888Z", + "Web/MathML/Element": { + "modified": "2019-03-23T23:37:26.121Z", "contributors": [ - "dashaus", - "maurodibert", - "ggomez91", - "area73", - "carmelo12341", - "SphinxKnight", "teoli", - "Siro_Diaz", - "Mgjbot", - "Talisker" + "emejotados" ] }, - "Web/JavaScript/Referencia/Operadores/void": { - "modified": "2020-03-12T19:37:37.188Z", + "Web/MathML/Element/math": { + "modified": "2020-10-15T22:06:20.810Z", "contributors": [ - "JuanMaRuiz", - "mauroc8", - "dongerardor", - "SphinxKnight", - "teoli", - "Talisker" + "Undigon" ] }, - "Web/JavaScript/Referencia/Operadores/yield": { - "modified": "2020-10-15T21:59:31.243Z", + "Web/Performance/Optimizing_startup_performance": { + "modified": "2019-04-04T17:42:18.542Z", "contributors": [ - "Nachec", - "nicoan", - "Binariado", - "hamfree", - "juliandavidmr" + "c-torres" ] }, - "Web/JavaScript/Referencia/Operadores/yield*": { - "modified": "2020-03-12T19:43:03.721Z", + "Web/Progressive_web_apps/Developer_guide/Installing": { + "modified": "2020-09-20T03:25:41.762Z", "contributors": [ - "germanf" + "Nachec" ] }, - "Web/JavaScript/Referencia/Palabras_Reservadas": { - "modified": "2019-03-23T23:46:34.387Z", + "Web/Security/Same-origin_policy": { + "modified": "2020-12-10T07:41:38.226Z", "contributors": [ - "gsalinase", - "Gabrielth2206", - "Heramalva", - "teoli", - "Sheppy", - "Nathymig" + "ojgarciab", + "robertsallent", + "Abelhg" ] }, - "Web/JavaScript/Referencia/Sentencias": { - "modified": "2020-05-11T14:52:51.956Z", + "Web/Security/Securing_your_site/Turning_off_form_autocompletion": { + "modified": "2019-03-23T22:04:06.546Z", "contributors": [ - "chrisdavidmills", - "Daniel_Martin", - "ffulgencio", - "BubuAnabelas", - "katrina.warsaw", - "SphinxKnight", - "teoli", - "Nathymig", - "Sheppy" + "samus128", + "Hoosep" ] }, - "Web/JavaScript/Referencia/Sentencias/Empty": { - "modified": "2020-03-12T19:45:08.866Z", + "Web/SVG/Element/glyph": { + "modified": "2019-03-23T22:53:24.929Z", "contributors": [ - "Undre4m" + "Sebastianz", + "saeioul" ] }, - "Web/JavaScript/Referencia/Sentencias/block": { - "modified": "2020-03-12T19:37:26.144Z", + "orphaned/Web/SVG/SVG_en_Firefox_1.5": { + "modified": "2019-03-23T23:42:07.791Z", "contributors": [ - "IsaacAaron", - "SphinxKnight", "teoli", - "Talisker" + "Mgjbot", + "Jorolo", + "Arcnor" ] }, - "Web/JavaScript/Referencia/Sentencias/break": { - "modified": "2020-03-12T19:37:25.893Z", + "Web/SVG/Tutorial/Introduction": { + "modified": "2019-03-18T21:32:37.330Z", "contributors": [ - "SphinxKnight", - "teoli", - "Talisker" + "Undigon", + "d-go" ] }, - "Web/JavaScript/Referencia/Sentencias/class": { - "modified": "2020-03-12T19:43:15.247Z", + "Web/Tutorials": { + "modified": "2020-11-30T04:19:10.869Z", "contributors": [ - "AlePerez92", - "PauPeinado" + "blanchart", + "mastertrooper", + "Enesimus", + "ewan-m", + "Yes197", + "VlixesItaca", + "pucherico", + "CristopherAE", + "fperaltaN", + "isabelcarrod", + "Sheppy", + "iKenshu", + "JuanC_01", + "ubermensch79", + "cynthia", + "rubencidlara", + "fmagrosoto", + "CarlosQuijano", + "diegogaysaez" ] }, - "Web/JavaScript/Referencia/Sentencias/const": { - "modified": "2020-05-18T16:35:39.912Z", + "Web/XML/XML_introduction": { + "modified": "2019-07-25T12:38:17.842Z", "contributors": [ - "jorgetoloza", - "Daniel_Martin", - "SphinxKnight", - "calbertts", - "IsaacAaron", - "MarkelCuesta", - "zucchinidev", - "teoli", - "Scipion" + "jugonzalez40", + "ExE-Boss", + "npcsayfail", + "israel-munoz", + "Mgjbot", + "Superruzafa", + "Fedora-core", + "Jorolo" ] }, - "Web/JavaScript/Referencia/Sentencias/continue": { - "modified": "2020-03-12T19:37:24.424Z", + "Web/XPath/Axes/ancestor-or-self": { + "modified": "2019-01-16T16:11:00.606Z", "contributors": [ - "SphinxKnight", - "teoli", - "Talisker" + "ExE-Boss", + "Mgjbot", + "Cmayo" ] }, - "Web/JavaScript/Referencia/Sentencias/debugger": { - "modified": "2020-03-12T19:43:07.073Z", + "Web/XPath/Axes/ancestor": { + "modified": "2019-01-16T16:11:09.049Z", "contributors": [ - "VictorAbdon", - "ericpennachini" + "ExE-Boss", + "Mgjbot", + "Cmayo" ] }, - "Web/JavaScript/Referencia/Sentencias/default": { - "modified": "2020-10-15T22:11:48.475Z", + "Web/XPath/Axes/attribute": { + "modified": "2019-01-16T16:11:03.106Z", "contributors": [ - "Davids-Devel" + "ExE-Boss", + "Mgjbot", + "Cmayo" ] }, - "Web/JavaScript/Referencia/Sentencias/do...while": { - "modified": "2020-03-19T20:41:26.735Z", + "Web/XPath/Axes/child": { + "modified": "2019-01-16T16:11:02.142Z", "contributors": [ - "danielclavijo19380", - "AlePerez92", - "SphinxKnight", - "teoli", - "Talisker" + "ExE-Boss", + "Mgjbot", + "Cmayo" ] }, - "Web/JavaScript/Referencia/Sentencias/export": { - "modified": "2020-10-15T21:13:05.178Z", + "Web/XPath/Axes/descendant-or-self": { + "modified": "2019-01-16T16:11:00.088Z", "contributors": [ - "AlePerez92", - "frank-orellana", - "fxisco", - "hmorv", - "guumo", - "Jdiaz", - "SphinxKnight", - "teoli", - "Scipion" + "ExE-Boss", + "Mgjbot", + "Cmayo" ] }, - "Web/JavaScript/Referencia/Sentencias/for": { - "modified": "2020-03-12T19:37:24.852Z", + "Web/XPath/Axes/descendant": { + "modified": "2019-01-16T16:11:00.301Z", "contributors": [ - "SphinxKnight", - "teoli", - "Talisker" + "ExE-Boss", + "Mgjbot", + "Cmayo" ] }, - "Web/JavaScript/Referencia/Sentencias/for-await...of": { - "modified": "2020-10-15T22:22:58.735Z", + "Web/XPath/Axes/following-sibling": { + "modified": "2019-01-16T16:11:02.465Z", "contributors": [ - "daniel.duarte" + "ExE-Boss", + "Mgjbot", + "Cmayo" ] }, - "Web/JavaScript/Referencia/Sentencias/for...in": { - "modified": "2020-10-15T21:14:45.435Z", + "Web/XPath/Axes/following": { + "modified": "2019-01-16T16:10:55.079Z", + "contributors": [ + "ExE-Boss", + "Mgjbot", + "Cmayo" + ] + }, + "Web/XPath/Axes": { + "modified": "2019-03-18T20:59:19.791Z", "contributors": [ - "Nachec", - "VichoReyes", - "antonygiomarx", - "tenthlive", - "enmanuelduran", - "manatico4", - "pardo-bsso", - "jsinner", - "Carlos-T", - "mariosotoxoom", "SphinxKnight", - "teoli", - "angeldiaz", - "Talisker" + "ExE-Boss", + "Mgjbot", + "Jorolo", + "Cmayo" ] }, - "Web/JavaScript/Referencia/Sentencias/for...of": { - "modified": "2020-03-12T19:43:09.602Z", + "Web/XPath/Axes/namespace": { + "modified": "2019-01-16T16:10:55.086Z", "contributors": [ - "camsa", - "chabisoriano", - "petermota", - "Bumxu", - "jdazacon", - "Angarsk8" + "ExE-Boss", + "Mgjbot", + "Cmayo" ] }, - "Web/JavaScript/Referencia/Sentencias/funcion_asincrona": { - "modified": "2020-10-15T21:53:45.353Z", + "Web/XPath/Axes/parent": { + "modified": "2019-01-16T16:10:56.130Z", "contributors": [ - "docxml", - "fitojb", - "mnax001", - "lexnapoles", - "JooseNavarro", - "feserafim" + "ExE-Boss", + "Mgjbot", + "Cmayo" ] }, - "Web/JavaScript/Referencia/Sentencias/function": { - "modified": "2020-03-12T19:37:28.203Z", + "Web/XPath/Axes/preceding-sibling": { + "modified": "2019-01-16T16:10:57.298Z", "contributors": [ - "SphinxKnight", - "teoli", - "Talisker" + "ExE-Boss", + "Mgjbot", + "Cmayo" ] }, - "Web/JavaScript/Referencia/Sentencias/function*": { - "modified": "2020-03-12T19:41:28.405Z", + "Web/XPath/Axes/preceding": { + "modified": "2019-01-16T16:11:08.778Z", "contributors": [ - "SphinxKnight", - "kdex", - "cnexans", - "mlealvillarreal", - "TheBronx", - "mrtuto2012", - "rippe2hl", - "germanfr" + "ExE-Boss", + "Mgjbot", + "Cmayo" ] }, - "Web/JavaScript/Referencia/Sentencias/if...else": { - "modified": "2020-03-12T19:35:35.125Z", + "Web/XPath/Functions/contains": { + "modified": "2019-01-16T15:50:22.864Z", "contributors": [ - "IsaacAaron", - "SphinxKnight", - "teoli", - "Pablo_Cabrera", + "ExE-Boss", "Mgjbot", - "Sheppy" + "Cmayo" ] }, - "Web/JavaScript/Referencia/Sentencias/import": { - "modified": "2020-10-15T21:37:35.456Z", + "Web/XPath/Functions": { + "modified": "2019-03-23T22:09:03.742Z", "contributors": [ - "AlePerez92", - "frank-orellana", - "feserafim", - "guumo", - "javiernunez", - "Siro_Diaz", - "jepumares" + "ExE-Boss", + "Zoditu" ] }, - "Web/JavaScript/Referencia/Sentencias/import.meta": { - "modified": "2020-10-15T22:29:50.934Z", + "Web/XPath/Functions/substring": { + "modified": "2019-01-16T15:50:01.578Z", "contributors": [ - "cinthylli" + "ExE-Boss", + "Mgjbot", + "Cmayo" ] }, - "Web/JavaScript/Referencia/Sentencias/label": { - "modified": "2020-03-12T19:37:26.348Z", + "Web/XPath/Functions/true": { + "modified": "2019-03-18T20:59:19.925Z", "contributors": [ "SphinxKnight", - "teoli", - "Talisker" + "ExE-Boss", + "Mgjbot", + "Cmayo" ] }, - "Web/JavaScript/Referencia/Sentencias/let": { - "modified": "2020-12-07T12:54:41.333Z", + "Web/XSLT/Element/apply-imports": { + "modified": "2019-03-18T20:59:15.544Z", "contributors": [ - "FacuBustamaante", - "Nachec", - "jomoji", "SphinxKnight", - "IsaacAaron", - "Braulyw8", - "MarkelCuesta", - "Th3Cod3", - "kdex", - "devlcp", - "fjcapdevila", - "mishelashala", - "madroneropaulo", - "nicobot", - "jtanori" + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos" ] }, - "Web/JavaScript/Referencia/Sentencias/return": { - "modified": "2020-03-12T19:37:28.480Z", + "Web/XSLT/Element/apply-templates": { + "modified": "2019-03-18T20:59:18.352Z", "contributors": [ - "devconcept", - "rrodriguez", "SphinxKnight", - "teoli", + "chrisdavidmills", "Mgjbot", - "Talisker" + "ErickCastellanos" ] }, - "Web/JavaScript/Referencia/Sentencias/switch": { - "modified": "2020-12-10T14:59:55.680Z", + "Web/XSLT/Element/attribute-set": { + "modified": "2019-03-18T20:59:20.997Z", "contributors": [ - "Celiamf", - "EliottoYT", - "RubiVG", - "nahif", - "jesusvillalta", - "SSantiago90", - "Herkom", - "renetejada7", - "rafaelgus", - "garciadecastro", - "MarioAr", - "Cubo", - "esmarti", - "christpher_c" + "SphinxKnight", + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos" ] }, - "Web/JavaScript/Referencia/Sentencias/throw": { - "modified": "2020-03-12T19:37:27.469Z", + "Web/XSLT/Element/attribute": { + "modified": "2019-03-18T20:59:20.857Z", "contributors": [ - "imNicoSuarez", "SphinxKnight", - "teoli", - "Talisker" + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos" ] }, - "Web/JavaScript/Referencia/Sentencias/try...catch": { - "modified": "2020-05-28T10:16:13.325Z", + "Web/XSLT/Element/call-template": { + "modified": "2019-03-18T20:59:16.448Z", "contributors": [ - "dkmstr", - "BubuAnabelas", - "henryvanner", - "AlePerez92", - "ManuelRubio", - "JooseNavarro", - "juanrapoport", - "habax", "SphinxKnight", - "teoli", + "chrisdavidmills", "Mgjbot", - "Talisker" + "ErickCastellanos" ] }, - "Web/JavaScript/Referencia/Sentencias/var": { - "modified": "2020-03-12T19:36:22.778Z", + "Web/XSLT/Element/choose": { + "modified": "2019-03-18T20:59:21.136Z", "contributors": [ - "IsaacAaron", - "carlo.romero1991", "SphinxKnight", - "teoli", - "Scipion", + "chrisdavidmills", "Mgjbot", - "Sheppy" + "ErickCastellanos", + "Cmayo" ] }, - "Web/JavaScript/Referencia/Sentencias/while": { - "modified": "2020-03-12T19:35:40.292Z", + "Web/XSLT/Element/comment": { + "modified": "2019-03-18T20:59:15.680Z", "contributors": [ - "MaurooRen", "SphinxKnight", - "teoli", - "Pablo_Cabrera", + "chrisdavidmills", "Mgjbot", - "Talisker" + "ErickCastellanos", + "Cmayo" ] }, - "Web/JavaScript/Referencia/Sentencias/with": { - "modified": "2020-03-12T19:42:08.065Z", + "Web/XSLT/Element/copy-of": { + "modified": "2019-03-18T20:59:18.212Z", "contributors": [ - "MarkelCuesta", - "lokcito" + "SphinxKnight", + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos" ] }, - "Web/JavaScript/Referencia/template_strings": { - "modified": "2020-10-14T18:58:58.164Z", + "Web/XSLT/Element/copy": { + "modified": "2019-03-18T20:59:16.879Z", "contributors": [ - "Magdiel", - "sanchezalvarezjp", - "JuanWTF", - "IsaacLf", - "theelmix", "SphinxKnight", - "MarkelCuesta", - "kdex", - "mishelashala", - "orasio" + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos" ] }, - "Web/JavaScript/Shells": { - "modified": "2020-03-12T19:44:40.392Z", + "Web/XSLT/Element/decimal-format": { + "modified": "2019-03-18T20:59:17.054Z", "contributors": [ - "davidenriq11", - "mamptecnocrata" + "SphinxKnight", + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos" ] }, - "Web/JavaScript/Una_re-introducción_a_JavaScript": { - "modified": "2020-09-01T08:31:36.135Z", + "Web/XSLT/Element/fallback": { + "modified": "2019-03-18T20:59:15.971Z", "contributors": [ - "Nachec", - "pmcarballo", - "VictorSan45", - "DaniNz", - "jlopezfdez", - "mariodev12", - "javier_junin", - "GdoSan", - "unaisainz", - "oleurud", - "JavierHspn", - "jlmurgas", - "rivacubano", - "aaguilera", - "StripTM", - "bicentenario", - "NatiiDC", - "NicolasMendoza", - "LeoHirsch", - "lomejordejr", - "rogeliomtx", - "Jarkaos" + "SphinxKnight", + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos" ] }, - "Web/JavaScript/Vectores_tipados": { - "modified": "2020-10-15T21:37:33.978Z", + "Web/XSLT/Element/for-each": { + "modified": "2019-03-18T20:59:16.114Z", "contributors": [ - "Nachec", - "LeoE" + "SphinxKnight", + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos" ] }, - "Web/JavaScript/enumeracion_y_propietario_de_propiedades": { - "modified": "2020-08-30T03:56:15.697Z", + "Web/XSLT/Element/if": { + "modified": "2019-03-18T20:59:17.200Z", "contributors": [ - "Nachec", - "teoli", - "LeoHirsch" + "SphinxKnight", + "chrisdavidmills", + "Jrbellido", + "Mgjbot", + "ErickCastellanos" ] }, - "Web/Manifest": { - "modified": "2020-07-18T01:40:57.131Z", + "Web/XSLT/Element/import": { + "modified": "2019-03-18T20:59:15.818Z", "contributors": [ - "angelmlucero", - "ardillan", - "Zellius", - "Pablo_Bangueses", - "luisabarca", - "malonson", - "AlePerez92" + "SphinxKnight", + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos" ] }, - "Web/MathML": { - "modified": "2020-10-15T21:24:26.572Z", + "Web/XSLT/Element/include": { + "modified": "2019-03-18T20:59:17.940Z", "contributors": [ - "Undigon", - "teoli", - "fred.wang", - "ChaitanyaGSNR" + "SphinxKnight", + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos" ] }, - "Web/MathML/Attribute": { - "modified": "2019-03-23T23:26:57.621Z", + "Web/XSLT/Element/key": { + "modified": "2019-03-18T20:59:21.931Z", "contributors": [ - "LuifeR", - "ccarruitero", - "maedca" + "SphinxKnight", + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos" ] }, - "Web/MathML/Authoring": { - "modified": "2019-03-23T23:27:02.180Z", + "Web/XSLT/Element/message": { + "modified": "2019-03-18T20:59:16.585Z", "contributors": [ - "rafaqtro", - "fred.wang", - "voylinux", - "robertoasq", - "maedca" + "SphinxKnight", + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos", + "Cmayo" ] }, - "Web/MathML/Elemento": { - "modified": "2019-03-23T23:37:26.121Z", + "Web/XSLT/Element/namespace-alias": { + "modified": "2019-03-18T20:59:19.621Z", "contributors": [ - "teoli", - "emejotados" + "SphinxKnight", + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos" ] }, - "Web/MathML/Elemento/math": { - "modified": "2020-10-15T22:06:20.810Z", + "Web/XSLT/Element/number": { + "modified": "2019-03-18T20:59:21.341Z", "contributors": [ - "Undigon" + "SphinxKnight", + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos" ] }, - "Web/MathML/Examples": { - "modified": "2019-03-23T23:25:26.042Z", + "Web/XSLT/Element/otherwise": { + "modified": "2019-03-18T20:59:16.726Z", "contributors": [ - "nielsdg" + "SphinxKnight", + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos", + "Cmayo" ] }, - "Web/MathML/Examples/MathML_Pythagorean_Theorem": { - "modified": "2019-03-23T23:25:28.102Z", + "Web/XSLT/Transforming_XML_with_XSLT": { + "modified": "2019-01-16T16:11:59.562Z", "contributors": [ - "osvaldobaeza" + "chrisdavidmills", + "Superruzafa", + "Mgjbot", + "Jorolo", + "Ivanfrade", + "Piltrafeta", + "Nukeador" ] }, - "Web/Media": { - "modified": "2020-07-15T09:47:41.711Z", + "Web/XSLT/Element/when": { + "modified": "2019-03-18T20:59:18.078Z", "contributors": [ - "Sheppy" + "SphinxKnight", + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos", + "Cmayo" ] }, - "Web/Media/Formats": { - "modified": "2020-07-15T09:47:42.018Z", + "Web/XSLT/Element/with-param": { + "modified": "2019-03-18T20:59:17.348Z", "contributors": [ - "Sheppy" + "SphinxKnight", + "chrisdavidmills", + "Mgjbot", + "ErickCastellanos", + "Cmayo" ] }, - "Web/Media/Formats/Containers": { - "modified": "2020-07-15T09:47:51.166Z", + "Web/API/Battery_Status_API": { + "modified": "2019-03-23T23:25:28.703Z", "contributors": [ - "hugojavierduran9" + "sinfallas" ] }, - "Web/Performance": { - "modified": "2019-04-04T19:28:41.844Z", + "Web/API/Pointer_Lock_API": { + "modified": "2019-03-23T23:28:21.712Z", "contributors": [ - "arekucr", - "chrisdavidmills" + "fscholz", + "arquigames", + "joredjs" ] }, - "Web/Performance/Fundamentals": { - "modified": "2019-05-05T06:54:02.458Z", + "Web/API/Geolocation_API": { + "modified": "2019-05-04T15:09:02.013Z", "contributors": [ - "c-torres" + "mauroarcet", + "claudionebbia", + "pixelmin", + "guissellavillarreal", + "untilbit", + "BRIGIDAMATTERA", + "cizquierdof", + "rubencidlara", + "lfentanes", + "diegogarcia" ] }, - "Web/Performance/How_browsers_work": { - "modified": "2020-09-10T10:11:23.592Z", + "Web/API/WebRTC_API/Session_lifetime": { + "modified": "2019-03-23T23:26:58.387Z", "contributors": [ - "sancarbar" + "maedca", + "voylinux" ] }, - "Web/Performance/mejorando_rendimienot_inicial": { - "modified": "2019-04-04T17:42:18.542Z", + "Web/API/Media_Streams_API": { + "modified": "2019-03-23T23:26:56.897Z", "contributors": [ - "c-torres" + "palfrei", + "maedca" ] }, - "Web/Progressive_web_apps": { - "modified": "2020-09-20T04:18:55.064Z", + "Web/Guide/API/WebRTC/Peer-to-peer_communications_with_WebRTC": { + "modified": "2019-03-23T23:27:02.999Z", "contributors": [ - "Nachec", - "Enesimus", - "chrisdavidmills", - "hypnotic-frog", - "javichito" + "pablocubico", + "maedca" ] }, - "Web/Progressive_web_apps/App_structure": { - "modified": "2020-09-20T03:39:21.273Z", + "Web/API/WebRTC_API/Taking_still_photos": { + "modified": "2019-03-23T23:26:57.758Z", "contributors": [ - "Nachec", - "NicolasKuhn" + "robertoasq", + "maedca" ] }, - "Web/Progressive_web_apps/Developer_guide": { - "modified": "2020-09-20T03:25:40.381Z", + "conflicting/Web/API/WebSockets_API": { + "modified": "2019-01-16T13:56:47.847Z", "contributors": [ - "Deng_C1" + "inma_610" ] }, - "Web/Progressive_web_apps/Developer_guide/Instalar": { - "modified": "2020-09-20T03:25:41.762Z", + "Glossary/XHTML": { + "modified": "2019-03-23T23:46:04.272Z", "contributors": [ - "Nachec" + "Mgjbot", + "Jorolo", + "Nukeador" ] }, - "Web/Progressive_web_apps/Installable_PWAs": { - "modified": "2020-09-20T03:54:28.154Z", + "orphaned/XPInstall_API_Reference": { + "modified": "2019-01-16T15:37:54.457Z", "contributors": [ - "Nachec" + "Eddomita" ] }, - "Web/Progressive_web_apps/Introduction": { - "modified": "2020-09-20T03:34:06.424Z", + "Mozilla/Firefox/Releases/3/Full_page_zoom": { + "modified": "2019-03-23T23:50:26.114Z", "contributors": [ - "Nachec", - "gastono.442", - "tw1ttt3r", - "santi324", - "chrisdavidmills" + "wbamberg", + "Nukeador", + "Mariano", + "Mgjbot" ] }, - "Web/Progressive_web_apps/Loading": { - "modified": "2020-09-20T04:08:37.661Z", + "conflicting/Web/API/Document_Object_Model": { + "modified": "2019-03-24T00:02:47.149Z", "contributors": [ - "Nachec" + "fscholz", + "Mgjbot", + "Nathymig", + "Jorolo" ] }, - "Web/Progressive_web_apps/Offline_Service_workers": { - "modified": "2020-09-20T03:45:55.671Z", + "conflicting/Web/OpenSearch": { + "modified": "2019-01-16T15:27:59.157Z", "contributors": [ - "Nachec" + "Mgjbot", + "Superruzafa", + "Lesmo sft", + "Nukeador" ] }, - "Web/Progressive_web_apps/Re-engageable_Notifications_Push": { - "modified": "2020-09-20T04:04:04.639Z", + "conflicting/Mozilla/Add-ons": { + "modified": "2019-03-23T23:19:24.053Z", "contributors": [ - "Nachec" + "martin.weingart", + "Josele89" ] }, - "Web/Progressive_web_apps/Ventajas": { - "modified": "2019-11-03T14:52:14.998Z", + "Mozilla/Developer_guide/Build_Instructions": { + "modified": "2019-03-23T23:58:55.256Z", "contributors": [ - "totopizzahn" + "teoli", + "DoctorRomi", + "Mgjbot", + "Blank zero" ] }, - "Web/Reference": { - "modified": "2019-03-23T23:21:27.898Z", + "conflicting/Web/HTML/Global_attributes/spellcheck": { + "modified": "2019-03-23T23:54:20.583Z", "contributors": [ "raecillacastellana", "vltamara", - "asero82", - "atlas7jean", - "Nickolay" + "MxJ3susDi4z", + "teoli", + "Mgjbot", + "Jorolo", + "Omnisilver", + "Nukeador" ] }, - "Web/Reference/API": { - "modified": "2019-03-23T23:20:25.941Z", + "conflicting/Web/Guide": { + "modified": "2019-03-23T23:43:57.691Z", "contributors": [ - "AlePerez92", - "jhia", - "welm", - "vggallego", - "DeiberChacon", - "angmauricio", - "vitoco", - "CristianMar25", - "gesifred", - "cmeraz", - "davy.martinez" + "Mgjbot", + "Jorolo" ] }, - "Web/SVG": { - "modified": "2019-03-23T23:44:20.243Z", + "conflicting/Web/API/Web_Storage_API": { + "modified": "2019-03-24T00:11:21.014Z", "contributors": [ - "Undigon", - "Noradrex", - "teoli", - "Verruckt", - "Jorolo", + "AshfaqHossain", + "StripTM", + "RickieesES", + "inma_610", "Mgjbot", - "Josebagar" + "Superruzafa", + "Nukeador" ] }, - "Web/SVG/Attribute": { - "modified": "2019-08-04T03:46:23.452Z", + "conflicting/Web/API/Document_Object_Model_7d961b8030c6099ee907f4f4b5fe6b3d": { + "modified": "2019-03-24T00:03:50.113Z", "contributors": [ - "jcortesa", - "chrisdavidmills" + "ethertank", + "fscholz", + "Mgjbot", + "Nukeador", + "Jorolo", + "Takenbot", + "julionc", + "Versae" ] }, - "Web/SVG/Attribute/stop-color": { - "modified": "2020-10-15T22:06:34.292Z", + "conflicting/Web/API/HTML_Drag_and_Drop_API": { + "modified": "2019-03-23T23:18:26.504Z", "contributors": [ - "andcal" + "drewp" ] }, - "Web/SVG/Attribute/transform": { - "modified": "2019-03-23T22:07:32.328Z", + "conflicting/Web/HTML/Global_attributes": { + "modified": "2019-03-18T21:19:21.658Z", "contributors": [ - "dimuziop" + "PabloDeTorre" ] }, - "Web/SVG/Element": { - "modified": "2019-03-19T13:42:20.553Z", + "conflicting/Glossary/Doctype": { + "modified": "2019-01-17T00:20:06.485Z", "contributors": [ - "borja", - "jmanquez", - "kscarfone" + "wilfridoSantos" ] }, - "Web/SVG/Element/a": { - "modified": "2020-10-15T22:16:15.979Z", + "conflicting/Web/HTML/Element": { + "modified": "2020-01-21T22:36:54.135Z", "contributors": [ - "borja" + "losfroger", + "cocoletzimata", + "Duque61", + "raecillacastellana", + "maymaury", + "squidjam", + "on3_g" ] }, - "Web/SVG/Element/animate": { - "modified": "2020-10-15T22:09:39.514Z", + "conflicting/Learn": { + "modified": "2020-07-16T22:22:13.785Z", "contributors": [ - "evaferreira" + "hamfree" ] }, - "Web/SVG/Element/circle": { - "modified": "2019-03-23T22:57:12.727Z", + "conflicting/MDN/Contribute/Getting_started": { + "modified": "2019-01-16T18:56:38.941Z", "contributors": [ "wbamberg", - "Sebastianz", - "humbertaco" + "MauricioGil", + "LeoHirsch" ] }, - "Web/SVG/Element/foreignObject": { - "modified": "2019-03-23T23:05:21.297Z", + "MDN/Guidelines/CSS_style_guide": { + "modified": "2020-09-30T15:28:56.171Z", "contributors": [ - "Sebastianz", - "THernandez03" + "chrisdavidmills", + "wbamberg", + "Jeremie", + "LeoHirsch" ] }, - "Web/SVG/Element/g": { - "modified": "2019-03-23T22:54:18.875Z", + "conflicting/MDN/Yari": { + "modified": "2019-01-16T19:06:06.895Z", "contributors": [ - "Sebastianz", - "teoli", - "FrankzWolf" + "wbamberg", + "Jeremie", + "MauricioGil" ] }, - "Web/SVG/Element/glifo": { - "modified": "2019-03-23T22:53:24.929Z", + "conflicting/MDN/Yari_13d770b50d5ab9ce747962b2552e0eef": { + "modified": "2019-03-23T23:15:25.956Z", "contributors": [ - "Sebastianz", - "saeioul" + "wbamberg", + "Jeremie", + "MauricioGil" ] }, - "Web/SVG/Element/rect": { - "modified": "2019-03-23T23:02:06.920Z", + "conflicting/MDN/Tools": { + "modified": "2020-12-14T09:30:27.029Z", "contributors": [ "wbamberg", - "roadev", - "Sebastianz", - "jdgarrido" + "Sheppy" ] }, - "Web/SVG/Element/style": { - "modified": "2019-03-23T22:54:27.955Z", + "orphaned/Mozilla/Add-ons/WebExtensions/Temporary_Installation_in_Firefox": { + "modified": "2019-03-23T22:45:27.399Z", + "contributors": [ + "yuniers" + ] + }, + "conflicting/Web/API/Document_Object_Model_9f3a59543838705de7e9b080fde3cc14": { + "modified": "2019-06-16T19:12:21.185Z", + "contributors": [ + "jesusvillalta", + "Sheppy", + "Nathymig" + ] + }, + "conflicting/Web/HTTP/Basics_of_HTTP/MIME_types": { + "modified": "2019-01-16T15:43:53.805Z", + "contributors": [ + "Dailosmm", + "Mgjbot", + "Jorolo", + "Nukeador", + "Epaclon", + "Pasky" + ] + }, + "conflicting/Tools/Performance": { + "modified": "2020-07-16T22:35:28.621Z", "contributors": [ - "Sebastianz", - "teoli", - "rippe2hl" + "MrDaza" ] }, - "Web/SVG/Element/svg": { - "modified": "2020-11-04T10:23:00.659Z", + "conflicting/Tools/about:debugging": { + "modified": "2020-07-16T22:35:41.552Z", "contributors": [ - "hardy.rafael17", - "Mcch", - "diegovinie", - "BubuAnabelas", - "mbenitez01" + "stephiemtz" ] }, - "Web/SVG/Element/text": { - "modified": "2020-05-14T06:42:53.448Z", + "conflicting/Web/Progressive_web_apps": { + "modified": "2019-03-23T23:32:50.922Z", "contributors": [ - "danielhiguerasgoold", - "Sebastianz", - "emorc" + "fitojb", + "pacommozilla", + "wfranck", + "rafael_mora", + "htrellez" ] }, - "Web/SVG/Element/use": { - "modified": "2019-03-23T22:58:09.476Z", + "conflicting/Web/Guide/Mobile": { + "modified": "2019-03-23T23:32:51.331Z", "contributors": [ - "andysierra", - "Sebastianz", - "jorge_castro" + "wbamberg" ] }, - "Web/SVG/Index": { - "modified": "2019-01-16T22:36:49.773Z", + "Web/API/DocumentOrShadowRoot/getSelection": { + "modified": "2019-03-23T22:54:50.239Z", "contributors": [ - "jwhitlock", - "ComplementosMozilla" + "Diferno" ] }, - "Web/SVG/SVG_en_Firefox_1.5": { - "modified": "2019-03-23T23:42:07.791Z", + "Web/API/DocumentOrShadowRoot/styleSheets": { + "modified": "2019-03-23T23:58:05.224Z", "contributors": [ + "fscholz", + "jsx", "teoli", - "Mgjbot", - "Jorolo", - "Arcnor" + "HenryGR" ] }, - "Web/SVG/Tutorial": { - "modified": "2020-01-15T20:06:40.249Z", + "Web/API/HTMLElement/accessKey": { + "modified": "2019-03-23T22:26:12.172Z", "contributors": [ - "dago.d.havana", - "jpriet0", - "d-go", - "Npmada", - "teoli", - "Jeremie" + "SoftwareRVG" ] }, - "Web/SVG/Tutorial/Getting_Started": { - "modified": "2019-03-23T23:19:26.348Z", + "conflicting/Web/API": { + "modified": "2019-03-23T22:26:11.317Z", "contributors": [ - "kevinricardojs", - "teoli", - "Alberpat" + "SoftwareRVG" ] }, - "Web/SVG/Tutorial/Introducción": { - "modified": "2019-03-18T21:32:37.330Z", + "Web/API/GlobalEventHandlers/ongotpointercapture": { + "modified": "2019-03-23T22:25:49.346Z", "contributors": [ - "Undigon", - "d-go" + "SoftwareRVG" ] }, - "Web/SVG/Tutorial/SVG_In_HTML_Introduction": { - "modified": "2019-03-23T23:21:05.945Z", + "Web/API/GlobalEventHandlers/onlostpointercapture": { + "modified": "2019-03-23T22:25:49.190Z", "contributors": [ - "chrisdavidmills", - "matrimonio", - "verma21", - "marelin" + "SoftwareRVG" ] }, - "Web/SVG/Tutorial/Tools_for_SVG": { - "modified": "2019-03-20T13:46:46.393Z", + "Web/API/Document/createEvent": { + "modified": "2019-03-23T22:01:26.841Z", "contributors": [ - "James-Yaakov" + "AlePerez92" ] }, - "Web/Security": { - "modified": "2019-09-10T16:32:01.356Z", + "conflicting/Web/API/Geolocation": { + "modified": "2019-03-23T23:01:31.642Z", "contributors": [ - "SphinxKnight", - "npcsayfail", - "lejovaar7", - "fgcalderon", - "pablodonoso", - "marumari" + "fscholz" ] }, - "Web/Security/CSP": { - "modified": "2019-03-23T22:48:09.013Z", + "conflicting/Web/API/Node": { + "modified": "2019-03-23T22:08:57.260Z", "contributors": [ - "Anteojudo", - "Nydv" + "tureey" ] }, - "Web/Security/CSP/CSP_policy_directives": { - "modified": "2019-03-23T22:46:40.903Z", + "conflicting/Web/API/Push_API": { + "modified": "2019-03-23T22:19:10.252Z", "contributors": [ - "rafamagno", - "maedca" + "YulianD" ] }, - "Web/Security/CSP/Introducing_Content_Security_Policy": { - "modified": "2019-01-16T21:25:25.758Z", + "conflicting/Web/API/Crypto/getRandomValues": { + "modified": "2019-03-23T22:25:15.548Z", "contributors": [ - "Anteojudo", - "Nydv" + "Jeremie" ] }, - "Web/Security/Same-origin_politica": { - "modified": "2020-12-10T07:41:38.226Z", + "conflicting/Web/API/Window/localStorage": { + "modified": "2020-07-20T09:10:56.525Z", "contributors": [ - "ojgarciab", - "robertsallent", - "Abelhg" + "LucasMaciasAtala", + "moniqaveiga", + "Andresrodart", + "lsphantom" ] }, - "Web/Security/Securing_your_site": { - "modified": "2019-03-23T22:04:13.465Z", + "conflicting/Web/API/URL": { + "modified": "2019-03-23T22:38:17.598Z", "contributors": [ - "fgcalderon", - "mbm" + "israelfl" ] }, - "Web/Security/Securing_your_site/desactivar_autocompletado_formulario": { - "modified": "2019-03-23T22:04:06.546Z", + "conflicting/Web/API/WindowOrWorkerGlobalScope": { + "modified": "2019-03-23T23:03:15.466Z", "contributors": [ - "samus128", - "Hoosep" + "teoli" ] }, - "Web/Tutoriales": { - "modified": "2020-11-30T04:19:10.869Z", + "conflicting/Web/API/WindowOrWorkerGlobalScope_e2691f7ad05781a30c5fc5bb3b3f633a": { + "modified": "2019-03-23T23:01:30.065Z", "contributors": [ - "blanchart", - "mastertrooper", - "Enesimus", - "ewan-m", - "Yes197", - "VlixesItaca", - "pucherico", - "CristopherAE", - "fperaltaN", - "isabelcarrod", - "Sheppy", - "iKenshu", - "JuanC_01", - "ubermensch79", - "cynthia", - "rubencidlara", - "fmagrosoto", - "CarlosQuijano", - "diegogaysaez" + "fscholz" ] }, - "Web/Web_Components": { - "modified": "2020-05-21T13:06:07.299Z", + "conflicting/Web/CSS/:placeholder-shown": { + "modified": "2019-03-23T22:33:30.015Z", "contributors": [ - "aguilerajl", - "Ktoxcon", - "IsraelFloresDGA", - "mboo", - "Rodmore", - "maybe" + "teoli", + "pekechis" ] }, - "Web/Web_Components/Custom_Elements": { - "modified": "2019-03-23T22:21:51.809Z", + "conflicting/Web/CSS/:placeholder-shown_f20b6cc785f9fd133a0f9fb582f36891": { + "modified": "2019-03-23T22:29:24.542Z", "contributors": [ - "cawilff", - "AlePerez92", - "fipadron", - "V.Morantes" + "teoli", + "pekechis" ] }, - "Web/Web_Components/Using_custom_elements": { - "modified": "2020-06-28T18:39:06.239Z", + "Web/CSS/:is": { + "modified": "2019-03-23T22:17:18.601Z", "contributors": [ - "lupomontero", - "aguilerajl" + "israel-munoz" ] }, - "Web/Web_Components/Using_shadow_DOM": { - "modified": "2020-10-24T17:36:39.409Z", + "conflicting/Web/CSS/::placeholder": { + "modified": "2019-03-23T22:29:22.118Z", "contributors": [ - "jephsanchez", - "Charlemagnes", - "quintero_japon", - "DavidGalvis" + "teoli", + "pekechis" ] }, - "Web/Web_Components/Using_templates_and_slots": { - "modified": "2020-03-26T15:38:45.869Z", + "conflicting/Web/CSS/::placeholder_70bda352bb504ebdd6cd3362879e2479": { + "modified": "2019-03-18T21:16:20.006Z", "contributors": [ - "olalinv", - "quintero_japon", - "BrunoUY", - "ulisestrujillo" + "teoli", + "pekechis" ] }, - "Web/XML": { - "modified": "2019-03-18T21:18:03.528Z", + "Web/CSS/box-ordinal-group": { + "modified": "2019-03-23T22:36:12.257Z", "contributors": [ - "ExE-Boss" + "pekechis" ] }, - "Web/XML/Introducción_a_XML": { - "modified": "2019-07-25T12:38:17.842Z", + "conflicting/Web/CSS/cursor": { + "modified": "2019-03-23T22:35:57.612Z", "contributors": [ - "jugonzalez40", - "ExE-Boss", - "npcsayfail", - "israel-munoz", - "Mgjbot", - "Superruzafa", - "Fedora-core", - "Jorolo" + "pekechis" ] }, - "Web/XPath": { - "modified": "2019-01-16T14:32:30.886Z", + "Web/CSS/font-language-override": { + "modified": "2019-03-23T23:13:49.521Z", "contributors": [ - "ExE-Boss", - "fscholz", - "Mgjbot", - "Jorolo" + "martinezdario55" ] }, - "Web/XPath/Ejes": { - "modified": "2019-03-18T20:59:19.791Z", + "Web/CSS/mask-clip": { + "modified": "2019-03-23T22:35:47.057Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "Mgjbot", - "Jorolo", - "Cmayo" + "pekechis" ] }, - "Web/XPath/Ejes/ancestor": { - "modified": "2019-01-16T16:11:09.049Z", + "Web/CSS/mask-image": { + "modified": "2019-03-23T22:35:45.973Z", "contributors": [ - "ExE-Boss", - "Mgjbot", - "Cmayo" + "hectorcano", + "pekechis" ] }, - "Web/XPath/Ejes/ancestor-or-self": { - "modified": "2019-01-16T16:11:00.606Z", + "Web/CSS/mask-origin": { + "modified": "2019-03-23T22:35:46.533Z", "contributors": [ - "ExE-Boss", - "Mgjbot", - "Cmayo" + "pekechis" ] }, - "Web/XPath/Ejes/attribute": { - "modified": "2019-01-16T16:11:03.106Z", + "Web/CSS/mask-position": { + "modified": "2019-03-23T22:38:37.922Z", "contributors": [ - "ExE-Boss", - "Mgjbot", - "Cmayo" + "teoli", + "Simplexible", + "Prinz_Rana", + "pekechis", + "Kuiki" ] }, - "Web/XPath/Ejes/child": { - "modified": "2019-01-16T16:11:02.142Z", + "Web/CSS/mask-repeat": { + "modified": "2019-03-23T22:35:46.401Z", "contributors": [ - "ExE-Boss", - "Mgjbot", - "Cmayo" + "pekechis" + ] + }, + "Web/CSS/mask": { + "modified": "2019-03-23T22:35:50.079Z", + "contributors": [ + "pekechis" ] }, - "Web/XPath/Ejes/descendant": { - "modified": "2019-01-16T16:11:00.301Z", + "conflicting/Web/CSS/@viewport": { + "modified": "2019-03-18T21:38:59.253Z", "contributors": [ - "ExE-Boss", - "Mgjbot", - "Cmayo" + "israel-munoz" ] }, - "Web/XPath/Ejes/descendant-or-self": { - "modified": "2019-01-16T16:11:00.088Z", + "conflicting/Web/CSS/@viewport_c925ec0506b352ea1185248b874f7848": { + "modified": "2019-03-18T21:16:26.082Z", "contributors": [ - "ExE-Boss", - "Mgjbot", - "Cmayo" + "israel-munoz" ] }, - "Web/XPath/Ejes/following": { - "modified": "2019-01-16T16:10:55.079Z", + "conflicting/Web/CSS/width": { + "modified": "2019-01-16T15:41:51.944Z", "contributors": [ - "ExE-Boss", - "Mgjbot", - "Cmayo" + "teoli", + "Nathymig", + "HenryGR", + "Mgjbot" ] }, - "Web/XPath/Ejes/following-sibling": { - "modified": "2019-01-16T16:11:02.465Z", + "conflicting/Learn/CSS/First_steps/How_CSS_works": { + "modified": "2019-03-23T23:39:38.906Z", "contributors": [ - "ExE-Boss", - "Mgjbot", - "Cmayo" + "teoli", + "jsalinas" ] }, - "Web/XPath/Ejes/namespace": { - "modified": "2019-01-16T16:10:55.086Z", + "conflicting/Learn/CSS/First_steps/How_CSS_works_a460b5a76c3c2e7fc9b8da464dfd0c22": { + "modified": "2019-03-24T00:11:28.788Z", "contributors": [ - "ExE-Boss", - "Mgjbot", - "Cmayo" + "fernandomoreno605", + "DavidWebcreate", + "aguilarcarlos", + "teoli", + "LeoHirsch", + "dusvilopez", + "turekon", + "Izel" ] }, - "Web/XPath/Ejes/parent": { - "modified": "2019-01-16T16:10:56.130Z", + "Web/CSS/CSS_Backgrounds_and_Borders": { + "modified": "2019-03-23T22:41:48.399Z", "contributors": [ - "ExE-Boss", - "Mgjbot", - "Cmayo" + "teoli" ] }, - "Web/XPath/Ejes/preceding": { - "modified": "2019-01-16T16:11:08.778Z", + "Web/CSS/CSS_Backgrounds_and_Borders/Using_multiple_backgrounds": { + "modified": "2019-03-23T22:17:03.740Z", "contributors": [ - "ExE-Boss", - "Mgjbot", - "Cmayo" + "israel-munoz" ] }, - "Web/XPath/Ejes/preceding-sibling": { - "modified": "2019-01-16T16:10:57.298Z", + "Web/CSS/CSS_Color": { + "modified": "2019-03-23T22:23:30.277Z", "contributors": [ - "ExE-Boss", - "Mgjbot", - "Cmayo" + "betelleclerc", + "Krenair" ] }, - "Web/XPath/Funciones": { - "modified": "2019-03-23T22:09:03.742Z", + "conflicting/Web/CSS/CSS_Flexible_Box_Layout/Typical_Use_Cases_of_Flexbox": { + "modified": "2019-03-23T22:31:07.427Z", "contributors": [ - "ExE-Boss", - "Zoditu" + "miguelsp" ] }, - "Web/XPath/Funciones/contains": { - "modified": "2019-01-16T15:50:22.864Z", + "conflicting/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox": { + "modified": "2019-05-15T19:01:41.614Z", "contributors": [ - "ExE-Boss", - "Mgjbot", - "Cmayo" + "luzbelmex", + "VictorSan45", + "NeXuZZ-SCM", + "Tonylu11", + "javier_junin", + "AlePerez92", + "MMariscal", + "fscholz", + "ArcangelZith", + "FNK", + "rippe2hl", + "StripTM", + "joan.leon", + "arturo_sanz" ] }, - "Web/XPath/Funciones/substring": { - "modified": "2019-01-16T15:50:01.578Z", + "Web/CSS/url()": { + "modified": "2020-01-10T13:46:46.404Z", "contributors": [ - "ExE-Boss", - "Mgjbot", - "Cmayo" + "roocce" ] }, - "Web/XPath/Funciones/true": { - "modified": "2019-03-18T20:59:19.925Z", + "Web/CSS/column-gap": { + "modified": "2020-10-15T22:01:06.788Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "Mgjbot", - "Cmayo" + "agarcilazo", + "klaufel" ] }, - "Web/XSLT": { - "modified": "2019-03-23T23:44:23.657Z", + "Web/CSS/gap": { + "modified": "2019-03-23T22:13:30.250Z", "contributors": [ - "chrisdavidmills", - "Verruckt", - "Mgjbot", - "Jorolo", - "Nukeador", - "Piltrafeta" + "ireneml.fr" ] }, - "Web/XSLT/Element": { - "modified": "2019-03-18T20:59:16.316Z", + "conflicting/Learn/CSS/Building_blocks": { + "modified": "2019-03-23T23:02:20.733Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "chrisdavidmills", - "fscholz", - "Jorolo", - "ErickCastellanos" + "albaluna" ] }, - "Web/XSLT/Element/element": { - "modified": "2019-03-18T20:59:21.788Z", + "conflicting/Learn/CSS/Building_blocks/Cascade_and_inheritance": { + "modified": "2019-03-23T23:02:26.342Z", "contributors": [ - "SphinxKnight", - "ExE-Boss", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos" + "carlos.millan3", + "eljonims", + "mamptecnocrata", + "albaluna" ] }, - "Web/XSLT/Transformando_XML_con_XSLT": { - "modified": "2019-01-16T16:11:59.562Z", + "conflicting/Learn/CSS/Building_blocks/Values_and_units": { + "modified": "2019-03-23T22:59:44.751Z", "contributors": [ - "chrisdavidmills", - "Superruzafa", - "Mgjbot", - "Jorolo", - "Ivanfrade", - "Piltrafeta", - "Nukeador" + "albaluna" ] }, - "Web/XSLT/apply-imports": { - "modified": "2019-03-18T20:59:15.544Z", + "conflicting/Learn/CSS/First_steps/How_CSS_works_194e34e451d4ace023d98021c00b3cfd": { + "modified": "2019-03-23T23:02:23.335Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos" + "mamptecnocrata", + "albaluna" ] }, - "Web/XSLT/apply-templates": { - "modified": "2019-03-18T20:59:18.352Z", + "conflicting/Learn/CSS/First_steps": { + "modified": "2019-03-24T00:09:12.368Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos" + "luismj", + "javierdp", + "teoli", + "inma_610" ] }, - "Web/XSLT/attribute": { - "modified": "2019-03-18T20:59:20.857Z", + "conflicting/Learn/CSS/CSS_layout": { + "modified": "2019-03-23T22:20:39.961Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos" + "lavilofam1" ] }, - "Web/XSLT/attribute-set": { - "modified": "2019-03-18T20:59:20.997Z", + "conflicting/Learn/CSS/Styling_text/Fundamentals": { + "modified": "2019-03-23T23:02:09.062Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos" + "albaluna" ] }, - "Web/XSLT/call-template": { - "modified": "2019-03-18T20:59:16.448Z", + "conflicting/Learn/CSS/Building_blocks/Selectors": { + "modified": "2019-03-23T23:02:22.202Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos" + "albaluna" ] }, - "Web/XSLT/choose": { - "modified": "2019-03-18T20:59:21.136Z", + "conflicting/Web/CSS/font-variant": { + "modified": "2019-03-23T23:50:19.746Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos", - "Cmayo" + "teoli", + "FredB", + "HenryGR" ] }, - "Web/XSLT/comment": { - "modified": "2019-03-18T20:59:15.680Z", + "Web/API/HTMLMediaElement/abort_event": { + "modified": "2019-04-30T13:47:43.431Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos", - "Cmayo" + "wbamberg", + "ExE-Boss", + "fscholz", + "balboag" ] }, - "Web/XSLT/copy": { - "modified": "2019-03-18T20:59:16.879Z", + "conflicting/Web/API/Document_Object_Model_656f0e51418b39c498011268be9b3a10": { + "modified": "2019-03-23T23:27:17.444Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos" + "Sheppy" ] }, - "Web/XSLT/copy-of": { - "modified": "2019-03-18T20:59:18.212Z", + "Web/API/FormData/Using_FormData_Objects": { + "modified": "2019-03-23T23:19:26.530Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos" + "ramingar", + "Siro_Diaz", + "wilo" ] }, - "Web/XSLT/decimal-format": { - "modified": "2019-03-18T20:59:17.054Z", + "conflicting/Web/API/Canvas_API/Tutorial": { + "modified": "2019-03-23T23:19:53.719Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos" + "teoli", + "rubencidlara" ] }, - "Web/XSLT/fallback": { - "modified": "2019-03-18T20:59:15.971Z", + "conflicting/Web/Media/Formats": { + "modified": "2019-03-23T23:26:59.594Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos" + "wbamberg", + "vltamara", + "teoli", + "nekside" ] }, - "Web/XSLT/for-each": { - "modified": "2019-03-18T20:59:16.114Z", + "conflicting/Learn/HTML/Introduction_to_HTML/Getting_started": { + "modified": "2019-03-23T23:53:31.079Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", + "teoli", "Mgjbot", - "ErickCastellanos" + "Jorolo" ] }, - "Web/XSLT/if": { - "modified": "2019-03-18T20:59:17.200Z", + "conflicting/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content": { + "modified": "2019-10-10T16:52:54.661Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Jrbellido", - "Mgjbot", - "ErickCastellanos" + "ElNobDeTfm", + "estebanz01", + "hedmon", + "blanchart", + "teoli", + "ciroid", + "cesar_ortiz_elPatox", + "StripTM", + "AngelFQC" ] }, - "Web/XSLT/import": { - "modified": "2019-03-18T20:59:15.818Z", + "conflicting/Learn/JavaScript/Objects": { + "modified": "2020-03-12T19:36:14.050Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos" + "ivanagui2", + "libre8bit", + "alejandrochung", + "victorsanchezm", + "gchifflet", + "hmorv", + "Lorenzoygata", + "xxxtonixxx", + "joan.leon", + "fscholz", + "DeiberChacon", + "chebit", + "teoli", + "arpunk", + "inma_610", + "StripTM" ] }, - "Web/XSLT/include": { - "modified": "2019-03-18T20:59:17.940Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy": { + "modified": "2020-10-15T21:58:11.434Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos" + "fscholz" ] }, - "Web/XSLT/key": { - "modified": "2019-03-18T20:59:21.931Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/RangeError": { + "modified": "2019-01-16T21:30:19.248Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos" + "gfernandez" ] }, - "Web/XSLT/message": { - "modified": "2019-03-18T20:59:16.585Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/ArrayBuffer": { + "modified": "2020-10-15T21:51:49.315Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos", - "Cmayo" + "lajaso", + "AzazelN28" ] }, - "Web/XSLT/namespace-alias": { - "modified": "2019-03-18T20:59:19.621Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Date": { + "modified": "2019-03-23T23:11:22.072Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos" + "teoli" ] }, - "Web/XSLT/number": { - "modified": "2019-03-18T20:59:21.341Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Error": { + "modified": "2019-03-23T22:31:40.887Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos" + "RiazaValverde" ] }, - "Web/XSLT/otherwise": { - "modified": "2019-03-18T20:59:16.726Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Function": { + "modified": "2019-03-23T23:53:55.022Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", + "mcardozo", + "teoli", + "shaggyrd", "Mgjbot", - "ErickCastellanos", - "Cmayo" + "Wrongloop", + "Sheppy" ] }, - "Web/XSLT/when": { - "modified": "2019-03-18T20:59:18.078Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Map": { + "modified": "2019-03-23T22:06:29.334Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos", - "Cmayo" + "JuanMacias" ] }, - "Web/XSLT/with-param": { - "modified": "2019-03-18T20:59:17.348Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Number": { + "modified": "2019-03-23T23:46:16.155Z", "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Mgjbot", - "ErickCastellanos", - "Cmayo" + "teoli", + "Sheppy" ] }, - "WebAPI": { - "modified": "2019-03-23T23:32:09.157Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Object": { + "modified": "2020-10-15T21:28:24.470Z", "contributors": [ - "wbamberg", - "fscholz", - "ccarruitero", - "maedca", - "ethertank", - "Jeremie" + "lajaso", + "Sergio_Gonzalez_Collado", + "educalleja", + "AlexanderEstebanZapata1994", + "emilianodiaz", + "mishelashala", + "teoli", + "diegogaysaez" ] }, - "WebAPI/Estado_de_Bateria": { - "modified": "2019-03-23T23:25:28.703Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Promise": { + "modified": "2020-10-15T21:52:03.650Z", "contributors": [ - "sinfallas" + "atpollmann" ] }, - "WebAPI/Pointer_Lock": { - "modified": "2019-03-23T23:28:21.712Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/String": { + "modified": "2019-03-23T23:53:48.515Z", "contributors": [ - "fscholz", - "arquigames", - "joredjs" + "DevManny", + "teoli", + "Mgjbot", + "Talisker" ] }, - "WebAPI/Using_geolocation": { - "modified": "2019-05-04T15:09:02.013Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/SyntaxError": { + "modified": "2019-03-23T22:31:16.833Z", "contributors": [ - "mauroarcet", - "claudionebbia", - "pixelmin", - "guissellavillarreal", - "untilbit", - "BRIGIDAMATTERA", - "cizquierdof", - "rubencidlara", - "lfentanes", - "diegogarcia" + "BubuAnabelas" ] }, - "WebAssembly": { - "modified": "2020-10-15T22:25:36.765Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/WeakMap": { + "modified": "2019-03-23T22:25:12.395Z", "contributors": [ - "jonathan.reyes33" + "frank-orellana" ] }, - "WebAssembly/Concepts": { - "modified": "2020-12-06T14:14:45.486Z", + "conflicting/Web/JavaScript/Reference/Operators": { + "modified": "2020-10-15T21:17:29.666Z", "contributors": [ - "Sergio_Gonzalez_Collado", - "mastertrooper" + "lajaso", + "nelruk", + "enesimo", + "SphinxKnight", + "teoli", + "Mgjbot", + "Nathymig" ] }, - "WebAssembly/Loading_and_running": { - "modified": "2020-09-15T19:19:35.117Z", + "conflicting/Web/JavaScript/Reference/Operators_d3958587a3d3dd644852ad397eb5951b": { + "modified": "2020-07-23T18:11:35.190Z", "contributors": [ - "mastertrooper" + "n306r4ph", + "esreal12", + "BrodaNoel", + "maxbfmv55", + "maxbfmv" ] }, - "WebRTC": { - "modified": "2019-03-23T23:26:58.291Z", + "conflicting/Web/JavaScript/Reference/Operators_5c44e7d07c463ff1a5a63654f4bda87b": { + "modified": "2020-03-12T19:42:13.818Z", "contributors": [ - "sebasmagri" + "Binariado", + "hugomosh", + "EduardoSebastian", + "jnreynoso", + "mizhac", + "lizzie136", + "josewhitetower", + "miparnisari", + "elenatorro", + "CarlosRuizAscacibar" ] }, - "WebRTC/Introduction": { - "modified": "2019-03-23T23:26:58.387Z", + "conflicting/Web/JavaScript/Reference/Operators_5a0acbbb60ea37d0fdc52e3bd4c3fae8": { + "modified": "2020-10-15T21:37:54.340Z", "contributors": [ - "maedca", - "voylinux" + "FranciscoImanolSuarez", + "lajaso", + "mfuentesg" ] }, - "WebRTC/MediaStream_API": { - "modified": "2019-03-23T23:26:56.897Z", + "conflicting/Web/JavaScript/Reference/Operators_e72d8790e25513408a18a5826660f704": { + "modified": "2020-03-12T19:42:52.811Z", "contributors": [ - "palfrei", - "maedca" + "albertor21", + "JuanMacias", + "lifescripter" ] }, - "WebRTC/Peer-to-peer_communications_with_WebRTC": { - "modified": "2019-03-23T23:27:02.999Z", + "conflicting/Web/JavaScript/Reference/Operators/Spread_syntax": { + "modified": "2020-03-12T19:41:27.743Z", "contributors": [ - "pablocubico", - "maedca" + "SphinxKnight", + "Scipion", + "oagarcia" ] }, - "WebRTC/Taking_webcam_photos": { - "modified": "2019-03-23T23:26:57.758Z", + "conflicting/Web/JavaScript/Reference/Lexical_grammar": { + "modified": "2019-03-23T23:46:34.387Z", "contributors": [ - "robertoasq", - "maedca" + "gsalinase", + "Gabrielth2206", + "Heramalva", + "teoli", + "Sheppy", + "Nathymig" ] }, - "WebSockets": { - "modified": "2019-01-16T13:56:47.847Z", + "conflicting/Web/JavaScript/Reference/Statements/switch": { + "modified": "2020-10-15T22:11:48.475Z", "contributors": [ - "inma_610" + "Davids-Devel" ] }, - "Web_Audio_API": { - "modified": "2019-03-23T23:31:19.634Z", + "conflicting/Web/Progressive_web_apps/Introduction": { + "modified": "2019-11-03T14:52:14.998Z", "contributors": [ - "estebanborai", - "AngelFQC", - "Pau_Ilargia", - "maedca" + "totopizzahn" ] }, - "Web_Development/Mobile": { - "modified": "2019-03-23T23:32:51.331Z", + "conflicting/Web/HTTP/Headers/Content-Security-Policy": { + "modified": "2019-03-23T22:46:40.903Z", "contributors": [ - "wbamberg" + "rafamagno", + "maedca" ] }, - "Web_Development/Mobile/Diseño_responsivo": { - "modified": "2019-03-23T23:32:50.922Z", + "conflicting/Web/HTTP/CSP": { + "modified": "2019-03-23T22:48:09.013Z", "contributors": [ - "fitojb", - "pacommozilla", - "wfranck", - "rafael_mora", - "htrellez" + "Anteojudo", + "Nydv" ] }, - "XHTML": { - "modified": "2019-03-23T23:46:04.272Z", + "conflicting/Web/HTTP/CSP_aeae68a149c6fbe64e541cbdcd6ed5c5": { + "modified": "2019-01-16T21:25:25.758Z", "contributors": [ - "Mgjbot", - "Jorolo", - "Nukeador" + "Anteojudo", + "Nydv" ] }, - "XPInstall_API_Reference": { - "modified": "2019-01-16T15:37:54.457Z", + "conflicting/Web/Web_Components/Using_custom_elements": { + "modified": "2019-03-23T22:21:51.809Z", "contributors": [ - "Eddomita" + "cawilff", + "AlePerez92", + "fipadron", + "V.Morantes" ] }, - "Zoom_a_página_completa": { - "modified": "2019-03-23T23:50:26.114Z", + "conflicting/Web/API_dd04ca1265cb79b990b8120e5f5070d3": { + "modified": "2019-03-23T23:32:09.157Z", "contributors": [ "wbamberg", - "Nukeador", - "Mariano", - "Mgjbot" + "fscholz", + "ccarruitero", + "maedca", + "ethertank", + "Jeremie" ] }, - "nsDirectoryService": { - "modified": "2019-03-23T23:40:31.943Z", + "conflicting/Web/API/WebRTC_API": { + "modified": "2019-03-23T23:26:58.291Z", "contributors": [ - "teoli", - "Breaking Pitt" + "sebasmagri" ] } } \ No newline at end of file diff --git a/files/es/conflicting/glossary/doctype/index.html b/files/es/conflicting/glossary/doctype/index.html index d59af84200..f0f6e18715 100644 --- a/files/es/conflicting/glossary/doctype/index.html +++ b/files/es/conflicting/glossary/doctype/index.html @@ -1,7 +1,8 @@ --- title: DTD -slug: Glossary/DTD +slug: conflicting/Glossary/Doctype translation_of: Glossary/Doctype translation_of_original: Glossary/DTD +original_slug: Glossary/DTD ---

{{page("/en-US/docs/Glossary/Doctype")}}

diff --git a/files/es/conflicting/learn/css/building_blocks/cascade_and_inheritance/index.html b/files/es/conflicting/learn/css/building_blocks/cascade_and_inheritance/index.html index b47218eb7a..d927df50e1 100644 --- a/files/es/conflicting/learn/css/building_blocks/cascade_and_inheritance/index.html +++ b/files/es/conflicting/learn/css/building_blocks/cascade_and_inheritance/index.html @@ -1,8 +1,9 @@ --- title: Cascada y herencia -slug: Web/CSS/Introducción/Cascading_and_inheritance +slug: conflicting/Learn/CSS/Building_blocks/Cascade_and_inheritance translation_of: Learn/CSS/Building_blocks/Cascade_and_inheritance translation_of_original: Web/Guide/CSS/Getting_started/Cascading_and_inheritance +original_slug: Web/CSS/Introducción/Cascading_and_inheritance ---

{{ CSSTutorialTOC() }}

diff --git a/files/es/conflicting/learn/css/building_blocks/index.html b/files/es/conflicting/learn/css/building_blocks/index.html index caccdd80b2..6c07d85ec3 100644 --- a/files/es/conflicting/learn/css/building_blocks/index.html +++ b/files/es/conflicting/learn/css/building_blocks/index.html @@ -1,8 +1,9 @@ --- title: Boxes -slug: Web/CSS/Introducción/Boxes +slug: conflicting/Learn/CSS/Building_blocks translation_of: Learn/CSS/Building_blocks translation_of_original: Web/Guide/CSS/Getting_started/Boxes +original_slug: Web/CSS/Introducción/Boxes ---

{{ CSSTutorialTOC() }}

diff --git a/files/es/conflicting/learn/css/building_blocks/selectors/index.html b/files/es/conflicting/learn/css/building_blocks/selectors/index.html index 9ebe3573e8..c15b94b415 100644 --- a/files/es/conflicting/learn/css/building_blocks/selectors/index.html +++ b/files/es/conflicting/learn/css/building_blocks/selectors/index.html @@ -1,8 +1,9 @@ --- title: Selectores -slug: Web/CSS/Introducción/Selectors +slug: conflicting/Learn/CSS/Building_blocks/Selectors translation_of: Learn/CSS/Building_blocks/Selectors translation_of_original: Web/Guide/CSS/Getting_started/Selectors +original_slug: Web/CSS/Introducción/Selectors ---

{{ CSSTutorialTOC() }}

diff --git a/files/es/conflicting/learn/css/building_blocks/values_and_units/index.html b/files/es/conflicting/learn/css/building_blocks/values_and_units/index.html index 030fa9d692..79b7ac23cb 100644 --- a/files/es/conflicting/learn/css/building_blocks/values_and_units/index.html +++ b/files/es/conflicting/learn/css/building_blocks/values_and_units/index.html @@ -1,8 +1,9 @@ --- title: Color -slug: Web/CSS/Introducción/Color +slug: conflicting/Learn/CSS/Building_blocks/Values_and_units translation_of: Learn/CSS/Introduction_to_CSS/Values_and_units#Colors translation_of_original: Web/Guide/CSS/Getting_started/Color +original_slug: Web/CSS/Introducción/Color ---

{{ CSSTutorialTOC() }}

diff --git a/files/es/conflicting/learn/css/css_layout/index.html b/files/es/conflicting/learn/css/css_layout/index.html index f71d3a82e6..86364b84fa 100644 --- a/files/es/conflicting/learn/css/css_layout/index.html +++ b/files/es/conflicting/learn/css/css_layout/index.html @@ -1,8 +1,9 @@ --- title: Layout -slug: Web/CSS/Introducción/Layout +slug: conflicting/Learn/CSS/CSS_layout translation_of: Learn/CSS/CSS_layout translation_of_original: Web/Guide/CSS/Getting_started/Layout +original_slug: Web/CSS/Introducción/Layout ---

{{ CSSTutorialTOC() }}

diff --git a/files/es/conflicting/learn/css/first_steps/how_css_works/index.html b/files/es/conflicting/learn/css/first_steps/how_css_works/index.html index 941f96a0e5..831a835c72 100644 --- a/files/es/conflicting/learn/css/first_steps/how_css_works/index.html +++ b/files/es/conflicting/learn/css/first_steps/how_css_works/index.html @@ -1,8 +1,9 @@ --- title: Por que usar CSS -slug: Web/CSS/Como_iniciar/Por_que_usar_CSS +slug: conflicting/Learn/CSS/First_steps/How_CSS_works translation_of: Learn/CSS/First_steps/How_CSS_works translation_of_original: Web/Guide/CSS/Getting_started/Why_use_CSS +original_slug: Web/CSS/Como_iniciar/Por_que_usar_CSS ---

 

Esta página explica por qué los documentos usan CSS. Usas CSS para añadir una hoja de estilos a tu documento de prueba.

diff --git a/files/es/conflicting/learn/css/first_steps/how_css_works_194e34e451d4ace023d98021c00b3cfd/index.html b/files/es/conflicting/learn/css/first_steps/how_css_works_194e34e451d4ace023d98021c00b3cfd/index.html index f4beb05519..6db03d40c8 100644 --- a/files/es/conflicting/learn/css/first_steps/how_css_works_194e34e451d4ace023d98021c00b3cfd/index.html +++ b/files/es/conflicting/learn/css/first_steps/how_css_works_194e34e451d4ace023d98021c00b3cfd/index.html @@ -1,16 +1,18 @@ --- title: Cómo funciona el CSS -slug: Web/CSS/Introducción/How_CSS_works +slug: >- + conflicting/Learn/CSS/First_steps/How_CSS_works_194e34e451d4ace023d98021c00b3cfd tags: - CSS - 'CSS:' - - 'CSS:Empezando' + - CSS:Empezando - Diseño - Guía - Inicio - Web translation_of: Learn/CSS/First_steps/How_CSS_works translation_of_original: Web/Guide/CSS/Getting_started/How_CSS_works +original_slug: Web/CSS/Introducción/How_CSS_works ---

{{ CSSTutorialTOC() }}

diff --git a/files/es/conflicting/learn/css/first_steps/how_css_works_a460b5a76c3c2e7fc9b8da464dfd0c22/index.html b/files/es/conflicting/learn/css/first_steps/how_css_works_a460b5a76c3c2e7fc9b8da464dfd0c22/index.html index 18852f2439..a46c22f85e 100644 --- a/files/es/conflicting/learn/css/first_steps/how_css_works_a460b5a76c3c2e7fc9b8da464dfd0c22/index.html +++ b/files/es/conflicting/learn/css/first_steps/how_css_works_a460b5a76c3c2e7fc9b8da464dfd0c22/index.html @@ -1,10 +1,12 @@ --- title: Que es CSS -slug: Web/CSS/Como_iniciar/Que_es_CSS +slug: >- + conflicting/Learn/CSS/First_steps/How_CSS_works_a460b5a76c3c2e7fc9b8da464dfd0c22 tags: - para_revisar translation_of: Learn/CSS/First_steps/How_CSS_works translation_of_original: Web/Guide/CSS/Getting_started/What_is_CSS +original_slug: Web/CSS/Como_iniciar/Que_es_CSS ---

En esta página se explica que es CSS. Usted creará un documento simple con el cual trabajará en las próximas páginas del tutorial.

diff --git a/files/es/conflicting/learn/css/first_steps/index.html b/files/es/conflicting/learn/css/first_steps/index.html index 09177572fa..ffcef61e68 100644 --- a/files/es/conflicting/learn/css/first_steps/index.html +++ b/files/es/conflicting/learn/css/first_steps/index.html @@ -1,12 +1,13 @@ --- title: Introducción -slug: Web/CSS/Introducción +slug: conflicting/Learn/CSS/First_steps tags: - CSS - - 'CSS:Introducción' + - CSS:Introducción - para_revisar translation_of: Learn/CSS/First_steps translation_of_original: Web/Guide/CSS/Getting_started +original_slug: Web/CSS/Introducción ---

Presentación

diff --git a/files/es/conflicting/learn/css/styling_text/fundamentals/index.html b/files/es/conflicting/learn/css/styling_text/fundamentals/index.html index 1788c8c0ee..19c967bb6c 100644 --- a/files/es/conflicting/learn/css/styling_text/fundamentals/index.html +++ b/files/es/conflicting/learn/css/styling_text/fundamentals/index.html @@ -1,8 +1,9 @@ --- title: Los estilos de texto -slug: 'Web/CSS/Introducción/Los:estilos_de_texto' +slug: conflicting/Learn/CSS/Styling_text/Fundamentals translation_of: Learn/CSS/Styling_text/Fundamentals translation_of_original: Web/Guide/CSS/Getting_started/Text_styles +original_slug: Web/CSS/Introducción/Los:estilos_de_texto ---

{{ CSSTutorialTOC() }}

diff --git a/files/es/conflicting/learn/forms/index.html b/files/es/conflicting/learn/forms/index.html index c607c7993a..03824f9932 100644 --- a/files/es/conflicting/learn/forms/index.html +++ b/files/es/conflicting/learn/forms/index.html @@ -1,6 +1,6 @@ --- title: Formularios HTML -slug: Learn/HTML/Forms +slug: conflicting/Learn/Forms tags: - Featured - Forms @@ -12,6 +12,7 @@ tags: - TopicStub - Web translation_of: Learn/Forms +original_slug: Learn/HTML/Forms ---

Esta guía está constituida por una serie de artículos que te ayudarán a dominar los formularios en HTML.   El formulario HTML  es una herramienta  cuya finalidad es interactuar con el usuario; sin embargo, debido a razones históricas y técnicas, no siempre resulta obvio como explotar su enorme potencial. En esta guía, cubriremos todos los aspectos de los formularios HTML, desde su estructura hasta su estilo, desde la manipulación de sus datos hasta los widgets personalizados. ¡Aprenderás a disfrutar de las grandes prestaciones que nos brindan!

diff --git a/files/es/conflicting/learn/html/introduction_to_html/getting_started/index.html b/files/es/conflicting/learn/html/introduction_to_html/getting_started/index.html index f110fc9851..e6cd3db57d 100644 --- a/files/es/conflicting/learn/html/introduction_to_html/getting_started/index.html +++ b/files/es/conflicting/learn/html/introduction_to_html/getting_started/index.html @@ -1,6 +1,6 @@ --- title: La importancia de comentar correctamente -slug: Web/HTML/La_importancia_de_comentar_correctamente +slug: conflicting/Learn/HTML/Introduction_to_HTML/Getting_started tags: - HTML - Todas_las_Categorías @@ -8,6 +8,7 @@ tags: - XML translation_of: Learn/HTML/Introduction_to_HTML/Getting_started#HTML_comments translation_of_original: Web/Guide/HTML/The_Importance_of_Correct_HTML_Commenting +original_slug: Web/HTML/La_importancia_de_comentar_correctamente ---

 


diff --git a/files/es/conflicting/learn/html/multimedia_and_embedding/video_and_audio_content/index.html b/files/es/conflicting/learn/html/multimedia_and_embedding/video_and_audio_content/index.html index 77810a8e65..5598eb90bd 100644 --- a/files/es/conflicting/learn/html/multimedia_and_embedding/video_and_audio_content/index.html +++ b/files/es/conflicting/learn/html/multimedia_and_embedding/video_and_audio_content/index.html @@ -1,6 +1,6 @@ --- title: Usando audio y video con HTML5 -slug: Web/HTML/Usando_audio_y_video_con_HTML5 +slug: conflicting/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content tags: - Flash - Ogg @@ -14,6 +14,7 @@ tags: - reserva translation_of: Learn/HTML/Multimedia_and_embedding/Video_and_audio_content translation_of_original: Web/Guide/HTML/Using_HTML5_audio_and_video +original_slug: Web/HTML/Usando_audio_y_video_con_HTML5 ---

HTML5 introduce soporte integrado para el contenido multimedia gracias a los elementos {{ HTMLElement("audio") }} y {{ HTMLElement("video") }}, ofreciendo la posibilidad de insertar contenido multimedia en documentos HTML.

diff --git a/files/es/conflicting/learn/index.html b/files/es/conflicting/learn/index.html index 0092ba899e..066950ce62 100644 --- a/files/es/conflicting/learn/index.html +++ b/files/es/conflicting/learn/index.html @@ -1,11 +1,12 @@ --- title: Codificación-Scripting -slug: Learn/codificacion-scripting +slug: conflicting/Learn tags: - Codificación - Principiante - Scripting translation_of: Learn translation_of_original: Learn/Coding-Scripting +original_slug: Learn/codificacion-scripting ---

REDIRIGE Aprende

diff --git a/files/es/conflicting/learn/javascript/objects/index.html b/files/es/conflicting/learn/javascript/objects/index.html index 83c8f0a7c9..ae0f3827d1 100644 --- a/files/es/conflicting/learn/javascript/objects/index.html +++ b/files/es/conflicting/learn/javascript/objects/index.html @@ -1,6 +1,6 @@ --- title: Introducción a JavaScript orientado a objetos -slug: Web/JavaScript/Introducción_a_JavaScript_orientado_a_objetos +slug: conflicting/Learn/JavaScript/Objects tags: - Constructor - Herencia @@ -11,6 +11,7 @@ tags: - espacio de nombres translation_of: Learn/JavaScript/Objects translation_of_original: Web/JavaScript/Introduction_to_Object-Oriented_JavaScript +original_slug: Web/JavaScript/Introducción_a_JavaScript_orientado_a_objetos ---

{{jsSidebar("Introductory")}}

diff --git a/files/es/conflicting/mdn/contribute/getting_started/index.html b/files/es/conflicting/mdn/contribute/getting_started/index.html index 225d69bf1d..71bd6b4624 100644 --- a/files/es/conflicting/mdn/contribute/getting_started/index.html +++ b/files/es/conflicting/mdn/contribute/getting_started/index.html @@ -1,8 +1,9 @@ --- title: Cosas para hacer en MDN -slug: MDN/Contribute/Tareas +slug: conflicting/MDN/Contribute/Getting_started translation_of: MDN/Contribute/Getting_started translation_of_original: MDN/Contribute/Tasks +original_slug: MDN/Contribute/Tareas ---
{{MDNSidebar}}

¿Estás buscando formas de ayudar a mejorar MDN? Hay muchas formas de ayudar: desde corregir errores tipográficos hasta escribir nuevo contenido, o incluso ayudar a desarrollar la plataforma Kuma en la que se construye el sitio web. La guía para el contribuyente de MDN cubre todas las formas en las que puedes ayudar y cómo hacerlo. Más abajo, encontrarás listas de tareas más específicas que faltan hacer.

Hay un montón de cosas que puedes hacer para ayudar en MDN. Tenemos una guía para las tareas que puedes llevar a cabo como parte de nuestro artículo Comenzando en MDN. Entre las posibles formas de ayudar se encuentran:

diff --git a/files/es/conflicting/mdn/tools/index.html b/files/es/conflicting/mdn/tools/index.html index 7703e98dd1..98db2920e8 100644 --- a/files/es/conflicting/mdn/tools/index.html +++ b/files/es/conflicting/mdn/tools/index.html @@ -1,6 +1,6 @@ --- title: MDN user guide -slug: MDN/User_guide +slug: conflicting/MDN/Tools tags: - Documentation - Landing @@ -9,6 +9,7 @@ tags: - TopicStub translation_of: MDN/Tools translation_of_original: MDN/User_guide +original_slug: MDN/User_guide ---
{{MDNSidebar}}

The Mozilla Developer Network site is an advanced system for finding, reading, and contributing to documentation and sample code for Web developers (as well as for Firefox and Firefox OS developers). The MDN user guide provides articles detailing how to use MDN to find the documentation you need, and, if you wish, how to help make the material better, more expansive, and more complete.

{{SubpagesWithSummaries}}

diff --git a/files/es/conflicting/mdn/yari/index.html b/files/es/conflicting/mdn/yari/index.html index afe0ce3b5a..9517a30f30 100644 --- a/files/es/conflicting/mdn/yari/index.html +++ b/files/es/conflicting/mdn/yari/index.html @@ -1,8 +1,9 @@ --- title: Primeros pasos -slug: MDN/Kuma/Contributing/Getting_started +slug: conflicting/MDN/Yari translation_of: MDN/Kuma translation_of_original: MDN/Kuma/Contributing/Getting_started +original_slug: MDN/Kuma/Contributing/Getting_started ---
{{MDNSidebar}}

Por favor, consulte los Documentos de Instalacion de Kuma en GitHub hasta que podamos redactar una mejor guía de "Primeros pasos".

Solución de problemas

diff --git a/files/es/conflicting/mdn/yari_13d770b50d5ab9ce747962b2552e0eef/index.html b/files/es/conflicting/mdn/yari_13d770b50d5ab9ce747962b2552e0eef/index.html index 9fc477a01b..bdedd4aff0 100644 --- a/files/es/conflicting/mdn/yari_13d770b50d5ab9ce747962b2552e0eef/index.html +++ b/files/es/conflicting/mdn/yari_13d770b50d5ab9ce747962b2552e0eef/index.html @@ -1,8 +1,9 @@ --- title: Contribuir a Kuma -slug: MDN/Kuma/Contributing +slug: conflicting/MDN/Yari_13d770b50d5ab9ce747962b2552e0eef translation_of: MDN/Kuma translation_of_original: MDN/Kuma/Contributing +original_slug: MDN/Kuma/Contributing ---
{{MDNSidebar}}

Si desea contribuir al proyecto de Kuma para ayudarnos a construir una gran plataforma wiki y para hacer que el sitio de Mozilla Developer Network aun mejor, los documentos aquí deberían ayudarle a unirse en el esfuerzo.

diff --git a/files/es/conflicting/mozilla/add-ons/index.html b/files/es/conflicting/mozilla/add-ons/index.html index 615116edaf..43ecbe517c 100644 --- a/files/es/conflicting/mozilla/add-ons/index.html +++ b/files/es/conflicting/mozilla/add-ons/index.html @@ -1,8 +1,9 @@ --- title: Construyendo una extensión -slug: Building_an_Extension +slug: conflicting/Mozilla/Add-ons translation_of: Mozilla/Add-ons translation_of_original: Building_an_Extension +original_slug: Building_an_Extension ---

Introducción

diff --git a/files/es/conflicting/tools/about_colon_debugging/index.html b/files/es/conflicting/tools/about_colon_debugging/index.html index a827b255cb..2fb0a75710 100644 --- a/files/es/conflicting/tools/about_colon_debugging/index.html +++ b/files/es/conflicting/tools/about_colon_debugging/index.html @@ -1,8 +1,9 @@ --- title: Debugging over a network -slug: Tools/Remote_Debugging/Debugging_over_a_network -translation_of: 'Tools/about:debugging#Connecting_over_the_Network' +slug: conflicting/Tools/about:debugging +translation_of: Tools/about:debugging#Connecting_over_the_Network translation_of_original: Tools/Remote_Debugging/Debugging_over_a_network +original_slug: Tools/Remote_Debugging/Debugging_over_a_network ---

{{draft}}

diff --git a/files/es/conflicting/tools/performance/index.html b/files/es/conflicting/tools/performance/index.html index 23fa9e1e34..66dc76c6a1 100644 --- a/files/es/conflicting/tools/performance/index.html +++ b/files/es/conflicting/tools/performance/index.html @@ -1,8 +1,9 @@ --- title: JavaScript Profiler -slug: Tools/Profiler +slug: conflicting/Tools/Performance translation_of: Tools/Performance translation_of_original: Tools/Profiler +original_slug: Tools/Profiler ---
Utilice la herramienta de perfiles para encontrar los cuellos de botella en el código JavaScript. El Profiler muestras periódicamente la pila actual de llamadas JavaScript y compila información sobre las muestras. 
diff --git a/files/es/conflicting/web/api/canvas_api/tutorial/index.html b/files/es/conflicting/web/api/canvas_api/tutorial/index.html index 7271aabfb7..31bdbfc942 100644 --- a/files/es/conflicting/web/api/canvas_api/tutorial/index.html +++ b/files/es/conflicting/web/api/canvas_api/tutorial/index.html @@ -1,8 +1,9 @@ --- title: Dibujando gráficos con canvas -slug: Web/HTML/Canvas/Drawing_graphics_with_canvas +slug: conflicting/Web/API/Canvas_API/Tutorial translation_of: Web/API/Canvas_API/Tutorial translation_of_original: Web/API/Canvas_API/Drawing_graphics_with_canvas +original_slug: Web/HTML/Canvas/Drawing_graphics_with_canvas ---

Most of this content (but not the documentation on drawWindow) has been rolled into the more expansive Canvas tutorial, this page should probably be redirected there as it's now redundant but some information may still be relevant.

diff --git a/files/es/conflicting/web/api/crypto/getrandomvalues/index.html b/files/es/conflicting/web/api/crypto/getrandomvalues/index.html index 76e8d7fdc2..7764d268c4 100644 --- a/files/es/conflicting/web/api/crypto/getrandomvalues/index.html +++ b/files/es/conflicting/web/api/crypto/getrandomvalues/index.html @@ -1,6 +1,6 @@ --- title: RandomSource -slug: Web/API/RandomSource +slug: conflicting/Web/API/Crypto/getRandomValues tags: - API - Interface @@ -11,6 +11,7 @@ tags: - Web Crypto API translation_of: Web/API/Crypto/getRandomValues translation_of_original: Web/API/RandomSource +original_slug: Web/API/RandomSource ---

{{APIRef("Web Crypto API")}}

diff --git a/files/es/conflicting/web/api/document_object_model/index.html b/files/es/conflicting/web/api/document_object_model/index.html index 8123441661..f318f65508 100644 --- a/files/es/conflicting/web/api/document_object_model/index.html +++ b/files/es/conflicting/web/api/document_object_model/index.html @@ -1,11 +1,12 @@ --- title: Acerca del Modelo de Objetos del Documento -slug: Acerca_del_Modelo_de_Objetos_del_Documento +slug: conflicting/Web/API/Document_Object_Model tags: - DOM - Todas_las_Categorías translation_of: Web/API/Document_Object_Model translation_of_original: DOM/About_the_Document_Object_Model +original_slug: Acerca_del_Modelo_de_Objetos_del_Documento ---

¿Qué es DOM?

diff --git a/files/es/conflicting/web/api/document_object_model_656f0e51418b39c498011268be9b3a10/index.html b/files/es/conflicting/web/api/document_object_model_656f0e51418b39c498011268be9b3a10/index.html index fc26bc0bee..9e3c7c7c46 100644 --- a/files/es/conflicting/web/api/document_object_model_656f0e51418b39c498011268be9b3a10/index.html +++ b/files/es/conflicting/web/api/document_object_model_656f0e51418b39c498011268be9b3a10/index.html @@ -1,6 +1,6 @@ --- title: DOM developer guide -slug: Web/Guide/DOM +slug: conflicting/Web/API/Document_Object_Model_656f0e51418b39c498011268be9b3a10 tags: - API - DOM @@ -9,6 +9,7 @@ tags: - TopicStub translation_of: Web/API/Document_Object_Model translation_of_original: Web/Guide/API/DOM +original_slug: Web/Guide/DOM ---

{{draft}}

The Document Object Model is an API for HTML and XML documents. It provides a structural representation of the document, enabling the developer to modify its content and visual presentation. Essentially, it connects web pages to scripts or programming languages.

diff --git a/files/es/conflicting/web/api/document_object_model_7d961b8030c6099ee907f4f4b5fe6b3d/index.html b/files/es/conflicting/web/api/document_object_model_7d961b8030c6099ee907f4f4b5fe6b3d/index.html index 26d372847a..ae8c384e87 100644 --- a/files/es/conflicting/web/api/document_object_model_7d961b8030c6099ee907f4f4b5fe6b3d/index.html +++ b/files/es/conflicting/web/api/document_object_model_7d961b8030c6099ee907f4f4b5fe6b3d/index.html @@ -1,11 +1,12 @@ --- title: DOM -slug: DOM +slug: conflicting/Web/API/Document_Object_Model_7d961b8030c6099ee907f4f4b5fe6b3d tags: - DOM - Todas_las_Categorías translation_of: Web/API/Document_Object_Model translation_of_original: DOM +original_slug: DOM ---
Acerca del Modelo de Objetos del Documento
diff --git a/files/es/conflicting/web/api/document_object_model_9f3a59543838705de7e9b080fde3cc14/index.html b/files/es/conflicting/web/api/document_object_model_9f3a59543838705de7e9b080fde3cc14/index.html index 7759932552..bd1c67c343 100644 --- a/files/es/conflicting/web/api/document_object_model_9f3a59543838705de7e9b080fde3cc14/index.html +++ b/files/es/conflicting/web/api/document_object_model_9f3a59543838705de7e9b080fde3cc14/index.html @@ -1,11 +1,12 @@ --- title: Prefacio -slug: Referencia_DOM_de_Gecko/Prefacio +slug: conflicting/Web/API/Document_Object_Model_9f3a59543838705de7e9b080fde3cc14 tags: - DOM - Todas_las_Categorías translation_of: Web/API/Document_Object_Model translation_of_original: Web/API/Document_Object_Model/Preface +original_slug: Referencia_DOM_de_Gecko/Prefacio ---

« Referencia DOM de Gecko

diff --git a/files/es/conflicting/web/api/geolocation/index.html b/files/es/conflicting/web/api/geolocation/index.html index 0f8895b7b8..bd9d8f78d6 100644 --- a/files/es/conflicting/web/api/geolocation/index.html +++ b/files/es/conflicting/web/api/geolocation/index.html @@ -1,10 +1,11 @@ --- title: NavigatorGeolocation -slug: Web/API/NavigatorGeolocation +slug: conflicting/Web/API/Geolocation tags: - API translation_of: Web/API/Geolocation translation_of_original: Web/API/NavigatorGeolocation +original_slug: Web/API/NavigatorGeolocation ---

{{APIRef("Geolocation API")}}

diff --git a/files/es/conflicting/web/api/html_drag_and_drop_api/index.html b/files/es/conflicting/web/api/html_drag_and_drop_api/index.html index 292b860888..e8dd96166b 100644 --- a/files/es/conflicting/web/api/html_drag_and_drop_api/index.html +++ b/files/es/conflicting/web/api/html_drag_and_drop_api/index.html @@ -1,11 +1,12 @@ --- title: DragDrop -slug: DragDrop +slug: conflicting/Web/API/HTML_Drag_and_Drop_API tags: - NeedsTranslation - TopicStub translation_of: Web/API/HTML_Drag_and_Drop_API translation_of_original: DragDrop +original_slug: DragDrop ---

 

See https://developer.mozilla.org/en-US/docs/DragDrop/Drag_and_Drop

diff --git a/files/es/conflicting/web/api/index.html b/files/es/conflicting/web/api/index.html index c970ea8947..66f2f46da6 100644 --- a/files/es/conflicting/web/api/index.html +++ b/files/es/conflicting/web/api/index.html @@ -1,6 +1,6 @@ --- title: Element.name -slug: Web/API/Element/name +slug: conflicting/Web/API tags: - API - Compatibilidad de los navegadores @@ -12,6 +12,7 @@ tags: - actualizacion translation_of: Web/API translation_of_original: Web/API/Element/name +original_slug: Web/API/Element/name ---

{{ APIRef("DOM") }}

diff --git a/files/es/conflicting/web/api/indexeddb_api/index.html b/files/es/conflicting/web/api/indexeddb_api/index.html index 91e216833a..cdcd58724c 100644 --- a/files/es/conflicting/web/api/indexeddb_api/index.html +++ b/files/es/conflicting/web/api/indexeddb_api/index.html @@ -1,8 +1,9 @@ --- title: IndexedDB -slug: IndexedDB +slug: conflicting/Web/API/IndexedDB_API tags: - páginas_a_traducir +original_slug: IndexedDB ---

{{ SeeCompatTable() }}

diff --git a/files/es/conflicting/web/api/node/index.html b/files/es/conflicting/web/api/node/index.html index f6faf58631..2204a75c59 100644 --- a/files/es/conflicting/web/api/node/index.html +++ b/files/es/conflicting/web/api/node/index.html @@ -1,6 +1,6 @@ --- title: Nodo.nodoPrincipal -slug: Web/API/Node/nodoPrincipal +slug: conflicting/Web/API/Node tags: - API - DOM @@ -8,6 +8,7 @@ tags: - Propiedad translation_of: Web/API/Node translation_of_original: Web/API/Node/nodePrincipal +original_slug: Web/API/Node/nodoPrincipal ---
{{APIRef("DOM")}}
diff --git a/files/es/conflicting/web/api/push_api/index.html b/files/es/conflicting/web/api/push_api/index.html index 05d101e5fa..016e0abcaa 100644 --- a/files/es/conflicting/web/api/push_api/index.html +++ b/files/es/conflicting/web/api/push_api/index.html @@ -1,8 +1,9 @@ --- title: Usando la API Push -slug: Web/API/Push_API/Using_the_Push_API +slug: conflicting/Web/API/Push_API translation_of: Web/API/Push_API translation_of_original: Web/API/Push_API/Using_the_Push_API +original_slug: Web/API/Push_API/Using_the_Push_API ---

La W3C Push API offers some exciting new functionality for developers to use in web applications: this article provides an introduction to getting Push notifications setup and running, with a simple demo.

diff --git a/files/es/conflicting/web/api/url/index.html b/files/es/conflicting/web/api/url/index.html index 6ca15914a4..61ab76466d 100644 --- a/files/es/conflicting/web/api/url/index.html +++ b/files/es/conflicting/web/api/url/index.html @@ -1,6 +1,6 @@ --- title: Window.URL -slug: Web/API/Window/URL +slug: conflicting/Web/API/URL tags: - API - DOM @@ -10,6 +10,7 @@ tags: - WebAPI translation_of: Web/API/URL translation_of_original: Web/API/Window/URL +original_slug: Web/API/Window/URL ---

{{ApiRef("Window")}}{{SeeCompatTable}}

diff --git a/files/es/conflicting/web/api/web_storage_api/index.html b/files/es/conflicting/web/api/web_storage_api/index.html index 6889022c7a..551f98f92d 100644 --- a/files/es/conflicting/web/api/web_storage_api/index.html +++ b/files/es/conflicting/web/api/web_storage_api/index.html @@ -1,6 +1,6 @@ --- title: Almacenamiento -slug: DOM/Almacenamiento +slug: conflicting/Web/API/Web_Storage_API tags: - DOM - JavaScript @@ -9,6 +9,7 @@ tags: - para_revisar translation_of: Web/API/Web_Storage_API translation_of_original: Web/Guide/API/DOM/Storage +original_slug: DOM/Almacenamiento ---

{{ ApiRef() }}

Introducción

diff --git a/files/es/conflicting/web/api/webrtc_api/index.html b/files/es/conflicting/web/api/webrtc_api/index.html index b8eb318529..41554256cd 100644 --- a/files/es/conflicting/web/api/webrtc_api/index.html +++ b/files/es/conflicting/web/api/webrtc_api/index.html @@ -1,8 +1,9 @@ --- title: WebRTC -slug: WebRTC +slug: conflicting/Web/API/WebRTC_API translation_of: Web/API/WebRTC_API translation_of_original: WebRTC +original_slug: WebRTC ---

El RTC en WebRTC significa Real-Time Communications, o comunicaciones en tiempo real, en español. WebRTC es una tecnología que permite compartir en tiempo real datos de audio y video entre navegadores (pares). Como conjunto de estándares, WebRTC provee a cualquier navegador de la capacidad de compartir datos de aplicación y realizar teleconferencias de par a par, sin la necesidad de instalar complementos o Software de terceros.

Los componentes de WebRTC son utilizados a través de interfaces avanzadaz de programación en JavaScript (APIs). Actualmente se están desarrollando la API de streaming a través de la red, que representa los flujos de datos de audio y vídeo, y la API PeerConnection, que permite a dos o más usuarios realizar conexiones navegador a navegador. Igualmente en desarrollo se encuentra la API DataChannel, que permite la transmisión de otros tipos de datos para juegos en tiempo real, mensajería instantánea, transferencia de archivos, y otros.

diff --git a/files/es/conflicting/web/api/websockets_api/index.html b/files/es/conflicting/web/api/websockets_api/index.html index f7ac10a94d..6250ba53c0 100644 --- a/files/es/conflicting/web/api/websockets_api/index.html +++ b/files/es/conflicting/web/api/websockets_api/index.html @@ -1,9 +1,10 @@ --- title: WebSockets -slug: WebSockets +slug: conflicting/Web/API/WebSockets_API tags: - WebSockets - para_revisar +original_slug: WebSockets ---

{{ SeeCompatTable () }}

WebSockets es una tecnología que hace posible abrir una sesión de comunicación interactiva entre el navegador del usuario y un servidor. Con esta API, puedes enviar mensajes a un servidor y recibir respuestas por eventos sin tener que consultar al servidor.

diff --git a/files/es/conflicting/web/api/window/localstorage/index.html b/files/es/conflicting/web/api/window/localstorage/index.html index 5c46cb9559..d4307e30a4 100644 --- a/files/es/conflicting/web/api/window/localstorage/index.html +++ b/files/es/conflicting/web/api/window/localstorage/index.html @@ -1,11 +1,12 @@ --- title: LocalStorage -slug: Web/API/Storage/LocalStorage +slug: conflicting/Web/API/Window/localStorage tags: - Almacenamiento en Navegador - Almacenamiento local translation_of: Web/API/Window/localStorage translation_of_original: Web/API/Web_Storage_API/Local_storage +original_slug: Web/API/Storage/LocalStorage ---

localStorage (almacenamiento local) es lo mismo que sessionStorage (almacenamiento de sesión), con las mismas reglas de mismo-origen aplicadas, pero es persistente a través de diferentes sesiones. localStorage se introdujo en la version Firefox 3.5.

diff --git a/files/es/conflicting/web/api/windoworworkerglobalscope/index.html b/files/es/conflicting/web/api/windoworworkerglobalscope/index.html index 2607e635fa..881424841a 100644 --- a/files/es/conflicting/web/api/windoworworkerglobalscope/index.html +++ b/files/es/conflicting/web/api/windoworworkerglobalscope/index.html @@ -1,6 +1,6 @@ --- title: WindowBase64 -slug: Web/API/WindowBase64 +slug: conflicting/Web/API/WindowOrWorkerGlobalScope tags: - API - HTML-DOM @@ -10,6 +10,7 @@ tags: - WindowBase64 translation_of: Web/API/WindowOrWorkerGlobalScope translation_of_original: Web/API/WindowBase64 +original_slug: Web/API/WindowBase64 ---

{{APIRef}}

The WindowBase64 helper contains utility methods to convert data to and from base64, a binary-to-text encoding scheme. For example it is used in data URIs.

diff --git a/files/es/conflicting/web/api/windoworworkerglobalscope_e2691f7ad05781a30c5fc5bb3b3f633a/index.html b/files/es/conflicting/web/api/windoworworkerglobalscope_e2691f7ad05781a30c5fc5bb3b3f633a/index.html index 549969232f..bede3a0c57 100644 --- a/files/es/conflicting/web/api/windoworworkerglobalscope_e2691f7ad05781a30c5fc5bb3b3f633a/index.html +++ b/files/es/conflicting/web/api/windoworworkerglobalscope_e2691f7ad05781a30c5fc5bb3b3f633a/index.html @@ -1,10 +1,11 @@ --- title: WindowTimers -slug: Web/API/WindowTimers +slug: conflicting/Web/API/WindowOrWorkerGlobalScope_e2691f7ad05781a30c5fc5bb3b3f633a tags: - API translation_of: Web/API/WindowOrWorkerGlobalScope translation_of_original: Web/API/WindowTimers +original_slug: Web/API/WindowTimers ---
{{APIRef("HTML DOM")}}
diff --git a/files/es/conflicting/web/api_dd04ca1265cb79b990b8120e5f5070d3/index.html b/files/es/conflicting/web/api_dd04ca1265cb79b990b8120e5f5070d3/index.html index 0c189b625d..7630d77e37 100644 --- a/files/es/conflicting/web/api_dd04ca1265cb79b990b8120e5f5070d3/index.html +++ b/files/es/conflicting/web/api_dd04ca1265cb79b990b8120e5f5070d3/index.html @@ -1,6 +1,6 @@ --- title: WebAPI -slug: WebAPI +slug: conflicting/Web/API_dd04ca1265cb79b990b8120e5f5070d3 tags: - Apps - DOM @@ -10,6 +10,7 @@ tags: - TopicStub translation_of: Web/API translation_of_original: WebAPI +original_slug: WebAPI ---

WebAPI es un termino usado para referirse al conjunto de APIs compatibles y de acceso a los dispositivos que permite a las Web apps y contenido acceder al hardware del dispositivo (como el estado de la batería o la vibración de hardware), al igual que acceso a información almacenada en el dispositivo (como el calendario o la lista de contactos). Agregando estas APIs, esperamos expandir lo que la Web puede hacer hoy y solo plataformas propietarias fueron capaces de hacer en el pasado.

diff --git a/files/es/conflicting/web/css/@viewport/index.html b/files/es/conflicting/web/css/@viewport/index.html index bb9c54b069..613ae5a285 100644 --- a/files/es/conflicting/web/css/@viewport/index.html +++ b/files/es/conflicting/web/css/@viewport/index.html @@ -1,11 +1,12 @@ --- title: height -slug: Web/CSS/@viewport/height +slug: conflicting/Web/CSS/@viewport tags: - Descriptor CSS - Referencia translation_of: Web/CSS/@viewport translation_of_original: Web/CSS/@viewport/height +original_slug: Web/CSS/@viewport/height ---
{{CSSRef}}
diff --git a/files/es/conflicting/web/css/@viewport_c925ec0506b352ea1185248b874f7848/index.html b/files/es/conflicting/web/css/@viewport_c925ec0506b352ea1185248b874f7848/index.html index 2c550153bc..1c89eeec84 100644 --- a/files/es/conflicting/web/css/@viewport_c925ec0506b352ea1185248b874f7848/index.html +++ b/files/es/conflicting/web/css/@viewport_c925ec0506b352ea1185248b874f7848/index.html @@ -1,8 +1,9 @@ --- title: width -slug: Web/CSS/@viewport/width +slug: conflicting/Web/CSS/@viewport_c925ec0506b352ea1185248b874f7848 translation_of: Web/CSS/@viewport translation_of_original: Web/CSS/@viewport/width +original_slug: Web/CSS/@viewport/width ---
{{CSSRef}}
diff --git a/files/es/conflicting/web/css/_colon_placeholder-shown/index.html b/files/es/conflicting/web/css/_colon_placeholder-shown/index.html index c7f84a0273..a29af2de30 100644 --- a/files/es/conflicting/web/css/_colon_placeholder-shown/index.html +++ b/files/es/conflicting/web/css/_colon_placeholder-shown/index.html @@ -1,6 +1,6 @@ --- title: ':-moz-placeholder' -slug: 'Web/CSS/:-moz-placeholder' +slug: conflicting/Web/CSS/:placeholder-shown tags: - CSS - Marcador de Posición INPUT @@ -9,8 +9,9 @@ tags: - Placeholder - Pseudo-Clase CSS - Referencia CSS -translation_of: 'Web/CSS/:placeholder-shown' -translation_of_original: 'Web/CSS/:-moz-placeholder' +translation_of: Web/CSS/:placeholder-shown +translation_of_original: Web/CSS/:-moz-placeholder +original_slug: Web/CSS/:-moz-placeholder ---
Nota: La pseudo-clase CSS :-moz-placeholder está depreciada desde la versión Firefox 19 siendo desde entonces sustituida por el pseudo-elemento {{cssxref('::-moz-placeholder')}}.
diff --git a/files/es/conflicting/web/css/_colon_placeholder-shown_f20b6cc785f9fd133a0f9fb582f36891/index.html b/files/es/conflicting/web/css/_colon_placeholder-shown_f20b6cc785f9fd133a0f9fb582f36891/index.html index b83b72db1a..41ba68e25e 100644 --- a/files/es/conflicting/web/css/_colon_placeholder-shown_f20b6cc785f9fd133a0f9fb582f36891/index.html +++ b/files/es/conflicting/web/css/_colon_placeholder-shown_f20b6cc785f9fd133a0f9fb582f36891/index.html @@ -1,13 +1,14 @@ --- title: ':-ms-input-placeholder' -slug: 'Web/CSS/:-ms-input-placeholder' +slug: conflicting/Web/CSS/:placeholder-shown_f20b6cc785f9fd133a0f9fb582f36891 tags: - CSS - No estándar(2) - Pseudo clase CSS - Referencia -translation_of: 'Web/CSS/:placeholder-shown' -translation_of_original: 'Web/CSS/:-ms-input-placeholder' +translation_of: Web/CSS/:placeholder-shown +translation_of_original: Web/CSS/:-ms-input-placeholder +original_slug: Web/CSS/:-ms-input-placeholder ---
{{Non-standard_header}}{{CSSRef}}
diff --git a/files/es/conflicting/web/css/_doublecolon_placeholder/index.html b/files/es/conflicting/web/css/_doublecolon_placeholder/index.html index 3c8fbb8c3a..99c5ec97ee 100644 --- a/files/es/conflicting/web/css/_doublecolon_placeholder/index.html +++ b/files/es/conflicting/web/css/_doublecolon_placeholder/index.html @@ -1,13 +1,14 @@ --- title: '::-moz-placeholder' -slug: 'Web/CSS/::-moz-placeholder' +slug: conflicting/Web/CSS/::placeholder tags: - CSS - No estándar(2) - Pseudo-elemento CSS - Referencia CSS -translation_of: 'Web/CSS/::placeholder' -translation_of_original: 'Web/CSS/::-moz-placeholder' +translation_of: Web/CSS/::placeholder +translation_of_original: Web/CSS/::-moz-placeholder +original_slug: Web/CSS/::-moz-placeholder ---
{{Non-standard_header}}{{CSSRef}}
diff --git a/files/es/conflicting/web/css/_doublecolon_placeholder_70bda352bb504ebdd6cd3362879e2479/index.html b/files/es/conflicting/web/css/_doublecolon_placeholder_70bda352bb504ebdd6cd3362879e2479/index.html index 181f0a966c..54824a3934 100644 --- a/files/es/conflicting/web/css/_doublecolon_placeholder_70bda352bb504ebdd6cd3362879e2479/index.html +++ b/files/es/conflicting/web/css/_doublecolon_placeholder_70bda352bb504ebdd6cd3362879e2479/index.html @@ -1,6 +1,6 @@ --- title: '::-webkit-input-placeholder' -slug: 'Web/CSS/::-webkit-input-placeholder' +slug: conflicting/Web/CSS/::placeholder_70bda352bb504ebdd6cd3362879e2479 tags: - CSS - NeedsExample @@ -9,8 +9,9 @@ tags: - Pseudo-elemento CSS - Referencia - Referencia CSS -translation_of: 'Web/CSS/::placeholder' -translation_of_original: 'Web/CSS/::-webkit-input-placeholder' +translation_of: Web/CSS/::placeholder +translation_of_original: Web/CSS/::-webkit-input-placeholder +original_slug: Web/CSS/::-webkit-input-placeholder ---
{{Non-standard_header}}{{CSSRef}}
diff --git a/files/es/conflicting/web/css/css_flexible_box_layout/basic_concepts_of_flexbox/index.html b/files/es/conflicting/web/css/css_flexible_box_layout/basic_concepts_of_flexbox/index.html index dd39986ed4..c2fb316660 100644 --- a/files/es/conflicting/web/css/css_flexible_box_layout/basic_concepts_of_flexbox/index.html +++ b/files/es/conflicting/web/css/css_flexible_box_layout/basic_concepts_of_flexbox/index.html @@ -1,8 +1,9 @@ --- title: Usando las cajas flexibles CSS -slug: Web/CSS/CSS_Flexible_Box_Layout/Usando_las_cajas_flexibles_CSS +slug: conflicting/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox translation_of: Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox translation_of_original: Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes +original_slug: Web/CSS/CSS_Flexible_Box_Layout/Usando_las_cajas_flexibles_CSS ---
{{CSSRef}}
diff --git a/files/es/conflicting/web/css/css_flexible_box_layout/typical_use_cases_of_flexbox/index.html b/files/es/conflicting/web/css/css_flexible_box_layout/typical_use_cases_of_flexbox/index.html index e42553fe97..e28553d037 100644 --- a/files/es/conflicting/web/css/css_flexible_box_layout/typical_use_cases_of_flexbox/index.html +++ b/files/es/conflicting/web/css/css_flexible_box_layout/typical_use_cases_of_flexbox/index.html @@ -1,6 +1,6 @@ --- title: Usando flexbox para componer aplicaciones web -slug: Web/CSS/CSS_Flexible_Box_Layout/Usando_flexbox_para_componer_aplicaciones_web +slug: conflicting/Web/CSS/CSS_Flexible_Box_Layout/Typical_Use_Cases_of_Flexbox tags: - Avanzado - CSS @@ -10,6 +10,7 @@ tags: - Web translation_of: Web/CSS/CSS_Flexible_Box_Layout/Typical_Use_Cases_of_Flexbox translation_of_original: Web/CSS/CSS_Flexible_Box_Layout/Using_flexbox_to_lay_out_web_applications +original_slug: Web/CSS/CSS_Flexible_Box_Layout/Usando_flexbox_para_componer_aplicaciones_web ---

{{CSSRef}}

diff --git a/files/es/conflicting/web/css/cursor/index.html b/files/es/conflicting/web/css/cursor/index.html index 213b3607c0..a1b674c1c7 100644 --- a/files/es/conflicting/web/css/cursor/index.html +++ b/files/es/conflicting/web/css/cursor/index.html @@ -1,10 +1,11 @@ --- title: '-moz-cell' -slug: Web/CSS/-moz-cell +slug: conflicting/Web/CSS/cursor tags: - CSS translation_of: Web/CSS/cursor translation_of_original: Web/CSS/-moz-cell +original_slug: Web/CSS/-moz-cell ---
{{CSSRef}}{{obsolete_header}}
diff --git a/files/es/conflicting/web/css/font-variant/index.html b/files/es/conflicting/web/css/font-variant/index.html index 332e284385..09f79f2844 100644 --- a/files/es/conflicting/web/css/font-variant/index.html +++ b/files/es/conflicting/web/css/font-variant/index.html @@ -1,8 +1,9 @@ --- title: normal -slug: Web/CSS/normal +slug: conflicting/Web/CSS/font-variant translation_of: Web/CSS/font-variant translation_of_original: Web/CSS/normal +original_slug: Web/CSS/normal ---

Sumario

El valor normal en una propiedad CSS, es normalmente el valor medio de entre los posibles valores que puede tomar. Es el valor por defecto, es decir, el que tiene la propiedad si no establecemos uno distinto.

diff --git a/files/es/conflicting/web/css/width/index.html b/files/es/conflicting/web/css/width/index.html index c380b1b891..ade93e4cf9 100644 --- a/files/es/conflicting/web/css/width/index.html +++ b/files/es/conflicting/web/css/width/index.html @@ -1,12 +1,13 @@ --- title: auto -slug: Web/CSS/auto +slug: conflicting/Web/CSS/width tags: - CSS - - 'CSS:Referencias' + - CSS:Referencias - Todas_las_Categorías translation_of: Web/CSS/width translation_of_original: Web/CSS/auto +original_slug: Web/CSS/auto ---

<< Volver diff --git a/files/es/conflicting/web/guide/index.html b/files/es/conflicting/web/guide/index.html index d6d72dfef3..e1fb2513bd 100644 --- a/files/es/conflicting/web/guide/index.html +++ b/files/es/conflicting/web/guide/index.html @@ -1,11 +1,12 @@ --- title: Desarrollo Web -slug: Desarrollo_Web +slug: conflicting/Web/Guide tags: - Desarrollo_Web - Todas_las_Categorías translation_of: Web/Guide translation_of_original: Web_Development +original_slug: Desarrollo_Web ---

diff --git a/files/es/conflicting/web/guide/mobile/index.html b/files/es/conflicting/web/guide/mobile/index.html index cc288a9c45..028d0c71ed 100644 --- a/files/es/conflicting/web/guide/mobile/index.html +++ b/files/es/conflicting/web/guide/mobile/index.html @@ -1,6 +1,6 @@ --- title: Mobile Web development -slug: Web_Development/Mobile +slug: conflicting/Web/Guide/Mobile tags: - Mobile - NeedsTranslation @@ -8,6 +8,7 @@ tags: - Web Development translation_of: Web/Guide/Mobile translation_of_original: Web_Development/Mobile +original_slug: Web_Development/Mobile ---

Developing web sites to be viewed on mobile devices requires approaches that ensure a web site works as well on mobile devices as it does on desktop browsers. The following articles describe some of these approaches.

    diff --git a/files/es/conflicting/web/html/element/index.html b/files/es/conflicting/web/html/element/index.html index 64595418c8..ebde8fbff4 100644 --- a/files/es/conflicting/web/html/element/index.html +++ b/files/es/conflicting/web/html/element/index.html @@ -1,8 +1,9 @@ --- title: Lista de Elementos HTML5 -slug: HTML/HTML5/HTML5_lista_elementos +slug: conflicting/Web/HTML/Element translation_of: Web/HTML/Element translation_of_original: Web/Guide/HTML/HTML5/HTML5_element_list +original_slug: HTML/HTML5/HTML5_lista_elementos ---

    Todos los elementos del estandar HTML5 están listados aquí, descritos por su etiqueta de apertura y agrupados por su función. Contrariamente al indice de elementos HTML el cual lista todas las posibles etiquetas, estandar, no-estandar, válidas, obsoletas o aquellas en desuso, esta lista solamente los elementos válidos de HTML5. Solamente aquellos elementos listados aquí son los que deberían ser usados en nuevos sitios Web.

    diff --git a/files/es/conflicting/web/html/global_attributes/index.html b/files/es/conflicting/web/html/global_attributes/index.html index 64afaf64ff..5c1df0adc7 100644 --- a/files/es/conflicting/web/html/global_attributes/index.html +++ b/files/es/conflicting/web/html/global_attributes/index.html @@ -1,6 +1,6 @@ --- title: Atributo global -slug: Glossary/Atributo_global +slug: conflicting/Web/HTML/Global_attributes tags: - CodingScripting - Glosario @@ -8,6 +8,7 @@ tags: - atributo translation_of: Web/HTML/Global_attributes translation_of_original: Glossary/Global_attribute +original_slug: Glossary/Atributo_global ---

    Los Atributos Globales son {{glossary("attribute","atributos")}} que pueden ser usados en todos los {{glossary("element","elementos")}} (aunque a veces no tienen efecto en algunos de ellos).

    diff --git a/files/es/conflicting/web/html/global_attributes/spellcheck/index.html b/files/es/conflicting/web/html/global_attributes/spellcheck/index.html index 0f409bb10e..7d8b76554b 100644 --- a/files/es/conflicting/web/html/global_attributes/spellcheck/index.html +++ b/files/es/conflicting/web/html/global_attributes/spellcheck/index.html @@ -1,6 +1,6 @@ --- title: Control de la corrección ortográfica en formularios HTML -slug: Control_de_la_corrección_ortográfica_en_formularios_HTML +slug: conflicting/Web/HTML/Global_attributes/spellcheck tags: - Desarrollo_Web - Gestión de configuración @@ -10,6 +10,7 @@ tags: - XHTML translation_of: Web/HTML/Global_attributes/spellcheck translation_of_original: Web/HTML/Controlling_spell_checking_in_HTML_forms +original_slug: Control_de_la_corrección_ortográfica_en_formularios_HTML ---

    {{ gecko_minversion_header("1.8.1") }} Firefox 2 incorpora un corrector ortográfico para las áreas y los campos de texto de los formularios web. Usando la interfaz "about:config" el usuario puede activar o desactivar el corrector, además, puede indicar si desea o no habilitar la corrección ortográfica y si debe habilitarse para áreas y campos de texto o sólo en áreas de texto.

    diff --git a/files/es/conflicting/web/http/basics_of_http/mime_types/index.html b/files/es/conflicting/web/http/basics_of_http/mime_types/index.html index fbd15d6764..7e325a7d49 100644 --- a/files/es/conflicting/web/http/basics_of_http/mime_types/index.html +++ b/files/es/conflicting/web/http/basics_of_http/mime_types/index.html @@ -1,11 +1,12 @@ --- title: Tipo MIME incorrecto en archivos CSS -slug: Tipo_MIME_incorrecto_en_archivos_CSS +slug: conflicting/Web/HTTP/Basics_of_HTTP/MIME_types tags: - CSS - Todas_las_Categorías translation_of: Web/HTTP/Basics_of_HTTP/MIME_types translation_of_original: Incorrect_MIME_Type_for_CSS_Files +original_slug: Tipo_MIME_incorrecto_en_archivos_CSS ---

    ¿Cuál es el problema?

    Quizás encuentres una web que use CSS con un diseño pobre en Netscape 7.x o cualquier navegador basado en Gecko como Mozilla, mientras que en Internet Explorer se muestra correctamente. Una de las razones más comunes para que esto suceda es una configuración inapropiada del servidor que tiene almacenado el archivo CSS. Algunos servidores Apache e iPlanet asocian archivos con extensión .CSS con un tipo incorrecto MIME como el "text/plain" o "application/x-pointplus". En algunos casos, Netscape 7.x y Mozilla ignoran el archivo CSS porque tiene un tipo MIME incorrecto y usan una hoja de estilo por defecto que causa que el diseño sea diferente del que se pretendía por parte del desarrollador web. diff --git a/files/es/conflicting/web/http/csp/index.html b/files/es/conflicting/web/http/csp/index.html index 6fcf1a2ff3..bb9d56164f 100644 --- a/files/es/conflicting/web/http/csp/index.html +++ b/files/es/conflicting/web/http/csp/index.html @@ -1,11 +1,12 @@ --- title: CSP (Políticas de Seguridad de Contenido) -slug: Web/Security/CSP +slug: conflicting/Web/HTTP/CSP tags: - Documento - Referencia translation_of: Web/HTTP/CSP translation_of_original: Web/Security/CSP +original_slug: Web/Security/CSP ---

    {{gecko_minversion_header("2.0")}}
    diff --git a/files/es/conflicting/web/http/csp_aeae68a149c6fbe64e541cbdcd6ed5c5/index.html b/files/es/conflicting/web/http/csp_aeae68a149c6fbe64e541cbdcd6ed5c5/index.html index 58960c7798..96a5cf6d8d 100644 --- a/files/es/conflicting/web/http/csp_aeae68a149c6fbe64e541cbdcd6ed5c5/index.html +++ b/files/es/conflicting/web/http/csp_aeae68a149c6fbe64e541cbdcd6ed5c5/index.html @@ -1,6 +1,6 @@ --- title: Introducción a Políticas de Seguridad de Contenido -slug: Web/Security/CSP/Introducing_Content_Security_Policy +slug: conflicting/Web/HTTP/CSP_aeae68a149c6fbe64e541cbdcd6ed5c5 tags: - Documento - Políticas de Seguridad de Contenido @@ -8,6 +8,7 @@ tags: - Seguridad translation_of: Web/HTTP/CSP translation_of_original: Web/Security/CSP/Introducing_Content_Security_Policy +original_slug: Web/Security/CSP/Introducing_Content_Security_Policy ---

    {{ gecko_minversion_header("2") }}

    diff --git a/files/es/conflicting/web/http/headers/content-security-policy/index.html b/files/es/conflicting/web/http/headers/content-security-policy/index.html index c2f9c5a628..dd1cb8d720 100644 --- a/files/es/conflicting/web/http/headers/content-security-policy/index.html +++ b/files/es/conflicting/web/http/headers/content-security-policy/index.html @@ -1,8 +1,9 @@ --- title: Políticas Directivas CSP -slug: Web/Security/CSP/CSP_policy_directives +slug: conflicting/Web/HTTP/Headers/Content-Security-Policy translation_of: Web/HTTP/Headers/Content-Security-Policy translation_of_original: Web/Security/CSP/CSP_policy_directives +original_slug: Web/Security/CSP/CSP_policy_directives ---

     

    diff --git a/files/es/conflicting/web/javascript/reference/global_objects/arraybuffer/index.html b/files/es/conflicting/web/javascript/reference/global_objects/arraybuffer/index.html index fef80071de..48a3db323c 100644 --- a/files/es/conflicting/web/javascript/reference/global_objects/arraybuffer/index.html +++ b/files/es/conflicting/web/javascript/reference/global_objects/arraybuffer/index.html @@ -1,12 +1,13 @@ --- title: ArrayBuffer.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/ArrayBuffer/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/ArrayBuffer tags: - ArrayBuffer - JavaScript - Propiedad translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer translation_of_original: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype +original_slug: Web/JavaScript/Referencia/Objetos_globales/ArrayBuffer/prototype ---
    {{JSRef}}
    diff --git a/files/es/conflicting/web/javascript/reference/global_objects/date/index.html b/files/es/conflicting/web/javascript/reference/global_objects/date/index.html index de92c8ee02..362876f5af 100644 --- a/files/es/conflicting/web/javascript/reference/global_objects/date/index.html +++ b/files/es/conflicting/web/javascript/reference/global_objects/date/index.html @@ -1,12 +1,13 @@ --- title: Date.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/Date/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Date tags: - Date - JavaScript - Property translation_of: Web/JavaScript/Reference/Global_Objects/Date translation_of_original: Web/JavaScript/Reference/Global_Objects/Date/prototype +original_slug: Web/JavaScript/Referencia/Objetos_globales/Date/prototype ---
    {{JSRef("Objetos_globales", "Date")}}
    diff --git a/files/es/conflicting/web/javascript/reference/global_objects/error/index.html b/files/es/conflicting/web/javascript/reference/global_objects/error/index.html index aac1516fc2..5540880b03 100644 --- a/files/es/conflicting/web/javascript/reference/global_objects/error/index.html +++ b/files/es/conflicting/web/javascript/reference/global_objects/error/index.html @@ -1,8 +1,9 @@ --- title: Error.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/Error/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Error translation_of: Web/JavaScript/Reference/Global_Objects/Error translation_of_original: Web/JavaScript/Reference/Global_Objects/Error/prototype +original_slug: Web/JavaScript/Referencia/Objetos_globales/Error/prototype ---
    {{JSRef}}
    diff --git a/files/es/conflicting/web/javascript/reference/global_objects/function/index.html b/files/es/conflicting/web/javascript/reference/global_objects/function/index.html index 9d8671c534..20de74f338 100644 --- a/files/es/conflicting/web/javascript/reference/global_objects/function/index.html +++ b/files/es/conflicting/web/javascript/reference/global_objects/function/index.html @@ -1,12 +1,13 @@ --- title: Function.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/Function/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Function tags: - Function - JavaScript - Property translation_of: Web/JavaScript/Reference/Global_Objects/Function translation_of_original: Web/JavaScript/Reference/Global_Objects/Function/prototype +original_slug: Web/JavaScript/Referencia/Objetos_globales/Function/prototype ---
    {{JSRef("Objetos_globales", "Function")}}
    diff --git a/files/es/conflicting/web/javascript/reference/global_objects/map/index.html b/files/es/conflicting/web/javascript/reference/global_objects/map/index.html index b255e65b69..557a561e76 100644 --- a/files/es/conflicting/web/javascript/reference/global_objects/map/index.html +++ b/files/es/conflicting/web/javascript/reference/global_objects/map/index.html @@ -1,8 +1,9 @@ --- title: Map.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/Map/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Map translation_of: Web/JavaScript/Reference/Global_Objects/Map translation_of_original: Web/JavaScript/Reference/Global_Objects/Map/prototype +original_slug: Web/JavaScript/Referencia/Objetos_globales/Map/prototype ---
    {{JSRef}}
    diff --git a/files/es/conflicting/web/javascript/reference/global_objects/number/index.html b/files/es/conflicting/web/javascript/reference/global_objects/number/index.html index c15b5b5fcb..2f9f0a8e4e 100644 --- a/files/es/conflicting/web/javascript/reference/global_objects/number/index.html +++ b/files/es/conflicting/web/javascript/reference/global_objects/number/index.html @@ -1,12 +1,13 @@ --- title: Number.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/Number/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Number tags: - JavaScript - Number - Property translation_of: Web/JavaScript/Reference/Global_Objects/Number translation_of_original: Web/JavaScript/Reference/Global_Objects/Number/prototype +original_slug: Web/JavaScript/Referencia/Objetos_globales/Number/prototype ---
    {{JSRef("Objetos_globales", "Number")}}
    diff --git a/files/es/conflicting/web/javascript/reference/global_objects/object/index.html b/files/es/conflicting/web/javascript/reference/global_objects/object/index.html index 9b55c9cccc..805aa55cf9 100644 --- a/files/es/conflicting/web/javascript/reference/global_objects/object/index.html +++ b/files/es/conflicting/web/javascript/reference/global_objects/object/index.html @@ -1,12 +1,13 @@ --- title: Object.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/Object/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Object tags: - JavaScript - Objeto - Propiedad translation_of: Web/JavaScript/Reference/Global_Objects/Object translation_of_original: Web/JavaScript/Reference/Global_Objects/Object/prototype +original_slug: Web/JavaScript/Referencia/Objetos_globales/Object/prototype ---
    {{JSRef("Objetos_globales", "Object")}}
    diff --git a/files/es/conflicting/web/javascript/reference/global_objects/promise/index.html b/files/es/conflicting/web/javascript/reference/global_objects/promise/index.html index c15107912a..99fe5cfd8d 100644 --- a/files/es/conflicting/web/javascript/reference/global_objects/promise/index.html +++ b/files/es/conflicting/web/javascript/reference/global_objects/promise/index.html @@ -1,12 +1,13 @@ --- title: Promise.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/Promise/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Promise tags: - JavaScript - Promesa - Propiedad translation_of: Web/JavaScript/Reference/Global_Objects/Promise translation_of_original: Web/JavaScript/Reference/Global_Objects/Promise/prototype +original_slug: Web/JavaScript/Referencia/Objetos_globales/Promise/prototype ---
    {{JSRef}}
    diff --git a/files/es/conflicting/web/javascript/reference/global_objects/rangeerror/index.html b/files/es/conflicting/web/javascript/reference/global_objects/rangeerror/index.html index fa75157c9d..0f4dc1fde3 100644 --- a/files/es/conflicting/web/javascript/reference/global_objects/rangeerror/index.html +++ b/files/es/conflicting/web/javascript/reference/global_objects/rangeerror/index.html @@ -1,6 +1,6 @@ --- title: RangeError.prototype -slug: Web/JavaScript/Reference/Global_Objects/RangeError/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/RangeError tags: - Error - JavaScript @@ -10,6 +10,7 @@ tags: - RangeError translation_of: Web/JavaScript/Reference/Global_Objects/RangeError translation_of_original: Web/JavaScript/Reference/Global_Objects/RangeError/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/RangeError/prototype ---
    {{JSRef}}
    diff --git a/files/es/conflicting/web/javascript/reference/global_objects/string/index.html b/files/es/conflicting/web/javascript/reference/global_objects/string/index.html index 89519b08d2..5f13679c36 100644 --- a/files/es/conflicting/web/javascript/reference/global_objects/string/index.html +++ b/files/es/conflicting/web/javascript/reference/global_objects/string/index.html @@ -1,6 +1,6 @@ --- title: String.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/String/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/String tags: - JavaScript - Property @@ -8,6 +8,7 @@ tags: - String translation_of: Web/JavaScript/Reference/Global_Objects/String translation_of_original: Web/JavaScript/Reference/Global_Objects/String/prototype +original_slug: Web/JavaScript/Referencia/Objetos_globales/String/prototype ---

    {{JSRef("Objetos_globales", "String")}}

    diff --git a/files/es/conflicting/web/javascript/reference/global_objects/syntaxerror/index.html b/files/es/conflicting/web/javascript/reference/global_objects/syntaxerror/index.html index 2de491bc21..8fbdac1a8d 100644 --- a/files/es/conflicting/web/javascript/reference/global_objects/syntaxerror/index.html +++ b/files/es/conflicting/web/javascript/reference/global_objects/syntaxerror/index.html @@ -1,6 +1,6 @@ --- title: SyntaxError.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/SyntaxError/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/SyntaxError tags: - Error - JavaScript @@ -9,6 +9,7 @@ tags: - SyntaxError translation_of: Web/JavaScript/Reference/Global_Objects/SyntaxError translation_of_original: Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype +original_slug: Web/JavaScript/Referencia/Objetos_globales/SyntaxError/prototype ---
    {{JSRef}}
    diff --git a/files/es/conflicting/web/javascript/reference/global_objects/weakmap/index.html b/files/es/conflicting/web/javascript/reference/global_objects/weakmap/index.html index 41d501135d..fd84aa6280 100644 --- a/files/es/conflicting/web/javascript/reference/global_objects/weakmap/index.html +++ b/files/es/conflicting/web/javascript/reference/global_objects/weakmap/index.html @@ -1,6 +1,6 @@ --- title: WeakMap.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/WeakMap/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/WeakMap tags: - ECMAScript6 - JavaScript @@ -8,6 +8,7 @@ tags: - WeakMap translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap translation_of_original: Web/JavaScript/Reference/Global_Objects/WeakMap/prototype +original_slug: Web/JavaScript/Referencia/Objetos_globales/WeakMap/prototype ---
    {{JSRef}}
    diff --git a/files/es/conflicting/web/javascript/reference/lexical_grammar/index.html b/files/es/conflicting/web/javascript/reference/lexical_grammar/index.html index 14010f37e3..0f36de5c58 100644 --- a/files/es/conflicting/web/javascript/reference/lexical_grammar/index.html +++ b/files/es/conflicting/web/javascript/reference/lexical_grammar/index.html @@ -1,11 +1,12 @@ --- title: Palabras Reservadas -slug: Web/JavaScript/Referencia/Palabras_Reservadas +slug: conflicting/Web/JavaScript/Reference/Lexical_grammar tags: - JavaScript - palabras reservadas translation_of: Web/JavaScript/Reference/Lexical_grammar#Keywords translation_of_original: Web/JavaScript/Reference/Reserved_Words +original_slug: Web/JavaScript/Referencia/Palabras_Reservadas ---

     

    diff --git a/files/es/conflicting/web/javascript/reference/operators/index.html b/files/es/conflicting/web/javascript/reference/operators/index.html index 71968fda85..ef6c162b92 100644 --- a/files/es/conflicting/web/javascript/reference/operators/index.html +++ b/files/es/conflicting/web/javascript/reference/operators/index.html @@ -1,11 +1,12 @@ --- title: Operadores Aritméticos -slug: Web/JavaScript/Referencia/Operadores/Aritméticos +slug: conflicting/Web/JavaScript/Reference/Operators tags: - JavaScript - Operador translation_of: Web/JavaScript/Reference/Operators translation_of_original: Web/JavaScript/Reference/Operators/Arithmetic_Operators +original_slug: Web/JavaScript/Referencia/Operadores/Aritméticos ---
    {{jsSidebar("Operators")}}
    diff --git a/files/es/conflicting/web/javascript/reference/operators/spread_syntax/index.html b/files/es/conflicting/web/javascript/reference/operators/spread_syntax/index.html index 050a2026f6..f8d23e4eaa 100644 --- a/files/es/conflicting/web/javascript/reference/operators/spread_syntax/index.html +++ b/files/es/conflicting/web/javascript/reference/operators/spread_syntax/index.html @@ -1,6 +1,6 @@ --- title: Operador de propagación -slug: Web/JavaScript/Referencia/Operadores/Spread_operator +slug: conflicting/Web/JavaScript/Reference/Operators/Spread_syntax tags: - Experimental - Expérimental(2) @@ -8,6 +8,7 @@ tags: - Operador translation_of: Web/JavaScript/Reference/Operators/Spread_syntax translation_of_original: Web/JavaScript/Reference/Operators/Spread_operator +original_slug: Web/JavaScript/Referencia/Operadores/Spread_operator ---
    {{jsSidebar("Operators")}}
    diff --git a/files/es/conflicting/web/javascript/reference/operators_5a0acbbb60ea37d0fdc52e3bd4c3fae8/index.html b/files/es/conflicting/web/javascript/reference/operators_5a0acbbb60ea37d0fdc52e3bd4c3fae8/index.html index 8685790d2c..9c2a7a8c40 100644 --- a/files/es/conflicting/web/javascript/reference/operators_5a0acbbb60ea37d0fdc52e3bd4c3fae8/index.html +++ b/files/es/conflicting/web/javascript/reference/operators_5a0acbbb60ea37d0fdc52e3bd4c3fae8/index.html @@ -1,12 +1,14 @@ --- title: Operadores de Comparación -slug: Web/JavaScript/Referencia/Operadores/Comparison_Operators +slug: >- + conflicting/Web/JavaScript/Reference/Operators_5a0acbbb60ea37d0fdc52e3bd4c3fae8 tags: - JavaScript - Operador - Referencia translation_of: Web/JavaScript/Reference/Operators translation_of_original: Web/JavaScript/Reference/Operators/Comparison_Operators +original_slug: Web/JavaScript/Referencia/Operadores/Comparison_Operators ---
    {{jsSidebar("Operators")}}
    diff --git a/files/es/conflicting/web/javascript/reference/operators_5c44e7d07c463ff1a5a63654f4bda87b/index.html b/files/es/conflicting/web/javascript/reference/operators_5c44e7d07c463ff1a5a63654f4bda87b/index.html index c4276c1c95..7d80f90f12 100644 --- a/files/es/conflicting/web/javascript/reference/operators_5c44e7d07c463ff1a5a63654f4bda87b/index.html +++ b/files/es/conflicting/web/javascript/reference/operators_5c44e7d07c463ff1a5a63654f4bda87b/index.html @@ -1,11 +1,13 @@ --- title: Operadores a nivel de bit -slug: Web/JavaScript/Referencia/Operadores/Bitwise_Operators +slug: >- + conflicting/Web/JavaScript/Reference/Operators_5c44e7d07c463ff1a5a63654f4bda87b tags: - JavaScript - Operador translation_of: Web/JavaScript/Reference/Operators translation_of_original: Web/JavaScript/Reference/Operators/Bitwise_Operators +original_slug: Web/JavaScript/Referencia/Operadores/Bitwise_Operators ---
    {{jsSidebar("Operators")}}
    diff --git a/files/es/conflicting/web/javascript/reference/operators_d3958587a3d3dd644852ad397eb5951b/index.html b/files/es/conflicting/web/javascript/reference/operators_d3958587a3d3dd644852ad397eb5951b/index.html index 979eff63f2..90a97a1033 100644 --- a/files/es/conflicting/web/javascript/reference/operators_d3958587a3d3dd644852ad397eb5951b/index.html +++ b/files/es/conflicting/web/javascript/reference/operators_d3958587a3d3dd644852ad397eb5951b/index.html @@ -1,11 +1,13 @@ --- title: Operadores de asignación -slug: Web/JavaScript/Referencia/Operadores/Assignment_Operators +slug: >- + conflicting/Web/JavaScript/Reference/Operators_d3958587a3d3dd644852ad397eb5951b tags: - JavaScript - Operador translation_of: Web/JavaScript/Reference/Operators#Assignment_operators translation_of_original: Web/JavaScript/Reference/Operators/Assignment_Operators +original_slug: Web/JavaScript/Referencia/Operadores/Assignment_Operators ---
    {{jsSidebar("Operators")}}
    diff --git a/files/es/conflicting/web/javascript/reference/operators_e72d8790e25513408a18a5826660f704/index.html b/files/es/conflicting/web/javascript/reference/operators_e72d8790e25513408a18a5826660f704/index.html index 4c9cb860a9..a2a2ca8de7 100644 --- a/files/es/conflicting/web/javascript/reference/operators_e72d8790e25513408a18a5826660f704/index.html +++ b/files/es/conflicting/web/javascript/reference/operators_e72d8790e25513408a18a5826660f704/index.html @@ -1,8 +1,10 @@ --- title: Operadores lógicos -slug: Web/JavaScript/Referencia/Operadores/Operadores_lógicos +slug: >- + conflicting/Web/JavaScript/Reference/Operators_e72d8790e25513408a18a5826660f704 translation_of: Web/JavaScript/Reference/Operators translation_of_original: Web/JavaScript/Reference/Operators/Logical_Operators +original_slug: Web/JavaScript/Referencia/Operadores/Operadores_lógicos ---
    {{jsSidebar("Operadores_lógicos")}}
    diff --git a/files/es/conflicting/web/javascript/reference/statements/switch/index.html b/files/es/conflicting/web/javascript/reference/statements/switch/index.html index a25a5a5369..c70e5eec5d 100644 --- a/files/es/conflicting/web/javascript/reference/statements/switch/index.html +++ b/files/es/conflicting/web/javascript/reference/statements/switch/index.html @@ -1,11 +1,12 @@ --- title: default -slug: Web/JavaScript/Referencia/Sentencias/default +slug: conflicting/Web/JavaScript/Reference/Statements/switch tags: - JavaScript - Palabra clave translation_of: Web/JavaScript/Reference/Statements/switch translation_of_original: Web/JavaScript/Reference/Statements/default +original_slug: Web/JavaScript/Referencia/Sentencias/default ---
    {{jsSidebar("Sentencias")}}
    diff --git a/files/es/conflicting/web/media/formats/index.html b/files/es/conflicting/web/media/formats/index.html index f342f64d11..15b4627d03 100644 --- a/files/es/conflicting/web/media/formats/index.html +++ b/files/es/conflicting/web/media/formats/index.html @@ -1,8 +1,9 @@ --- title: Formatos de medios admitidos por los elementos HTML audio y video -slug: Web/HTML/Formatos_admitidos_de_audio_y_video_en_html5 +slug: conflicting/Web/Media/Formats translation_of: Web/Media/Formats translation_of_original: Web/HTML/Supported_media_formats +original_slug: Web/HTML/Formatos_admitidos_de_audio_y_video_en_html5 ---

    Las etiquetas {{ HTMLElement("audio") }} y {{ HTMLElement("video") }} proporcionan apoyo para la reproducción de audio y video sin necesidad de plug-ins. Codecs de vídeo y codecs de audio se utilizan para manejar vídeo y audio, y los diferentes codecs ofrecen diferentes niveles de compresión y calidad. Un formato de contenedor se utiliza para almacenar y transmitir el vídeo y el audio codificado juntos. Muchos codecs y formatos de contenedor existe, e incluso hay más combinaciones de ellos. Para su uso en la web, sólo un puñado de combinaciones son relevantes.

    diff --git a/files/es/conflicting/web/opensearch/index.html b/files/es/conflicting/web/opensearch/index.html index 638147ee38..524c22557e 100644 --- a/files/es/conflicting/web/opensearch/index.html +++ b/files/es/conflicting/web/opensearch/index.html @@ -1,10 +1,11 @@ --- title: Añadir motores de búsqueda desde páginas web -slug: Añadir_motores_de_búsqueda_desde_páginas_web +slug: conflicting/Web/OpenSearch tags: - Plugins_de_búsqueda translation_of: Web/OpenSearch translation_of_original: Web/API/Window/sidebar/Adding_search_engines_from_Web_pages +original_slug: Añadir_motores_de_búsqueda_desde_páginas_web ---

    Firefox permite que código JavaScript instale plugins de motores de búsqueda, y soporta dos formatos de plugin de motores de búsqueda: OpenSearch, y Sherlock.

    diff --git a/files/es/conflicting/web/progressive_web_apps/index.html b/files/es/conflicting/web/progressive_web_apps/index.html index 6445a631af..4025b422b5 100644 --- a/files/es/conflicting/web/progressive_web_apps/index.html +++ b/files/es/conflicting/web/progressive_web_apps/index.html @@ -1,8 +1,9 @@ --- title: Diseño adaptable («responsivo») -slug: Web_Development/Mobile/Diseño_responsivo +slug: conflicting/Web/Progressive_web_apps translation_of: Web/Progressive_web_apps translation_of_original: Web/Guide/Responsive_design +original_slug: Web_Development/Mobile/Diseño_responsivo ---

    Como reacción a los problemas asociados con la estrategia de desarrollar sitios web separados para los móviles y los escritorios, una idea relativamente nueva — aunque de hecho es bastante vieja— que está aumentando en popularidad: deshacerse por completo de la detección del agente de usuario y hacer que la misma página responda a las capacidades del navegador en el lado del cliente. Este enfoque se ha denominado comúnmente como diseño web adaptable —o «responsivo»—. Al igual que la estrategia de sitios separados, el diseño web adaptativo tiene aspectos positivos y negativos.

    Las ventajas

    diff --git a/files/es/conflicting/web/progressive_web_apps/introduction/index.html b/files/es/conflicting/web/progressive_web_apps/introduction/index.html index e1fa9fad1f..be12926a85 100644 --- a/files/es/conflicting/web/progressive_web_apps/introduction/index.html +++ b/files/es/conflicting/web/progressive_web_apps/introduction/index.html @@ -1,6 +1,6 @@ --- title: Ventajas de una aplicación web progresiva (AWP) -slug: Web/Progressive_web_apps/Ventajas +slug: conflicting/Web/Progressive_web_apps/Introduction tags: - AWP - aplicaciones web progresivas @@ -8,6 +8,7 @@ tags: - ventajas translation_of: Web/Progressive_web_apps/Introduction#Advantages_of_web_applications translation_of_original: Web/Progressive_web_apps/Advantages +original_slug: Web/Progressive_web_apps/Ventajas ---

    Las Aplicaciones Web Progresivas deben tener todas las ventajas enumeradas en las siguientes secciones a continuación.

    diff --git a/files/es/conflicting/web/web_components/using_custom_elements/index.html b/files/es/conflicting/web/web_components/using_custom_elements/index.html index 98c3562a7b..9ca4c50786 100644 --- a/files/es/conflicting/web/web_components/using_custom_elements/index.html +++ b/files/es/conflicting/web/web_components/using_custom_elements/index.html @@ -1,12 +1,13 @@ --- title: Custom Elements -slug: Web/Web_Components/Custom_Elements +slug: conflicting/Web/Web_Components/Using_custom_elements tags: - Componentes Web - Web Components - custom elements translation_of: Web/Web_Components/Using_custom_elements translation_of_original: Web/Web_Components/Custom_Elements +original_slug: Web/Web_Components/Custom_Elements ---

    Los Custom Elements son una característica que permite crear tus propios elementos HTML personalizados. Pueden tener un comportamiento personalizado y estilos CSS propios. Son una parte de los Web Components, pero también pueden ser utilizados independientemente.

    diff --git a/files/es/games/introduction/index.html b/files/es/games/introduction/index.html index b19ea1a61e..60f96afec0 100644 --- a/files/es/games/introduction/index.html +++ b/files/es/games/introduction/index.html @@ -1,11 +1,12 @@ --- title: Introduccion para desarrollo de juegos para la Web -slug: Games/Introduccion +slug: Games/Introduction tags: - Firefox OS - juegos - moviles translation_of: Games/Introduction +original_slug: Games/Introduccion ---
    {{GamesSidebar}}
    diff --git a/files/es/games/introduction_to_html5_game_development/index.html b/files/es/games/introduction_to_html5_game_development/index.html index dcbaca6422..58ce238fbc 100644 --- a/files/es/games/introduction_to_html5_game_development/index.html +++ b/files/es/games/introduction_to_html5_game_development/index.html @@ -1,12 +1,13 @@ --- title: Introducción al desarrollo de juegos HTML5 (resumen) -slug: Games/Introducción_al_desarrollo_de_juegos_HTML5_(resumen) +slug: Games/Introduction_to_HTML5_Game_Development tags: - Firefox OS - HTML5 - Móvil - juegos translation_of: Games/Introduction_to_HTML5_Game_Development_(summary) +original_slug: Games/Introducción_al_desarrollo_de_juegos_HTML5_(resumen) ---
    {{GamesSidebar}}
    diff --git a/files/es/games/publishing_games/game_monetization/index.html b/files/es/games/publishing_games/game_monetization/index.html index 1549b222da..82a7ca2cd6 100644 --- a/files/es/games/publishing_games/game_monetization/index.html +++ b/files/es/games/publishing_games/game_monetization/index.html @@ -1,6 +1,6 @@ --- title: Monetización de videojuegos -slug: Games/Publishing_games/Monetización_de_los_juegos +slug: Games/Publishing_games/Game_monetization tags: - HTLM5 - JavaScript @@ -10,6 +10,7 @@ tags: - marca - monetización translation_of: Games/Publishing_games/Game_monetization +original_slug: Games/Publishing_games/Monetización_de_los_juegos ---
    {{GamesSidebar}}
    diff --git a/files/es/games/tools/asm.js/index.html b/files/es/games/tools/asm.js/index.html index bd41ed70a3..7cf59242f7 100644 --- a/files/es/games/tools/asm.js/index.html +++ b/files/es/games/tools/asm.js/index.html @@ -1,10 +1,11 @@ --- title: asm.js -slug: Games/Herramients/asm.js +slug: Games/Tools/asm.js tags: - JavaScript - asm.js translation_of: Games/Tools/asm.js +original_slug: Games/Herramients/asm.js ---
    {{GamesSidebar}}
    diff --git a/files/es/games/tools/index.html b/files/es/games/tools/index.html index e09812b07d..d738ba2f7b 100644 --- a/files/es/games/tools/index.html +++ b/files/es/games/tools/index.html @@ -1,12 +1,13 @@ --- title: Herramientas para desarrolladores de juegos -slug: Games/Herramients +slug: Games/Tools tags: - NeedsContent - NeedsTranslation - aplicaciones - juegos translation_of: Games/Tools +original_slug: Games/Herramients ---
    {{GamesSidebar}}

    En esta pagina puedes encontrar enlaces a nuestros articulos de desarrollo de juegos, que enventualmente apuenta a cubrir frameworks, compiladores y herramientas de depuracion.

    diff --git a/files/es/games/tutorials/2d_breakout_game_phaser/bounce_off_the_walls/index.html b/files/es/games/tutorials/2d_breakout_game_phaser/bounce_off_the_walls/index.html index 0276d5dc7f..f15637347d 100644 --- a/files/es/games/tutorials/2d_breakout_game_phaser/bounce_off_the_walls/index.html +++ b/files/es/games/tutorials/2d_breakout_game_phaser/bounce_off_the_walls/index.html @@ -1,6 +1,6 @@ --- title: Rebotar en las paredes -slug: Games/Tutorials/2D_breakout_game_Phaser/Rebotar_en_las_paredes +slug: Games/Tutorials/2D_breakout_game_Phaser/Bounce_off_the_walls tags: - 2D - Canvas @@ -11,6 +11,7 @@ tags: - fuerte - juegos translation_of: Games/Tutorials/2D_breakout_game_Phaser/Bounce_off_the_walls +original_slug: Games/Tutorials/2D_breakout_game_Phaser/Rebotar_en_las_paredes ---
    {{GamesSidebar}}
    diff --git a/files/es/games/tutorials/2d_breakout_game_phaser/buttons/index.html b/files/es/games/tutorials/2d_breakout_game_phaser/buttons/index.html index 672d7528a6..c9ecc25441 100644 --- a/files/es/games/tutorials/2d_breakout_game_phaser/buttons/index.html +++ b/files/es/games/tutorials/2d_breakout_game_phaser/buttons/index.html @@ -1,6 +1,6 @@ --- title: Botones -slug: Games/Tutorials/2D_breakout_game_Phaser/Botones +slug: Games/Tutorials/2D_breakout_game_Phaser/Buttons tags: - 2D - Botones @@ -11,6 +11,7 @@ tags: - Tutorial - juegos translation_of: Games/Tutorials/2D_breakout_game_Phaser/Buttons +original_slug: Games/Tutorials/2D_breakout_game_Phaser/Botones ---
    {{GamesSidebar}}
    diff --git a/files/es/games/tutorials/2d_breakout_game_pure_javascript/bounce_off_the_walls/index.html b/files/es/games/tutorials/2d_breakout_game_pure_javascript/bounce_off_the_walls/index.html index d168aa0102..b9a7ed4290 100644 --- a/files/es/games/tutorials/2d_breakout_game_pure_javascript/bounce_off_the_walls/index.html +++ b/files/es/games/tutorials/2d_breakout_game_pure_javascript/bounce_off_the_walls/index.html @@ -1,7 +1,8 @@ --- title: Rebota en las paredes -slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Bounce_off_the_walls +slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Bounce_off_the_walls translation_of: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Bounce_off_the_walls +original_slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Bounce_off_the_walls ---
    {{GamesSidebar}}

    {{IncludeSubnav("/es/docs/Games")}}

    diff --git a/files/es/games/tutorials/2d_breakout_game_pure_javascript/build_the_brick_field/index.html b/files/es/games/tutorials/2d_breakout_game_pure_javascript/build_the_brick_field/index.html index 99c944764b..1cc9c22783 100644 --- a/files/es/games/tutorials/2d_breakout_game_pure_javascript/build_the_brick_field/index.html +++ b/files/es/games/tutorials/2d_breakout_game_pure_javascript/build_the_brick_field/index.html @@ -1,7 +1,8 @@ --- title: Construye el muro de ladrillos -slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Construye_grupo_bloques +slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Build_the_brick_field translation_of: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Build_the_brick_field +original_slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Construye_grupo_bloques ---
    {{GamesSidebar}}
    {{IncludeSubnav("/es/docs/Games")}}
    diff --git a/files/es/games/tutorials/2d_breakout_game_pure_javascript/collision_detection/index.html b/files/es/games/tutorials/2d_breakout_game_pure_javascript/collision_detection/index.html index e6d950b834..3fa35ecbfb 100644 --- a/files/es/games/tutorials/2d_breakout_game_pure_javascript/collision_detection/index.html +++ b/files/es/games/tutorials/2d_breakout_game_pure_javascript/collision_detection/index.html @@ -1,7 +1,8 @@ --- title: Detección de colisiones -slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Deteccion_colisiones +slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Collision_detection translation_of: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Collision_detection +original_slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Deteccion_colisiones ---
    {{GamesSidebar}}
    diff --git a/files/es/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.html b/files/es/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.html index 59703d3bc7..bc415c8db4 100644 --- a/files/es/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.html +++ b/files/es/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.html @@ -1,9 +1,11 @@ --- title: Crea el lienzo (canvas) y dibuja en él slug: >- - Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Create_the_Canvas_and_draw_on_it + Games/Tutorials/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it translation_of: >- Games/Tutorials/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it +original_slug: >- + Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Create_the_Canvas_and_draw_on_it ---
    {{GamesSidebar}}
    {{IncludeSubnav("/en-US/docs/Games")}}
    diff --git a/files/es/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.html b/files/es/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.html index a3bd5e2c2e..6401e237b6 100644 --- a/files/es/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.html +++ b/files/es/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.html @@ -1,7 +1,8 @@ --- title: Terminando -slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Terminando +slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Finishing_up translation_of: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Finishing_up +original_slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Terminando ---
    {{GamesSidebar}}
    {{IncludeSubnav("/en-US/docs/Games")}}
    diff --git a/files/es/games/tutorials/2d_breakout_game_pure_javascript/game_over/index.html b/files/es/games/tutorials/2d_breakout_game_pure_javascript/game_over/index.html index d57ccef444..6aa0db9751 100644 --- a/files/es/games/tutorials/2d_breakout_game_pure_javascript/game_over/index.html +++ b/files/es/games/tutorials/2d_breakout_game_pure_javascript/game_over/index.html @@ -1,6 +1,6 @@ --- title: Fin del juego -slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Fin_del_juego +slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Game_over tags: - Canvas - Fin del juego @@ -8,6 +8,7 @@ tags: - Tutorial - graficos translation_of: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Game_over +original_slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Fin_del_juego ---
    {{GamesSidebar}}
    {{IncludeSubnav("/es-ES/docs/Games")}}
    diff --git a/files/es/games/tutorials/2d_breakout_game_pure_javascript/index.html b/files/es/games/tutorials/2d_breakout_game_pure_javascript/index.html index 10ea794d5f..9eba1ed40f 100644 --- a/files/es/games/tutorials/2d_breakout_game_pure_javascript/index.html +++ b/files/es/games/tutorials/2d_breakout_game_pure_javascript/index.html @@ -1,10 +1,11 @@ --- title: Famoso juego 2D usando JavaScript puro -slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro +slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript tags: - 2D Canvas JavaScript Tutorial - Principiante Juegos translation_of: Games/Tutorials/2D_Breakout_game_pure_JavaScript +original_slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro ---
    {{GamesSidebar}}
    {{IncludeSubnav("/es-ES/docs/Games")}}
    diff --git a/files/es/games/tutorials/2d_breakout_game_pure_javascript/mouse_controls/index.html b/files/es/games/tutorials/2d_breakout_game_pure_javascript/mouse_controls/index.html index 65e32f0ac2..d233538b93 100644 --- a/files/es/games/tutorials/2d_breakout_game_pure_javascript/mouse_controls/index.html +++ b/files/es/games/tutorials/2d_breakout_game_pure_javascript/mouse_controls/index.html @@ -1,7 +1,8 @@ --- title: Controles del ratón -slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Controles_raton +slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Mouse_controls translation_of: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Mouse_controls +original_slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Controles_raton ---
    {{GamesSidebar}}
    {{IncludeSubnav("/en-US/docs/Games")}}
    diff --git a/files/es/games/tutorials/2d_breakout_game_pure_javascript/move_the_ball/index.html b/files/es/games/tutorials/2d_breakout_game_pure_javascript/move_the_ball/index.html index 60a5df8c5a..d4b80386e7 100644 --- a/files/es/games/tutorials/2d_breakout_game_pure_javascript/move_the_ball/index.html +++ b/files/es/games/tutorials/2d_breakout_game_pure_javascript/move_the_ball/index.html @@ -1,7 +1,8 @@ --- title: Mueve la bola -slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Mueve_la_bola +slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Move_the_ball translation_of: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Move_the_ball +original_slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Mueve_la_bola ---
    {{GamesSidebar}}
    {{IncludeSubnav("/es-ES/docs/Games")}}
    diff --git a/files/es/games/tutorials/2d_breakout_game_pure_javascript/paddle_and_keyboard_controls/index.html b/files/es/games/tutorials/2d_breakout_game_pure_javascript/paddle_and_keyboard_controls/index.html index 81403423c7..18def1565a 100644 --- a/files/es/games/tutorials/2d_breakout_game_pure_javascript/paddle_and_keyboard_controls/index.html +++ b/files/es/games/tutorials/2d_breakout_game_pure_javascript/paddle_and_keyboard_controls/index.html @@ -1,7 +1,8 @@ --- title: Control de la pala y el teclado -slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Control_pala_y_teclado +slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Paddle_and_keyboard_controls translation_of: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Paddle_and_keyboard_controls +original_slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Control_pala_y_teclado ---
    {{GamesSidebar}}
    {{IncludeSubnav("/es/docs/Games")}}
    diff --git a/files/es/games/tutorials/2d_breakout_game_pure_javascript/track_the_score_and_win/index.html b/files/es/games/tutorials/2d_breakout_game_pure_javascript/track_the_score_and_win/index.html index b67a730e94..3b921fc5c2 100644 --- a/files/es/games/tutorials/2d_breakout_game_pure_javascript/track_the_score_and_win/index.html +++ b/files/es/games/tutorials/2d_breakout_game_pure_javascript/track_the_score_and_win/index.html @@ -1,7 +1,8 @@ --- title: Poner un contador y terminar ganando -slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Track_the_score_and_win +slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Track_the_score_and_win translation_of: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Track_the_score_and_win +original_slug: Games/Workflows/Famoso_juego_2D_usando_JavaScript_puro/Track_the_score_and_win ---
    {{GamesSidebar}}
    {{IncludeSubnav("/en-US/docs/Games")}}
    diff --git a/files/es/games/tutorials/html5_gamedev_phaser_device_orientation/index.html b/files/es/games/tutorials/html5_gamedev_phaser_device_orientation/index.html index 135193ec50..26b3eb46f1 100644 --- a/files/es/games/tutorials/html5_gamedev_phaser_device_orientation/index.html +++ b/files/es/games/tutorials/html5_gamedev_phaser_device_orientation/index.html @@ -2,7 +2,7 @@ title: >- Introducción al Desarrollo de Juegos en HTML5 con Phaser y la API de Orientación a Dispositivos -slug: Games/Workflows/HTML5_Gamedev_Phaser_Device_Orientation +slug: Games/Tutorials/HTML5_Gamedev_Phaser_Device_Orientation tags: - API Vibración - API orientacion de dispositivos @@ -11,6 +11,7 @@ tags: - HTML5 - Phaser translation_of: Games/Tutorials/HTML5_Gamedev_Phaser_Device_Orientation +original_slug: Games/Workflows/HTML5_Gamedev_Phaser_Device_Orientation ---
    {{GamesSidebar}}

    {{ draft() }}

    diff --git a/files/es/games/tutorials/index.html b/files/es/games/tutorials/index.html index 3a0807cc77..8b40ad4353 100644 --- a/files/es/games/tutorials/index.html +++ b/files/es/games/tutorials/index.html @@ -1,10 +1,11 @@ --- title: Workflows for different game types -slug: Games/Workflows +slug: Games/Tutorials tags: - NeedsTranslation - TopicStub translation_of: Games/Tutorials +original_slug: Games/Workflows ---
    {{GamesSidebar}}

    This page will contain links to different article series covering different workflows for effectively creating different types of web games, whether you want to create a 2D or 3D game from scratch, or port a C++ or Flash game over to open web technologies.

    For example, a 2D maze game with Phaser and the Device Orientation API.

    diff --git a/files/es/glossary/algorithm/index.html b/files/es/glossary/algorithm/index.html index e007ec918e..8164762d9a 100644 --- a/files/es/glossary/algorithm/index.html +++ b/files/es/glossary/algorithm/index.html @@ -1,9 +1,10 @@ --- title: Algoritmo -slug: Glossary/Algoritmo +slug: Glossary/Algorithm tags: - CodingScripting - Glossary translation_of: Glossary/Algorithm +original_slug: Glossary/Algoritmo ---

    Un algoritmo es un conjunto de instrucciones autocontenidas que realiza una función.

    diff --git a/files/es/glossary/argument/index.html b/files/es/glossary/argument/index.html index c3ccfb69ca..0a3ff5c6bb 100644 --- a/files/es/glossary/argument/index.html +++ b/files/es/glossary/argument/index.html @@ -1,7 +1,8 @@ --- title: Argumento -slug: Glossary/Argumento +slug: Glossary/Argument translation_of: Glossary/Argument +original_slug: Glossary/Argumento ---

    Un argumento es un valor (primitivo u objeto) (Véase {{glossary("value")}},  {{Glossary("primitive")}}, {{Glossary("object")}}) pasado como valor de entrada a una función ({{Glossary("function")}}).

    diff --git a/files/es/glossary/array/index.html b/files/es/glossary/array/index.html index 74b22dbedc..cf3f7346e1 100644 --- a/files/es/glossary/array/index.html +++ b/files/es/glossary/array/index.html @@ -1,6 +1,6 @@ --- title: Arreglos (Matrices) -slug: Glossary/Arreglos +slug: Glossary/array tags: - Arreglos - CodificaciónScripting @@ -9,6 +9,7 @@ tags: - Matriz - programacion translation_of: Glossary/array +original_slug: Glossary/Arreglos ---

    Un arreglo (matriz) es una colección ordenada de datos (tanto {{glossary("Primitivo", "primitivos")}} u {{glossary("Object", "objetos")}} dependiendo del lenguaje). Los arreglos (matrices) se emplean para almacenar multiples valores en una sola variable, frente a las variables que sólo pueden almacenar un valor (por cada variable).

    diff --git a/files/es/glossary/asynchronous/index.html b/files/es/glossary/asynchronous/index.html index 439f95eb37..e68d6f7162 100644 --- a/files/es/glossary/asynchronous/index.html +++ b/files/es/glossary/asynchronous/index.html @@ -1,12 +1,13 @@ --- title: Asíncrono -slug: Glossary/Asíncrono +slug: Glossary/Asynchronous tags: - Asíncrono - Glosario - Mecánicas de la Web - Web translation_of: Glossary/Asynchronous +original_slug: Glossary/Asíncrono ---

    El término asíncrono se refiere al concepto de que más de una cosa ocurre al mismo tiempo, o múltiples cosas relacionadas ocurren sin esperar a que la previa se haya completado. En informática, la palabra "asíncrono" se usa en los siguientes contextos:

    diff --git a/files/es/glossary/attribute/index.html b/files/es/glossary/attribute/index.html index 42027cf072..50b5977e59 100644 --- a/files/es/glossary/attribute/index.html +++ b/files/es/glossary/attribute/index.html @@ -1,7 +1,8 @@ --- title: Atributo -slug: Glossary/Atributo +slug: Glossary/Attribute translation_of: Glossary/Attribute +original_slug: Glossary/Atributo ---

    Un atributo amplía una etiqueta ({{Glossary("tag")}}), cambiando su comportamiento o proporcionando metadatos. Un atributo tiene la forma nombre=valor (especificando el identificador del atributo y el valor asociado al atributo).

    diff --git a/files/es/glossary/base64/index.html b/files/es/glossary/base64/index.html index c8747777cd..319f83ee89 100644 --- a/files/es/glossary/base64/index.html +++ b/files/es/glossary/base64/index.html @@ -1,7 +1,8 @@ --- title: Base64 codificando y decodificando -slug: Web/API/WindowBase64/Base64_codificando_y_decodificando +slug: Glossary/Base64 translation_of: Glossary/Base64 +original_slug: Web/API/WindowBase64/Base64_codificando_y_decodificando ---

    Base64 es un grupo de esquemas de codificación de binario a texto que representa los datos binarios mediante una cadena ASCII, traduciéndolos en una representación radix-64. El término Base64 se origina de un sistema de codificación de transmisión de contenido MIME específico.

    diff --git a/files/es/glossary/breadcrumb/index.html b/files/es/glossary/breadcrumb/index.html index 0fe4ade2f7..3bed52fd22 100644 --- a/files/es/glossary/breadcrumb/index.html +++ b/files/es/glossary/breadcrumb/index.html @@ -1,12 +1,13 @@ --- title: Miga de pan -slug: Glossary/miga-de-pan +slug: Glossary/Breadcrumb tags: - Accesibilidad - Glosario - Miga de pan - navegación translation_of: Glossary/Breadcrumb +original_slug: Glossary/miga-de-pan ---

    Una miga de pan, o rastro de migas de pan, es una ayuda a la navegación que se sitúa normalmente entre la cabecera del sitio y el contenido principal y muestra, bien la jerarquía de la página actual en relación con la estructura del sitio desde el nivel superior o bien una lista de los enlaces utilizados para llegar a la página actual en el orden en que se han visitado.

    diff --git a/files/es/glossary/cache/index.html b/files/es/glossary/cache/index.html index 1c9b861ae8..c2259b370f 100644 --- a/files/es/glossary/cache/index.html +++ b/files/es/glossary/cache/index.html @@ -1,10 +1,11 @@ --- title: Caché -slug: Glossary/Caché +slug: Glossary/Cache tags: - Glosario - HTTP translation_of: Glossary/Cache +original_slug: Glossary/Caché ---

    La caché (o caché web) es un componente que almacena temporalmente respuestas HTTP para que puedan ser usadas por peticiones HTTP posteriores mientras cumplan ciertas condiciones.

    diff --git a/files/es/glossary/call_stack/index.html b/files/es/glossary/call_stack/index.html index f164d913ca..3eea4ae1cc 100644 --- a/files/es/glossary/call_stack/index.html +++ b/files/es/glossary/call_stack/index.html @@ -1,11 +1,12 @@ --- title: Pila de llamadas -slug: Glossary/Pila_llamadas +slug: Glossary/Call_stack tags: - Glosario - JavaScript - Pila de llamadas translation_of: Glossary/Call_stack +original_slug: Glossary/Pila_llamadas ---

    Una pila de llamadas es un mecanismo para que un intérprete (como el intérprete de JavaScript en un navegador web) realice un seguimiento de en que lugar se llama a múltiples {{glossary("function","funciones")}}, qué función se esta ejecutando actualmente y qué funciones son llamadas desde esa función, etc.

    diff --git a/files/es/glossary/card_sorting/index.html b/files/es/glossary/card_sorting/index.html index a9b2638bb2..d65a7b93bf 100644 --- a/files/es/glossary/card_sorting/index.html +++ b/files/es/glossary/card_sorting/index.html @@ -1,11 +1,12 @@ --- title: Clasificación por tarjetas (card sorting) -slug: Glossary/Clasificación_por_tarjetas_(card_sorting) +slug: Glossary/Card_sorting tags: - Card sorting - Diseño - Glosario translation_of: Glossary/Card_sorting +original_slug: Glossary/Clasificación_por_tarjetas_(card_sorting) ---

    La clasificación por tarjetas (card sorting) es una técnica simple utilizada en la {{glossary("Information architecture", "arquitectura de la información")}} en la cual las personas involucradas en el diseño de una página web (u otro tipo de producto) están invitadas a describir el contenido / servicios / características que creen que el producto debería contener, para luego organizar estas características dentro de categorías o grupos. Esto se puede usar, por ejemplo, para determinar qué debe aparecer en cada página de una aplicación web. El nombre proviene del hecho de que a menudo la clasificación de las cartas se lleva a cabo literalmente escribiendo los elementos que se van a clasificar en tarjetas, y luego apilando las tarjetas.

    diff --git a/files/es/glossary/character/index.html b/files/es/glossary/character/index.html index 5198607137..163c694890 100644 --- a/files/es/glossary/character/index.html +++ b/files/es/glossary/character/index.html @@ -1,11 +1,12 @@ --- title: Caracter -slug: Glossary/Caracter +slug: Glossary/Character tags: - CodingScripting - Glosario - String translation_of: Glossary/Character +original_slug: Glossary/Caracter ---

    Un caracter es un símbolo (letras, números, puntuación) o un caracter de "control" que no se imprime (p. ej., Retorno de carro o guión suave — soft hypen). {{Glossary("UTF-8")}} es el conjunto de caracteres más común e incluye los grafemas de los lenguajes humanos más populares.

    diff --git a/files/es/glossary/character_set/index.html b/files/es/glossary/character_set/index.html index 27e5a7345c..cbfc145643 100644 --- a/files/es/glossary/character_set/index.html +++ b/files/es/glossary/character_set/index.html @@ -1,11 +1,12 @@ --- title: Conjunto de caracteres -slug: Glossary/conjunto_de_caracteres +slug: Glossary/character_set tags: - Codificación de caracteres - Conjunto de caracteres - Glosario translation_of: Glossary/character_set +original_slug: Glossary/conjunto_de_caracteres ---

    Un conjunto de caracteres es un sistema de codificación para que las computadoras sepan cómo reconocer un {{Glossary("Character", "caracter")}}, incluidas letras, números, signos de puntuación y espacios en blanco.

    diff --git a/files/es/glossary/cia/index.html b/files/es/glossary/cia/index.html index 983f0d0447..4e51564f39 100644 --- a/files/es/glossary/cia/index.html +++ b/files/es/glossary/cia/index.html @@ -1,10 +1,11 @@ --- title: CID -slug: Glossary/CID +slug: Glossary/CIA tags: - Glosario - Seguridad translation_of: Glossary/CIA +original_slug: Glossary/CID ---

    CID (Confidencialidad, Integridad, Disponibilidad) (también llamado la triada CID o la triada DIC) es un modelo que guía las políticas de una organización para la seguridad de la información.

    diff --git a/files/es/glossary/cipher/index.html b/files/es/glossary/cipher/index.html index e0679eca97..5cf2de6446 100644 --- a/files/es/glossary/cipher/index.html +++ b/files/es/glossary/cipher/index.html @@ -1,12 +1,13 @@ --- title: Algoritmo criptográfico -slug: Glossary/Cifrado +slug: Glossary/Cipher tags: - Criptografía - Glosario - Seguridad - privacidad translation_of: Glossary/Cipher +original_slug: Glossary/Cifrado ---

    En {{glossary("cryptography", "criptografía")}}, un algoritmo criptográfico es un algoritmo que puede {{glossary("encryption", "encriptar")}} {{glossary("cleartext", "texto en lenguaje natural")}} para hacerlo ilegible, y para que sea {{glossary("decryption", "desencriptado")}} con el fin de recuperar el texto original.

    diff --git a/files/es/glossary/ciphertext/index.html b/files/es/glossary/ciphertext/index.html index 65315ab297..734da35770 100644 --- a/files/es/glossary/ciphertext/index.html +++ b/files/es/glossary/ciphertext/index.html @@ -1,12 +1,13 @@ --- title: Texto Cifrado -slug: Glossary/TextoCifrado +slug: Glossary/Ciphertext tags: - Cryptography - Glossary - Privacy - Security translation_of: Glossary/Ciphertext +original_slug: Glossary/TextoCifrado ---

    En {{glossary("Cryptography", "Criptografía")}}, un texto cifrado es un mensaje codificado que transmite información pero no es legible a menos que se {{glossary("decryption","descifre")}} con el {{glossary("cipher", "algoritmo criptográfico")}} correcto y el secreto correcto (generalmente una {{glossary("key","clave")}}), reproduciendo el {{glossary("cleartext", "texto simple")}} original. La seguridad de un texto cifrado, y por lo tanto el secreto de la información contenida, depende de usar un cifrado seguro y mantener la clave en secreto.

    diff --git a/files/es/glossary/closure/index.html b/files/es/glossary/closure/index.html index 2f4cbbb479..5f4fb688d7 100644 --- a/files/es/glossary/closure/index.html +++ b/files/es/glossary/closure/index.html @@ -1,9 +1,10 @@ --- title: Clausura -slug: Glossary/Clausura +slug: Glossary/Closure tags: - Glosario translation_of: Glossary/Closure +original_slug: Glossary/Clausura ---

    Una clausura o closure es una función que guarda referencias del estado adyacente ({{glossary("scope", "ámbito léxico")}}). En otras palabras, una clausura permite acceder al ámbito de una función exterior desde una función interior. En {{glossary("JavaScript")}}, las clausuras se crean cada vez que una {{glossary("function","función")}} es creada.

    diff --git a/files/es/glossary/cms/index.html b/files/es/glossary/cms/index.html index e4a67f504b..70fbfac3eb 100644 --- a/files/es/glossary/cms/index.html +++ b/files/es/glossary/cms/index.html @@ -1,11 +1,12 @@ --- title: Sistema de gestión de contenidos -slug: Glossary/Sistema_gestion_contenidos +slug: Glossary/CMS tags: - CMS - Glosario - Sistema de gestión de contenidos translation_of: Glossary/CMS +original_slug: Glossary/Sistema_gestion_contenidos ---

    Un sistema de gestión de contenidos o CMS es un programa informático que permite a los usuarios publicar, organizar, cambiar o eliminar diferentes tipos de contenido como texto, imágenes incrustadas, video, audio y código interactivo.

    diff --git a/files/es/glossary/constant/index.html b/files/es/glossary/constant/index.html index 41d4efb98a..d036a7c989 100644 --- a/files/es/glossary/constant/index.html +++ b/files/es/glossary/constant/index.html @@ -1,11 +1,12 @@ --- title: Constante -slug: Glossary/Constante +slug: Glossary/Constant tags: - CodingScripting - Constante - Glosario translation_of: Glossary/Constant +original_slug: Glossary/Constante ---

    Una constante es un valor que el programador no puede cambiar, por ejemplo números (1, 2, 42). Con {{glossary("variable","variables")}}, por otra parte, el programador puede asignar un nuevo {{glossary("value", "valor")}} a una variable cuyo nombre ya esté en uso.

    diff --git a/files/es/glossary/cryptanalysis/index.html b/files/es/glossary/cryptanalysis/index.html index c56576e600..e390d9d650 100644 --- a/files/es/glossary/cryptanalysis/index.html +++ b/files/es/glossary/cryptanalysis/index.html @@ -1,12 +1,13 @@ --- title: Criptoanálisis -slug: Glossary/Criptoanálisis +slug: Glossary/Cryptanalysis tags: - Criptografía - Glosario - Seguridad - privacidad translation_of: Glossary/Cryptanalysis +original_slug: Glossary/Criptoanálisis ---

    El criptoanálisis es la rama de {{glossary ("cryptography","criptografía")}} que estudia cómo romper códigos y criptosistemas. El criptoanálisis crea técnicas para romper {{glossary ("cipher", "cifrados")}}, en particular por métodos más eficientes que una búsqueda por fuerza bruta. Además de los métodos tradicionales como el análisis de frecuencia y el índice de coincidencia, el criptoanálisis incluye métodos más recientes, como el criptoanálisis lineal o el criptoanálisis diferencial, que puede romper cifrados más avanzados.

    diff --git a/files/es/glossary/cryptography/index.html b/files/es/glossary/cryptography/index.html index cfd3f498db..6b0e1043fa 100644 --- a/files/es/glossary/cryptography/index.html +++ b/files/es/glossary/cryptography/index.html @@ -1,12 +1,13 @@ --- title: Criptografía -slug: Glossary/Criptografía +slug: Glossary/Cryptography tags: - Criptografía - Glosario - Seguridad - privacidad translation_of: Glossary/Cryptography +original_slug: Glossary/Criptografía ---

    Criptografía, o criptología, es la ciencia que estudia como codificar y transmitir mensajes de manera segura. La criptografía diseña y estudia algoritmos que son usados para la codificación y decoficación de mensajes en un entorno inseguro y sus aplicaciones. Más que confidencialidad de información, la criptografía también aborda la identificación, autenticación, el no repudio y la integridad de la información. Para ello tambien estudia el uso de métodos criptográficos en contexto, criptosistemas.

    diff --git a/files/es/glossary/css_preprocessor/index.html b/files/es/glossary/css_preprocessor/index.html index 7304385604..db56737d8d 100644 --- a/files/es/glossary/css_preprocessor/index.html +++ b/files/es/glossary/css_preprocessor/index.html @@ -1,7 +1,8 @@ --- title: Preprocesador CSS -slug: Glossary/Preprocesador_CSS +slug: Glossary/CSS_preprocessor translation_of: Glossary/CSS_preprocessor +original_slug: Glossary/Preprocesador_CSS ---

    Un preprocesador CSS es un programa que te permite generar {{Glossary("CSS")}} a partir de la {{Glossary("syntax")}} única del preprocesador. Existen varios preprocesadores CSS de los cuales escoger, sin embargo la mayoría de preprocesadores CSS añadiran algunas características que no existen en CSS puro, como {{Glossary("variable")}}, mixins, selectores anidados, entre otros. Estas características hacen la estructura de CSS más legible y fácil de mantener.

    diff --git a/files/es/glossary/data_structure/index.html b/files/es/glossary/data_structure/index.html index d01f1b0ac8..016b605981 100644 --- a/files/es/glossary/data_structure/index.html +++ b/files/es/glossary/data_structure/index.html @@ -1,11 +1,12 @@ --- title: Estructura de datos -slug: Glossary/Estructura_de_datos +slug: Glossary/Data_structure tags: - Codificación - Estructura de datos - Glosario translation_of: Glossary/Data_structure +original_slug: Glossary/Estructura_de_datos ---

    Estructura de datos es una forma particular de organizar datos para que puedan ser usados eficientemente.

    diff --git a/files/es/glossary/decryption/index.html b/files/es/glossary/decryption/index.html index 838c76438b..6fa7ee3da6 100644 --- a/files/es/glossary/decryption/index.html +++ b/files/es/glossary/decryption/index.html @@ -1,12 +1,13 @@ --- title: Descifrado -slug: Glossary/Descifrado +slug: Glossary/Decryption tags: - Criptografía - Glosario - Seguridad - privacidad translation_of: Glossary/Decryption +original_slug: Glossary/Descifrado ---

     

    diff --git a/files/es/glossary/dhtml/index.html b/files/es/glossary/dhtml/index.html index ee735a29bc..5163f10090 100644 --- a/files/es/glossary/dhtml/index.html +++ b/files/es/glossary/dhtml/index.html @@ -1,10 +1,11 @@ --- title: DHTML -slug: DHTML +slug: Glossary/DHTML tags: - DHTML - Todas_las_Categorías translation_of: Glossary/DHTML +original_slug: DHTML ---

    diff --git a/files/es/glossary/domain_name/index.html b/files/es/glossary/domain_name/index.html index e2c9e01c16..dfe5a9fe3b 100644 --- a/files/es/glossary/domain_name/index.html +++ b/files/es/glossary/domain_name/index.html @@ -1,7 +1,8 @@ --- title: Nombre de dominio -slug: Glossary/Nombre_de_dominio +slug: Glossary/Domain_name translation_of: Glossary/Domain_name +original_slug: Glossary/Nombre_de_dominio ---

    Un nombre de dominio es la dirección de un sitio web en {{Glossary("Internet")}}. Los nombres de dominio se utilizan en {{Glossary("URL","URLs")}} para identificar a qué servidor pertenece una página web específica. El nombre de dominio consiste en una secuencia jerárquica de nombres (etiquetas) separados por puntos y que terminan con una {{glossary("TLD","extensión")}}.

    diff --git a/files/es/glossary/dynamic_typing/index.html b/files/es/glossary/dynamic_typing/index.html index c8ee61a087..56797b0663 100644 --- a/files/es/glossary/dynamic_typing/index.html +++ b/files/es/glossary/dynamic_typing/index.html @@ -1,11 +1,12 @@ --- title: Tipado Dinámico -slug: Glossary/Tipado_dinámico +slug: Glossary/Dynamic_typing tags: - Código - Glosario - LenguajeDeProgramación translation_of: Glossary/Dynamic_typing +original_slug: Glossary/Tipado_dinámico ---

    Los lenguajes de tipado dinámico son aquellos (como {{glossary("JavaScript")}}) donde el intérprete asigna a las {{glossary("variable","variables")}} un {{glossary("tipo")}} durante el tiempo de ejecución basado en su {{glossary("valor")}} en ese momento.

    diff --git a/files/es/glossary/encryption/index.html b/files/es/glossary/encryption/index.html index 4d98cc9ad5..44c2438f4f 100644 --- a/files/es/glossary/encryption/index.html +++ b/files/es/glossary/encryption/index.html @@ -1,12 +1,13 @@ --- title: Encriptación -slug: Glossary/Encriptación +slug: Glossary/Encryption tags: - Criptografía - Glosario - Seguridad - privacidad translation_of: Glossary/Encryption +original_slug: Glossary/Encriptación ---

    En {{glossary("cryptography", "criptografía")}}, la encriptación es la conversión del {{glossary("cleartext", "lenguaje natural")}} en un texto codificado o {{glossary("ciphertext", "cifrado")}}. Un texto cifrado es utilizado para ser ilegible por lectores no autorizados.

    diff --git a/files/es/glossary/entity/index.html b/files/es/glossary/entity/index.html index cc6ebf2682..7b58bae960 100644 --- a/files/es/glossary/entity/index.html +++ b/files/es/glossary/entity/index.html @@ -1,11 +1,12 @@ --- title: Entidad -slug: Glossary/Entidad +slug: Glossary/Entity tags: - Caractères - HTML - entidad translation_of: Glossary/Entity +original_slug: Glossary/Entidad ---

    Una entidad {{glossary("HTML")}} es un conjunto de caracteres ("string") que comienza con un ampersand (&) y termina con un punto y coma (;) . Las entidades son utilizadas frecuentemente para imprimir en pantalla caracteres reservados (aquellos que serían interpretados como HTML por el navegador) o invisibles (cómo tabulaciones). También pueden usarse para representar caracteres que no existan en algunos teclados, por ejemplo caracterés con tilde o diéresis. 

    diff --git a/files/es/glossary/first-class_function/index.html b/files/es/glossary/first-class_function/index.html index 311f068470..1d1e569277 100644 --- a/files/es/glossary/first-class_function/index.html +++ b/files/es/glossary/first-class_function/index.html @@ -1,7 +1,8 @@ --- title: Funcion de primera clase -slug: Glossary/Funcion_de_primera_clase +slug: Glossary/First-class_Function translation_of: Glossary/First-class_Function +original_slug: Glossary/Funcion_de_primera_clase ---

    Un lenguaje de programación se dice que tiene Funciones de primera clase cuando las funciones en ese lenguaje son tratadas como cualquier otra variable. Por ejemplo, en ese lenguaje, una función puede ser pasada como argumento a otras funciones, puede ser retornada por otra función y puede ser asignada a una variable.

    diff --git a/files/es/glossary/forbidden_header_name/index.html b/files/es/glossary/forbidden_header_name/index.html index e2f16bbecf..6a978cd6e4 100644 --- a/files/es/glossary/forbidden_header_name/index.html +++ b/files/es/glossary/forbidden_header_name/index.html @@ -1,6 +1,6 @@ --- title: Nombre de encabezado prohibido -slug: Glossary/Nombre_de_encabezado_prohibido +slug: Glossary/Forbidden_header_name tags: - Encabezados - Fetch @@ -8,6 +8,7 @@ tags: - HTTP - prohibido translation_of: Glossary/Forbidden_header_name +original_slug: Glossary/Nombre_de_encabezado_prohibido ---

    Un nombre de encabezado prohibido es un nombre de encabezado HTTP que no se puede modificar mediante programación; específicamente, un nombre de encabezado de HTTP solicitud HTTP.

    diff --git a/files/es/glossary/function/index.html b/files/es/glossary/function/index.html index f67d9e90c8..8f4f309f00 100644 --- a/files/es/glossary/function/index.html +++ b/files/es/glossary/function/index.html @@ -1,12 +1,13 @@ --- title: Función -slug: Glossary/Función +slug: Glossary/Function tags: - CodingScripting - Glosario - IIFE - JavaScript translation_of: Glossary/Function +original_slug: Glossary/Función ---

    Una función es un fragmento de código que puede ser llamado por otro código o por sí mismo, o por una {{Glossary("variable")}} que haga referencia a la función. Cuando se llama a una función, los {{Glossary("Argument", "argumentos")}} se pasan a la función como entrada, y la función puede devolver opcionalmente una salida. Una función en {{glossary("JavaScript")}} es también un {{glossary("object", "objeto")}}.

    diff --git a/files/es/glossary/general_header/index.html b/files/es/glossary/general_header/index.html index d27644dad0..4072537f04 100644 --- a/files/es/glossary/general_header/index.html +++ b/files/es/glossary/general_header/index.html @@ -1,7 +1,8 @@ --- title: Cabecera general -slug: Glossary/Cabecera_general +slug: Glossary/General_header translation_of: Glossary/General_header +original_slug: Glossary/Cabecera_general ---

    Una cabecera general es una {{glossary('Header', 'cabecera HTTP')}} que puede ser utilizada tanto en mensajes de consultas como de respuestas pero que no se aplican al contenido en sí mismo. Dependiendo del contexto en que son usadas, las cabeceras generales pueden ser de {{glossary("Response header", "respuesta")}} o de {{glossary("request header", "consulta")}}. Sin embargo, no son {{glossary("entity header", "cabeceras de entidad.")}}.

    diff --git a/files/es/glossary/identifier/index.html b/files/es/glossary/identifier/index.html index 63f26a35a8..cda711dece 100644 --- a/files/es/glossary/identifier/index.html +++ b/files/es/glossary/identifier/index.html @@ -1,6 +1,6 @@ --- title: Identificador -slug: Glossary/Identificador +slug: Glossary/Identifier tags: - Campartir - CodingScripting @@ -8,6 +8,7 @@ tags: - Novato - Principiante translation_of: Glossary/Identifier +original_slug: Glossary/Identificador ---

    Un Identificador es una secuencia de caracteres en el código que identifica una {{Glossary("Variable")}}, {{Glossary("Function", "función")}} o {{Glossary("Property", "propiedad")}}.

    diff --git a/files/es/glossary/immutable/index.html b/files/es/glossary/immutable/index.html index 534f00b6b6..f1a0428fce 100644 --- a/files/es/glossary/immutable/index.html +++ b/files/es/glossary/immutable/index.html @@ -1,10 +1,11 @@ --- title: Inmutable -slug: Glossary/Inmutable +slug: Glossary/Immutable tags: - CodingScripting - Glosario translation_of: Glossary/Immutable +original_slug: Glossary/Inmutable ---

    Un {{glossary("object", "objeto")}} inmutable es aquel cuyo contenido no se puede cambiar.Un objeto puede ser inmutable por varias razones, por ejemplo:

    diff --git a/files/es/glossary/information_architecture/index.html b/files/es/glossary/information_architecture/index.html index 222ed88e59..5791adce1a 100644 --- a/files/es/glossary/information_architecture/index.html +++ b/files/es/glossary/information_architecture/index.html @@ -1,11 +1,12 @@ --- title: Arquitectura de la información -slug: Glossary/Arquitectura_de_la_información +slug: Glossary/Information_architecture tags: - Arquitectura informacional - Diseño - Glosario translation_of: Glossary/Information_architecture +original_slug: Glossary/Arquitectura_de_la_información ---

    La arquitectura de la información, aplicada al diseño y desarrollo web, es la práctica de organizar la información, contenido y funcionalidad de un sitio web para que presente la mejor experiencia de usuario posible, con información y servicios fáciles de usar y encontrar.

    diff --git a/files/es/glossary/key/index.html b/files/es/glossary/key/index.html index b228776065..be1524acf3 100644 --- a/files/es/glossary/key/index.html +++ b/files/es/glossary/key/index.html @@ -1,11 +1,12 @@ --- title: Clave -slug: Glossary/Clave +slug: Glossary/Key tags: - Criptografía - Glosario - Seguridad translation_of: Glossary/Key +original_slug: Glossary/Clave ---

    Una clave es una pieza de información utilizada por un algoritmo criptográfico para el {{Glossary("encryption", "cifrado")}} y/o {{Glossary("decryption", "descifrado")}}. Los mensajes cifrados deben permanecer seguros incluso si todo lo relacionado con el {{Glossary("cryptosystem","sistema de cifrado")}}, excepto la clave, es de conocimiento público.

    diff --git a/files/es/glossary/localization/index.html b/files/es/glossary/localization/index.html index def1406446..47305fa6d9 100644 --- a/files/es/glossary/localization/index.html +++ b/files/es/glossary/localization/index.html @@ -1,9 +1,10 @@ --- title: Localización -slug: Localización +slug: Glossary/Localization tags: - Localización translation_of: Glossary/Localization +original_slug: Localización ---

      

    La localización es el proceso de traducción de interfaces de usuario de un lenguaje a otro y adaptación para que una cultura extranjera lo comprenda. Estos recursos tratan sobre cómo hacer aplicaciones/extensiones de Mozilla localizables.

    diff --git a/files/es/glossary/main_thread/index.html b/files/es/glossary/main_thread/index.html index 47cef4e428..f58296fe3f 100644 --- a/files/es/glossary/main_thread/index.html +++ b/files/es/glossary/main_thread/index.html @@ -1,12 +1,13 @@ --- title: Hilo principal -slug: Glossary/Hilo_principal +slug: Glossary/Main_thread tags: - Actualización Web - Glosario - Referencia - Web de rendimiento translation_of: Glossary/Main_thread +original_slug: Glossary/Hilo_principal ---

    El hilo principal es donde un navegador procesa eventos y pinturas del usuario. De manera predeterminada, el navegador usa un solo hilo para ejecutar todo el JavaScript en su página, así como para realizar el diseño, los reflujos y la recolección de basura. Esto significa que las funciones de JavaScript de larga duración pueden bloquear el hilo, lo que lleva a una página que no responde y a una mala experiencia del usuario.

    diff --git a/files/es/glossary/metadata/index.html b/files/es/glossary/metadata/index.html index dddb546b28..d7387d5a0a 100644 --- a/files/es/glossary/metadata/index.html +++ b/files/es/glossary/metadata/index.html @@ -1,11 +1,12 @@ --- title: Metadato -slug: Glossary/Metadato +slug: Glossary/Metadata tags: - CodingScripting - Glosario - HTML translation_of: Glossary/Metadata +original_slug: Glossary/Metadato ---

    Los metadatos son, en su definición más simple, datos que describen otros datos. Por ejemplo, un documento {{glossary("HTML")}} son datos, pero HTML también puede contener metadatos en su elemento {{htmlelement("head")}} que describe el documento, como por ejemplo, quién lo escribió y su resumen.

    diff --git a/files/es/glossary/method/index.html b/files/es/glossary/method/index.html index b0539a9474..85006330ed 100644 --- a/files/es/glossary/method/index.html +++ b/files/es/glossary/method/index.html @@ -1,10 +1,11 @@ --- title: Método -slug: Glossary/Método +slug: Glossary/Method tags: - Glosario - JavaScript translation_of: Glossary/Method +original_slug: Glossary/Método ---

    Un metodo es una {{glossary("function", "función")}} la cual es {{glossary("property", "propiedad")}} de un {{glossary("Objecto", "Objeto")}}. Existen dos tipos de métodos: Métodos de Instancia los cuales son tareas integradas realizadas por la instacia de un objeto, y los Métodos Estáticos que son tareas que pueden ser llamadas directamente en el constructor de un objeto.

    diff --git a/files/es/glossary/number/index.html b/files/es/glossary/number/index.html index 6c1b7cd2b5..0853572a97 100644 --- a/files/es/glossary/number/index.html +++ b/files/es/glossary/number/index.html @@ -1,10 +1,11 @@ --- title: Number -slug: Glossary/Numero +slug: Glossary/Number tags: - Glosario - JavaScript translation_of: Glossary/Number +original_slug: Glossary/Numero ---

    En {{Glossary("JavaScript")}}, Number es un tipo de datos numérico (double-precision 64-bit floating point format (IEEE 754)). En otros lenguajes de programación puede existir diferentes tipos numéricos, por ejemplo: Integers, Floats, Doubles, or Bignums.

    diff --git a/files/es/glossary/object/index.html b/files/es/glossary/object/index.html index aeda572ea9..723857e098 100644 --- a/files/es/glossary/object/index.html +++ b/files/es/glossary/object/index.html @@ -1,7 +1,8 @@ --- title: Object -slug: Glossary/Objecto +slug: Glossary/Object translation_of: Glossary/Object +original_slug: Glossary/Objecto ---

    El Object se refiere a una estructura de datos que contiene datos e instrucciones para trabajar con los datos.  Algunas veces los Objects se refieren a cosas del mundo real, por ejemplo, un object de un coche o mapa en un juego de carreras. {{glossary("JavaScript")}}, Java, C++, y Python son ejemplos de {{glossary("OOP","programación orientada a objetos")}}.

    diff --git a/files/es/glossary/operand/index.html b/files/es/glossary/operand/index.html index 6a198905e3..212d5f1372 100644 --- a/files/es/glossary/operand/index.html +++ b/files/es/glossary/operand/index.html @@ -1,10 +1,11 @@ --- title: Operando -slug: Glossary/Operando +slug: Glossary/Operand tags: - Codificación - Glosario translation_of: Glossary/Operand +original_slug: Glossary/Operando ---

    Un operando es la parte de una instruccion que representa los datos manipulados por el {{glossary("Operator")}}. por ejemplo, cuando sumas dos numeros, los numeros son el operando y "+" es el operador.

    diff --git a/files/es/glossary/operator/index.html b/files/es/glossary/operator/index.html index 0385f67830..4307dbcf21 100644 --- a/files/es/glossary/operator/index.html +++ b/files/es/glossary/operator/index.html @@ -1,10 +1,11 @@ --- title: Operador -slug: Glossary/Operador +slug: Glossary/Operator tags: - Glosario - Scripting translation_of: Glossary/Operator +original_slug: Glossary/Operador ---

    Parte de la sintaxis reservada consistente en signos de puntuación o carácteres alfanuméricos que tienen funcionalidades incorporadas. Por ejemplo, "+" indica el operador suma y "!" indica el operador "not" (negación).

    diff --git a/files/es/glossary/plaintext/index.html b/files/es/glossary/plaintext/index.html index 2c76ac8212..6e8a7fa6c9 100644 --- a/files/es/glossary/plaintext/index.html +++ b/files/es/glossary/plaintext/index.html @@ -1,11 +1,12 @@ --- title: Texto Simple -slug: Glossary/TextoSimple +slug: Glossary/Plaintext tags: - Cryptography - Glossary - Security translation_of: Glossary/Plaintext +original_slug: Glossary/TextoSimple ---

    Texto simple se refiere a la información que se está utilizando como entrada para un {{Glossary("algorithm", "algoritmo")}} de {{Glossary("encryption","cifrado")}}, o para el {{Glossary("ciphertext", "texto cifrado")}} que se ha descifrado.

    diff --git a/files/es/glossary/preflight_request/index.html b/files/es/glossary/preflight_request/index.html index 6bd66f555a..4c9aa5ddb8 100644 --- a/files/es/glossary/preflight_request/index.html +++ b/files/es/glossary/preflight_request/index.html @@ -1,7 +1,8 @@ --- title: Preflight petición -slug: Glossary/Preflight_peticion +slug: Glossary/Preflight_request translation_of: Glossary/Preflight_request +original_slug: Glossary/Preflight_peticion ---

    Una petición preflight CORS es una petición CORS realizada para comprobar si el protocolo {{Glossary("CORS")}} es comprendido.

    diff --git a/files/es/glossary/primitive/index.html b/files/es/glossary/primitive/index.html index 1966a23803..2591883ebb 100644 --- a/files/es/glossary/primitive/index.html +++ b/files/es/glossary/primitive/index.html @@ -1,11 +1,12 @@ --- title: Primitivo -slug: Glossary/Primitivo +slug: Glossary/Primitive tags: - CodingScripting - Glosario - JavaScript translation_of: Glossary/Primitive +original_slug: Glossary/Primitivo ---

    En {{Glossary("JavaScript")}}, un primitive (valor primitivo, tipo de dato primitivo) son datos que no son un {{Glossary("object", "objeto")}} y no tienen {{Glossary("method", "métodos")}}. Hay 6 tipos de datos primitivos: {{Glossary("string")}}, {{Glossary("number")}}, {{Glossary("bigint")}}, {{Glossary("boolean")}} , {{Glossary("undefined")}} y {{Glossary("symbol")}}. También hay {{Glossary("null")}}, que aparentemente es primitivo, pero de hecho es un caso especial para cada {{JSxRef("Object")}}: y cualquier tipo estructurado se deriva de null por la {{web.link("/es/docs/Learn/JavaScript/Objects/Inheritance", "Cadena de prototipos")}}.

    diff --git a/files/es/glossary/property/index.html b/files/es/glossary/property/index.html index 07eae32e78..a5578b1ff2 100644 --- a/files/es/glossary/property/index.html +++ b/files/es/glossary/property/index.html @@ -1,10 +1,11 @@ --- title: Propiedad -slug: Glossary/propiedad +slug: Glossary/property tags: - Desambiguación - Glosario translation_of: Glossary/property +original_slug: Glossary/propiedad ---

    El término propiedad puede tener varios significados según el contexto. Se puede referir a:

    diff --git a/files/es/glossary/pseudo-class/index.html b/files/es/glossary/pseudo-class/index.html index b3984258d3..549bc2b1f9 100644 --- a/files/es/glossary/pseudo-class/index.html +++ b/files/es/glossary/pseudo-class/index.html @@ -1,6 +1,6 @@ --- title: Pseudo-clase -slug: Glossary/Pseudo-clase +slug: Glossary/Pseudo-class tags: - CSS - Glosario @@ -8,6 +8,7 @@ tags: - Selector - Selectores translation_of: Glossary/Pseudo-class +original_slug: Glossary/Pseudo-clase ---

    En CSS, un selector de pseudo-clase apunta a elementos dependiendo de su estado en lugar de en su información en el arbol del documento. Por ejemplo, el selector a{{ cssxref(":visited") }} aplica estilos solamente a los links que el usuario ha visitado.

    diff --git a/files/es/glossary/pseudocode/index.html b/files/es/glossary/pseudocode/index.html index 7a68d05ecb..75af780d8d 100644 --- a/files/es/glossary/pseudocode/index.html +++ b/files/es/glossary/pseudocode/index.html @@ -1,11 +1,12 @@ --- title: Pseudocódigo -slug: Glossary/Pseudocódigo +slug: Glossary/Pseudocode tags: - CodingScripting - Glosario - Pseudocódigo translation_of: Glossary/Pseudocode +original_slug: Glossary/Pseudocódigo ---

    El pseudocódigo se refiere a la sintaxis del código que generalmente se usa para indicar a los humanos cómo funciona dicho código, o para ilustrar el diseño de un elemento. No funcionará si intentas ejecutarlo como código.

    diff --git a/files/es/glossary/recursion/index.html b/files/es/glossary/recursion/index.html index 866ba64a33..cb0f4d9cf0 100644 --- a/files/es/glossary/recursion/index.html +++ b/files/es/glossary/recursion/index.html @@ -1,10 +1,11 @@ --- title: Recursión -slug: Glossary/Recursión +slug: Glossary/Recursion tags: - CodingScripting - Glosario translation_of: Glossary/Recursion +original_slug: Glossary/Recursión ---

    Es el acto de una función llamándose a sí misma. La recursión es utilizada para resolver problemas que contienen subproblemas más pequeños. Una función recursiva puede recibir 2 entradas: un caso base (finaliza la recursión) o un un caso recursivo (continúa la recursión).

    diff --git a/files/es/glossary/safe/index.html b/files/es/glossary/safe/index.html index f5c1c42763..7a2be815a7 100644 --- a/files/es/glossary/safe/index.html +++ b/files/es/glossary/safe/index.html @@ -1,7 +1,8 @@ --- title: Seguro -slug: Glossary/seguro +slug: Glossary/safe translation_of: Glossary/safe +original_slug: Glossary/seguro ---

    Un método  HTTP es seguro cuando no altera el estado del servidor. En otras palabras, un método HTTP es seguro solo cuando ejecuta una operación de lectura. Todos los métodos seguros también son {{glossary("idempotent")}} así como algunos, pero no todos, métodos inseguros como {{HTTPMethod("PUT")}}, o {{HTTPMethod("DELETE")}}.

    diff --git a/files/es/glossary/scm/index.html b/files/es/glossary/scm/index.html index be400de190..a05c47a98b 100644 --- a/files/es/glossary/scm/index.html +++ b/files/es/glossary/scm/index.html @@ -1,11 +1,12 @@ --- title: SCV -slug: Glossary/SCV +slug: Glossary/SCM tags: - CodingScripting - Glosario - SCV translation_of: Glossary/SCM +original_slug: Glossary/SCV ---

    Un SCV (sistema de control de versiones) es un sistema para gestionar código fuente. Normalmente se refiere al uso de software para manejar versiones de ficheros fuente. Un programador puede modificar ficheros de código fuente sin miedo a eliminar código que funciona, porque un SCV realiza un seguimiento de cómo el código fuente ha cambiado y quién ha realizado los cambios.

    diff --git a/files/es/glossary/speculative_parsing/index.html b/files/es/glossary/speculative_parsing/index.html index 6509450cf9..95ea987e5a 100644 --- a/files/es/glossary/speculative_parsing/index.html +++ b/files/es/glossary/speculative_parsing/index.html @@ -1,12 +1,13 @@ --- title: Optimizar sus páginas para análisis especulativo -slug: Web/HTML/Optimizing_your_pages_for_speculative_parsing +slug: Glossary/speculative_parsing tags: - Avanzado - Desarrollo web - HTML - HTML5 translation_of: Glossary/speculative_parsing +original_slug: Web/HTML/Optimizing_your_pages_for_speculative_parsing ---

    Tradicionalmente en los navegadores el analizador de HTML corre en el hilo de ejecución principal y se queda bloqueado después de una etiqueta </script> hasta que el código se haya recuperado y ejecutado. El analizador de HTML de Firefox 4 y posteriores soporta análisis especulativo fuera del hilo de ejecución principal. Este analiza anticipadamente mientras el codigo está siendo descargado y ejecutado. Como en Firefox 3.5 y 3.6, el analizador de HTML es el que inicia la carga especulativa de código, las hojas de estilos y las imagenes que va encontrando en el flujo de la página. Sin embargo en Firefox 4 y posteriores el analizador de HTML también ejecuta el algoritmo especulativo de la construcción del árbol HTML. La ventaja es que cuando lo especulado tiene exito, no hay necesidad de reanalizar la parte del archivo de entrada que ya fue analizada junto la descarga de código,  hojas de estilo y las imágenes. La desventaja es que se ha realizado un trabajo inútil cuando la especulación fracasa.

    diff --git a/files/es/glossary/statement/index.html b/files/es/glossary/statement/index.html index 501478a820..b2fef82b81 100644 --- a/files/es/glossary/statement/index.html +++ b/files/es/glossary/statement/index.html @@ -1,10 +1,11 @@ --- title: Sentencias -slug: Glossary/Sentencias +slug: Glossary/Statement tags: - Glosario - Principiante translation_of: Glossary/Statement +original_slug: Glossary/Sentencias ---

    En un lenguaje de programación, una sentencia es una línea de código al mando de una tarea Cada programa consiste en una secuencia de sentencias.

    diff --git a/files/es/glossary/static_typing/index.html b/files/es/glossary/static_typing/index.html index 161ab31c61..68648c0b59 100644 --- a/files/es/glossary/static_typing/index.html +++ b/files/es/glossary/static_typing/index.html @@ -1,11 +1,12 @@ --- title: Tipificación estática -slug: Glossary/Tipificación_estática +slug: Glossary/Static_typing tags: - CodingScripting - Glossary - Type translation_of: Glossary/Static_typing +original_slug: Glossary/Tipificación_estática ---

    Un lenguaje de tipo estático es un lenguaje (como Java, C, o C++) en donde los tipos de variables se conocen en tiempo de compilación. En la mayoria de estos lenguajes, los tipos deben ser expresamente indicados por el programador; en otros casos (como en OCaml), la inferencia de tipos permite al programador no indicar sus tipos de variables.

    diff --git a/files/es/glossary/synchronous/index.html b/files/es/glossary/synchronous/index.html index cfe10edd6f..d4382e0855 100644 --- a/files/es/glossary/synchronous/index.html +++ b/files/es/glossary/synchronous/index.html @@ -1,12 +1,13 @@ --- title: Sincrónico -slug: Glossary/Sincronico +slug: Glossary/Synchronous tags: - Glosario - Mecánicas - Web - WebMechanics translation_of: Glossary/Synchronous +original_slug: Glossary/Sincronico ---

    Sincrónico se refiere a la comunicación en tiempo real donde cada lado recibe (y si es necesario, procesa y responde) mensajes instantáneamente (o lo más cerca posible a instantáneamente).

    diff --git a/files/es/glossary/type_coercion/index.html b/files/es/glossary/type_coercion/index.html index 02721fad10..7260ab3c2d 100644 --- a/files/es/glossary/type_coercion/index.html +++ b/files/es/glossary/type_coercion/index.html @@ -1,7 +1,8 @@ --- title: Coerción -slug: Glossary/coercion +slug: Glossary/Type_coercion translation_of: Glossary/Type_coercion +original_slug: Glossary/coercion ---

    La coerción es la conversión automática o implicita de valores de un tipo de dato a otro (Ejemplo: de cadena de texto a número). La conversión es similar a la coerción porque ambas convierten valores de un tipo de dato a otro pero con una diferencia clave - la coerción es implícita mientras que la conversión puede ser implícita o explícita.

    diff --git a/files/es/glossary/ui/index.html b/files/es/glossary/ui/index.html index 0b24558082..87d1d4cb69 100644 --- a/files/es/glossary/ui/index.html +++ b/files/es/glossary/ui/index.html @@ -1,11 +1,12 @@ --- title: IU -slug: Glossary/IU +slug: Glossary/UI tags: - Accesibilidad - Diseño - Glosario translation_of: Glossary/UI +original_slug: Glossary/IU ---

    La Interfaz de Usuario (IU) es el medio que facilita la interacción entre el usuario y la máquina. En el campo de la informática, puede ser un teclado, un joystick, una pantalla, o un programa. En el caso del software, puede ser una entrada de línea de comandos, una página web, un formulario, o el front-end de cualquier aplicación.

    diff --git a/files/es/glossary/validator/index.html b/files/es/glossary/validator/index.html index 8b105054a9..587c8a3e96 100644 --- a/files/es/glossary/validator/index.html +++ b/files/es/glossary/validator/index.html @@ -1,11 +1,12 @@ --- title: Validador -slug: Glossary/Validador +slug: Glossary/Validator tags: - Glosario - Principiante - Seguridad translation_of: Glossary/Validator +original_slug: Glossary/Validador ---

    Un validador es un programa que comprueba errores de sintaxis en el código. Las validadores pueden ser creados para cualquier formato o lenguaje, pero en este contexto se habla de herramientas que comprueban {{Glossary("HTML")}}, {{Glossary("CSS")}}, y {{Glossary("XML")}}.

    diff --git a/files/es/glossary/value/index.html b/files/es/glossary/value/index.html index d0d2cc2bf8..aca8799dcc 100644 --- a/files/es/glossary/value/index.html +++ b/files/es/glossary/value/index.html @@ -1,10 +1,11 @@ --- title: Valor -slug: Glossary/Valor +slug: Glossary/Value tags: - CodingScripting - Glosario translation_of: Glossary/Value +original_slug: Glossary/Valor ---
    {{jsSidebar}}
    diff --git a/files/es/glossary/whitespace/index.html b/files/es/glossary/whitespace/index.html index db6014deae..05638d15ef 100644 --- a/files/es/glossary/whitespace/index.html +++ b/files/es/glossary/whitespace/index.html @@ -1,11 +1,12 @@ --- title: Espacio en blanco -slug: Glossary/Espacio_en_blanco +slug: Glossary/Whitespace tags: - Glosario - Gramática léxica - espacioenblanco translation_of: Glossary/Whitespace +original_slug: Glossary/Espacio_en_blanco ---

    El espacio en blanco es un conjunto de {{Glossary("Caracter", "caracteres")}} que se utiliza para mostrar espacios horizontales o verticales entre otros caracteres. A menudo se utilizan para separar fragmentos en {{Glossary("HTML")}}, {{Glossary("CSS")}}, {{Glossary("JavaScript")}} y otros lenguajes informáticos.Los caracteres de espacio en blanco y su uso varía de un lenguaje a otro.

    diff --git a/files/es/glossary/xforms/index.html b/files/es/glossary/xforms/index.html index 6590baacdd..7290ade27c 100644 --- a/files/es/glossary/xforms/index.html +++ b/files/es/glossary/xforms/index.html @@ -1,7 +1,8 @@ --- title: XForm -slug: Glossary/XForm +slug: Glossary/XForms translation_of: Glossary/XForms +original_slug: Glossary/XForm ---

    XForms es una norma para la creación de formularios web y el procesamiento de datos de formulario en formato  {{glossary("XML")}}. Actualmente ningún navegador soporta Xforms—sugerimos en su lugar utilizar los formularios en HTML5 forms.

    diff --git a/files/es/glossary/xhtml/index.html b/files/es/glossary/xhtml/index.html index 63e9c8b5e7..f62bdb0aad 100644 --- a/files/es/glossary/xhtml/index.html +++ b/files/es/glossary/xhtml/index.html @@ -1,12 +1,13 @@ --- title: XHTML -slug: XHTML +slug: Glossary/XHTML tags: - HTML - Todas_las_Categorías - XHTML - XML translation_of: Glossary/XHTML +original_slug: XHTML ---

    XHTML es a XML como HTML es a SGML. Es decir, XHTML es un lenguaje de marcado que es similar al HTML, pero con un sintaxis más estricta. Dos versiones de XHTML han sido terminadas por el W3C: diff --git a/files/es/learn/accessibility/what_is_accessibility/index.html b/files/es/learn/accessibility/what_is_accessibility/index.html index e92994e37c..3d9d8d2843 100644 --- a/files/es/learn/accessibility/what_is_accessibility/index.html +++ b/files/es/learn/accessibility/what_is_accessibility/index.html @@ -1,7 +1,8 @@ --- title: ¿Qué es la accesibilidad? -slug: Learn/Accessibility/Qué_es_la_accesibilidad +slug: Learn/Accessibility/What_is_accessibility translation_of: Learn/Accessibility/What_is_accessibility +original_slug: Learn/Accessibility/Qué_es_la_accesibilidad ---

    {{LearnSidebar}}
    diff --git a/files/es/learn/common_questions/common_web_layouts/index.html b/files/es/learn/common_questions/common_web_layouts/index.html index 7e05cbcaad..5c78b094cd 100644 --- a/files/es/learn/common_questions/common_web_layouts/index.html +++ b/files/es/learn/common_questions/common_web_layouts/index.html @@ -1,6 +1,6 @@ --- title: ¿Qué contienen los diseños web comunes? -slug: Learn/Common_questions/diseños_web_comunes +slug: Learn/Common_questions/Common_web_layouts tags: - CSS - Común @@ -9,6 +9,7 @@ tags: - HTML - Principiante translation_of: Learn/Common_questions/Common_web_layouts +original_slug: Learn/Common_questions/diseños_web_comunes ---
    {{IncludeSubnav("/en-US/Learn")}}
    diff --git a/files/es/learn/common_questions/how_much_does_it_cost/index.html b/files/es/learn/common_questions/how_much_does_it_cost/index.html index aeffd72c64..1a6116151d 100644 --- a/files/es/learn/common_questions/how_much_does_it_cost/index.html +++ b/files/es/learn/common_questions/how_much_does_it_cost/index.html @@ -1,6 +1,6 @@ --- title: ¿Cuánto cuesta hacer algo en la Web? -slug: Learn/Common_questions/Cuanto_cuesta +slug: Learn/Common_questions/How_much_does_it_cost tags: - Comenzando - Herramientas de desarrollo web @@ -9,6 +9,7 @@ tags: - costo - hosting translation_of: Learn/Common_questions/How_much_does_it_cost +original_slug: Learn/Common_questions/Cuanto_cuesta ---

    Dedicarse a la web no es tan barato como parece. En este artículo discutimos cuánto puedes tener que gastar, y por qué.

    diff --git a/files/es/learn/common_questions/using_github_pages/index.html b/files/es/learn/common_questions/using_github_pages/index.html index 81a7138430..2c52f5ef79 100644 --- a/files/es/learn/common_questions/using_github_pages/index.html +++ b/files/es/learn/common_questions/using_github_pages/index.html @@ -1,7 +1,8 @@ --- title: ¿Cómo se utiliza Github pages? -slug: Learn/Using_Github_pages +slug: Learn/Common_questions/Using_Github_pages translation_of: Learn/Common_questions/Using_Github_pages +original_slug: Learn/Using_Github_pages ---

    GitHub es un sitio "social coding". Te permite subir repositorios de código para almacenarlo en el sistema de control de versiones Git. Tu puedes colaborar en proyectos de código, y el sistema es código abierto por defecto, lo que significa que cualquiera en el mundo puede encontrar tu código en GitHub, usarlo, aprender de el, y mejorarlo. ¡Tú puedes hacer eso con el código de otras personas tambien! Este artículo provee una guía básica para publicar contenido usando la característica gh-pages de Github.

    diff --git a/files/es/learn/common_questions/what_is_a_url/index.html b/files/es/learn/common_questions/what_is_a_url/index.html index ef50be60ad..de5d24db8d 100644 --- a/files/es/learn/common_questions/what_is_a_url/index.html +++ b/files/es/learn/common_questions/what_is_a_url/index.html @@ -1,7 +1,8 @@ --- title: ¿Qué es una URL? -slug: Learn/Common_questions/Qué_es_una_URL +slug: Learn/Common_questions/What_is_a_URL translation_of: Learn/Common_questions/What_is_a_URL +original_slug: Learn/Common_questions/Qué_es_una_URL ---

    Este artículo habla sobre las Uniform Resource Locators (URLs), explicando qué son y cómo se estructuran.

    diff --git a/files/es/learn/common_questions/what_is_a_web_server/index.html b/files/es/learn/common_questions/what_is_a_web_server/index.html index 4969677db6..a7ded29232 100644 --- a/files/es/learn/common_questions/what_is_a_web_server/index.html +++ b/files/es/learn/common_questions/what_is_a_web_server/index.html @@ -1,11 +1,12 @@ --- title: Que es un servidor WEB? -slug: Learn/Common_questions/Que_es_un_servidor_WEB +slug: Learn/Common_questions/What_is_a_web_server tags: - Infraestructura - Principiante - necesitaEsquema translation_of: Learn/Common_questions/What_is_a_web_server +original_slug: Learn/Common_questions/Que_es_un_servidor_WEB ---

    En este articulo veremos que son los servidores, cómo funcionan y por qué son importantes.

    diff --git a/files/es/learn/common_questions/what_software_do_i_need/index.html b/files/es/learn/common_questions/what_software_do_i_need/index.html index 92687e7d13..d5ee07aac3 100644 --- a/files/es/learn/common_questions/what_software_do_i_need/index.html +++ b/files/es/learn/common_questions/what_software_do_i_need/index.html @@ -1,6 +1,6 @@ --- title: ¿Qué software necesito para construir un sitio web? -slug: Learn/Common_questions/Que_software_necesito +slug: Learn/Common_questions/What_software_do_I_need tags: - Build a website - Building @@ -8,6 +8,7 @@ tags: - Principiante - software translation_of: Learn/Common_questions/What_software_do_I_need +original_slug: Learn/Common_questions/Que_software_necesito ---

    En este artículo se explican cuales componentes de software necesita para editar, cargar, o visualizar un sitio web. 

    diff --git a/files/es/learn/css/building_blocks/backgrounds_and_borders/index.html b/files/es/learn/css/building_blocks/backgrounds_and_borders/index.html index 0de93e1eb1..a44c392720 100644 --- a/files/es/learn/css/building_blocks/backgrounds_and_borders/index.html +++ b/files/es/learn/css/building_blocks/backgrounds_and_borders/index.html @@ -1,7 +1,8 @@ --- title: Fondos y bordes -slug: Learn/CSS/Building_blocks/Fondos_y_bordes +slug: Learn/CSS/Building_blocks/Backgrounds_and_borders translation_of: Learn/CSS/Building_blocks/Backgrounds_and_borders +original_slug: Learn/CSS/Building_blocks/Fondos_y_bordes ---
    {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/The_box_model", "Learn/CSS/Building_blocks/Handling_different_text_directions", "Learn/CSS/Building_blocks")}}
    diff --git a/files/es/learn/css/building_blocks/cascade_and_inheritance/index.html b/files/es/learn/css/building_blocks/cascade_and_inheritance/index.html index 91a359181f..b90c7a9d1f 100644 --- a/files/es/learn/css/building_blocks/cascade_and_inheritance/index.html +++ b/files/es/learn/css/building_blocks/cascade_and_inheritance/index.html @@ -1,7 +1,8 @@ --- title: Cascada y herencia -slug: Learn/CSS/Building_blocks/Cascada_y_herencia +slug: Learn/CSS/Building_blocks/Cascade_and_inheritance translation_of: Learn/CSS/Building_blocks/Cascade_and_inheritance +original_slug: Learn/CSS/Building_blocks/Cascada_y_herencia ---
    {{LearnSidebar}}{{NextMenu("Learn/CSS/Building_blocks/Selectors", "Learn/CSS/Building_blocks")}}
    diff --git a/files/es/learn/css/building_blocks/debugging_css/index.html b/files/es/learn/css/building_blocks/debugging_css/index.html index 5f04fdd756..3e1b940897 100644 --- a/files/es/learn/css/building_blocks/debugging_css/index.html +++ b/files/es/learn/css/building_blocks/debugging_css/index.html @@ -1,7 +1,8 @@ --- title: Depurar el CSS -slug: Learn/CSS/Building_blocks/Depurar_el_CSS +slug: Learn/CSS/Building_blocks/Debugging_CSS translation_of: Learn/CSS/Building_blocks/Debugging_CSS +original_slug: Learn/CSS/Building_blocks/Depurar_el_CSS ---
    {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Styling_tables", "Learn/CSS/Building_blocks/Organizing", "Learn/CSS/Building_blocks")}}
    diff --git a/files/es/learn/css/building_blocks/fundamental_css_comprehension/index.html b/files/es/learn/css/building_blocks/fundamental_css_comprehension/index.html index b53db2df02..a4f90859a7 100644 --- a/files/es/learn/css/building_blocks/fundamental_css_comprehension/index.html +++ b/files/es/learn/css/building_blocks/fundamental_css_comprehension/index.html @@ -1,6 +1,6 @@ --- title: Comprensión de los fundamentos de CSS -slug: Learn/CSS/Introduction_to_CSS/Fundamental_CSS_comprehension +slug: Learn/CSS/Building_blocks/Fundamental_CSS_comprehension tags: - CSS - Estilo @@ -12,6 +12,7 @@ tags: - comentários - reglas translation_of: Learn/CSS/Building_blocks/Fundamental_CSS_comprehension +original_slug: Learn/CSS/Introduction_to_CSS/Fundamental_CSS_comprehension ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/css/building_blocks/handling_different_text_directions/index.html b/files/es/learn/css/building_blocks/handling_different_text_directions/index.html index fa21de66e5..4f1e9a7143 100644 --- a/files/es/learn/css/building_blocks/handling_different_text_directions/index.html +++ b/files/es/learn/css/building_blocks/handling_different_text_directions/index.html @@ -1,6 +1,6 @@ --- title: Manejando diferentes direcciones de texto -slug: Learn/CSS/Building_blocks/Manejando_diferentes_direcciones_de_texto +slug: Learn/CSS/Building_blocks/Handling_different_text_directions tags: - Aprendizaje - CSS @@ -10,6 +10,7 @@ tags: - Principiante - Propiedades lógicas translation_of: Learn/CSS/Building_blocks/Handling_different_text_directions +original_slug: Learn/CSS/Building_blocks/Manejando_diferentes_direcciones_de_texto ---
    {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Backgrounds_and_borders", "Learn/CSS/Building_blocks/Overflowing_content", "Learn/CSS/Building_blocks")}}
    diff --git a/files/es/learn/css/building_blocks/images_media_form_elements/index.html b/files/es/learn/css/building_blocks/images_media_form_elements/index.html index db0f522728..27232582a5 100644 --- a/files/es/learn/css/building_blocks/images_media_form_elements/index.html +++ b/files/es/learn/css/building_blocks/images_media_form_elements/index.html @@ -1,7 +1,8 @@ --- -title: 'Imágenes, medios y elementos de formulario' -slug: Learn/CSS/Building_blocks/Imágenes_medios_y_elementos_de_formulario +title: Imágenes, medios y elementos de formulario +slug: Learn/CSS/Building_blocks/Images_media_form_elements translation_of: Learn/CSS/Building_blocks/Images_media_form_elements +original_slug: Learn/CSS/Building_blocks/Imágenes_medios_y_elementos_de_formulario ---
    {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Sizing_items_in_CSS", "Learn/CSS/Building_blocks/Styling_tables", "Learn/CSS/Building_blocks")}}
    diff --git a/files/es/learn/css/building_blocks/overflowing_content/index.html b/files/es/learn/css/building_blocks/overflowing_content/index.html index 808a519c12..4c5b173d08 100644 --- a/files/es/learn/css/building_blocks/overflowing_content/index.html +++ b/files/es/learn/css/building_blocks/overflowing_content/index.html @@ -1,7 +1,8 @@ --- title: Contenido desbordado -slug: Learn/CSS/Building_blocks/Contenido_desbordado +slug: Learn/CSS/Building_blocks/Overflowing_content translation_of: Learn/CSS/Building_blocks/Overflowing_content +original_slug: Learn/CSS/Building_blocks/Contenido_desbordado ---
    {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Handling_different_text_directions", "Learn/CSS/Building_blocks/Values_and_units", "Learn/CSS/Building_blocks")}}
    diff --git a/files/es/learn/css/building_blocks/selectors/attribute_selectors/index.html b/files/es/learn/css/building_blocks/selectors/attribute_selectors/index.html index 057c38c18d..fc106ec303 100644 --- a/files/es/learn/css/building_blocks/selectors/attribute_selectors/index.html +++ b/files/es/learn/css/building_blocks/selectors/attribute_selectors/index.html @@ -1,7 +1,8 @@ --- title: Selectores de atributo -slug: Learn/CSS/Building_blocks/Selectores_CSS/Selectores_de_atributos +slug: Learn/CSS/Building_blocks/Selectors/Attribute_selectors translation_of: Learn/CSS/Building_blocks/Selectors/Attribute_selectors +original_slug: Learn/CSS/Building_blocks/Selectores_CSS/Selectores_de_atributos ---

    {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors", "Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements", "Learn/CSS/Building_blocks")}}

    diff --git a/files/es/learn/css/building_blocks/selectors/combinators/index.html b/files/es/learn/css/building_blocks/selectors/combinators/index.html index 54f416456d..b6c2f0a5bf 100644 --- a/files/es/learn/css/building_blocks/selectors/combinators/index.html +++ b/files/es/learn/css/building_blocks/selectors/combinators/index.html @@ -1,7 +1,8 @@ --- title: Combinadores -slug: Learn/CSS/Building_blocks/Selectores_CSS/Combinadores +slug: Learn/CSS/Building_blocks/Selectors/Combinators translation_of: Learn/CSS/Building_blocks/Selectors/Combinators +original_slug: Learn/CSS/Building_blocks/Selectores_CSS/Combinadores ---

    {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements", "Learn/CSS/Building_blocks/The_box_model", "Learn/CSS/Building_blocks")}}

    diff --git a/files/es/learn/css/building_blocks/selectors/index.html b/files/es/learn/css/building_blocks/selectors/index.html index d0ea61da20..4584bb30d3 100644 --- a/files/es/learn/css/building_blocks/selectors/index.html +++ b/files/es/learn/css/building_blocks/selectors/index.html @@ -1,7 +1,8 @@ --- title: Selectores CSS -slug: Learn/CSS/Building_blocks/Selectores_CSS +slug: Learn/CSS/Building_blocks/Selectors translation_of: Learn/CSS/Building_blocks/Selectors +original_slug: Learn/CSS/Building_blocks/Selectores_CSS ---
    {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Cascade_and_inheritance", "Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors", "Learn/CSS/Building_blocks")}}
    diff --git a/files/es/learn/css/building_blocks/selectors/pseudo-classes_and_pseudo-elements/index.html b/files/es/learn/css/building_blocks/selectors/pseudo-classes_and_pseudo-elements/index.html index f48dfdcbd5..6cba271113 100644 --- a/files/es/learn/css/building_blocks/selectors/pseudo-classes_and_pseudo-elements/index.html +++ b/files/es/learn/css/building_blocks/selectors/pseudo-classes_and_pseudo-elements/index.html @@ -1,7 +1,8 @@ --- title: Pseudoclases y pseudoelementos -slug: Learn/CSS/Building_blocks/Selectores_CSS/Pseudo-clases_y_pseudo-elementos +slug: Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements translation_of: Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements +original_slug: Learn/CSS/Building_blocks/Selectores_CSS/Pseudo-clases_y_pseudo-elementos ---

    {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Selectors/Attribute_selectors", "Learn/CSS/Building_blocks/Selectors/Combinators", "Learn/CSS/Building_blocks")}}

    diff --git a/files/es/learn/css/building_blocks/selectors/type_class_and_id_selectors/index.html b/files/es/learn/css/building_blocks/selectors/type_class_and_id_selectors/index.html index 01b3963f8a..c4e6758ca2 100644 --- a/files/es/learn/css/building_blocks/selectors/type_class_and_id_selectors/index.html +++ b/files/es/learn/css/building_blocks/selectors/type_class_and_id_selectors/index.html @@ -1,7 +1,8 @@ --- -title: 'Selectores de tipo, clase e ID' -slug: Learn/CSS/Building_blocks/Selectores_CSS/Selectores_de_tipo_clase_e_ID +title: Selectores de tipo, clase e ID +slug: Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors translation_of: Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors +original_slug: Learn/CSS/Building_blocks/Selectores_CSS/Selectores_de_tipo_clase_e_ID ---

    {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Selectors", "Learn/CSS/Building_blocks/Selectors/Attribute_selectors", "Learn/CSS/Building_blocks")}}

    diff --git a/files/es/learn/css/building_blocks/sizing_items_in_css/index.html b/files/es/learn/css/building_blocks/sizing_items_in_css/index.html index 81759abccc..4577a3a34a 100644 --- a/files/es/learn/css/building_blocks/sizing_items_in_css/index.html +++ b/files/es/learn/css/building_blocks/sizing_items_in_css/index.html @@ -1,7 +1,8 @@ --- title: Dimensionar elementos en CSS -slug: Learn/CSS/Building_blocks/Dimensionar_elementos_en_CSS +slug: Learn/CSS/Building_blocks/Sizing_items_in_CSS translation_of: Learn/CSS/Building_blocks/Sizing_items_in_CSS +original_slug: Learn/CSS/Building_blocks/Dimensionar_elementos_en_CSS ---
    {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Values_and_units", "Learn/CSS/Building_blocks/Images_media_form_elements", "Learn/CSS/Building_blocks")}}
    diff --git a/files/es/learn/css/building_blocks/the_box_model/index.html b/files/es/learn/css/building_blocks/the_box_model/index.html index dbc0d644f8..d0b81d69fe 100644 --- a/files/es/learn/css/building_blocks/the_box_model/index.html +++ b/files/es/learn/css/building_blocks/the_box_model/index.html @@ -1,7 +1,8 @@ --- title: El modelo de caja -slug: Learn/CSS/Building_blocks/El_modelo_de_caja +slug: Learn/CSS/Building_blocks/The_box_model translation_of: Learn/CSS/Building_blocks/The_box_model +original_slug: Learn/CSS/Building_blocks/El_modelo_de_caja ---
    {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Selectors/Combinators", "Learn/CSS/Building_blocks/Backgrounds_and_borders", "Learn/CSS/Building_blocks")}}
    diff --git a/files/es/learn/css/building_blocks/values_and_units/index.html b/files/es/learn/css/building_blocks/values_and_units/index.html index 4470746bc8..c72e131a90 100644 --- a/files/es/learn/css/building_blocks/values_and_units/index.html +++ b/files/es/learn/css/building_blocks/values_and_units/index.html @@ -1,7 +1,8 @@ --- title: Valores y unidades CSS -slug: Learn/CSS/Building_blocks/Valores_y_unidades_CSS +slug: Learn/CSS/Building_blocks/Values_and_units translation_of: Learn/CSS/Building_blocks/Values_and_units +original_slug: Learn/CSS/Building_blocks/Valores_y_unidades_CSS ---
    {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Overflowing_content", "Learn/CSS/Building_blocks/Sizing_items_in_CSS", "Learn/CSS/Building_blocks")}}
    diff --git a/files/es/learn/css/css_layout/introduction/index.html b/files/es/learn/css/css_layout/introduction/index.html index 2f409d97c3..769cd9da0f 100644 --- a/files/es/learn/css/css_layout/introduction/index.html +++ b/files/es/learn/css/css_layout/introduction/index.html @@ -1,7 +1,8 @@ --- title: Introducción al diseño en CSS -slug: Learn/CSS/CSS_layout/Introducción +slug: Learn/CSS/CSS_layout/Introduction translation_of: Learn/CSS/CSS_layout/Introduction +original_slug: Learn/CSS/CSS_layout/Introducción ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/css/css_layout/normal_flow/index.html b/files/es/learn/css/css_layout/normal_flow/index.html index ffc873938f..6c528855af 100644 --- a/files/es/learn/css/css_layout/normal_flow/index.html +++ b/files/es/learn/css/css_layout/normal_flow/index.html @@ -1,7 +1,8 @@ --- title: Flujo normal -slug: Learn/CSS/CSS_layout/Flujo_normal +slug: Learn/CSS/CSS_layout/Normal_Flow translation_of: Learn/CSS/CSS_layout/Normal_Flow +original_slug: Learn/CSS/CSS_layout/Flujo_normal ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/css/css_layout/responsive_design/index.html b/files/es/learn/css/css_layout/responsive_design/index.html index 4ddb7a94db..e1307d54a5 100644 --- a/files/es/learn/css/css_layout/responsive_design/index.html +++ b/files/es/learn/css/css_layout/responsive_design/index.html @@ -1,7 +1,8 @@ --- title: Diseño receptivo -slug: Learn/CSS/CSS_layout/Diseño_receptivo +slug: Learn/CSS/CSS_layout/Responsive_Design translation_of: Learn/CSS/CSS_layout/Responsive_Design +original_slug: Learn/CSS/CSS_layout/Diseño_receptivo ---
    {{learnsidebar}}{{PreviousMenuNext("Learn/CSS/CSS_layout/Multiple-column_Layout", "Learn/CSS/CSS_layout/Media_queries", "Learn/CSS/CSS_layout")}}
    diff --git a/files/es/learn/css/css_layout/supporting_older_browsers/index.html b/files/es/learn/css/css_layout/supporting_older_browsers/index.html index 18065a1da5..d709a628d5 100644 --- a/files/es/learn/css/css_layout/supporting_older_browsers/index.html +++ b/files/es/learn/css/css_layout/supporting_older_browsers/index.html @@ -1,7 +1,8 @@ --- title: Soporte a navegadores antiguos -slug: Learn/CSS/CSS_layout/Soporte_a_navegadores_antiguos +slug: Learn/CSS/CSS_layout/Supporting_Older_Browsers translation_of: Learn/CSS/CSS_layout/Supporting_Older_Browsers +original_slug: Learn/CSS/CSS_layout/Soporte_a_navegadores_antiguos ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/css/first_steps/getting_started/index.html b/files/es/learn/css/first_steps/getting_started/index.html index 1da9edb582..0fc4331abe 100644 --- a/files/es/learn/css/first_steps/getting_started/index.html +++ b/files/es/learn/css/first_steps/getting_started/index.html @@ -1,6 +1,6 @@ --- title: Empezar con CSS -slug: Learn/CSS/First_steps/Comenzando_CSS +slug: Learn/CSS/First_steps/Getting_started tags: - Aprender - CSS @@ -12,6 +12,7 @@ tags: - Selectores - Sintaxis translation_of: Learn/CSS/First_steps/Getting_started +original_slug: Learn/CSS/First_steps/Comenzando_CSS ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/css/first_steps/how_css_is_structured/index.html b/files/es/learn/css/first_steps/how_css_is_structured/index.html index a3e9bb94b8..4021804ce5 100644 --- a/files/es/learn/css/first_steps/how_css_is_structured/index.html +++ b/files/es/learn/css/first_steps/how_css_is_structured/index.html @@ -1,7 +1,8 @@ --- title: Cómo se estructura el CSS -slug: Learn/CSS/First_steps/Como_se_estructura_CSS +slug: Learn/CSS/First_steps/How_CSS_is_structured translation_of: Learn/CSS/First_steps/How_CSS_is_structured +original_slug: Learn/CSS/First_steps/Como_se_estructura_CSS ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/css/first_steps/how_css_works/index.html b/files/es/learn/css/first_steps/how_css_works/index.html index 920212e080..74c3e7fc06 100644 --- a/files/es/learn/css/first_steps/how_css_works/index.html +++ b/files/es/learn/css/first_steps/how_css_works/index.html @@ -1,7 +1,8 @@ --- title: Cómo funciona CSS -slug: Learn/CSS/First_steps/Como_funciona_CSS +slug: Learn/CSS/First_steps/How_CSS_works translation_of: Learn/CSS/First_steps/How_CSS_works +original_slug: Learn/CSS/First_steps/Como_funciona_CSS ---

    {{LearnSidebar}}
    {{PreviousMenuNext("Learn/CSS/First_steps/How_CSS_is_structured", "Learn/CSS/First_steps/Using_your_new_knowledge", "Learn/CSS/First_steps")}}

    diff --git a/files/es/learn/css/first_steps/using_your_new_knowledge/index.html b/files/es/learn/css/first_steps/using_your_new_knowledge/index.html index bff4f103bf..2fe00e7ce9 100644 --- a/files/es/learn/css/first_steps/using_your_new_knowledge/index.html +++ b/files/es/learn/css/first_steps/using_your_new_knowledge/index.html @@ -1,11 +1,12 @@ --- title: Usa tu nuevo conocimiento -slug: Learn/CSS/First_steps/Usa_tu_nuevo_conocimiento +slug: Learn/CSS/First_steps/Using_your_new_knowledge tags: - Aprendizaje - CSS - Principiante translation_of: Learn/CSS/First_steps/Using_your_new_knowledge +original_slug: Learn/CSS/First_steps/Usa_tu_nuevo_conocimiento ---

    {{LearnSidebar}}{{PreviousMenu("Learn/CSS/First_steps/How_CSS_works", "Learn/CSS/First_steps")}}

    diff --git a/files/es/learn/css/first_steps/what_is_css/index.html b/files/es/learn/css/first_steps/what_is_css/index.html index eb4f8e8a8a..82908677ec 100644 --- a/files/es/learn/css/first_steps/what_is_css/index.html +++ b/files/es/learn/css/first_steps/what_is_css/index.html @@ -1,6 +1,6 @@ --- title: ¿Qué es el CSS? -slug: Learn/CSS/First_steps/Qué_es_CSS +slug: Learn/CSS/First_steps/What_is_CSS tags: - Beginner - CSS @@ -10,6 +10,7 @@ tags: - Specifications - Syntax translation_of: Learn/CSS/First_steps/What_is_CSS +original_slug: Learn/CSS/First_steps/Qué_es_CSS ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/css/howto/css_faq/index.html b/files/es/learn/css/howto/css_faq/index.html index 36c2fa1317..3037ac68c8 100644 --- a/files/es/learn/css/howto/css_faq/index.html +++ b/files/es/learn/css/howto/css_faq/index.html @@ -1,10 +1,11 @@ --- title: Preguntas frecuentes sobre CSS -slug: Web/CSS/Preguntas_frecuentes_sobre_CSS +slug: Learn/CSS/Howto/CSS_FAQ tags: - CSS - Proyecto MDC translation_of: Learn/CSS/Howto/CSS_FAQ +original_slug: Web/CSS/Preguntas_frecuentes_sobre_CSS ---

    Mi CSS es válida, pero no se representa correctamente

    Los navegadores utilizan la declaración DOCTYPE para elegir entre mostrar el documento usando un modo que sea más compatible con los estándares de la Web o mostrarlo con los fallos de los navegadores antiguos. El uso de una declaración DOCTYPE correcta y moderna al inicio del código HTML mejorará el cumplimiento de los estándares del navegador.

    diff --git a/files/es/learn/css/howto/generated_content/index.html b/files/es/learn/css/howto/generated_content/index.html index 605e87f9e2..232c1c6e4d 100644 --- a/files/es/learn/css/howto/generated_content/index.html +++ b/files/es/learn/css/howto/generated_content/index.html @@ -1,6 +1,6 @@ --- title: Usando CSS para generar contenido -slug: Learn/CSS/Sábercomo/Generated_content +slug: Learn/CSS/Howto/Generated_content tags: - CSS - Fundamentos @@ -9,6 +9,7 @@ tags: - Web - graficos translation_of: Learn/CSS/Howto/Generated_content +original_slug: Learn/CSS/Sábercomo/Generated_content ---

    {{ CSSTutorialTOC() }}

    diff --git a/files/es/learn/css/howto/index.html b/files/es/learn/css/howto/index.html index ffff1653c0..c3669d187f 100644 --- a/files/es/learn/css/howto/index.html +++ b/files/es/learn/css/howto/index.html @@ -1,7 +1,8 @@ --- title: Usa CSS para resolver problemas comunes -slug: Learn/CSS/Sábercomo +slug: Learn/CSS/Howto translation_of: Learn/CSS/Howto +original_slug: Learn/CSS/Sábercomo ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/css/styling_text/web_fonts/index.html b/files/es/learn/css/styling_text/web_fonts/index.html index 7bfa162217..880307b419 100644 --- a/files/es/learn/css/styling_text/web_fonts/index.html +++ b/files/es/learn/css/styling_text/web_fonts/index.html @@ -1,7 +1,8 @@ --- title: Fuentes web -slug: Learn/CSS/Styling_text/Fuentes_web +slug: Learn/CSS/Styling_text/Web_fonts translation_of: Learn/CSS/Styling_text/Web_fonts +original_slug: Learn/CSS/Styling_text/Fuentes_web ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/forms/basic_native_form_controls/index.html b/files/es/learn/forms/basic_native_form_controls/index.html index c8a2651837..74b5b08e46 100644 --- a/files/es/learn/forms/basic_native_form_controls/index.html +++ b/files/es/learn/forms/basic_native_form_controls/index.html @@ -1,7 +1,8 @@ --- title: Controles de formulario originales -slug: Learn/HTML/Forms/The_native_form_widgets +slug: Learn/Forms/Basic_native_form_controls translation_of: Learn/Forms/Basic_native_form_controls +original_slug: Learn/HTML/Forms/The_native_form_widgets ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/forms/form_validation/index.html b/files/es/learn/forms/form_validation/index.html index e967b68973..c5a4d4f0dc 100644 --- a/files/es/learn/forms/form_validation/index.html +++ b/files/es/learn/forms/form_validation/index.html @@ -1,6 +1,6 @@ --- title: Validación de formularios de datos -slug: Learn/HTML/Forms/Validacion_formulario_datos +slug: Learn/Forms/Form_validation tags: - Ejemplo - Guía @@ -10,6 +10,7 @@ tags: - Web - formulários translation_of: Learn/Forms/Form_validation +original_slug: Learn/HTML/Forms/Validacion_formulario_datos ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/forms/how_to_build_custom_form_controls/index.html b/files/es/learn/forms/how_to_build_custom_form_controls/index.html index 73ae6e6590..1f83cf0ad0 100644 --- a/files/es/learn/forms/how_to_build_custom_form_controls/index.html +++ b/files/es/learn/forms/how_to_build_custom_form_controls/index.html @@ -1,7 +1,8 @@ --- title: Cómo crear widgets de formularios personalizados -slug: Learn/HTML/Forms/como_crear_widgets_de_formularios_personalizados +slug: Learn/Forms/How_to_build_custom_form_controls translation_of: Learn/Forms/How_to_build_custom_form_controls +original_slug: Learn/HTML/Forms/como_crear_widgets_de_formularios_personalizados ---
    {{LearnSidebar}}{{PreviousMenuNext("Learn/HTML/Forms/Form_validation", "Learn/HTML/Forms/Sending_forms_through_JavaScript", "Learn/HTML/Forms")}}
    diff --git a/files/es/learn/forms/how_to_structure_a_web_form/index.html b/files/es/learn/forms/how_to_structure_a_web_form/index.html index 45f58520d1..e2a1a8efa9 100644 --- a/files/es/learn/forms/how_to_structure_a_web_form/index.html +++ b/files/es/learn/forms/how_to_structure_a_web_form/index.html @@ -1,7 +1,8 @@ --- title: Cómo estructurar un formulario HTML -slug: Learn/HTML/Forms/How_to_structure_an_HTML_form +slug: Learn/Forms/How_to_structure_a_web_form translation_of: Learn/Forms/How_to_structure_a_web_form +original_slug: Learn/HTML/Forms/How_to_structure_an_HTML_form ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/forms/html5_input_types/index.html b/files/es/learn/forms/html5_input_types/index.html index d463399e93..7c62230c33 100644 --- a/files/es/learn/forms/html5_input_types/index.html +++ b/files/es/learn/forms/html5_input_types/index.html @@ -1,7 +1,8 @@ --- title: Tipos de input de HTML5 -slug: Learn/HTML/Forms/Tipos_input_HTML5 +slug: Learn/Forms/HTML5_input_types translation_of: Learn/Forms/HTML5_input_types +original_slug: Learn/HTML/Forms/Tipos_input_HTML5 ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/forms/index.html b/files/es/learn/forms/index.html index a0e77ec827..6413d9490a 100644 --- a/files/es/learn/forms/index.html +++ b/files/es/learn/forms/index.html @@ -1,10 +1,11 @@ --- title: Formularios en HTML5 -slug: HTML/HTML5/Forms_in_HTML5 +slug: Learn/Forms tags: - Forms - HTML - HTML5 +original_slug: HTML/HTML5/Forms_in_HTML5 ---

    {{ gecko_minversion_header("2") }}

    diff --git a/files/es/learn/forms/property_compatibility_table_for_form_controls/index.html b/files/es/learn/forms/property_compatibility_table_for_form_controls/index.html index 115b5580fe..a5c7202d69 100644 --- a/files/es/learn/forms/property_compatibility_table_for_form_controls/index.html +++ b/files/es/learn/forms/property_compatibility_table_for_form_controls/index.html @@ -1,7 +1,8 @@ --- title: Tabla de compatibilidad de propiedades CSS para controles de formulario -slug: Learn/HTML/Forms/Property_compatibility_table_for_form_controls +slug: Learn/Forms/Property_compatibility_table_for_form_controls translation_of: Learn/Forms/Property_compatibility_table_for_form_controls +original_slug: Learn/HTML/Forms/Property_compatibility_table_for_form_controls ---
    {{learnsidebar}}
    diff --git a/files/es/learn/forms/sending_and_retrieving_form_data/index.html b/files/es/learn/forms/sending_and_retrieving_form_data/index.html index d6ca2161a4..03fc91a7f1 100644 --- a/files/es/learn/forms/sending_and_retrieving_form_data/index.html +++ b/files/es/learn/forms/sending_and_retrieving_form_data/index.html @@ -1,7 +1,8 @@ --- title: Sending form data -slug: Learn/HTML/Forms/Sending_and_retrieving_form_data +slug: Learn/Forms/Sending_and_retrieving_form_data translation_of: Learn/Forms/Sending_and_retrieving_form_data +original_slug: Learn/HTML/Forms/Sending_and_retrieving_form_data ---
    {{LearnSidebar}} {{PreviousMenuNext("Aprende / HTML / Formularios / The_native_form_widgets", "Aprender / html / Formularios / Form_validation", "Aprender / html / Forms")}}
    diff --git a/files/es/learn/forms/styling_web_forms/index.html b/files/es/learn/forms/styling_web_forms/index.html index 26b4173ee8..6af4b94bed 100644 --- a/files/es/learn/forms/styling_web_forms/index.html +++ b/files/es/learn/forms/styling_web_forms/index.html @@ -1,7 +1,8 @@ --- title: Estilizando formularios HTML -slug: Learn/HTML/Forms/Styling_HTML_forms +slug: Learn/Forms/Styling_web_forms translation_of: Learn/Forms/Styling_web_forms +original_slug: Learn/HTML/Forms/Styling_HTML_forms ---

    En este artículo aprenderemos como utilizar CSS con formularios HTML  para hacerlos más atractivos. Aunque parezca extraño, esto es algo que puede llegar a ser complicado. Por razones históricas y técnicas, los widgets de formulario no suelen llevarse bien con CSS. Por este motivo, muchos desarrolladores prefieren construir sus propios widgets para tener el control de su aspecto en vez de utilizar los nativos. De todas formas, con los modernos navegadores, los diseñadores web cada vez tienen  más control sobre el diseño de los elementos de formulario. Vamos a profundizar en esto.

    diff --git a/files/es/learn/forms/test_your_skills_colon__html5_controls/index.html b/files/es/learn/forms/test_your_skills_colon__html5_controls/index.html index b73c8d4442..da67e807c8 100644 --- a/files/es/learn/forms/test_your_skills_colon__html5_controls/index.html +++ b/files/es/learn/forms/test_your_skills_colon__html5_controls/index.html @@ -1,13 +1,14 @@ --- title: 'Prueba tus habilidades: controles HTML5' -slug: 'Learn/HTML/Forms/Prueba_tus_habilidades:_controles_HTML5' +slug: Learn/Forms/Test_your_skills:_HTML5_controls tags: - Aprendizaje - Evaluación - Formulário - HTML5 - Principiante -translation_of: 'Learn/Forms/Test_your_skills:_HTML5_controls' +translation_of: Learn/Forms/Test_your_skills:_HTML5_controls +original_slug: Learn/HTML/Forms/Prueba_tus_habilidades:_controles_HTML5 ---
    {{learnsidebar}}
    diff --git a/files/es/learn/forms/test_your_skills_colon__other_controls/index.html b/files/es/learn/forms/test_your_skills_colon__other_controls/index.html index 1496025a8d..4e3e8a0c45 100644 --- a/files/es/learn/forms/test_your_skills_colon__other_controls/index.html +++ b/files/es/learn/forms/test_your_skills_colon__other_controls/index.html @@ -1,7 +1,8 @@ --- title: 'Prueba tus habilidades: Otros controles' -slug: 'Learn/HTML/Forms/Prueba_tus_habilidades:_Otros_controles' -translation_of: 'Learn/Forms/Test_your_skills:_Other_controls' +slug: Learn/Forms/Test_your_skills:_Other_controls +translation_of: Learn/Forms/Test_your_skills:_Other_controls +original_slug: Learn/HTML/Forms/Prueba_tus_habilidades:_Otros_controles ---
    {{learnsidebar}}
    diff --git a/files/es/learn/forms/your_first_form/index.html b/files/es/learn/forms/your_first_form/index.html index df9d73bc60..8f0d8fe7c9 100644 --- a/files/es/learn/forms/your_first_form/index.html +++ b/files/es/learn/forms/your_first_form/index.html @@ -1,6 +1,6 @@ --- title: Mi primer formulario HTML -slug: Learn/HTML/Forms/Your_first_HTML_form +slug: Learn/Forms/Your_first_form tags: - Ejemplo - Guía @@ -9,6 +9,7 @@ tags: - Web - formulários translation_of: Learn/Forms/Your_first_form +original_slug: Learn/HTML/Forms/Your_first_HTML_form ---
    {{LearnSidebar}}{{NextMenu("Learn/Forms/How_to_structure_a_web_form", "Learn/Forms")}}
    diff --git a/files/es/learn/front-end_web_developer/index.html b/files/es/learn/front-end_web_developer/index.html index f58a9ad486..a6f82bb539 100644 --- a/files/es/learn/front-end_web_developer/index.html +++ b/files/es/learn/front-end_web_developer/index.html @@ -1,6 +1,6 @@ --- title: Desarrollo web Front-end -slug: Learn/Desarrollo_web_Front-end +slug: Learn/Front-end_web_developer tags: - Aprender - CSS @@ -14,6 +14,7 @@ tags: - Novato - Principiante translation_of: Learn/Front-end_web_developer +original_slug: Learn/Desarrollo_web_Front-end ---

    {{learnsidebar}}

    diff --git a/files/es/learn/getting_started_with_the_web/dealing_with_files/index.html b/files/es/learn/getting_started_with_the_web/dealing_with_files/index.html index 0c7f8c4121..85ca42d01c 100644 --- a/files/es/learn/getting_started_with_the_web/dealing_with_files/index.html +++ b/files/es/learn/getting_started_with_the_web/dealing_with_files/index.html @@ -1,6 +1,6 @@ --- title: Manejo de archivos -slug: Learn/Getting_started_with_the_web/Manejando_los_archivos +slug: Learn/Getting_started_with_the_web/Dealing_with_files tags: - Archivos - Guía @@ -9,9 +9,10 @@ tags: - Principiante - Scripting - Sitios Web - - 'l10n:priority' + - l10n:priority - teorias translation_of: Learn/Getting_started_with_the_web/Dealing_with_files +original_slug: Learn/Getting_started_with_the_web/Manejando_los_archivos ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/getting_started_with_the_web/how_the_web_works/index.html b/files/es/learn/getting_started_with_the_web/how_the_web_works/index.html index 546baf0309..ccf641f1e4 100644 --- a/files/es/learn/getting_started_with_the_web/how_the_web_works/index.html +++ b/files/es/learn/getting_started_with_the_web/how_the_web_works/index.html @@ -1,6 +1,6 @@ --- title: Cómo funciona la web -slug: Learn/Getting_started_with_the_web/Cómo_funciona_la_Web +slug: Learn/Getting_started_with_the_web/How_the_Web_works tags: - Cliente - DNS @@ -14,6 +14,7 @@ tags: - TCP - Web translation_of: Learn/Getting_started_with_the_web/How_the_Web_works +original_slug: Learn/Getting_started_with_the_web/Cómo_funciona_la_Web ---
    {{LearnSidebar()}}
    diff --git a/files/es/learn/getting_started_with_the_web/installing_basic_software/index.html b/files/es/learn/getting_started_with_the_web/installing_basic_software/index.html index 84ffdcf666..7569624eaf 100644 --- a/files/es/learn/getting_started_with_the_web/installing_basic_software/index.html +++ b/files/es/learn/getting_started_with_the_web/installing_basic_software/index.html @@ -1,6 +1,6 @@ --- title: Instalación de software básico -slug: Learn/Getting_started_with_the_web/Instalacion_de_software_basico +slug: Learn/Getting_started_with_the_web/Installing_basic_software tags: - Aprender - Configuración @@ -12,8 +12,9 @@ tags: - buscador - editor de textos - instalar - - 'l10n:priority' + - l10n:priority translation_of: Learn/Getting_started_with_the_web/Installing_basic_software +original_slug: Learn/Getting_started_with_the_web/Instalacion_de_software_basico ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/getting_started_with_the_web/the_web_and_web_standards/index.html b/files/es/learn/getting_started_with_the_web/the_web_and_web_standards/index.html index daf6e77d18..67d6dc92cb 100644 --- a/files/es/learn/getting_started_with_the_web/the_web_and_web_standards/index.html +++ b/files/es/learn/getting_started_with_the_web/the_web_and_web_standards/index.html @@ -1,6 +1,6 @@ --- title: La web y los estándares web -slug: Learn/Getting_started_with_the_web/La_web_y_los_estandares_web +slug: Learn/Getting_started_with_the_web/The_web_and_web_standards tags: - Estándares web - Front-end @@ -10,6 +10,7 @@ tags: - Web - aprende translation_of: Learn/Getting_started_with_the_web/The_web_and_web_standards +original_slug: Learn/Getting_started_with_the_web/La_web_y_los_estandares_web ---

    {{learnsidebar}}

    diff --git a/files/es/learn/html/howto/author_fast-loading_html_pages/index.html b/files/es/learn/html/howto/author_fast-loading_html_pages/index.html index b44128e05d..221875140a 100644 --- a/files/es/learn/html/howto/author_fast-loading_html_pages/index.html +++ b/files/es/learn/html/howto/author_fast-loading_html_pages/index.html @@ -1,12 +1,13 @@ --- title: Consejos para la creación de páginas HTML de carga rápida -slug: Web/HTML/Consejos_para_la_creación_de_páginas_HTML_de_carga_rápida +slug: Learn/HTML/Howto/Author_fast-loading_HTML_pages tags: - Consejos - HTML - Rapido - Tips translation_of: Learn/HTML/Howto/Author_fast-loading_HTML_pages +original_slug: Web/HTML/Consejos_para_la_creación_de_páginas_HTML_de_carga_rápida ---

    Consejos para la creación de páginas HTML de carga rápida

    diff --git a/files/es/learn/html/howto/index.html b/files/es/learn/html/howto/index.html index 095e5bc54e..4717432b11 100644 --- a/files/es/learn/html/howto/index.html +++ b/files/es/learn/html/howto/index.html @@ -1,10 +1,11 @@ --- title: Solución de problemas comunes de HTML -slug: Learn/HTML/como +slug: Learn/HTML/Howto tags: - CodificacióndeSecuenciadeComandos - HTML translation_of: Learn/HTML/Howto +original_slug: Learn/HTML/como ---

    {{LearnSidebar}}

    diff --git a/files/es/learn/html/howto/use_data_attributes/index.html b/files/es/learn/html/howto/use_data_attributes/index.html index 7629974833..711d56f256 100644 --- a/files/es/learn/html/howto/use_data_attributes/index.html +++ b/files/es/learn/html/howto/use_data_attributes/index.html @@ -1,7 +1,8 @@ --- title: Uso de atributos de datos -slug: Learn/HTML/como/Usando_atributos_de_datos +slug: Learn/HTML/Howto/Use_data_attributes translation_of: Learn/HTML/Howto/Use_data_attributes +original_slug: Learn/HTML/como/Usando_atributos_de_datos ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/html/introduction_to_html/advanced_text_formatting/index.html b/files/es/learn/html/introduction_to_html/advanced_text_formatting/index.html index 7e96d3c6d7..49758ede67 100644 --- a/files/es/learn/html/introduction_to_html/advanced_text_formatting/index.html +++ b/files/es/learn/html/introduction_to_html/advanced_text_formatting/index.html @@ -1,6 +1,6 @@ --- title: Formateo de texto avanzado -slug: Learn/HTML/Introduccion_a_HTML/Advanced_text_formatting +slug: Learn/HTML/Introduction_to_HTML/Advanced_text_formatting tags: - CodingScripting - Guía @@ -14,6 +14,7 @@ tags: - cita - semántica translation_of: Learn/HTML/Introduction_to_HTML/Advanced_text_formatting +original_slug: Learn/HTML/Introduccion_a_HTML/Advanced_text_formatting ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/html/introduction_to_html/creating_hyperlinks/index.html b/files/es/learn/html/introduction_to_html/creating_hyperlinks/index.html index 330bf0d7db..6a1307c5e5 100644 --- a/files/es/learn/html/introduction_to_html/creating_hyperlinks/index.html +++ b/files/es/learn/html/introduction_to_html/creating_hyperlinks/index.html @@ -1,6 +1,6 @@ --- title: Crear hipervínculos -slug: Learn/HTML/Introduccion_a_HTML/Creating_hyperlinks +slug: Learn/HTML/Introduction_to_HTML/Creating_hyperlinks tags: - Aprender - CodingScripting @@ -20,6 +20,7 @@ tags: - título - urls translation_of: Learn/HTML/Introduction_to_HTML/Creating_hyperlinks +original_slug: Learn/HTML/Introduccion_a_HTML/Creating_hyperlinks ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/html/introduction_to_html/debugging_html/index.html b/files/es/learn/html/introduction_to_html/debugging_html/index.html index 114b93ff0f..d647a6db17 100644 --- a/files/es/learn/html/introduction_to_html/debugging_html/index.html +++ b/files/es/learn/html/introduction_to_html/debugging_html/index.html @@ -1,6 +1,6 @@ --- title: Depurar el HTML -slug: Learn/HTML/Introduccion_a_HTML/Debugging_HTML +slug: Learn/HTML/Introduction_to_HTML/Debugging_HTML tags: - Error - Guía @@ -11,6 +11,7 @@ tags: - depurar - programar translation_of: Learn/HTML/Introduction_to_HTML/Debugging_HTML +original_slug: Learn/HTML/Introduccion_a_HTML/Debugging_HTML ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/html/introduction_to_html/document_and_website_structure/index.html b/files/es/learn/html/introduction_to_html/document_and_website_structure/index.html index 1f5f1e315c..14d5394700 100644 --- a/files/es/learn/html/introduction_to_html/document_and_website_structure/index.html +++ b/files/es/learn/html/introduction_to_html/document_and_website_structure/index.html @@ -1,6 +1,6 @@ --- title: Estructura web y documentación -slug: Learn/HTML/Introduccion_a_HTML/estructura +slug: Learn/HTML/Introduction_to_HTML/Document_and_website_structure tags: - CodingScripting - Composición @@ -17,6 +17,7 @@ tags: - programar - semántica translation_of: Learn/HTML/Introduction_to_HTML/Document_and_website_structure +original_slug: Learn/HTML/Introduccion_a_HTML/estructura ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/html/introduction_to_html/getting_started/index.html b/files/es/learn/html/introduction_to_html/getting_started/index.html index c05aa6a9f0..331be30043 100644 --- a/files/es/learn/html/introduction_to_html/getting_started/index.html +++ b/files/es/learn/html/introduction_to_html/getting_started/index.html @@ -1,6 +1,6 @@ --- title: Empezar con HTML -slug: Learn/HTML/Introduccion_a_HTML/iniciar +slug: Learn/HTML/Introduction_to_HTML/Getting_started tags: - Atributos - Elemento @@ -9,6 +9,7 @@ tags: - Principiante - comentários translation_of: Learn/HTML/Introduction_to_HTML/Getting_started +original_slug: Learn/HTML/Introduccion_a_HTML/iniciar ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/html/introduction_to_html/html_text_fundamentals/index.html b/files/es/learn/html/introduction_to_html/html_text_fundamentals/index.html index 912acb7dfe..26c7cf3963 100644 --- a/files/es/learn/html/introduction_to_html/html_text_fundamentals/index.html +++ b/files/es/learn/html/introduction_to_html/html_text_fundamentals/index.html @@ -1,6 +1,6 @@ --- title: Fundamentos de texto en HTML -slug: Learn/HTML/Introduccion_a_HTML/texto +slug: Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals tags: - CodingScripting - Encabezados @@ -15,6 +15,7 @@ tags: - aprende - semántica translation_of: Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals +original_slug: Learn/HTML/Introduccion_a_HTML/texto ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/html/introduction_to_html/index.html b/files/es/learn/html/introduction_to_html/index.html index 64c70649cb..cbbb3806eb 100644 --- a/files/es/learn/html/introduction_to_html/index.html +++ b/files/es/learn/html/introduction_to_html/index.html @@ -1,6 +1,6 @@ --- title: Introducción a HTML -slug: Learn/HTML/Introduccion_a_HTML +slug: Learn/HTML/Introduction_to_HTML tags: - CodingScripting - Enlaces @@ -10,6 +10,7 @@ tags: - Texto - semántica translation_of: Learn/HTML/Introduction_to_HTML +original_slug: Learn/HTML/Introduccion_a_HTML ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/html/introduction_to_html/marking_up_a_letter/index.html b/files/es/learn/html/introduction_to_html/marking_up_a_letter/index.html index e53bb01826..5e1f868f5a 100644 --- a/files/es/learn/html/introduction_to_html/marking_up_a_letter/index.html +++ b/files/es/learn/html/introduction_to_html/marking_up_a_letter/index.html @@ -1,6 +1,6 @@ --- title: Marcando una Carta -slug: Learn/HTML/Introduccion_a_HTML/Marking_up_a_letter +slug: Learn/HTML/Introduction_to_HTML/Marking_up_a_letter tags: - Cabecera - Codificación @@ -9,6 +9,7 @@ tags: - Principiante - Texto translation_of: Learn/HTML/Introduction_to_HTML/Marking_up_a_letter +original_slug: Learn/HTML/Introduccion_a_HTML/Marking_up_a_letter ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/html/introduction_to_html/structuring_a_page_of_content/index.html b/files/es/learn/html/introduction_to_html/structuring_a_page_of_content/index.html index 686940212e..3e86e166dd 100644 --- a/files/es/learn/html/introduction_to_html/structuring_a_page_of_content/index.html +++ b/files/es/learn/html/introduction_to_html/structuring_a_page_of_content/index.html @@ -1,6 +1,6 @@ --- title: Estructuración de una Página de contenido -slug: Learn/HTML/Introduccion_a_HTML/Estructuración_de_una_página_de_contenido +slug: Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content tags: - Aprendizaje - Diseño @@ -12,6 +12,7 @@ tags: - Prototipado - semántica translation_of: Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content +original_slug: Learn/HTML/Introduccion_a_HTML/Estructuración_de_una_página_de_contenido ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/html/introduction_to_html/test_your_skills_colon__advanced_html_text/index.html b/files/es/learn/html/introduction_to_html/test_your_skills_colon__advanced_html_text/index.html index f29638eb81..908d34bcc6 100644 --- a/files/es/learn/html/introduction_to_html/test_your_skills_colon__advanced_html_text/index.html +++ b/files/es/learn/html/introduction_to_html/test_your_skills_colon__advanced_html_text/index.html @@ -1,7 +1,8 @@ --- title: 'Pon a prueba tus habilidades: texto HTML avanzado' -slug: 'Learn/HTML/Introduccion_a_HTML/Test_your_skills:_Advanced_HTML_text' -translation_of: 'Learn/HTML/Introduction_to_HTML/Test_your_skills:_Advanced_HTML_text' +slug: Learn/HTML/Introduction_to_HTML/Test_your_skills:_Advanced_HTML_text +translation_of: Learn/HTML/Introduction_to_HTML/Test_your_skills:_Advanced_HTML_text +original_slug: Learn/HTML/Introduccion_a_HTML/Test_your_skills:_Advanced_HTML_text ---
    {{learnsidebar}}
    diff --git a/files/es/learn/html/introduction_to_html/test_your_skills_colon__html_text_basics/index.html b/files/es/learn/html/introduction_to_html/test_your_skills_colon__html_text_basics/index.html index f35a083987..c84019c672 100644 --- a/files/es/learn/html/introduction_to_html/test_your_skills_colon__html_text_basics/index.html +++ b/files/es/learn/html/introduction_to_html/test_your_skills_colon__html_text_basics/index.html @@ -1,13 +1,14 @@ --- title: 'Prueba tus habilidades: Texto básico HTML' -slug: 'Learn/HTML/Introduccion_a_HTML/Prueba_tus_habilidades:_Texto_básico_HTML' +slug: Learn/HTML/Introduction_to_HTML/Test_your_skills:_HTML_text_basics tags: - Aprendizaje - HTML - Principiante - Prueba tus habilidades - Texto -translation_of: 'Learn/HTML/Introduction_to_HTML/Test_your_skills:_HTML_text_basics' +translation_of: Learn/HTML/Introduction_to_HTML/Test_your_skills:_HTML_text_basics +original_slug: Learn/HTML/Introduccion_a_HTML/Prueba_tus_habilidades:_Texto_básico_HTML ---
    {{learnsidebar}}
    diff --git a/files/es/learn/html/introduction_to_html/test_your_skills_colon__links/index.html b/files/es/learn/html/introduction_to_html/test_your_skills_colon__links/index.html index 0e8dc1bfaf..20e3e0f363 100644 --- a/files/es/learn/html/introduction_to_html/test_your_skills_colon__links/index.html +++ b/files/es/learn/html/introduction_to_html/test_your_skills_colon__links/index.html @@ -1,7 +1,8 @@ --- title: 'Prueba tus habilidades: Enlaces' -slug: 'Learn/HTML/Introduccion_a_HTML/Prueba_tus_habilidades:_Enlaces' -translation_of: 'Learn/HTML/Introduction_to_HTML/Test_your_skills:_Links' +slug: Learn/HTML/Introduction_to_HTML/Test_your_skills:_Links +translation_of: Learn/HTML/Introduction_to_HTML/Test_your_skills:_Links +original_slug: Learn/HTML/Introduccion_a_HTML/Prueba_tus_habilidades:_Enlaces ---
    {{learnsidebar}}
    diff --git a/files/es/learn/html/introduction_to_html/the_head_metadata_in_html/index.html b/files/es/learn/html/introduction_to_html/the_head_metadata_in_html/index.html index 6fc5f94ab0..6dd14ce1e1 100644 --- a/files/es/learn/html/introduction_to_html/the_head_metadata_in_html/index.html +++ b/files/es/learn/html/introduction_to_html/the_head_metadata_in_html/index.html @@ -1,6 +1,6 @@ --- title: ¿Qué hay en la cabecera? Metadatos en HTML -slug: Learn/HTML/Introduccion_a_HTML/Metados_en +slug: Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML tags: - Cabecera - CodingScripting @@ -15,6 +15,7 @@ tags: - lang - metadata translation_of: Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML +original_slug: Learn/HTML/Introduccion_a_HTML/Metados_en ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/html/tables/advanced/index.html b/files/es/learn/html/tables/advanced/index.html index a74817c5d4..6c008ab50b 100644 --- a/files/es/learn/html/tables/advanced/index.html +++ b/files/es/learn/html/tables/advanced/index.html @@ -1,7 +1,8 @@ --- title: Funciones avanzadas de las tablas HTML y accesibilidad -slug: Learn/HTML/Tablas/Funciones_avanzadas_de_las_tablas_HTML_y_accesibilidad +slug: Learn/HTML/Tables/Advanced translation_of: Learn/HTML/Tables/Advanced +original_slug: Learn/HTML/Tablas/Funciones_avanzadas_de_las_tablas_HTML_y_accesibilidad ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/html/tables/basics/index.html b/files/es/learn/html/tables/basics/index.html index 7259adf427..c7af02ac17 100644 --- a/files/es/learn/html/tables/basics/index.html +++ b/files/es/learn/html/tables/basics/index.html @@ -1,7 +1,8 @@ --- title: Conceptos básicos de las tablas HTML -slug: Learn/HTML/Tablas/Conceptos_básicos_de_las_tablas_HTML +slug: Learn/HTML/Tables/Basics translation_of: Learn/HTML/Tables/Basics +original_slug: Learn/HTML/Tablas/Conceptos_básicos_de_las_tablas_HTML ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/html/tables/index.html b/files/es/learn/html/tables/index.html index 7d04eb0cbf..39ef075b20 100644 --- a/files/es/learn/html/tables/index.html +++ b/files/es/learn/html/tables/index.html @@ -1,7 +1,8 @@ --- title: Tablas HTML -slug: Learn/HTML/Tablas +slug: Learn/HTML/Tables translation_of: Learn/HTML/Tables +original_slug: Learn/HTML/Tablas ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/html/tables/structuring_planet_data/index.html b/files/es/learn/html/tables/structuring_planet_data/index.html index e9868bb95a..8d8e219fa9 100644 --- a/files/es/learn/html/tables/structuring_planet_data/index.html +++ b/files/es/learn/html/tables/structuring_planet_data/index.html @@ -1,7 +1,8 @@ --- title: 'Evaluación: Estructurando datos planetarios' -slug: Learn/HTML/Tablas/Structuring_planet_data +slug: Learn/HTML/Tables/Structuring_planet_data translation_of: Learn/HTML/Tables/Structuring_planet_data +original_slug: Learn/HTML/Tablas/Structuring_planet_data ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/javascript/building_blocks/build_your_own_function/index.html b/files/es/learn/javascript/building_blocks/build_your_own_function/index.html index 5f9bcc7c8b..052ddb8b78 100644 --- a/files/es/learn/javascript/building_blocks/build_your_own_function/index.html +++ b/files/es/learn/javascript/building_blocks/build_your_own_function/index.html @@ -1,6 +1,6 @@ --- title: Construye tu propia función -slug: Learn/JavaScript/Building_blocks/Construyendo_tu_propia_funcion +slug: Learn/JavaScript/Building_blocks/Build_your_own_function tags: - Aprender - Artículo @@ -11,6 +11,7 @@ tags: - Principiante - Tutorial translation_of: Learn/JavaScript/Building_blocks/Build_your_own_function +original_slug: Learn/JavaScript/Building_blocks/Construyendo_tu_propia_funcion ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/javascript/building_blocks/events/index.html b/files/es/learn/javascript/building_blocks/events/index.html index 7bdb81768a..5fc7ee8df5 100644 --- a/files/es/learn/javascript/building_blocks/events/index.html +++ b/files/es/learn/javascript/building_blocks/events/index.html @@ -1,7 +1,8 @@ --- title: Introducción a eventos -slug: Learn/JavaScript/Building_blocks/Eventos +slug: Learn/JavaScript/Building_blocks/Events translation_of: Learn/JavaScript/Building_blocks/Events +original_slug: Learn/JavaScript/Building_blocks/Eventos ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/javascript/building_blocks/image_gallery/index.html b/files/es/learn/javascript/building_blocks/image_gallery/index.html index 205f1a11aa..a4bad1842e 100644 --- a/files/es/learn/javascript/building_blocks/image_gallery/index.html +++ b/files/es/learn/javascript/building_blocks/image_gallery/index.html @@ -1,7 +1,8 @@ --- title: Galería de imágenes -slug: Learn/JavaScript/Building_blocks/Galeria_de_imagenes +slug: Learn/JavaScript/Building_blocks/Image_gallery translation_of: Learn/JavaScript/Building_blocks/Image_gallery +original_slug: Learn/JavaScript/Building_blocks/Galeria_de_imagenes ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/javascript/building_blocks/looping_code/index.html b/files/es/learn/javascript/building_blocks/looping_code/index.html index e26509afc5..c1386a16ed 100644 --- a/files/es/learn/javascript/building_blocks/looping_code/index.html +++ b/files/es/learn/javascript/building_blocks/looping_code/index.html @@ -1,7 +1,8 @@ --- title: Bucles -slug: Learn/JavaScript/Building_blocks/Bucle_codigo +slug: Learn/JavaScript/Building_blocks/Looping_code translation_of: Learn/JavaScript/Building_blocks/Looping_code +original_slug: Learn/JavaScript/Building_blocks/Bucle_codigo ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/javascript/client-side_web_apis/introduction/index.html b/files/es/learn/javascript/client-side_web_apis/introduction/index.html index fc73d4ebc9..931a5d1328 100644 --- a/files/es/learn/javascript/client-side_web_apis/introduction/index.html +++ b/files/es/learn/javascript/client-side_web_apis/introduction/index.html @@ -1,7 +1,8 @@ --- title: Introducción a las APIs web -slug: Learn/JavaScript/Client-side_web_APIs/Introducción +slug: Learn/JavaScript/Client-side_web_APIs/Introduction translation_of: Learn/JavaScript/Client-side_web_APIs/Introduction +original_slug: Learn/JavaScript/Client-side_web_APIs/Introducción ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/javascript/first_steps/math/index.html b/files/es/learn/javascript/first_steps/math/index.html index d9117ed211..9533ac05d8 100644 --- a/files/es/learn/javascript/first_steps/math/index.html +++ b/files/es/learn/javascript/first_steps/math/index.html @@ -1,6 +1,6 @@ --- title: Matemáticas básicas en JavaScript — números y operadores -slug: Learn/JavaScript/First_steps/Matemáticas +slug: Learn/JavaScript/First_steps/Math tags: - Aprender - Artículo @@ -12,9 +12,10 @@ tags: - Operadores - Principiante - incremento - - 'l10n:priority' + - l10n:priority - modulo translation_of: Learn/JavaScript/First_steps/Math +original_slug: Learn/JavaScript/First_steps/Matemáticas ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/javascript/first_steps/silly_story_generator/index.html b/files/es/learn/javascript/first_steps/silly_story_generator/index.html index 58bb8e688a..c3b7d16dfe 100644 --- a/files/es/learn/javascript/first_steps/silly_story_generator/index.html +++ b/files/es/learn/javascript/first_steps/silly_story_generator/index.html @@ -1,6 +1,6 @@ --- title: Generador de historias absurdas -slug: Learn/JavaScript/First_steps/Generador_de_historias_absurdas +slug: Learn/JavaScript/First_steps/Silly_story_generator tags: - Arreglos - Cadenas @@ -8,6 +8,7 @@ tags: - Numeros - Principiante translation_of: Learn/JavaScript/First_steps/Silly_story_generator +original_slug: Learn/JavaScript/First_steps/Generador_de_historias_absurdas ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/javascript/first_steps/test_your_skills_colon__strings/index.html b/files/es/learn/javascript/first_steps/test_your_skills_colon__strings/index.html index f919ac1ee3..05bd91d296 100644 --- a/files/es/learn/javascript/first_steps/test_your_skills_colon__strings/index.html +++ b/files/es/learn/javascript/first_steps/test_your_skills_colon__strings/index.html @@ -1,6 +1,6 @@ --- title: 'Prueba tus habilidades: Strings' -slug: 'Learn/JavaScript/First_steps/Prueba_tus_habilidades:_Strings' +slug: Learn/JavaScript/First_steps/Test_your_skills:_Strings tags: - Cadenas - JavaScript @@ -9,7 +9,8 @@ tags: - Prueba tus habilidades - aprende - strings -translation_of: 'Learn/JavaScript/First_steps/Test_your_skills:_Strings' +translation_of: Learn/JavaScript/First_steps/Test_your_skills:_Strings +original_slug: Learn/JavaScript/First_steps/Prueba_tus_habilidades:_Strings ---
    {{learnsidebar}}
    diff --git a/files/es/learn/javascript/first_steps/what_is_javascript/index.html b/files/es/learn/javascript/first_steps/what_is_javascript/index.html index bd845c8681..f26d6116ea 100644 --- a/files/es/learn/javascript/first_steps/what_is_javascript/index.html +++ b/files/es/learn/javascript/first_steps/what_is_javascript/index.html @@ -1,6 +1,6 @@ --- title: ¿Qué es JavaScript? -slug: Learn/JavaScript/First_steps/Qué_es_JavaScript +slug: Learn/JavaScript/First_steps/What_is_JavaScript tags: - APIs - Aprender @@ -17,6 +17,7 @@ tags: - comentários - externo translation_of: Learn/JavaScript/First_steps/What_is_JavaScript +original_slug: Learn/JavaScript/First_steps/Qué_es_JavaScript ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/javascript/objects/object_building_practice/index.html b/files/es/learn/javascript/objects/object_building_practice/index.html index 6dfaaf0d08..6814a34289 100644 --- a/files/es/learn/javascript/objects/object_building_practice/index.html +++ b/files/es/learn/javascript/objects/object_building_practice/index.html @@ -1,7 +1,8 @@ --- title: Ejercicio práctico de construcción de objetos -slug: Learn/JavaScript/Objects/Ejercicio_práctico_de_construcción_de_objetos +slug: Learn/JavaScript/Objects/Object_building_practice translation_of: Learn/JavaScript/Objects/Object_building_practice +original_slug: Learn/JavaScript/Objects/Ejercicio_práctico_de_construcción_de_objetos ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/learning_and_getting_help/index.html b/files/es/learn/learning_and_getting_help/index.html index a7f06d90d8..e78bcbff0c 100644 --- a/files/es/learn/learning_and_getting_help/index.html +++ b/files/es/learn/learning_and_getting_help/index.html @@ -1,6 +1,6 @@ --- title: Aprender y obtener ayuda -slug: Learn/Aprender_y_obtener_ayuda +slug: Learn/Learning_and_getting_help tags: - Aprender - Desarrollo web @@ -8,6 +8,7 @@ tags: - conseguir ayuda - obtener ayuda translation_of: Learn/Learning_and_getting_help +original_slug: Learn/Aprender_y_obtener_ayuda ---

    {{learnsidebar}}

    diff --git a/files/es/learn/server-side/configuring_server_mime_types/index.html b/files/es/learn/server-side/configuring_server_mime_types/index.html index 782c328151..f8144877ba 100644 --- a/files/es/learn/server-side/configuring_server_mime_types/index.html +++ b/files/es/learn/server-side/configuring_server_mime_types/index.html @@ -1,12 +1,13 @@ --- title: Configurar correctamente los tipos MIME del servidor -slug: Configurar_correctamente_los_tipos_MIME_del_servidor +slug: Learn/Server-side/Configuring_server_MIME_types tags: - Desarrollo_Web - Estándares_Web - Seguridad - Todas_las_Categorías translation_of: Learn/Server-side/Configuring_server_MIME_types +original_slug: Configurar_correctamente_los_tipos_MIME_del_servidor ---

    diff --git a/files/es/learn/server-side/django/introduction/index.html b/files/es/learn/server-side/django/introduction/index.html index 484b311a2c..a1571a1d00 100644 --- a/files/es/learn/server-side/django/introduction/index.html +++ b/files/es/learn/server-side/django/introduction/index.html @@ -1,6 +1,6 @@ --- title: Introducción a Django -slug: Learn/Server-side/Django/Introducción +slug: Learn/Server-side/Django/Introduction tags: - Aprendizaje - CodigoScript @@ -10,6 +10,7 @@ tags: - django - introducción translation_of: Learn/Server-side/Django/Introduction +original_slug: Learn/Server-side/Django/Introducción ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/server-side/first_steps/client-server_overview/index.html b/files/es/learn/server-side/first_steps/client-server_overview/index.html index 05ce1f9451..db0a949c2d 100644 --- a/files/es/learn/server-side/first_steps/client-server_overview/index.html +++ b/files/es/learn/server-side/first_steps/client-server_overview/index.html @@ -1,6 +1,6 @@ --- title: Visión General Cliente-Servidor -slug: Learn/Server-side/Primeros_pasos/Vision_General_Cliente_Servidor +slug: Learn/Server-side/First_steps/Client-Server_overview tags: - Aprendizaje - Codificación de scripts @@ -10,6 +10,7 @@ tags: - Servidor - introducción translation_of: Learn/Server-side/First_steps/Client-Server_overview +original_slug: Learn/Server-side/Primeros_pasos/Vision_General_Cliente_Servidor ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/server-side/first_steps/index.html b/files/es/learn/server-side/first_steps/index.html index 19a5454b4b..d7893b51d3 100644 --- a/files/es/learn/server-side/first_steps/index.html +++ b/files/es/learn/server-side/first_steps/index.html @@ -1,6 +1,6 @@ --- title: Primeros Pasos en la Programación de Lado-Servidor -slug: Learn/Server-side/Primeros_pasos +slug: Learn/Server-side/First_steps tags: - Aprendizaje - Aterrizaje @@ -10,6 +10,7 @@ tags: - Programación lado servidor - introducción translation_of: Learn/Server-side/First_steps +original_slug: Learn/Server-side/Primeros_pasos ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/server-side/first_steps/introduction/index.html b/files/es/learn/server-side/first_steps/introduction/index.html index 0b0d2da59e..32d5f3363b 100644 --- a/files/es/learn/server-side/first_steps/introduction/index.html +++ b/files/es/learn/server-side/first_steps/introduction/index.html @@ -1,6 +1,6 @@ --- title: Introducción al lado servidor -slug: Learn/Server-side/Primeros_pasos/Introducción +slug: Learn/Server-side/First_steps/Introduction tags: - Aprendizaje - Codificación de scripts @@ -10,6 +10,7 @@ tags: - Servidor - introducción translation_of: Learn/Server-side/First_steps/Introduction +original_slug: Learn/Server-side/Primeros_pasos/Introducción ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/server-side/first_steps/web_frameworks/index.html b/files/es/learn/server-side/first_steps/web_frameworks/index.html index 8c381a772e..6e23f8586d 100644 --- a/files/es/learn/server-side/first_steps/web_frameworks/index.html +++ b/files/es/learn/server-side/first_steps/web_frameworks/index.html @@ -1,6 +1,6 @@ --- title: Frameworks Web de lado servidor -slug: Learn/Server-side/Primeros_pasos/Web_frameworks +slug: Learn/Server-side/First_steps/Web_frameworks tags: - Aprendizaje - Codificación de scripts @@ -11,6 +11,7 @@ tags: - Servidor - introducción translation_of: Learn/Server-side/First_steps/Web_frameworks +original_slug: Learn/Server-side/Primeros_pasos/Web_frameworks ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/server-side/first_steps/website_security/index.html b/files/es/learn/server-side/first_steps/website_security/index.html index c2630fc050..92ed22736a 100644 --- a/files/es/learn/server-side/first_steps/website_security/index.html +++ b/files/es/learn/server-side/first_steps/website_security/index.html @@ -1,6 +1,6 @@ --- title: Seguridad de Sitios Web -slug: Learn/Server-side/Primeros_pasos/seguridad_sitios_web +slug: Learn/Server-side/First_steps/Website_security tags: - Aprendizaje - Codificación de scripts @@ -12,6 +12,7 @@ tags: - Seguridad de sitios Web - introducción translation_of: Learn/Server-side/First_steps/Website_security +original_slug: Learn/Server-side/Primeros_pasos/seguridad_sitios_web ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/tools_and_testing/client-side_javascript_frameworks/index.html b/files/es/learn/tools_and_testing/client-side_javascript_frameworks/index.html index e9bdd36eca..81a3a24914 100644 --- a/files/es/learn/tools_and_testing/client-side_javascript_frameworks/index.html +++ b/files/es/learn/tools_and_testing/client-side_javascript_frameworks/index.html @@ -1,10 +1,11 @@ --- title: Entendiendo los frameworks de JavaScript del lado del cliente -slug: Learn/Herramientas_y_pruebas/Lado-del-cliente_JavaScript_frameworks +slug: Learn/Tools_and_testing/Client-side_JavaScript_frameworks tags: - Aprender - Principiante translation_of: Learn/Tools_and_testing/Client-side_JavaScript_frameworks +original_slug: Learn/Herramientas_y_pruebas/Lado-del-cliente_JavaScript_frameworks ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/tools_and_testing/client-side_javascript_frameworks/react_getting_started/index.html b/files/es/learn/tools_and_testing/client-side_javascript_frameworks/react_getting_started/index.html index 09c28f11a9..121d2684d1 100644 --- a/files/es/learn/tools_and_testing/client-side_javascript_frameworks/react_getting_started/index.html +++ b/files/es/learn/tools_and_testing/client-side_javascript_frameworks/react_getting_started/index.html @@ -1,13 +1,15 @@ --- title: Primeros pasos en React slug: >- - Learn/Herramientas_y_pruebas/Lado-del-cliente_JavaScript_frameworks/React_getting_started + Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started tags: - Aprender - Aprendiz - Principiante translation_of: >- Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started +original_slug: >- + Learn/Herramientas_y_pruebas/Lado-del-cliente_JavaScript_frameworks/React_getting_started ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/tools_and_testing/client-side_javascript_frameworks/vue_getting_started/index.html b/files/es/learn/tools_and_testing/client-side_javascript_frameworks/vue_getting_started/index.html index ea24ac2a81..1e5640d9e3 100644 --- a/files/es/learn/tools_and_testing/client-side_javascript_frameworks/vue_getting_started/index.html +++ b/files/es/learn/tools_and_testing/client-side_javascript_frameworks/vue_getting_started/index.html @@ -1,8 +1,9 @@ --- title: Primeros pasos con Vue -slug: >- - Learn/Herramientas_y_pruebas/Lado-del-cliente_JavaScript_frameworks/Vue_primeros_pasos +slug: Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_getting_started translation_of: Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_getting_started +original_slug: >- + Learn/Herramientas_y_pruebas/Lado-del-cliente_JavaScript_frameworks/Vue_primeros_pasos ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/tools_and_testing/cross_browser_testing/index.html b/files/es/learn/tools_and_testing/cross_browser_testing/index.html index 73bd6299a1..f9f0a26a7c 100644 --- a/files/es/learn/tools_and_testing/cross_browser_testing/index.html +++ b/files/es/learn/tools_and_testing/cross_browser_testing/index.html @@ -1,7 +1,8 @@ --- title: Cross browser testing -slug: Learn/Herramientas_y_pruebas/Cross_browser_testing +slug: Learn/Tools_and_testing/Cross_browser_testing translation_of: Learn/Tools_and_testing/Cross_browser_testing +original_slug: Learn/Herramientas_y_pruebas/Cross_browser_testing ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/tools_and_testing/github/index.html b/files/es/learn/tools_and_testing/github/index.html index 62646f1cc4..77d02cf0de 100644 --- a/files/es/learn/tools_and_testing/github/index.html +++ b/files/es/learn/tools_and_testing/github/index.html @@ -1,6 +1,6 @@ --- title: Git y GitHub -slug: Learn/Herramientas_y_pruebas/GitHub +slug: Learn/Tools_and_testing/GitHub tags: - Aprender - GitHub @@ -8,6 +8,7 @@ tags: - Web - git translation_of: Learn/Tools_and_testing/GitHub +original_slug: Learn/Herramientas_y_pruebas/GitHub ---
    {{LearnSidebar}}
    diff --git a/files/es/learn/tools_and_testing/index.html b/files/es/learn/tools_and_testing/index.html index a147c98f65..5c15d17096 100644 --- a/files/es/learn/tools_and_testing/index.html +++ b/files/es/learn/tools_and_testing/index.html @@ -1,6 +1,6 @@ --- title: Herramientas y pruebas -slug: Learn/Herramientas_y_pruebas +slug: Learn/Tools_and_testing tags: - Accesibilidad - Aprender @@ -17,6 +17,7 @@ tags: - Testing - automatización translation_of: Learn/Tools_and_testing +original_slug: Learn/Herramientas_y_pruebas ---

    {{LearnSidebar}}

    diff --git a/files/es/learn/tools_and_testing/understanding_client-side_tools/index.html b/files/es/learn/tools_and_testing/understanding_client-side_tools/index.html index 6221b0382f..a18738e8a6 100644 --- a/files/es/learn/tools_and_testing/understanding_client-side_tools/index.html +++ b/files/es/learn/tools_and_testing/understanding_client-side_tools/index.html @@ -1,6 +1,6 @@ --- title: Understanding client-side web development tools -slug: Learn/Herramientas_y_pruebas/Understanding_client-side_tools +slug: Learn/Tools_and_testing/Understanding_client-side_tools tags: - Aprender - CSS @@ -13,6 +13,7 @@ tags: - client-side - lado del cliente translation_of: Learn/Tools_and_testing/Understanding_client-side_tools +original_slug: Learn/Herramientas_y_pruebas/Understanding_client-side_tools ---
    {{LearnSidebar}}
    diff --git a/files/es/mdn/at_ten/index.html b/files/es/mdn/at_ten/index.html index 0e48e9e6ba..a5735ff01c 100644 --- a/files/es/mdn/at_ten/index.html +++ b/files/es/mdn/at_ten/index.html @@ -1,9 +1,10 @@ --- title: MDN en 10 -slug: MDN_en_diez +slug: MDN/At_ten tags: - MDN translation_of: MDN_at_ten +original_slug: MDN_en_diez ---
    Celebra 10 años documentando tu Web.
    diff --git a/files/es/mdn/contribute/processes/index.html b/files/es/mdn/contribute/processes/index.html index a408f11fb7..ab80694054 100644 --- a/files/es/mdn/contribute/processes/index.html +++ b/files/es/mdn/contribute/processes/index.html @@ -1,11 +1,12 @@ --- title: Procesos de documentación -slug: MDN/Contribute/Procesos +slug: MDN/Contribute/Processes tags: - Landing - MDN Meta - Procesos translation_of: MDN/Contribute/Processes +original_slug: MDN/Contribute/Procesos ---
    {{MDNSidebar}}
    {{IncludeSubnav("/es/docs/MDN")}}
    diff --git a/files/es/mdn/guidelines/conventions_definitions/index.html b/files/es/mdn/guidelines/conventions_definitions/index.html index c96e4b7ab2..b18eee9d73 100644 --- a/files/es/mdn/guidelines/conventions_definitions/index.html +++ b/files/es/mdn/guidelines/conventions_definitions/index.html @@ -1,6 +1,6 @@ --- title: MDN convenciones y definiciones -slug: MDN/Guidelines/Convenciones_y_definiciones +slug: MDN/Guidelines/Conventions_definitions tags: - Directrices - Documentación @@ -8,6 +8,7 @@ tags: - MDN - Meta MDN translation_of: MDN/Guidelines/Conventions_definitions +original_slug: MDN/Guidelines/Convenciones_y_definiciones ---
    {{MDNSidebar}}{{IncludeSubnav("/es/docs/MDN")}}
    diff --git a/files/es/mdn/guidelines/css_style_guide/index.html b/files/es/mdn/guidelines/css_style_guide/index.html index 7791d33e06..17e58b0086 100644 --- a/files/es/mdn/guidelines/css_style_guide/index.html +++ b/files/es/mdn/guidelines/css_style_guide/index.html @@ -1,11 +1,12 @@ --- title: Bloques de contenido -slug: MDN/Guidelines/Content_blocks +slug: MDN/Guidelines/CSS_style_guide tags: - MDN - Meta translation_of: MDN/Guidelines/CSS_style_guide translation_of_original: MDN/Structures/Content_blocks +original_slug: MDN/Guidelines/Content_blocks ---
    {{MDNSidebar}}

    This pages lists reusable content blocks.

    diff --git a/files/es/mdn/guidelines/writing_style_guide/index.html b/files/es/mdn/guidelines/writing_style_guide/index.html index 40bffd16ca..7f9255a324 100644 --- a/files/es/mdn/guidelines/writing_style_guide/index.html +++ b/files/es/mdn/guidelines/writing_style_guide/index.html @@ -1,10 +1,11 @@ --- title: Guía de estilo -slug: 'MDN/Guidelines/Project:Guía_de_estilo' +slug: MDN/Guidelines/Writing_style_guide tags: - Proyecto_MDC - Todas_las_Categorías translation_of: MDN/Guidelines/Writing_style_guide +original_slug: MDN/Guidelines/Project:Guía_de_estilo ---
    {{MDNSidebar}}
    diff --git a/files/es/mdn/structures/compatibility_tables/index.html b/files/es/mdn/structures/compatibility_tables/index.html index cd9a5097d2..73c3ef2464 100644 --- a/files/es/mdn/structures/compatibility_tables/index.html +++ b/files/es/mdn/structures/compatibility_tables/index.html @@ -2,7 +2,7 @@ title: >- Tablas de compatibilidad y repositorio de datos de compatibilidad del navegador (DCN) -slug: MDN/Structures/Tablas_de_compatibilidad +slug: MDN/Structures/Compatibility_tables tags: - Estructuras - Guía @@ -10,6 +10,7 @@ tags: - compatibilidad con el navegador - tablas de compatibilidad translation_of: MDN/Structures/Compatibility_tables +original_slug: MDN/Structures/Tablas_de_compatibilidad ---
    {{MDNSidebar}}
    diff --git a/files/es/mdn/structures/live_samples/index.html b/files/es/mdn/structures/live_samples/index.html index f5743b558e..c3f02940d8 100644 --- a/files/es/mdn/structures/live_samples/index.html +++ b/files/es/mdn/structures/live_samples/index.html @@ -1,7 +1,8 @@ --- title: Ejemplos ejecutables -slug: MDN/Structures/Ejemplos_ejecutables +slug: MDN/Structures/Live_samples translation_of: MDN/Structures/Live_samples +original_slug: MDN/Structures/Ejemplos_ejecutables ---
    {{MDNSidebar}}

    MDN puede convertir ejemplos de código de los artículos a ejemplos ejecutables que el lector puede ver en acción. Estos ejemplos ejecutables pueden contener HTML, CSS, y JavaScript en cualquier combinación. Ten en cuenta que los ejemplos "ejecutables" no son interactivos; sin embargo, aseguran que el output coincida exactamente con el código de ejemplo, porque es generado por este.

    diff --git a/files/es/mdn/structures/macros/other/index.html b/files/es/mdn/structures/macros/other/index.html index 532bc07fdc..c703a2f9cf 100644 --- a/files/es/mdn/structures/macros/other/index.html +++ b/files/es/mdn/structures/macros/other/index.html @@ -1,10 +1,11 @@ --- title: Otras macros -slug: MDN/Structures/Macros/Otras +slug: MDN/Structures/Macros/Other tags: - Macros - Referencia translation_of: MDN/Structures/Macros/Other +original_slug: MDN/Structures/Macros/Otras ---
    {{MDNSidebar}}
    diff --git a/files/es/mdn/tools/kumascript/index.html b/files/es/mdn/tools/kumascript/index.html index ed060eecd8..cac2778065 100644 --- a/files/es/mdn/tools/kumascript/index.html +++ b/files/es/mdn/tools/kumascript/index.html @@ -1,7 +1,8 @@ --- title: Introducción a KumaScript -slug: MDN/Tools/Introduction_to_KumaScript +slug: MDN/Tools/KumaScript translation_of: MDN/Tools/KumaScript +original_slug: MDN/Tools/Introduction_to_KumaScript ---
    {{MDNSidebar}}
    diff --git a/files/es/mdn/yari/index.html b/files/es/mdn/yari/index.html index b7b0de4fd9..894f384fc1 100644 --- a/files/es/mdn/yari/index.html +++ b/files/es/mdn/yari/index.html @@ -1,7 +1,8 @@ --- title: Kuma -slug: MDN/Kuma +slug: MDN/Yari translation_of: MDN/Kuma +original_slug: MDN/Kuma ---
    {{MDNSidebar}}
    diff --git a/files/es/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html b/files/es/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html index 685e282bf9..20abaa7585 100644 --- a/files/es/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html +++ b/files/es/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html @@ -1,9 +1,10 @@ --- title: Anatomía de una extension -slug: Mozilla/Add-ons/WebExtensions/Anatomia_de_una_WebExtension +slug: Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension tags: - WebExtensions translation_of: Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension +original_slug: Mozilla/Add-ons/WebExtensions/Anatomia_de_una_WebExtension ---
    {{AddonSidebar}}
    diff --git a/files/es/mozilla/add-ons/webextensions/prerequisites/index.html b/files/es/mozilla/add-ons/webextensions/prerequisites/index.html index d022940dab..78cff72dcd 100644 --- a/files/es/mozilla/add-ons/webextensions/prerequisites/index.html +++ b/files/es/mozilla/add-ons/webextensions/prerequisites/index.html @@ -1,7 +1,8 @@ --- title: Prerequisitos -slug: Mozilla/Add-ons/WebExtensions/Prerequisitos +slug: Mozilla/Add-ons/WebExtensions/Prerequisites translation_of: Mozilla/Add-ons/WebExtensions/Prerequisites +original_slug: Mozilla/Add-ons/WebExtensions/Prerequisitos ---

    Para desarrollar usando las APIs de WebExtension, debes seguir algunos pasos antes de comenzar.

    diff --git a/files/es/mozilla/add-ons/webextensions/user_interface/browser_action/index.html b/files/es/mozilla/add-ons/webextensions/user_interface/browser_action/index.html index 55ce89a9c7..852314f536 100644 --- a/files/es/mozilla/add-ons/webextensions/user_interface/browser_action/index.html +++ b/files/es/mozilla/add-ons/webextensions/user_interface/browser_action/index.html @@ -1,9 +1,10 @@ --- title: Botón de la Barra de Herramientas -slug: Mozilla/Add-ons/WebExtensions/user_interface/Accion_navegador +slug: Mozilla/Add-ons/WebExtensions/user_interface/Browser_action tags: - WebExtension translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Browser_action +original_slug: Mozilla/Add-ons/WebExtensions/user_interface/Accion_navegador ---
    {{AddonSidebar}}
    diff --git a/files/es/mozilla/add-ons/webextensions/what_are_webextensions/index.html b/files/es/mozilla/add-ons/webextensions/what_are_webextensions/index.html index eca9f0ff30..558aae636e 100644 --- a/files/es/mozilla/add-ons/webextensions/what_are_webextensions/index.html +++ b/files/es/mozilla/add-ons/webextensions/what_are_webextensions/index.html @@ -1,10 +1,11 @@ --- title: ¿Qué son las extensiones? -slug: Mozilla/Add-ons/WebExtensions/Que_son_las_WebExtensions +slug: Mozilla/Add-ons/WebExtensions/What_are_WebExtensions tags: - WebExtensions - extensiones translation_of: Mozilla/Add-ons/WebExtensions/What_are_WebExtensions +original_slug: Mozilla/Add-ons/WebExtensions/Que_son_las_WebExtensions ---
    {{AddonSidebar}}
    diff --git a/files/es/mozilla/add-ons/webextensions/your_first_webextension/index.html b/files/es/mozilla/add-ons/webextensions/your_first_webextension/index.html index d444b69f88..1a2ad67967 100644 --- a/files/es/mozilla/add-ons/webextensions/your_first_webextension/index.html +++ b/files/es/mozilla/add-ons/webextensions/your_first_webextension/index.html @@ -1,10 +1,11 @@ --- title: Tu primera extensión -slug: Mozilla/Add-ons/WebExtensions/Tu_primera_WebExtension +slug: Mozilla/Add-ons/WebExtensions/Your_first_WebExtension tags: - Guía - WebExtension translation_of: Mozilla/Add-ons/WebExtensions/Your_first_WebExtension +original_slug: Mozilla/Add-ons/WebExtensions/Tu_primera_WebExtension ---
    {{AddonSidebar}}
    diff --git a/files/es/mozilla/add-ons/webextensions/your_second_webextension/index.html b/files/es/mozilla/add-ons/webextensions/your_second_webextension/index.html index 559320eca0..44fe75923e 100644 --- a/files/es/mozilla/add-ons/webextensions/your_second_webextension/index.html +++ b/files/es/mozilla/add-ons/webextensions/your_second_webextension/index.html @@ -1,9 +1,10 @@ --- title: Tu segunda extensión -slug: Mozilla/Add-ons/WebExtensions/Tutorial +slug: Mozilla/Add-ons/WebExtensions/Your_second_WebExtension tags: - WebExtensions translation_of: Mozilla/Add-ons/WebExtensions/Your_second_WebExtension +original_slug: Mozilla/Add-ons/WebExtensions/Tutorial ---
    {{AddonSidebar}}
    diff --git a/files/es/mozilla/developer_guide/build_instructions/index.html b/files/es/mozilla/developer_guide/build_instructions/index.html index 8322104d8e..afb282fee8 100644 --- a/files/es/mozilla/developer_guide/build_instructions/index.html +++ b/files/es/mozilla/developer_guide/build_instructions/index.html @@ -1,10 +1,11 @@ --- title: Compilar e instalar -slug: Compilar_e_instalar +slug: Mozilla/Developer_guide/Build_Instructions tags: - Documentación_de_compilado translation_of: Mozilla/Developer_guide/Build_Instructions translation_of_original: Build_and_Install +original_slug: Compilar_e_instalar ---

    NOTE: Do not make substantive changes to this document without consulting Benjamin Smedberg <benjamin@smedbergs.us> or one of the build-config peers.

    diff --git a/files/es/mozilla/developer_guide/mozilla_build_faq/index.html b/files/es/mozilla/developer_guide/mozilla_build_faq/index.html index 6e0c380577..131d4c368f 100644 --- a/files/es/mozilla/developer_guide/mozilla_build_faq/index.html +++ b/files/es/mozilla/developer_guide/mozilla_build_faq/index.html @@ -1,10 +1,11 @@ --- title: Preguntas frecuentes sobre la compilación de Mozilla -slug: Mozilla/Developer_guide/Preguntas_frecuentes_sobre_la_compilación_de_Mozilla +slug: Mozilla/Developer_guide/Mozilla_build_FAQ tags: - Documentación_de_compilado - NecesitaRevisiónGramatical translation_of: Mozilla/Developer_guide/Mozilla_build_FAQ +original_slug: Mozilla/Developer_guide/Preguntas_frecuentes_sobre_la_compilación_de_Mozilla ---

    Mira también:

    diff --git a/files/es/mozilla/developer_guide/source_code/cvs/index.html b/files/es/mozilla/developer_guide/source_code/cvs/index.html index 248231aee9..06e73631d4 100644 --- a/files/es/mozilla/developer_guide/source_code/cvs/index.html +++ b/files/es/mozilla/developer_guide/source_code/cvs/index.html @@ -1,9 +1,10 @@ --- title: Código fuente de Mozilla (CVS) -slug: Mozilla/Developer_guide/Source_Code/Código_fuente_de_Mozilla_(CVS) +slug: Mozilla/Developer_guide/Source_Code/CVS tags: - Documentación_de_compilado translation_of: Mozilla/Developer_guide/Source_Code/CVS +original_slug: Mozilla/Developer_guide/Source_Code/Código_fuente_de_Mozilla_(CVS) ---

     

    Aquellos que desarrollan de forma muy activa pueden comprobar el último código fuente utilizando CVS. Si vas a realizar parches y arreglos este es el método más adecuado, porque te permite ver los últimos cambios y unirlos con los tuyos.

    diff --git a/files/es/mozilla/firefox/releases/1.5/index.html b/files/es/mozilla/firefox/releases/1.5/index.html index 2372dd0f81..c79ae70942 100644 --- a/files/es/mozilla/firefox/releases/1.5/index.html +++ b/files/es/mozilla/firefox/releases/1.5/index.html @@ -1,6 +1,6 @@ --- title: Firefox 1.5 para Desarrolladores -slug: Firefox_1.5_para_Desarrolladores +slug: Mozilla/Firefox/Releases/1.5 tags: - CSS - Complementos @@ -18,6 +18,7 @@ tags: - XUL - extensiones translation_of: Mozilla/Firefox/Releases/1.5 +original_slug: Firefox_1.5_para_Desarrolladores ---
    {{FirefoxSidebar}}

    Firefox 1.5

    diff --git a/files/es/mozilla/firefox/releases/19/index.html b/files/es/mozilla/firefox/releases/19/index.html index bf38aea264..c5ebfd438a 100644 --- a/files/es/mozilla/firefox/releases/19/index.html +++ b/files/es/mozilla/firefox/releases/19/index.html @@ -1,7 +1,8 @@ --- title: Firefox 19 para Desarrolladores -slug: Firefox_19_para_desarrolladores +slug: Mozilla/Firefox/Releases/19 translation_of: Mozilla/Firefox/Releases/19 +original_slug: Firefox_19_para_desarrolladores ---
    {{FirefoxSidebar}}
    diff --git a/files/es/mozilla/firefox/releases/2/adding_feed_readers_to_firefox/index.html b/files/es/mozilla/firefox/releases/2/adding_feed_readers_to_firefox/index.html index 5b8c50bc83..75693c99a7 100644 --- a/files/es/mozilla/firefox/releases/2/adding_feed_readers_to_firefox/index.html +++ b/files/es/mozilla/firefox/releases/2/adding_feed_readers_to_firefox/index.html @@ -1,10 +1,11 @@ --- title: Añadir lectores de canales a Firefox -slug: Añadir_lectores_de_canales_a_Firefox +slug: Mozilla/Firefox/Releases/2/Adding_feed_readers_to_Firefox tags: - RSS - Todas_las_Categorías translation_of: Mozilla/Firefox/Releases/2/Adding_feed_readers_to_Firefox +original_slug: Añadir_lectores_de_canales_a_Firefox ---
    {{FirefoxSidebar}}

    A partir de Firefox 2, Firefox permite seleccionar diferentes lectores de canales RSS o Atom para usarlos cuando se trata de leer un canal. Este artículo proporciona información sobre cómo añadir lectores adicionales no admitidos por defecto.

    diff --git a/files/es/mozilla/firefox/releases/2/index.html b/files/es/mozilla/firefox/releases/2/index.html index 54da671995..75aa69c5f6 100644 --- a/files/es/mozilla/firefox/releases/2/index.html +++ b/files/es/mozilla/firefox/releases/2/index.html @@ -1,6 +1,6 @@ --- title: Firefox 2 para desarrolladores -slug: Firefox_2_para_desarrolladores +slug: Mozilla/Firefox/Releases/2 tags: - CSS - Complementos @@ -18,6 +18,7 @@ tags: - XUL - extensiones translation_of: Mozilla/Firefox/Releases/2 +original_slug: Firefox_2_para_desarrolladores ---
    {{FirefoxSidebar}}

    Nuevas características para desarrolladores en Firefox 2

    diff --git a/files/es/mozilla/firefox/releases/2/security_changes/index.html b/files/es/mozilla/firefox/releases/2/security_changes/index.html index 43b55fff7c..54ca7c208a 100644 --- a/files/es/mozilla/firefox/releases/2/security_changes/index.html +++ b/files/es/mozilla/firefox/releases/2/security_changes/index.html @@ -1,10 +1,11 @@ --- title: Seguridad en Firefox 2 -slug: Seguridad_en_Firefox_2 +slug: Mozilla/Firefox/Releases/2/Security_changes tags: - Seguridad - Todas_las_Categorías translation_of: Mozilla/Firefox/Releases/2/Security_changes +original_slug: Seguridad_en_Firefox_2 ---
    {{FirefoxSidebar}}

    Firefox 2 tiene tanto SSLv2 como la débil "exportación" de juegos de claves desactivados por defecto, en favor de SSLv3. Esto proporciona mejoras en la seguridad.

    diff --git a/files/es/mozilla/firefox/releases/3.5/index.html b/files/es/mozilla/firefox/releases/3.5/index.html index 5043206fe8..4b64f3bb91 100644 --- a/files/es/mozilla/firefox/releases/3.5/index.html +++ b/files/es/mozilla/firefox/releases/3.5/index.html @@ -1,7 +1,8 @@ --- title: Firefox 3.5 para desarrolladores -slug: Firefox_3.5_para_desarrolladores +slug: Mozilla/Firefox/Releases/3.5 translation_of: Mozilla/Firefox/Releases/3.5 +original_slug: Firefox_3.5_para_desarrolladores ---
    {{FirefoxSidebar}}

    Firefox 3.5 implementa nuevas funcionalidades, además de agregar y mejorar el funcionamiento de una amplia variedad de estándares web. Este artículo ofrece una extensa lista con enlaces a artículos que explican estas grandes mejoras.

    diff --git a/files/es/mozilla/firefox/releases/3/dom_improvements/index.html b/files/es/mozilla/firefox/releases/3/dom_improvements/index.html index dcc39ab4a6..025f0676a1 100644 --- a/files/es/mozilla/firefox/releases/3/dom_improvements/index.html +++ b/files/es/mozilla/firefox/releases/3/dom_improvements/index.html @@ -1,11 +1,12 @@ --- title: Mejoras DOM en Firefox 3 -slug: Mejoras_DOM_en_Firefox_3 +slug: Mozilla/Firefox/Releases/3/DOM_improvements tags: - DOM - Firefox 3 - Todas_las_Categorías translation_of: Mozilla/Firefox/Releases/3/DOM_improvements +original_slug: Mejoras_DOM_en_Firefox_3 ---
    {{FirefoxSidebar}}

    {{ Fx_minversion_header(3) }}

    diff --git a/files/es/mozilla/firefox/releases/3/full_page_zoom/index.html b/files/es/mozilla/firefox/releases/3/full_page_zoom/index.html index 106a680dfa..dee3e1f3ab 100644 --- a/files/es/mozilla/firefox/releases/3/full_page_zoom/index.html +++ b/files/es/mozilla/firefox/releases/3/full_page_zoom/index.html @@ -1,7 +1,8 @@ --- title: Zoom a página completa -slug: Zoom_a_página_completa +slug: Mozilla/Firefox/Releases/3/Full_page_zoom translation_of: Mozilla/Firefox/Releases/3/Full_page_zoom +original_slug: Zoom_a_página_completa ---
    {{FirefoxSidebar}}

    {{ Fx_minversion_header(3) }} {{ Gecko_minversion_header(1.9) }}

    diff --git a/files/es/mozilla/firefox/releases/3/index.html b/files/es/mozilla/firefox/releases/3/index.html index 1456bfb969..a46efa65b3 100644 --- a/files/es/mozilla/firefox/releases/3/index.html +++ b/files/es/mozilla/firefox/releases/3/index.html @@ -1,9 +1,10 @@ --- title: Firefox 3 para desarrolladores -slug: Firefox_3_para_desarrolladores +slug: Mozilla/Firefox/Releases/3 tags: - Firefox 3 translation_of: Mozilla/Firefox/Releases/3 +original_slug: Firefox_3_para_desarrolladores ---
    {{FirefoxSidebar}}

    Si eres un desarrollador que intenta ponerse al día con todas las nuevas características de Firefox 3, este es el lugar perfecto para empezar. Este artículo proporciona una lista de nuevos artículos que tratan sobre las características añadidas a Firefox 3. Aunque no cubre necesariamente todos los pequeños cambios, te ayudará a conocer mejor las mejoras más importantes.

    diff --git a/files/es/mozilla/firefox/releases/3/notable_bugs_fixed/index.html b/files/es/mozilla/firefox/releases/3/notable_bugs_fixed/index.html index 5dbc833d4a..51660068f7 100644 --- a/files/es/mozilla/firefox/releases/3/notable_bugs_fixed/index.html +++ b/files/es/mozilla/firefox/releases/3/notable_bugs_fixed/index.html @@ -1,9 +1,10 @@ --- title: Bugs importantes solucionados en Firefox 3 -slug: Bugs_importantes_solucionados_en_Firefox_3 +slug: Mozilla/Firefox/Releases/3/Notable_bugs_fixed tags: - Firefox 3 translation_of: Mozilla/Firefox/Releases/3/Notable_bugs_fixed +original_slug: Bugs_importantes_solucionados_en_Firefox_3 ---
    {{FirefoxSidebar}}

    {{ Fx_minversion_header(3) }}

    diff --git a/files/es/mozilla/firefox/releases/3/svg_improvements/index.html b/files/es/mozilla/firefox/releases/3/svg_improvements/index.html index 701a6640f8..66be9d4961 100644 --- a/files/es/mozilla/firefox/releases/3/svg_improvements/index.html +++ b/files/es/mozilla/firefox/releases/3/svg_improvements/index.html @@ -1,11 +1,12 @@ --- title: Mejoras SVG en Firefox 3 -slug: Mejoras_SVG_en_Firefox_3 +slug: Mozilla/Firefox/Releases/3/SVG_improvements tags: - Firefox 3 - SVG - Todas_las_Categorías translation_of: Mozilla/Firefox/Releases/3/SVG_improvements +original_slug: Mejoras_SVG_en_Firefox_3 ---
    {{FirefoxSidebar}}

    {{ Fx_minversion_header(3) }}

    diff --git a/files/es/mozilla/firefox/releases/3/templates/index.html b/files/es/mozilla/firefox/releases/3/templates/index.html index 499fa226a2..1cba453e1e 100644 --- a/files/es/mozilla/firefox/releases/3/templates/index.html +++ b/files/es/mozilla/firefox/releases/3/templates/index.html @@ -1,9 +1,10 @@ --- title: Plantillas en Firefox 3 -slug: Plantillas_en_Firefox_3 +slug: Mozilla/Firefox/Releases/3/Templates tags: - Firefox 3 translation_of: Mozilla/Firefox/Releases/3/Templates +original_slug: Plantillas_en_Firefox_3 ---
    {{FirefoxSidebar}}

    {{ Fx_minversion_header(3) }}

    diff --git a/files/es/mozilla/firefox/releases/3/updating_extensions/index.html b/files/es/mozilla/firefox/releases/3/updating_extensions/index.html index fc3f91addd..4c50f8aabc 100644 --- a/files/es/mozilla/firefox/releases/3/updating_extensions/index.html +++ b/files/es/mozilla/firefox/releases/3/updating_extensions/index.html @@ -1,9 +1,10 @@ --- title: Actualizar extensiones para Firefox 3 -slug: Actualizar_extensiones_para_Firefox_3 +slug: Mozilla/Firefox/Releases/3/Updating_extensions tags: - Firefox 3 translation_of: Mozilla/Firefox/Releases/3/Updating_extensions +original_slug: Actualizar_extensiones_para_Firefox_3 ---
    {{FirefoxSidebar}}

    {{ Fx_minversion_header(3) }}

    diff --git a/files/es/mozilla/firefox/releases/3/updating_web_applications/index.html b/files/es/mozilla/firefox/releases/3/updating_web_applications/index.html index e81f21fa49..868d25f47b 100644 --- a/files/es/mozilla/firefox/releases/3/updating_web_applications/index.html +++ b/files/es/mozilla/firefox/releases/3/updating_web_applications/index.html @@ -1,9 +1,10 @@ --- title: Actualizar aplicaciones web para Firefox 3 -slug: Actualizar_aplicaciones_web_para_Firefox_3 +slug: Mozilla/Firefox/Releases/3/Updating_web_applications tags: - Firefox 3 translation_of: Mozilla/Firefox/Releases/3/Updating_web_applications +original_slug: Actualizar_aplicaciones_web_para_Firefox_3 ---
    {{FirefoxSidebar}}
    diff --git a/files/es/mozilla/firefox/releases/3/xul_improvements_in_firefox_3/index.html b/files/es/mozilla/firefox/releases/3/xul_improvements_in_firefox_3/index.html index e649db326a..172b327b44 100644 --- a/files/es/mozilla/firefox/releases/3/xul_improvements_in_firefox_3/index.html +++ b/files/es/mozilla/firefox/releases/3/xul_improvements_in_firefox_3/index.html @@ -1,11 +1,12 @@ --- title: Mejoras XUL en Firefox 3 -slug: Mejoras_XUL_en_Firefox_3 +slug: Mozilla/Firefox/Releases/3/XUL_improvements_in_Firefox_3 tags: - Firefox 3 - Todas_las_Categorías - XUL translation_of: Mozilla/Firefox/Releases/3/XUL_improvements_in_Firefox_3 +original_slug: Mejoras_XUL_en_Firefox_3 ---
    {{FirefoxSidebar}}

    {{ Fx_minversion_header(3) }}

    diff --git a/files/es/orphaned/actualizar_extensiones_para_firefox_3/actualizar_extensiones_para_firefox_3/index.html b/files/es/orphaned/actualizar_extensiones_para_firefox_3/actualizar_extensiones_para_firefox_3/index.html index e4c788c5bb..f4c2d0d435 100644 --- a/files/es/orphaned/actualizar_extensiones_para_firefox_3/actualizar_extensiones_para_firefox_3/index.html +++ b/files/es/orphaned/actualizar_extensiones_para_firefox_3/actualizar_extensiones_para_firefox_3/index.html @@ -1,8 +1,10 @@ --- title: Actualizar extensiones para Firefox 3 -slug: Actualizar_extensiones_para_Firefox_3/Actualizar_extensiones_para_Firefox_3 +slug: >- + orphaned/Actualizar_extensiones_para_Firefox_3/Actualizar_extensiones_para_Firefox_3 tags: - Firefox 3 +original_slug: Actualizar_extensiones_para_Firefox_3/Actualizar_extensiones_para_Firefox_3 ---