{"id":68,"date":"2014-03-09T11:10:46","date_gmt":"2014-03-09T11:10:46","guid":{"rendered":"http:\/\/www.devinet.es\/blog\/?p=68"},"modified":"2014-03-10T21:57:18","modified_gmt":"2014-03-10T21:57:18","slug":"curiosidades-de-javascript-formas-de-invocar-funciones-parte-1","status":"publish","type":"post","link":"https:\/\/www.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/","title":{"rendered":"Curiosidades de Javascript: Formas de invocar funciones (Parte 1)"},"content":{"rendered":"<p>\u00a1Hola frikazos de la inform\u00e1tica!<\/p>\n<p>Me llamo David Gonz\u00e1lez Shannon, soy medio espa\u00f1ol medio americano alocado, ingeniero inform\u00e1tico (en realidad soy ingeniero multimedia), friki y amante de la programaci\u00f3n.<\/p>\n<p>En septiembre de 2013, empec\u00e9 a trabajar en Devinet como el Wildcard de la empresa, en castellano, la navaja suiza. Al no estar especializado en ninguna tecnolog\u00eda en concreto, pero s\u00ed estar al d\u00eda de todas las novedades tecnol\u00f3gicas, me ha tocado trabajar de: el que se dedica a lo que no se dedican los dem\u00e1s (hay que hacerse \u00fatil). Eso significa que me tengo que adaptar, con la mayor rapidez posible, a cualquier proyecto que requiera una tecnolog\u00eda que desconozcamos. Y precisamente, una de estas tecnolog\u00edas es Javascript.<\/p>\n<p>Personalmente, como vengo del mundo de los lenguajes compilados como C, C++, Objective-C, C#&#8230;, los lenguajes din\u00e1micos como Javascript me fascinan, y este concretamente me fascina tanto que he decidido escribir sobre lo que voy aprendiendo del lenguaje. M\u00e1s que nada, para no olvidarme de ello y, a la vez, poder ayudar a alg\u00fan internauta perdido como yo.<\/p>\n<p>Este art\u00edculo trata sobre las diferentes formas que hay de invocar funciones en Javascript, un tema que me pareci\u00f3 muy curioso cuando lo aprend\u00ed; y esta orientado a gente que tenga nociones b\u00e1sicas de programaci\u00f3n y de programaci\u00f3n orientada a objetos. Si no es vuestro caso, aprended a programar! En serio, os est\u00e1is perdiendo horas y horas de diversi\u00f3n. Aqu\u00ed ten\u00e9is un enlace a Codeacademy <a title=\"Codeacademy\" href=\"http:\/\/www.codecademy.com\" target=\"_blank\">http:\/\/www.codecademy.com<\/a>\u00a0, una web que os ense\u00f1ar\u00e1 a programar en varios lenguajes din\u00e1micos (Javascript, Python, Ruby), y una imagen de un gato tocando el piano:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/i0.wp.com\/www.rowsdowr.com\/wp-content\/uploads\/2011\/07\/icgcek.gif\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\" aligncenter\" alt=\"Gato tocando piano.\" src=\"https:\/\/i0.wp.com\/www.rowsdowr.com\/wp-content\/uploads\/2011\/07\/icgcek.gif?resize=300%2C225\" width=\"300\" height=\"225\" \/><\/a><\/p>\n<p>Como he dicho antes, horas de diversi\u00f3n!<\/p>\n<p>Antes de que siga, he de mencionar que lo que estoy explicando se aplica a Javascript en el navegador, para los que program\u00e1is en node.js, ya sab\u00e9is que las cosas son un poco diferentes.\u00a0Bueno, empecemos.<\/p>\n<p>Hay cuatro formas de llamar a funciones en javascript, pero antes de explicarlas he de hacer una peque\u00f1a introducci\u00f3n a c\u00f3mo son las funciones en Javascript. Todas las funciones en Javascript son Objetos y como tales se pueden asignar a variables, pasar como par\u00e1metros a otras funciones, incluso crear dentro de funciones. Cuando programas en Javascript, lo m\u00e1s normal es pasar como par\u00e1metro a una funci\u00f3n otra funci\u00f3n, que a su vez tiene una funci\u00f3n dentro, que tiene un callback que devuelve una funci\u00f3n, que es guardada por la funci\u00f3n anterior y es asignada como callback a otra&#8230;<\/p>\n<blockquote><p>Need to go deeper, INCEPTION<\/p><\/blockquote>\n<p>Vuelve a mirar la foto del gato&#8230; ya? Sigamos pues.<\/p>\n<p>Adem\u00e1s de ser objetos, todas las funciones en Javascript reciben dos par\u00e1metros ocultos, <em>this<\/em>, que contiene el contexto de la funci\u00f3n, y <em>arguments<\/em>, que es una especie de array (digo especie porque no es una instancia de la clase Array, es una cosa rara). Pues bien, las cuatro formas de llamar a funciones en Javascript se distinguen seg\u00fan el valor que recibe <em>this<\/em>, y son: como m\u00e9todo, como funci\u00f3n normal y \u00abcorriente\u00bb (nada es corriente en Javascript), como constructor y con la funci\u00f3n <em>apply<\/em>.<\/p>\n<h4>Como m\u00e9todo<\/h4>\n<p>El t\u00e9rmino m\u00e9todo deber\u00eda sonarle a todo el mundo que ha programado orientado a objetos, es simplemente el nombre que recibe la funci\u00f3n de una clase. La diferencia con Javascript es que, aunque sea orientado a objetos, no existen clases&#8230;<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/i0.wp.com\/oi41.tinypic.com\/dze7uc.jpg\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\" aligncenter\" alt=\"Tu. WTF!?\" src=\"https:\/\/i0.wp.com\/oi41.tinypic.com\/dze7uc.jpg?resize=350%2C435\" width=\"350\" height=\"435\" \/><\/a><\/p>\n<p>No existen clases porque tiene prototipos, otro paradigma de programaci\u00f3n conocido por poca gente. A\u00fan as\u00ed, en Javascript, toda funci\u00f3n que exista como propiedad de un objeto, se considera como m\u00e9todo por convenci\u00f3n. Por ejemplo:<\/p>\n<pre lang=\"javascript\" line=\"1\" escaped=\"true\">\/\/ Creo un Objeto llamado superSayan con dos propiedades:\r\n\/\/ grito que es un string y grita que es una funci\u00f3n\r\n\r\nvar superSayan = {\r\n    grito: \"Kamehamehaaaa!!!!\",\r\n    grita: function () {\r\n        console.log(this.grito);\r\n    }\r\n}\r\n\r\nsuperSayan.grita(); \/\/ En consola sale \"Kamehamehaaaa!!!!\"<\/pre>\n<p>Como podemos ver, si llamamos a las funciones de esta forma, <em>this<\/em> te da acceso a las propiedades del Objeto al que pertenece la funci\u00f3n, por lo tanto, <em>this<\/em> es el Objeto en s\u00ed, en este caso <em>superSayan<\/em>.<\/p>\n<p>&nbsp;<\/p>\n<h4>Como funci\u00f3n normal y \u00abcorriente\u00bb<\/h4>\n<p>Cuando creas una funci\u00f3n normal y corriente sin asignarla a un Objeto ni nada, piensas \u00abyuhuuuu! mi funci\u00f3n es libre al fin!\u00bb, y yo te digo \u00abMentira, sigue formando parte de The Matrix\u00bb, y tu respondes con un \u00abNooo! Quien soy&#8230; qu\u00e9 es real&#8230; es aire lo que respiro&#8230;?\u00bb, y acabas en un estado de shock por haber estado viviendo una mentira toda tu vida.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/i0.wp.com\/bios.weddingbee.com\/pics\/159830\/this_is_too_much.gif\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\" aligncenter\" alt=\"This is too much\" src=\"https:\/\/i0.wp.com\/bios.weddingbee.com\/pics\/159830\/this_is_too_much.gif?resize=300%2C169\" width=\"300\" height=\"169\" \/><\/a><\/p>\n<p><span style=\"line-height: 1.5em;\">En realidad, cuando creas una funci\u00f3n suelta por el c\u00f3digo, lo que est\u00e1s haciendo es a\u00f1adirla como propiedad del Objeto global, la <em>window<\/em><em>.\u00a0<\/em>Esto incluso ocurre cuando creas una funci\u00f3n dentro de un m\u00e9todo.<em><br \/>\n<\/em><\/span><\/p>\n<pre lang=\"javascript\" line=\"1\" escaped=\"true\">var gritoSuperSayan = \"Kamehamehaaaa de la window!!!!\";\r\nfunction kameHameHaSuelto () {\r\n    return \"Soy libre!\";\r\n}\r\n\r\nvar superSayan = {\r\n    grito: \"Kamehamehaaaa de superSayan!!!!\",\r\n    grita: function () {\r\n        var helper = function () {\r\n            console.log(this.gritoSuperSayan);\r\n            console.log(this.kameHameHaSuelto());\r\n            console.log(this.superSayan.grito);\r\n        }\r\n        helper();\r\n    }\r\n}\r\n\r\nconsole.log('Tiene la window la propiedad superSayan? ', window.hasOwnProperty('superSayan'));\r\n\/\/ true\r\nconsole.log('Tiene la window la propiedad gritoSuperSayan? ', window.hasOwnProperty('gritoSuperSayan'));\r\n\/\/ true\r\nconsole.log('Tiene la window la propiedad kameHameHaSuelto? ', window.hasOwnProperty('kameHameHaSuelto'));\r\n\/\/ true\r\n\r\nsuperSayan.grita();\r\n\/\/ Output:\r\n\/\/ Kamehamehaaaa de la window!!!!\r\n\/\/ Soy libre!\r\n\/\/ Kamehamehaaaa de superSayan!!!!<\/pre>\n<p>Esto es un problema de dise\u00f1o de javascript en s\u00ed como lenguage, \u00a0pero si se tiene en cuenta, no resulta un problema grave. Para los que estamos acostumbrados a que <em>this<\/em> siempre haga referencia al contexto en el que est\u00e1s, hay una trampilla muy simple que usan los programadores de Javascript.<\/p>\n<pre lang=\"javascript\" line=\"1\" escaped=\"true\">var superSayan = {\r\n    grito: \"Kamehamehaaaa de superSayan!!!!\",\r\n    grita: function () {\r\n        var that = this;\r\n        var helper = function () {\r\n            console.log(that.grito);\r\n        }\r\n        helper();\r\n    }\r\n}\r\n\r\nsuperSayan.grita();\r\n\/\/ Output:\r\n\/\/ Kamehamehaaaa de superSayan!!!!<\/pre>\n<p><span style=\"line-height: 1.5em;\">Como podemos ver, usan una variable, que por convenci\u00f3n llaman <\/span><em style=\"line-height: 1.5em;\">that<\/em><span style=\"line-height: 1.5em;\">, en la que almacenan el <\/span><em style=\"line-height: 1.5em;\">this<\/em><span style=\"line-height: 1.5em;\"> deseado.\u00a0Menos mal que este art\u00edculo est\u00e1 escrito en castellano! Sino esto ser\u00eda un poco lioso.<\/span><\/p>\n<p>Bueno, de momento eso es todo amigos.\u00a0En la parte 2 del art\u00edculo acabar\u00e9 de explicar las otras dos formas de invocar funciones en javascript. Mientras tanto, si est\u00e1is interesados en aprender Javascript y ya sois programadores, hay un libro que me ha estado ayudando mucho y que lo recomiendan todos los programadores expertos de Javascript, se llama <a title=\"Javascript: The Good Parts\" href=\"http:\/\/www.amazon.es\/Javascript-Parts-Working-Shallow-JavaScript\/dp\/0596517742\/ref=sr_1_1?ie=UTF8&amp;qid=1394361266&amp;sr=8-1&amp;keywords=javascript+the+good+parts\">\u00abJavascript: The Good Parts\u00bb<\/a>\u00a0y esta escrito por\u00a0<a title=\"Douglas Crockford\" href=\"http:\/\/www.crockford.com\" target=\"_blank\">Douglas Crockford<\/a>, un gur\u00fa de la programaci\u00f3n. Si vais a su web, ver\u00e9is una foto de \u00e9l con Chuck Norris de fondo que inmediatamente te dice \u00abeste t\u00edo sabe de lo que habla\u00bb.<\/p>\n<p>En fin, si ten\u00e9is preguntas o comentarios que hacer, por favor hacedlo en la secci\u00f3n de abajo o pod\u00e9is mandarme un email a <a href=\"mailto:david.shannon@devinet.es\">david.shannon@devinet.es<\/a>.<\/p>\n<p>\u00a1Hasta la pr\u00f3xima frikazos de la inform\u00e1tica!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00a1Hola frikazos de la inform\u00e1tica! Me llamo David Gonz\u00e1lez Shannon, soy medio espa\u00f1ol medio americano alocado, ingeniero inform\u00e1tico (en realidad soy ingeniero multimedia), friki y amante de la programaci\u00f3n. En septiembre de 2013, empec\u00e9 a trabajar en Devinet como el Wildcard de la empresa, en castellano, la navaja suiza. Al no estar especializado en ninguna&#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":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,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[9],"tags":[17,15,16],"class_list":["post-68","post","type-post","status-publish","format-standard","hentry","category-tutorials","tag-funciones","tag-javascript","tag-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Curiosidades de Javascript: Formas de invocar funciones (Parte 1) - El blog de Devinet<\/title>\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.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Curiosidades de Javascript: Formas de invocar funciones (Parte 1) - El blog de Devinet\" \/>\n<meta property=\"og:description\" content=\"\u00a1Hola frikazos de la inform\u00e1tica! Me llamo David Gonz\u00e1lez Shannon, soy medio espa\u00f1ol medio americano alocado, ingeniero inform\u00e1tico (en realidad soy ingeniero multimedia), friki y amante de la programaci\u00f3n. En septiembre de 2013, empec\u00e9 a trabajar en Devinet como el Wildcard de la empresa, en castellano, la navaja suiza. Al no estar especializado en ninguna...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/\" \/>\n<meta property=\"og:site_name\" content=\"El blog de Devinet\" \/>\n<meta property=\"article:published_time\" content=\"2014-03-09T11:10:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-03-10T21:57:18+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.rowsdowr.com\/wp-content\/uploads\/2011\/07\/icgcek.gif\" \/>\n<meta name=\"author\" content=\"David Gonz\u00e1lez Shannon\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Gonz\u00e1lez Shannon\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\\\/\"},\"author\":{\"name\":\"David Gonz\u00e1lez Shannon\",\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/#\\\/schema\\\/person\\\/77a402ae7af312ef2ccdb8fd35082deb\"},\"headline\":\"Curiosidades de Javascript: Formas de invocar funciones (Parte 1)\",\"datePublished\":\"2014-03-09T11:10:46+00:00\",\"dateModified\":\"2014-03-10T21:57:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\\\/\"},\"wordCount\":1031,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.rowsdowr.com\\\/wp-content\\\/uploads\\\/2011\\\/07\\\/icgcek.gif\",\"keywords\":[\"funciones\",\"javascript\",\"tutorial\"],\"articleSection\":[\"Tutoriales\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.devinet.es\\\/blog\\\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\\\/\",\"url\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\\\/\",\"name\":\"Curiosidades de Javascript: Formas de invocar funciones (Parte 1) - El blog de Devinet\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.rowsdowr.com\\\/wp-content\\\/uploads\\\/2011\\\/07\\\/icgcek.gif\",\"datePublished\":\"2014-03-09T11:10:46+00:00\",\"dateModified\":\"2014-03-10T21:57:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.devinet.es\\\/blog\\\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\\\/#primaryimage\",\"url\":\"http:\\\/\\\/www.rowsdowr.com\\\/wp-content\\\/uploads\\\/2011\\\/07\\\/icgcek.gif\",\"contentUrl\":\"http:\\\/\\\/www.rowsdowr.com\\\/wp-content\\\/uploads\\\/2011\\\/07\\\/icgcek.gif\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Curiosidades de Javascript: Formas de invocar funciones (Parte 1)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/\",\"name\":\"El blog de Devinet\",\"description\":\"Dise\u00f1o y desarrollo de aplicaciones m\u00f3viles y web\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/#organization\",\"name\":\"Devinet 2013, S.L.U.\",\"url\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i2.wp.com\\\/www.devinet.es\\\/blog\\\/wp-content\\\/uploads\\\/2014\\\/12\\\/98ef986324a7c10843b4a3206fe878531-54989f9dv1_site_icon.png?fit=512%2C512&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i2.wp.com\\\/www.devinet.es\\\/blog\\\/wp-content\\\/uploads\\\/2014\\\/12\\\/98ef986324a7c10843b4a3206fe878531-54989f9dv1_site_icon.png?fit=512%2C512&ssl=1\",\"width\":512,\"height\":512,\"caption\":\"Devinet 2013, S.L.U.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/#\\\/schema\\\/person\\\/77a402ae7af312ef2ccdb8fd35082deb\",\"name\":\"David Gonz\u00e1lez Shannon\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cdcda347103ecc56080c8dfc99d92641e58d87ff0701cace8934b091dc51b27d?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cdcda347103ecc56080c8dfc99d92641e58d87ff0701cace8934b091dc51b27d?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cdcda347103ecc56080c8dfc99d92641e58d87ff0701cace8934b091dc51b27d?s=96&d=retro&r=g\",\"caption\":\"David Gonz\u00e1lez Shannon\"},\"sameAs\":[\"http:\\\/\\\/www.devinet.es\"],\"url\":\"https:\\\/\\\/www.devinet.es\\\/blog\\\/author\\\/gooster\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Curiosidades de Javascript: Formas de invocar funciones (Parte 1) - El blog de Devinet","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.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/","og_locale":"es_ES","og_type":"article","og_title":"Curiosidades de Javascript: Formas de invocar funciones (Parte 1) - El blog de Devinet","og_description":"\u00a1Hola frikazos de la inform\u00e1tica! Me llamo David Gonz\u00e1lez Shannon, soy medio espa\u00f1ol medio americano alocado, ingeniero inform\u00e1tico (en realidad soy ingeniero multimedia), friki y amante de la programaci\u00f3n. En septiembre de 2013, empec\u00e9 a trabajar en Devinet como el Wildcard de la empresa, en castellano, la navaja suiza. Al no estar especializado en ninguna...","og_url":"https:\/\/www.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/","og_site_name":"El blog de Devinet","article_published_time":"2014-03-09T11:10:46+00:00","article_modified_time":"2014-03-10T21:57:18+00:00","og_image":[{"url":"http:\/\/www.rowsdowr.com\/wp-content\/uploads\/2011\/07\/icgcek.gif","type":"","width":"","height":""}],"author":"David Gonz\u00e1lez Shannon","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"David Gonz\u00e1lez Shannon","Tiempo de lectura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/#article","isPartOf":{"@id":"https:\/\/www.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/"},"author":{"name":"David Gonz\u00e1lez Shannon","@id":"https:\/\/www.devinet.es\/blog\/#\/schema\/person\/77a402ae7af312ef2ccdb8fd35082deb"},"headline":"Curiosidades de Javascript: Formas de invocar funciones (Parte 1)","datePublished":"2014-03-09T11:10:46+00:00","dateModified":"2014-03-10T21:57:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/"},"wordCount":1031,"commentCount":3,"publisher":{"@id":"https:\/\/www.devinet.es\/blog\/#organization"},"image":{"@id":"https:\/\/www.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/#primaryimage"},"thumbnailUrl":"http:\/\/www.rowsdowr.com\/wp-content\/uploads\/2011\/07\/icgcek.gif","keywords":["funciones","javascript","tutorial"],"articleSection":["Tutoriales"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/","url":"https:\/\/www.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/","name":"Curiosidades de Javascript: Formas de invocar funciones (Parte 1) - El blog de Devinet","isPartOf":{"@id":"https:\/\/www.devinet.es\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/#primaryimage"},"image":{"@id":"https:\/\/www.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/#primaryimage"},"thumbnailUrl":"http:\/\/www.rowsdowr.com\/wp-content\/uploads\/2011\/07\/icgcek.gif","datePublished":"2014-03-09T11:10:46+00:00","dateModified":"2014-03-10T21:57:18+00:00","breadcrumb":{"@id":"https:\/\/www.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/#primaryimage","url":"http:\/\/www.rowsdowr.com\/wp-content\/uploads\/2011\/07\/icgcek.gif","contentUrl":"http:\/\/www.rowsdowr.com\/wp-content\/uploads\/2011\/07\/icgcek.gif"},{"@type":"BreadcrumbList","@id":"https:\/\/www.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.devinet.es\/blog\/"},{"@type":"ListItem","position":2,"name":"Curiosidades de Javascript: Formas de invocar funciones (Parte 1)"}]},{"@type":"WebSite","@id":"https:\/\/www.devinet.es\/blog\/#website","url":"https:\/\/www.devinet.es\/blog\/","name":"El blog de Devinet","description":"Dise\u00f1o y desarrollo de aplicaciones m\u00f3viles y web","publisher":{"@id":"https:\/\/www.devinet.es\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.devinet.es\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.devinet.es\/blog\/#organization","name":"Devinet 2013, S.L.U.","url":"https:\/\/www.devinet.es\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.devinet.es\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/i2.wp.com\/www.devinet.es\/blog\/wp-content\/uploads\/2014\/12\/98ef986324a7c10843b4a3206fe878531-54989f9dv1_site_icon.png?fit=512%2C512&ssl=1","contentUrl":"https:\/\/i2.wp.com\/www.devinet.es\/blog\/wp-content\/uploads\/2014\/12\/98ef986324a7c10843b4a3206fe878531-54989f9dv1_site_icon.png?fit=512%2C512&ssl=1","width":512,"height":512,"caption":"Devinet 2013, S.L.U."},"image":{"@id":"https:\/\/www.devinet.es\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.devinet.es\/blog\/#\/schema\/person\/77a402ae7af312ef2ccdb8fd35082deb","name":"David Gonz\u00e1lez Shannon","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/cdcda347103ecc56080c8dfc99d92641e58d87ff0701cace8934b091dc51b27d?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/cdcda347103ecc56080c8dfc99d92641e58d87ff0701cace8934b091dc51b27d?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cdcda347103ecc56080c8dfc99d92641e58d87ff0701cace8934b091dc51b27d?s=96&d=retro&r=g","caption":"David Gonz\u00e1lez Shannon"},"sameAs":["http:\/\/www.devinet.es"],"url":"https:\/\/www.devinet.es\/blog\/author\/gooster\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4pwkm-16","jetpack-related-posts":[{"id":103,"url":"https:\/\/www.devinet.es\/blog\/curiosidades-de-javascript-formas-de-invocar-funciones-parte-2\/","url_meta":{"origin":68,"position":0},"title":"Curiosidades de Javascript: Formas de invocar funciones (Parte 2)","author":"David Gonz\u00e1lez Shannon","date":"marzo 27, 2014","format":false,"excerpt":"\u00a1Hola frikazos de la inform\u00e1tica! Este post es la segunda parte de la serie \"Formas de invocar funciones en Javascript\", si no hab\u00e9is le\u00eddo el primero, ah\u00ed os dejo el link. Os recomiendo que le ech\u00e9is un vistazo antes de continuar leyendo, ya que sino puede que os ve\u00e1is un\u2026","rel":"","context":"En \u00abTutoriales\u00bb","block_context":{"text":"Tutoriales","link":"https:\/\/www.devinet.es\/blog\/category\/tutorials\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/1.bp.blogspot.com\/-6LHEDDuwedA\/UHhUNxPRWrI\/AAAAAAAABFs\/15ITrmzxUXM\/s320\/retmku-2042722.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":20,"url":"https:\/\/www.devinet.es\/blog\/presentacion-devinet\/","url_meta":{"origin":68,"position":1},"title":"Presentaci\u00f3n Devinet","author":"Cristina Rodr\u00edguez Amor\u00f3s","date":"marzo 5, 2014","format":false,"excerpt":"\u00a1Hola a todos! En el post de hoy, os traemos un poco de informaci\u00f3n sobre nuestra empresa as\u00ed, aquellos que todav\u00eda no nos conozcan podr\u00e1n tener una visi\u00f3n global sobre nosotros y los servicios que ofrecemos. Nosotros somos una consultora tecnol\u00f3gica especializada en el dise\u00f1o y desarrollo de aplicaciones m\u00f3viles\u2026","rel":"","context":"En \u00abDevinet\u00bb","block_context":{"text":"Devinet","link":"https:\/\/www.devinet.es\/blog\/category\/devinet\/"},"img":{"alt_text":"raul","src":"https:\/\/i0.wp.com\/www.devinet.es\/blog\/wp-content\/uploads\/2014\/02\/raul.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":18,"url":"https:\/\/www.devinet.es\/blog\/bienvenidos-a-nuestro-blog\/","url_meta":{"origin":68,"position":2},"title":"Bienvenidos a nuestro Blog","author":"Cristina Rodr\u00edguez Amor\u00f3s","date":"febrero 20, 2014","format":false,"excerpt":"Hoy inauguramos oficialmente el blog de Devinet, en \u00e9l os mantendremos informados sobre las \u00faltimas novedades en el mundo de la tecnolog\u00eda. Algunas de las secciones que podr\u00e9is encontrar son las siguientes: Eventos:\u00a0 Os contaremos de primera mano nuestra experiencia sobre los eventos a los que asistimos y toda la\u2026","rel":"","context":"En \u00abDevinet\u00bb","block_context":{"text":"Devinet","link":"https:\/\/www.devinet.es\/blog\/category\/devinet\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1369,"url":"https:\/\/www.devinet.es\/blog\/automatizacion-procesos-empresariales-software-iot-ia\/","url_meta":{"origin":68,"position":3},"title":"Automatizaci\u00f3n de procesos empresariales: software a medida, IoT e IA para optimizar tu empresa","author":"Ra\u00fal Vidal Mui\u00f1os","date":"diciembre 10, 2025","format":false,"excerpt":"La automatizaci\u00f3n de procesos empresariales ya no es una opci\u00f3n sino un imperativo para las organizaciones que quieren seguir siendo competitivas. En Espa\u00f1a, la digitalizaci\u00f3n aporta hasta un 24\u00a0% del PIB nacional seg\u00fan diversos estudios de consultoras especializadas, y solo alrededor de una cuarta parte de las empresas tienen una\u2026","rel":"","context":"En \u00abAutomatizaci\u00f3n empresarial\u00bb","block_context":{"text":"Automatizaci\u00f3n empresarial","link":"https:\/\/www.devinet.es\/blog\/category\/automatizacion-empresarial\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.devinet.es\/blog\/wp-content\/uploads\/2025\/12\/automatizacion-procesos-empresariales-software.jpg?fit=1080%2C589&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.devinet.es\/blog\/wp-content\/uploads\/2025\/12\/automatizacion-procesos-empresariales-software.jpg?fit=1080%2C589&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.devinet.es\/blog\/wp-content\/uploads\/2025\/12\/automatizacion-procesos-empresariales-software.jpg?fit=1080%2C589&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.devinet.es\/blog\/wp-content\/uploads\/2025\/12\/automatizacion-procesos-empresariales-software.jpg?fit=1080%2C589&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.devinet.es\/blog\/wp-content\/uploads\/2025\/12\/automatizacion-procesos-empresariales-software.jpg?fit=1080%2C589&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1211,"url":"https:\/\/www.devinet.es\/blog\/apple-vision-pro-un-salto-hacia-el-futuro-de-la-realidad-mixta\/","url_meta":{"origin":68,"position":4},"title":"Apple Vision Pro: Un salto hacia el futuro de la realidad mixta","author":"Ra\u00fal Vidal Mui\u00f1os","date":"julio 18, 2023","format":false,"excerpt":"Las Apple Vision Pro, las nuevas gafas de realidad mixta de la gigante tecnol\u00f3gica, han llegado para revolucionar nuestra interacci\u00f3n con el mundo digital. Las Apple Vision Pro, las nuevas gafas de realidad mixta de la gigante tecnol\u00f3gica, han llegado para revolucionar nuestra interacci\u00f3n con el mundo digital. Este dispositivo,\u2026","rel":"","context":"En \u00abNot\u00edcias\u00bb","block_context":{"text":"Not\u00edcias","link":"https:\/\/www.devinet.es\/blog\/category\/news\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.devinet.es\/blog\/wp-content\/uploads\/2023\/07\/np_file_231658.jpeg?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.devinet.es\/blog\/wp-content\/uploads\/2023\/07\/np_file_231658.jpeg?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.devinet.es\/blog\/wp-content\/uploads\/2023\/07\/np_file_231658.jpeg?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.devinet.es\/blog\/wp-content\/uploads\/2023\/07\/np_file_231658.jpeg?resize=700%2C400 2x, https:\/\/i0.wp.com\/www.devinet.es\/blog\/wp-content\/uploads\/2023\/07\/np_file_231658.jpeg?resize=1050%2C600 3x, https:\/\/i0.wp.com\/www.devinet.es\/blog\/wp-content\/uploads\/2023\/07\/np_file_231658.jpeg?resize=1400%2C800 4x"},"classes":[]},{"id":501,"url":"https:\/\/www.devinet.es\/blog\/youtrend-los-mejores-videos-del-momento\/","url_meta":{"origin":68,"position":5},"title":"YouTrend &#8211; Los mejores v\u00eddeos del momento","author":"Cristina Rodr\u00edguez Amor\u00f3s","date":"agosto 31, 2016","format":false,"excerpt":"En Devinet, hemos estado trabajando con mucha ilusi\u00f3n en una nueva App, YouTrend, y por fin, ya est\u00e1 disponible en la Store para iPhone e iPad. YouTrend, tiene como objetivo principal mostrar los v\u00eddeos de YouTube m\u00e1s Trending del momento, de manera ordenada y clasificados por categor\u00edas, para que puedas\u2026","rel":"","context":"En \u00abApps\u00bb","block_context":{"text":"Apps","link":"https:\/\/www.devinet.es\/blog\/category\/app\/"},"img":{"alt_text":"iPhoneTouTrend","src":"https:\/\/i0.wp.com\/www.devinet.es\/blog\/wp-content\/uploads\/2016\/08\/iPhoneTouTrend-890x1024.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.devinet.es\/blog\/wp-content\/uploads\/2016\/08\/iPhoneTouTrend-890x1024.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.devinet.es\/blog\/wp-content\/uploads\/2016\/08\/iPhoneTouTrend-890x1024.png?resize=525%2C300 1.5x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.devinet.es\/blog\/wp-json\/wp\/v2\/posts\/68","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devinet.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devinet.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devinet.es\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devinet.es\/blog\/wp-json\/wp\/v2\/comments?post=68"}],"version-history":[{"count":30,"href":"https:\/\/www.devinet.es\/blog\/wp-json\/wp\/v2\/posts\/68\/revisions"}],"predecessor-version":[{"id":102,"href":"https:\/\/www.devinet.es\/blog\/wp-json\/wp\/v2\/posts\/68\/revisions\/102"}],"wp:attachment":[{"href":"https:\/\/www.devinet.es\/blog\/wp-json\/wp\/v2\/media?parent=68"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devinet.es\/blog\/wp-json\/wp\/v2\/categories?post=68"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devinet.es\/blog\/wp-json\/wp\/v2\/tags?post=68"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}