{"id":12034,"date":"2024-11-13T23:52:43","date_gmt":"2024-11-13T22:52:43","guid":{"rendered":"https:\/\/monodes.com\/predaelli\/?p=12034"},"modified":"2024-11-13T23:53:58","modified_gmt":"2024-11-13T22:53:58","slug":"12034","status":"publish","type":"post","link":"https:\/\/monodes.com\/predaelli\/2024\/11\/13\/12034\/","title":{"rendered":""},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><a href=\"https:\/\/github.com\/jashkenas\/underscore\/\">Underscore<\/a> is a JavaScript library that provides a whole mess of useful functional programming helpers without extending any built-in objects. It\u2019s the answer to the question: \u201cIf I sit down in front of a blank HTML page, and want to start being productive immediately, what do I need?\u201d \u2026 and the tie to go along with <a href=\"https:\/\/jquery.com\">jQuery<\/a>&#8216;s tux and <a href=\"https:\/\/backbonejs.org\">Backbone<\/a>&#8216;s suspenders.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><a href=\"https:\/\/backbonejs.org\/#Getting-started\">Backbone.js<\/a> gives structure to web applications by providing <strong>models<\/strong> with key-value binding and custom events, <strong>collections<\/strong> with a rich API of enumerable functions, <strong>views<\/strong> with declarative event handling, and connects it all to your existing API over a RESTful JSON interface.<\/p>\n<\/blockquote>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p class=\"excerpt\">\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"https:\/\/monodes.com\/predaelli\/2024\/11\/13\/12034\/\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"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,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[50],"tags":[],"class_list":["post-12034","post","type-post","status-publish","format-standard","hentry","category-javascript"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/s6daft-12034","jetpack-related-posts":[{"id":5130,"url":"https:\/\/monodes.com\/predaelli\/2019\/01\/15\/intuitive-asynchronous-javascript-edwin-yung-medium\/","url_meta":{"origin":12034,"position":0},"title":"Intuitive Asynchronous Javascript \u2013 Edwin Yung \u2013 Medium","author":"Paolo Redaelli","date":"2019-01-15","format":false,"excerpt":"Escape callback hell! Source: Intuitive Asynchronous Javascript \u2013 Edwin Yung \u2013 Medium \u00a0 Asynchronous Javascript Explained Simply and Intuitively Edwin Yung Dec 29, 2017 Escape callback hell with this\u00a0article! Asynchronous Javascript is difficult to wrangle. The following is my quick attempt to elucidate their inner workings. Before we get started,\u2026","rel":"","context":"In &quot;Documentations&quot;","block_context":{"text":"Documentations","link":"https:\/\/monodes.com\/predaelli\/category\/documentations\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":14254,"url":"https:\/\/monodes.com\/predaelli\/2025\/11\/04\/abandonware-of-the-web-do-you-know-that-there-is-an-html-tables-api\/","url_meta":{"origin":12034,"position":1},"title":"Abandonware of the web: do you know that there is an HTML tables API?","author":"Paolo Redaelli","date":"2025-11-04","format":false,"excerpt":"Abandonware of the web: do you know that there is an HTML tables API? When people turn data into HTML tables using JavaScript, they either use the DOM methods (createElement() and the likes), but most of the time just append a huge string and use innerHTML, which always is a\u2026","rel":"","context":"In &quot;Documentations&quot;","block_context":{"text":"Documentations","link":"https:\/\/monodes.com\/predaelli\/category\/documentations\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3778,"url":"https:\/\/monodes.com\/predaelli\/2018\/02\/10\/3778\/","url_meta":{"origin":12034,"position":2},"title":"OpenSC2K","author":"Paolo Redaelli","date":"2018-02-10","format":false,"excerpt":"OpenSC2K OpenSC2K - An Open Source remake of SimCity 2000 written in JavaScript using HTML5 Canvas API, SQLite and built on Electron.","rel":"","context":"In &quot;Fun&quot;","block_context":{"text":"Fun","link":"https:\/\/monodes.com\/predaelli\/category\/fun\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2018\/02\/OpenSC2K.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2018\/02\/OpenSC2K.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2018\/02\/OpenSC2K.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2018\/02\/OpenSC2K.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2018\/02\/OpenSC2K.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2018\/02\/OpenSC2K.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":1614,"url":"https:\/\/monodes.com\/predaelli\/2016\/06\/01\/javascript-factory-functions-vs-constructor-functions-vs-classes-javascript-scene-medium\/","url_meta":{"origin":12034,"position":3},"title":"JavaScript Factory Functions vs Constructor Functions vs Classes \u2014 JavaScript Scene \u2014 Medium","author":"Paolo Redaelli","date":"2016-06-01","format":"link","excerpt":"https:\/\/medium.com\/javascript-scene\/javascript-factory-functions-vs-constructor-functions-vs-classes-2f22ceddf33e#.13avjf4lk","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":5128,"url":"https:\/\/monodes.com\/predaelli\/2019\/01\/15\/removing-javascripts-this-keyword-makes-it-a-better-language-heres-why\/","url_meta":{"origin":12034,"position":4},"title":"Removing JavaScript\u2019s \u201cthis\u201d keyword makes it a better language. Here\u2019s why.","author":"Paolo Redaelli","date":"2019-01-15","format":false,"excerpt":"Removing JavaScript\u2019s \u201cthis\u201d keyword makes it a better language. Here\u2019s why. Removing JavaScript\u2019s \u201cthis\u201d keyword makes it a better language. Here\u2019s\u00a0why. Cristi Salcescu Jan this is of course the source of much confusion in JavaScript. The reason being that this depends on how the function was invoked, not where the\u2026","rel":"","context":"In &quot;Documentations&quot;","block_context":{"text":"Documentations","link":"https:\/\/monodes.com\/predaelli\/category\/documentations\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4327,"url":"https:\/\/monodes.com\/predaelli\/2018\/05\/17\/top-10-javascript-errors-from-1000-projects-and-how-to-avoid-them\/","url_meta":{"origin":12034,"position":5},"title":"Top 10 JavaScript errors from 1000+ projects (and how to avoid them)","author":"Paolo Redaelli","date":"2018-05-17","format":false,"excerpt":"From Top 10 JavaScript errors from 1000+ projects (and how to avoid them) Most of them are caught at compile time by strongly-typed languages. Who said Eiffel? Oh, how I want not to be so busy with other issues.... :( To give back to our community of developers, we looked\u2026","rel":"","context":"In &quot;Eiffel&quot;","block_context":{"text":"Eiffel","link":"https:\/\/monodes.com\/predaelli\/category\/eiffel\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/12034","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/comments?post=12034"}],"version-history":[{"count":0,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/12034\/revisions"}],"wp:attachment":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/media?parent=12034"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/categories?post=12034"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/tags?post=12034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}