{"id":12641,"date":"2021-11-16T17:15:58","date_gmt":"2021-11-16T15:15:58","guid":{"rendered":"https:\/\/www.espai.es\/blog\/?p=12641"},"modified":"2021-11-17T17:56:54","modified_gmt":"2021-11-17T15:56:54","slug":"es2019-novedades-de-javascript-en-2019","status":"publish","type":"post","link":"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/","title":{"rendered":"ES2019: Novedades de JavaScript en 2019"},"content":{"rendered":"<p>Este es el tercero de una serie de art\u00edculos donde estamos repasando <a href=\"https:\/\/github.com\/tc39\/proposals\/blob\/master\/finished-proposals.md\" target=\"_blank\" rel=\"noopener\">las novedades de los \u00faltimos a\u00f1os en JavaScript<\/a>. En los anteriores art\u00edculos ya vimos las <a href=\"https:\/\/www.espai.es\/blog\/2021\/09\/es2020-novedades-de-javascript-en-2020\/\" target=\"_blank\" rel=\"noopener\">novedades de JavaScript en 2020<\/a> y <a href=\"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/\" target=\"_blank\" rel=\"noopener\">2021.<\/a> En este art\u00edculo volveremos a subirnos a la m\u00e1quina del tiempo de H.G. Wells para viajar un par de a\u00f1os al pasado y repasar las novedades de JavaScript en 2019, es decir, las novedades de <strong>ES2019<\/strong>.<\/p>\n<p>Al igual que en los art\u00edculos anteriores, me voy a centrar exclusivamente en aquellas novedades de ES2019 que sean m\u00e1s asequibles. Las novedades que impliquen un uso avanzado del lenguaje las comentar\u00e9 simplemente de pasada. Aunque ya os adelanto (spoilers!) que este a\u00f1o 2019 las novedades no fueron gran cosa.<\/p>\n<h2><a href=\"https:\/\/github.com\/tc39\/proposal-optional-catch-binding\" target=\"_blank\" rel=\"noopener\">Optional catch binding<\/a><\/h2>\n<p>Antes en el catch era obligatorio indicar un par\u00e1metro para el error. Desde ES2019 ya no es obligatorio.<\/p>\n<p>Antes:<\/p>\n<pre>try {\r\n\u00a0 throw new Error(\"Error extremadamente grave!\");\r\n} \r\ncatch(error) {\r\n\u00a0 console.log(error);\r\n}\r\n<\/pre>\n<p>Ahora:<\/p>\n<pre>try {\r\n  throw new Error(\"Error extremadamente grave!\");\r\n} \r\ncatch {\r\n  console.log(\"Algo muy feo ha pasado!\"); \/\/ no usamos el error\r\n}\r\n<\/pre>\n<h2><a href=\"https:\/\/github.com\/tc39\/proposal-json-superset\" target=\"_blank\" rel=\"noopener\">JSON superset<\/a> y <a href=\"https:\/\/github.com\/tc39\/proposal-well-formed-stringify\" target=\"_blank\" rel=\"noopener\">Well-formed JSON.stringify<\/a><\/h2>\n<p>Estas dos novedades, como est\u00e1n relacionadas con JSON, y adem\u00e1s tienen escaso inter\u00e9s, he decidido unificarlas.<\/p>\n<p>En ambos casos, se trata mas bien de correcci\u00f3n de problemas, mas que de novedades.<\/p>\n<p>La primera novedad se refiere a que antes hab\u00eda 2 caracteres (los extremadamente poco usados U+2028 y U+2029) no permitidos dentro de un JSON, que ahora si est\u00e1n permitidos.<\/p>\n<p>En el caso de la segunda novedad, la especificaci\u00f3n indica que JSON debe de ser codificado usando UTF-8, pero el problema es que <strong>JSON.stringify()<\/strong> pod\u00eda devolver caracteres que no tienen representaci\u00f3n en UTF-8. A partir de ES2019 simplemente para estos caracteres se usan secuencias de escape.<\/p>\n<h2><a href=\"https:\/\/github.com\/tc39\/proposal-Symbol-description\" target=\"_blank\" rel=\"noopener\">Symbol.prototype.description<\/a><\/h2>\n<p>Antes, cuando se creaba un <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Symbol\" target=\"_blank\" rel=\"noopener\">S\u00edmbolo<\/a>, la descripci\u00f3n que le d\u00e1bamos no era accesible directamente, tan solo indirectamente a trav\u00e9s del m\u00e9todo <strong>toString()<\/strong>. Ahora disponemos de una nueva propiedad llamada <em><strong>description<\/strong><\/em> que nos proporciona de forma m\u00e1s directa la descripci\u00f3n.<\/p>\n<pre>const EJEMPLO = Symbol(\"Descripci\u00f3n\"); \/\/ creamos un s\u00edmbolo\r\nalert(EJEMPLO.toString()); \/\/ forma indirecta de obtener la descripci\u00f3n\r\nalert(EJEMPLO.description); \/\/ nueva forma directa de obtener la descripci\u00f3n\r\n<\/pre>\n<h2><a href=\"https:\/\/github.com\/tc39\/Function-prototype-toString-revision\" target=\"_blank\" rel=\"noopener\">Function.prototype.toString revision<\/a><\/h2>\n<p>En ES2019 se ha mejorado el m\u00e9todo <strong>toString()<\/strong> de las funciones. Este m\u00e9todo nos devuelve el c\u00f3digo de una funci\u00f3n. Entre estas mejoras, ahora si que nos devuelve los comentarios del c\u00f3digo.<\/p>\n<pre>function saluda() { alert(\"Hola\"); \/* comentario en el c\u00f3digo *\/ }\r\nalert(saluda.toString());\r\n<\/pre>\n<h2><a href=\"https:\/\/github.com\/tc39\/proposal-object-from-entries\" target=\"_blank\" rel=\"noopener\">Object.fromEntries<\/a><\/h2>\n<p>A mi ver, una de las pocas novedades interesantes de ES2019. Se trata de un nuevo m\u00e9todo est\u00e1tico de la clase <strong>Object<\/strong> para convertir una lista de elementos \u00abclave-valor\u00bb en un objeto.<\/p>\n<pre>var profesor = Object.fromEntries([['nombre', 'Abel'], ['apellidos', 'Camarena']]);\r\nconsole.log(profesor.nombre + \" \" + profesor.apellidos);\r\n<\/pre>\n<h2><a href=\"https:\/\/github.com\/tc39\/proposal-string-left-right-trim\" target=\"_blank\" rel=\"noopener\">String.prototype.{trimStart,trimEnd}<\/a><\/h2>\n<p>Aunque no hab\u00eda especificaci\u00f3n que lo pidiese, la mayor\u00eda de los navegadores ten\u00edan los m\u00e9todos <strong>trimLeft()<\/strong> y <strong>trimRight()<\/strong> para <strong>eliminar espacios en blanco al principio y al final de una cadena de texto<\/strong>. En ES2019 estos m\u00e9todos fueron renombrados a <strong>trimStart()<\/strong> y <strong>trimEnd()<\/strong> para mantener coherencia con los m\u00e9todos <strong>padStart()<\/strong> y <strong>padEnd()<\/strong>. Los m\u00e9todos <strong>trimLeft()<\/strong> y <strong>trimRight()<\/strong> se mantienen como \u00abalias\u00bb para no romper la compatibilidad.<\/p>\n<pre>var s = \"     Hola \".trimStart() + \" mundo!     \".trimEnd();\r\nalert(\"[\"+s+\"]\");\r\n<\/pre>\n<h2><a href=\"http:\/\/Array.prototype.{flat,flatMap}\" target=\"_blank\" rel=\"noopener\">Array.prototype.{flat,flatMap}<\/a><\/h2>\n<p>Y terminamos con otra interesante novedad de ES2019.<\/p>\n<p>Se trata de un par de nuevos m\u00e9todos para los arrays: el m\u00e9todo <strong>flat()<\/strong> y el m\u00e9todo <strong>flatMap()<\/strong>.<\/p>\n<p>Empecemos por el m\u00e1s sencillo de los dos, el m\u00e9todo <strong>flat()<\/strong>. Se trata de un m\u00e9todo que nos devuelve una copia pero con menos dimensiones, es decir, nos devuelve el mismo array \u00abaplanado\u00bb. Lo mejor es ver un ejemplo:<\/p>\n<pre>var a = [ \/\/ array multi dimensional\r\n  [1, [2, 3, [4, 5, [6, 7]]]],\r\n  [8, 9, [10, 11], [12]]\r\n];\r\nconsole.log(a.flat());  \/\/ aplanamos 1 dimensi\u00f3n\r\nconsole.log(a.flat(2)); \/\/ aplanamos 2 dimensiones\r\nconsole.log(a.flat(Infinity)); \/\/ aplanamos totalmente\r\n\/\/ esta ultima instrucci\u00f3n muestra en la consola el\r\n\/\/ array unidimensional devuelto:\r\n\/\/ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\r\n<\/pre>\n<p>Como par\u00e1metro indicamos los niveles de profundidad que queremos eliminar, o bien <strong>Inifity<\/strong> para obtener un array totalmente aplanado, es decir, unidimensional.<\/p>\n<p>Por su parte, el m\u00e9todo <strong>flatMap()<\/strong> es una combinaci\u00f3n de los m\u00e9todos <strong>flat()<\/strong> y <strong>map()<\/strong>. Concretamente, es lo mismo que usar el m\u00e9todo <strong>map()<\/strong> y despu\u00e9s el m\u00e9todo <strong>flat()<\/strong>. Veamos otro ejemplo:<\/p>\n<pre>\/\/ en este ejemplo, por cada item del array vamos a devolver \r\n\/\/ otro array con su doble y con su valor elevado al cuadrado\r\nvar a = [1,2,3,4,5];\r\nconsole.log(a.map(val=&gt;[val*2, val*val])); \/\/ solo con map\r\n\/\/ esta ultima instrucci\u00f3n muestra en la consola:\r\n\/\/ [[2, 1], [4, 4], [6, 9], [8, 16], [10, 25]]\r\nconsole.log(a.flatMap(val=&gt;[val*2, val*val])); \/\/ con flatMap\r\n\/\/ esta ultima instrucci\u00f3n muestra en la consola:\r\n\/\/ [2, 1, 4, 4, 6, 9, 8, 16, 10, 25]\r\n<\/pre>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Como pod\u00e9is ver, ES2019 fue una actualizaci\u00f3n aburrida (o tranquila, seg\u00fan se mire) de JavaScript. Y es que, afortunadamente, no todas las actualizaciones iban a ser tan animadas como lo fue ES2015.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Este es el tercero de una serie de art\u00edculos donde estamos repasando las novedades de los \u00faltimos a\u00f1os en JavaScript. En los anteriores art\u00edculos ya vimos las novedades de JavaScript en 2020 y 2021. En este art\u00edculo volveremos a subirnos a la m\u00e1quina del tiempo&#8230;<\/p>\n","protected":false},"author":23,"featured_media":12655,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_ef_editorial_meta_date_first-draft-date":"","_ef_editorial_meta_paragraph_assignment":"","_ef_editorial_meta_checkbox_needs-photo":"","_ef_editorial_meta_number_word-count":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[7,5],"tags":[253],"class_list":["post-12641","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-diseno-web","category-programacion","tag-javascript"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ES2019: Novedades de JavaScript en 2019 - Blog Escola Espai<\/title>\n<meta name=\"description\" content=\"JavaScript es un lenguaje vivo y cada a\u00f1o recibe algunas novedades. En este art\u00edculo vamos a ver las novedades del a\u00f1o 2019, es decir, ES2019.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ES2019: Novedades de JavaScript en 2019 - Blog Escola Espai\" \/>\n<meta property=\"og:description\" content=\"JavaScript es un lenguaje vivo y cada a\u00f1o recibe algunas novedades. En este art\u00edculo vamos a ver las novedades del a\u00f1o 2019, es decir, ES2019.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Escola Espai\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-16T15:15:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-17T15:56:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/11\/es2019.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Abel Camarena\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Abel Camarena\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/\"},\"author\":{\"name\":\"Abel Camarena\",\"@id\":\"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897\"},\"headline\":\"ES2019: Novedades de JavaScript en 2019\",\"datePublished\":\"2021-11-16T15:15:58+00:00\",\"dateModified\":\"2021-11-17T15:56:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/\"},\"wordCount\":654,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/11\/es2019.jpg\",\"keywords\":[\"javascript\"],\"articleSection\":[\"Dise\u00f1o Web\",\"Programaci\u00f3n\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/\",\"url\":\"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/\",\"name\":\"ES2019: Novedades de JavaScript en 2019 - Blog Escola Espai\",\"isPartOf\":{\"@id\":\"https:\/\/www.espai.es\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/11\/es2019.jpg\",\"datePublished\":\"2021-11-16T15:15:58+00:00\",\"dateModified\":\"2021-11-17T15:56:54+00:00\",\"author\":{\"@id\":\"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897\"},\"description\":\"JavaScript es un lenguaje vivo y cada a\u00f1o recibe algunas novedades. En este art\u00edculo vamos a ver las novedades del a\u00f1o 2019, es decir, ES2019.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/#primaryimage\",\"url\":\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/11\/es2019.jpg\",\"contentUrl\":\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/11\/es2019.jpg\",\"width\":1000,\"height\":500,\"caption\":\"es2019\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.espai.es\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ES2019: Novedades de JavaScript en 2019\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.espai.es\/blog\/#website\",\"url\":\"https:\/\/www.espai.es\/blog\/\",\"name\":\"Blog Escola Espai\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.espai.es\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897\",\"name\":\"Abel Camarena\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.espai.es\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/035501b0f14e120b1a49121758e2056b8d589fc43b9d3c3ad3670a197a90dddf?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/035501b0f14e120b1a49121758e2056b8d589fc43b9d3c3ad3670a197a90dddf?s=96&d=mm&r=g\",\"caption\":\"Abel Camarena\"},\"sameAs\":[\"http:\/\/www.espai.es\"],\"url\":\"https:\/\/www.espai.es\/blog\/author\/abel\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ES2019: Novedades de JavaScript en 2019 - Blog Escola Espai","description":"JavaScript es un lenguaje vivo y cada a\u00f1o recibe algunas novedades. En este art\u00edculo vamos a ver las novedades del a\u00f1o 2019, es decir, ES2019.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/","og_locale":"es_ES","og_type":"article","og_title":"ES2019: Novedades de JavaScript en 2019 - Blog Escola Espai","og_description":"JavaScript es un lenguaje vivo y cada a\u00f1o recibe algunas novedades. En este art\u00edculo vamos a ver las novedades del a\u00f1o 2019, es decir, ES2019.","og_url":"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/","og_site_name":"Blog Escola Espai","article_published_time":"2021-11-16T15:15:58+00:00","article_modified_time":"2021-11-17T15:56:54+00:00","og_image":[{"width":1000,"height":500,"url":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/11\/es2019.jpg","type":"image\/jpeg"}],"author":"Abel Camarena","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Abel Camarena","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/#article","isPartOf":{"@id":"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/"},"author":{"name":"Abel Camarena","@id":"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897"},"headline":"ES2019: Novedades de JavaScript en 2019","datePublished":"2021-11-16T15:15:58+00:00","dateModified":"2021-11-17T15:56:54+00:00","mainEntityOfPage":{"@id":"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/"},"wordCount":654,"commentCount":0,"image":{"@id":"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/#primaryimage"},"thumbnailUrl":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/11\/es2019.jpg","keywords":["javascript"],"articleSection":["Dise\u00f1o Web","Programaci\u00f3n"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/","url":"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/","name":"ES2019: Novedades de JavaScript en 2019 - Blog Escola Espai","isPartOf":{"@id":"https:\/\/www.espai.es\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/#primaryimage"},"image":{"@id":"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/#primaryimage"},"thumbnailUrl":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/11\/es2019.jpg","datePublished":"2021-11-16T15:15:58+00:00","dateModified":"2021-11-17T15:56:54+00:00","author":{"@id":"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897"},"description":"JavaScript es un lenguaje vivo y cada a\u00f1o recibe algunas novedades. En este art\u00edculo vamos a ver las novedades del a\u00f1o 2019, es decir, ES2019.","breadcrumb":{"@id":"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/#primaryimage","url":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/11\/es2019.jpg","contentUrl":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/11\/es2019.jpg","width":1000,"height":500,"caption":"es2019"},{"@type":"BreadcrumbList","@id":"https:\/\/www.espai.es\/blog\/2021\/11\/es2019-novedades-de-javascript-en-2019\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.espai.es\/blog\/"},{"@type":"ListItem","position":2,"name":"ES2019: Novedades de JavaScript en 2019"}]},{"@type":"WebSite","@id":"https:\/\/www.espai.es\/blog\/#website","url":"https:\/\/www.espai.es\/blog\/","name":"Blog Escola Espai","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.espai.es\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897","name":"Abel Camarena","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.espai.es\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/035501b0f14e120b1a49121758e2056b8d589fc43b9d3c3ad3670a197a90dddf?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/035501b0f14e120b1a49121758e2056b8d589fc43b9d3c3ad3670a197a90dddf?s=96&d=mm&r=g","caption":"Abel Camarena"},"sameAs":["http:\/\/www.espai.es"],"url":"https:\/\/www.espai.es\/blog\/author\/abel\/"}]}},"jetpack_featured_media_url":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/11\/es2019.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/posts\/12641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/comments?post=12641"}],"version-history":[{"count":13,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/posts\/12641\/revisions"}],"predecessor-version":[{"id":12643,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/posts\/12641\/revisions\/12643"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/media\/12655"}],"wp:attachment":[{"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/media?parent=12641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/categories?post=12641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/tags?post=12641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}