{"id":20303,"date":"2015-05-29T23:46:40","date_gmt":"2015-05-29T18:16:40","guid":{"rendered":"https:\/\/2thenew.online\/blog\/?p=20303"},"modified":"2015-06-01T10:15:47","modified_gmt":"2015-06-01T04:45:47","slug":"monkey-patching-in-javascript","status":"publish","type":"post","link":"https:\/\/2thenew.online\/blog\/monkey-patching-in-javascript\/","title":{"rendered":"Monkey Patching in Javascript"},"content":{"rendered":"<h1 style=\"text-align: center\">Monkey Patching<\/h1>\n<p>The <strong>Monkey patching<\/strong> is a concept which is used to extend the behavior of a function without changing its original source code. We can add some extra functionality which can work a long with the original functionality(Before or after depends on the use case). The original function may be from third party module or it can be your own function. Popularly known as <strong>duck punching<\/strong>.<\/p>\n<p>Here is the sample code where we can see how Monkey Patching happens.<\/p>\n<p>[js]<\/p>\n<p>var myDb = {<br \/>\n    _password: &#8216;PASSWORD&#8217;,<br \/>\n    _username: &#8216;VINI&#8217;<br \/>\n}<\/p>\n<p>function Auth() {<br \/>\n    \/*something here*\/<br \/>\n}<\/p>\n<p>\/\/ Original method<\/p>\n<p>Auth.prototype.login = function (username, password) {<br \/>\n\/\/ login method code<br \/>\n    if (username == myDb._username &amp;&amp; password == myDb._password) {<br \/>\n        return username + &#8216; logged in successfully!&#8217;;<br \/>\n    }<br \/>\n    else {<br \/>\n        return &#8216;Sorry! Spammer &#8216;;<br \/>\n    }<br \/>\n}<\/p>\n<p>var newAuth = new Auth();<br \/>\nconsole.log(newAuth.login(&#8216;vini&#8217;, &#8216;password&#8217;));<\/p>\n<p>[\/js]<\/p>\n<h3>Output:<\/h3>\n<p>[js]<\/p>\n<p>\/\/Sorry! Spammer<\/p>\n<p>[\/js]<\/p>\n<h3>Explaination of previous code<\/h3>\n<p>Here Auth is the function which contains, login function. What we want to achieve, is override this login function. We can do it either rewrite the previous code but in most of the cases we do not know the prototype of the code and we just dont want to mess around with the existing one. So here Monkey Patching comes into play.<\/p>\n<p>Below is a sample snippet to override this login method with the help of Monkey Patching.<\/p>\n<p>[js]<\/p>\n<p>\/\/ add some operation before and after the original method.<\/p>\n<p>newAuth.login = (function (original) {<br \/>\n    return function (username, password) {<br \/>\n\/\/ before method calling alter the original arguments<br \/>\n        var newUsername = username.toUpperCase();<br \/>\n        var newPassword = password.toUpperCase();<br \/>\n        console.log(&#8216;password::&#8217;, newPassword, &#8216;username::&#8217;, newUsername);<br \/>\n        var result = original.apply(this, [newUsername, newPassword]);<br \/>\n\/\/ after<br \/>\n\/\/ here work on result to alter original output<br \/>\n        console.log(&#8216;Result =&#8217;, result);<br \/>\n    }<br \/>\n})(newAuth.login);<\/p>\n<p>newAuth.login(&#8216;vini&#8217;, &#8216;password&#8217;)<\/p>\n<p>[\/js]<\/p>\n<h3>Output:<\/h3>\n<p>[js]<\/p>\n<p>\/\/password:: PASSWORD username:: VINI<\/p>\n<p>\/\/Result = VINI logged in successfully!<\/p>\n<p>[\/js]<\/p>\n<p>So what exactly we have done here is, we can see additional logging with its normal working. With some simple lines of code we have successfully overrided login method without changing its original functionality. All thanks to \u201cMonkey Patching\u201d.<\/p>\n<p>Hope this helps.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Monkey Patching The Monkey patching is a concept which is used to extend the behavior of a function without changing its original source code. We can add some extra functionality which can work a long with the original functionality(Before or after depends on the use case). The original function may be from third party module [&hellip;]<\/p>\n","protected":false},"author":148,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":3,"footnotes":""},"categories":[1],"tags":[1823],"class_list":["post-20303","post","type-post","status-publish","format-standard","hentry","category-technology","tag-oojs"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Monkey Patching The Monkey patching is a concept which is used to extend the behavior of a function without changing its original source code. We can add some extra functionality which can work a long with the original functionality(Before or after depends on the use case). The original function may be from third party module\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Vineeta Sharma\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/2thenew.online\/blog\/monkey-patching-in-javascript\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"TO THE NEW BLOG\" \/>\n\t\t<meta property=\"og:type\" content=\"blog\" \/>\n\t\t<meta property=\"og:title\" content=\"Monkey Patching in Javascript | TO THE NEW Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"Monkey Patching The Monkey patching is a concept which is used to extend the behavior of a function without changing its original source code. We can add some extra functionality which can work a long with the original functionality(Before or after depends on the use case). The original function may be from third party module\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/2thenew.online\/blog\/monkey-patching-in-javascript\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@tothenew\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Monkey Patching in Javascript | TO THE NEW Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Monkey Patching The Monkey patching is a concept which is used to extend the behavior of a function without changing its original source code. We can add some extra functionality which can work a long with the original functionality(Before or after depends on the use case). The original function may be from third party module\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/monkey-patching-in-javascript\\\/#article\",\"name\":\"Monkey Patching in Javascript | TO THE NEW Blog\",\"headline\":\"Monkey Patching in Javascript\",\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/vineeta-sharma\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"},\"datePublished\":\"2015-05-29T23:46:40+05:30\",\"dateModified\":\"2015-06-01T10:15:47+05:30\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/monkey-patching-in-javascript\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/monkey-patching-in-javascript\\\/#webpage\"},\"articleSection\":\"Technology, OOjs\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/monkey-patching-in-javascript\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/monkey-patching-in-javascript\\\/#listItem\",\"name\":\"Monkey Patching in Javascript\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/monkey-patching-in-javascript\\\/#listItem\",\"position\":3,\"name\":\"Monkey Patching in Javascript\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\",\"name\":\"TO THE NEW Blog\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/vineeta-sharma\\\/#author\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/vineeta-sharma\\\/\",\"name\":\"Vineeta Sharma\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/monkey-patching-in-javascript\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ecccd6178d00a51f5329fa8d0c378b71641fc7943bfd0d092aa250d996ee0e45?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Vineeta Sharma\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/monkey-patching-in-javascript\\\/#webpage\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/monkey-patching-in-javascript\\\/\",\"name\":\"Monkey Patching in Javascript | TO THE NEW Blog\",\"description\":\"Monkey Patching The Monkey patching is a concept which is used to extend the behavior of a function without changing its original source code. We can add some extra functionality which can work a long with the original functionality(Before or after depends on the use case). The original function may be from third party module\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/monkey-patching-in-javascript\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/vineeta-sharma\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/vineeta-sharma\\\/#author\"},\"datePublished\":\"2015-05-29T23:46:40+05:30\",\"dateModified\":\"2015-06-01T10:15:47+05:30\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\",\"name\":\"TO THE NEW Blog\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Monkey Patching in Javascript | TO THE NEW Blog","description":"Monkey Patching The Monkey patching is a concept which is used to extend the behavior of a function without changing its original source code. We can add some extra functionality which can work a long with the original functionality(Before or after depends on the use case). The original function may be from third party module","canonical_url":"https:\/\/2thenew.online\/blog\/monkey-patching-in-javascript\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/2thenew.online\/blog\/monkey-patching-in-javascript\/#article","name":"Monkey Patching in Javascript | TO THE NEW Blog","headline":"Monkey Patching in Javascript","author":{"@id":"https:\/\/2thenew.online\/blog\/author\/vineeta-sharma\/#author"},"publisher":{"@id":"https:\/\/2thenew.online\/blog\/#organization"},"datePublished":"2015-05-29T23:46:40+05:30","dateModified":"2015-06-01T10:15:47+05:30","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/2thenew.online\/blog\/monkey-patching-in-javascript\/#webpage"},"isPartOf":{"@id":"https:\/\/2thenew.online\/blog\/monkey-patching-in-javascript\/#webpage"},"articleSection":"Technology, OOjs"},{"@type":"BreadcrumbList","@id":"https:\/\/2thenew.online\/blog\/monkey-patching-in-javascript\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog#listItem","position":1,"name":"Home","item":"https:\/\/2thenew.online\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/2thenew.online\/blog\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/monkey-patching-in-javascript\/#listItem","name":"Monkey Patching in Javascript"},"previousItem":{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/monkey-patching-in-javascript\/#listItem","position":3,"name":"Monkey Patching in Javascript","previousItem":{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/category\/technology\/#listItem","name":"Technology"}}]},{"@type":"Organization","@id":"https:\/\/2thenew.online\/blog\/#organization","name":"TO THE NEW Blog","url":"https:\/\/2thenew.online\/blog\/"},{"@type":"Person","@id":"https:\/\/2thenew.online\/blog\/author\/vineeta-sharma\/#author","url":"https:\/\/2thenew.online\/blog\/author\/vineeta-sharma\/","name":"Vineeta Sharma","image":{"@type":"ImageObject","@id":"https:\/\/2thenew.online\/blog\/monkey-patching-in-javascript\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/ecccd6178d00a51f5329fa8d0c378b71641fc7943bfd0d092aa250d996ee0e45?s=96&d=mm&r=g","width":96,"height":96,"caption":"Vineeta Sharma"}},{"@type":"WebPage","@id":"https:\/\/2thenew.online\/blog\/monkey-patching-in-javascript\/#webpage","url":"https:\/\/2thenew.online\/blog\/monkey-patching-in-javascript\/","name":"Monkey Patching in Javascript | TO THE NEW Blog","description":"Monkey Patching The Monkey patching is a concept which is used to extend the behavior of a function without changing its original source code. We can add some extra functionality which can work a long with the original functionality(Before or after depends on the use case). The original function may be from third party module","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/2thenew.online\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/2thenew.online\/blog\/monkey-patching-in-javascript\/#breadcrumblist"},"author":{"@id":"https:\/\/2thenew.online\/blog\/author\/vineeta-sharma\/#author"},"creator":{"@id":"https:\/\/2thenew.online\/blog\/author\/vineeta-sharma\/#author"},"datePublished":"2015-05-29T23:46:40+05:30","dateModified":"2015-06-01T10:15:47+05:30"},{"@type":"WebSite","@id":"https:\/\/2thenew.online\/blog\/#website","url":"https:\/\/2thenew.online\/blog\/","name":"TO THE NEW Blog","inLanguage":"en-US","publisher":{"@id":"https:\/\/2thenew.online\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"TO THE NEW BLOG","og:type":"blog","og:title":"Monkey Patching in Javascript | TO THE NEW Blog","og:description":"Monkey Patching The Monkey patching is a concept which is used to extend the behavior of a function without changing its original source code. We can add some extra functionality which can work a long with the original functionality(Before or after depends on the use case). The original function may be from third party module","og:url":"https:\/\/2thenew.online\/blog\/monkey-patching-in-javascript\/","og:image":"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","og:image:secure_url":"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","twitter:card":"summary","twitter:site":"@tothenew","twitter:title":"Monkey Patching in Javascript | TO THE NEW Blog","twitter:description":"Monkey Patching The Monkey patching is a concept which is used to extend the behavior of a function without changing its original source code. We can add some extra functionality which can work a long with the original functionality(Before or after depends on the use case). The original function may be from third party module","twitter:image":"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png"},"aioseo_meta_data":{"post_id":"20303","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2021-04-30 07:21:12","updated":"2024-02-29 10:30:05","focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/2thenew.online\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/2thenew.online\/blog\/category\/technology\/\" title=\"Technology\">Technology<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tMonkey Patching in Javascript\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/2thenew.online\/blog"},{"label":"Technology","link":"https:\/\/2thenew.online\/blog\/category\/technology\/"},{"label":"Monkey Patching in Javascript","link":"https:\/\/2thenew.online\/blog\/monkey-patching-in-javascript\/"}],"_links":{"self":[{"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/posts\/20303","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/users\/148"}],"replies":[{"embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/comments?post=20303"}],"version-history":[{"count":0,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/posts\/20303\/revisions"}],"wp:attachment":[{"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/media?parent=20303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/categories?post=20303"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/tags?post=20303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}