{"id":2389,"date":"2024-08-29T13:53:38","date_gmt":"2024-08-29T12:53:38","guid":{"rendered":"https:\/\/codeflarelimited.com\/blog\/?p=2389"},"modified":"2024-08-29T16:22:08","modified_gmt":"2024-08-29T15:22:08","slug":"weakmap-and-weakset-in-javascript","status":"publish","type":"post","link":"https:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/","title":{"rendered":"Exploring WeakMap and WeakSet in JavaScript"},"content":{"rendered":"\n<p>JavaScript offers several powerful data structures, including the well-known Map and Set. Additionally, JavaScript provides the lesser-known WeakMap and WeakSet. These structures prove invaluable for managing objects while avoiding memory leaks. In this article, we will dive into WeakMap and WeakSet, explore their functionality, and determine when to use them.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What is a WeakMap?<\/strong><\/h3>\n\n\n\n<p>A WeakMap holds key-value pairs where keys are objects and values can be any type. Unlike a regular Map, WeakMap keys are weakly held. If no other references exist to a key object, JavaScript can garbage collect it. This feature makes WeakMap ideal for associating data with objects without preventing their garbage collection.<\/p>\n\n\n\n<p><strong>Key Characteristics of WeakMap:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Object keys only:<\/strong>  In a WeakMap, you must use objects as keys; primitive values like strings or numbers aren\u2019t allowed.<\/li>\n\n\n\n<li><strong>No enumeration:<\/strong> You cannot iterate over the keys or values of a <code>WeakMap<\/code>.This happens because the system weakly holds the keys, and enumerating them can lead to unpredictable behavior.<\/li>\n\n\n\n<li><strong>Garbage collection:<\/strong> If an object key in a <code>WeakMap<\/code> has no other references, it is eligible for garbage collection, which helps in efficient memory management.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Example of WeakMap<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">let wm = new WeakMap();\n\nlet obj1 = {};\nlet obj2 = {};\n\nwm.set(obj1, \"data for obj1\");\nwm.set(obj2, \"data for obj2\");\n\nconsole.log(wm.get(obj1)); \/\/ Output: \"data for obj1\"\n\nobj1 = null; \/\/ obj1 is now eligible for garbage collection\n\nconsole.log(wm.get(obj1)); \/\/ Output: undefined\n<\/code><\/pre>\n\n\n\n<p>In this example, once <code>obj1<\/code> is set to <code>null<\/code>, it becomes eligible for garbage collection, and the <code>WeakMap<\/code> entry associated with it will eventually be removed automatically.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What is a WeakSet?<\/strong><\/h3>\n\n\n\n<p>A <code>WeakSet<\/code> is a collection of objects, where each object can appear only once in the set. Like <code>WeakMap<\/code>, the objects in a <code>WeakSet<\/code> are weakly held, meaning that if there are no other references to an object in the <code>WeakSet<\/code>, it can be garbage collected.<\/p>\n\n\n\n<p><strong>Key Characteristics of WeakSet:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Object values only:<\/strong> In a <code>WeakSet<\/code>, only objects can be added. You cannot add primitive values.<\/li>\n\n\n\n<li><strong>No duplicates:<\/strong> Each object in a <code>WeakSet<\/code> is unique, similar to a regular <code>Set<\/code>.<\/li>\n\n\n\n<li><strong>Garbage collection:<\/strong> If an object in a <code>WeakSet<\/code> has no other references, it will be garbage collected, and the <code>WeakSet<\/code> will automatically remove the object.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Example of WeakSet<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">let ws = new WeakSet();\n\nlet obj1 = {};\nlet obj2 = {};\n\nws.add(obj1);\nws.add(obj2);\n\nconsole.log(ws.has(obj1)); \/\/ Output: true\n\nobj1 = null; \/\/ obj1 is now eligible for garbage collection\n\nconsole.log(ws.has(obj1)); \/\/ Output: false\n<\/code><\/pre>\n\n\n\n<p>In this example, after <code>obj1<\/code> is set to <code>null<\/code>, it becomes eligible for garbage collection, and it will eventually be removed from the <code>WeakSet<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>When to Use WeakMap and WeakSet<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Memory-sensitive data:<\/strong> If you need to associate data with objects without preventing them from being garbage collected, <code>WeakMap<\/code> is an excellent choice.<\/li>\n\n\n\n<li><strong>Tracking objects:<\/strong> <code>WeakSet<\/code> is useful when you want to keep track of objects, such as marking them as processed or caching them, without holding them in memory if they are no longer needed.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Limitations<\/strong><\/h3>\n\n\n\n<p>While <code>WeakMap<\/code> and <code>WeakSet<\/code> are powerful, they have some limitations:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>WeakMap and WeakSet do not support iteration, which can be a limitation if you need to process all stored data.<\/li>\n\n\n\n<li><strong>Limited use cases:<\/strong> They serve specific scenarios, so you may not find them suitable for general-purpose tasks like Map and Set.<br><br><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Conclusio<\/strong>n<\/h3>\n\n\n\n<p>WeakMap and WeakSet manage memory and track objects effectively as specialized JavaScript data structures. Despite their limitations, understanding how and when to use them can enhance your code&#8217;s efficiency and cleanliness. Apply them appropriately to maximize their benefits.<br><br><\/p>\n\n\n\n<p><a href=\"https:\/\/codeflarelimited.com\/blog\/javascript-symbols\/\">Understanding JavaScript Symbols<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>JavaScript offers several powerful data structures, including the well-known Map and Set. Additionally, JavaScript provides the lesser-known WeakMap<\/p>\n","protected":false},"author":3,"featured_media":2409,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[11,98],"tags":[99],"class_list":["post-2389","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","category-softare-development","tag-software-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>WeakMap and WeakSet in JavaScript<\/title>\n<meta name=\"description\" content=\"Explore WeakMap and WeakSet in JavaScript to understand their unique advantages for memory management and object tracking.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WeakMap and WeakSet in JavaScript\" \/>\n<meta property=\"og:description\" content=\"Explore WeakMap and WeakSet in JavaScript to understand their unique advantages for memory management and object tracking.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-08-29T12:53:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-08-29T15:22:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2024\/08\/IMG-20240829-WA0011.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1080\" \/>\n\t<meta property=\"og:image:height\" content=\"607\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Kene Samuel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/weakmap-and-weakset-in-javascript\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/weakmap-and-weakset-in-javascript\\\/\"},\"author\":{\"name\":\"Kene Samuel\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#\\\/schema\\\/person\\\/c501609bab46c16807eb32106074f206\"},\"headline\":\"Exploring WeakMap and WeakSet in JavaScript\",\"datePublished\":\"2024-08-29T12:53:38+00:00\",\"dateModified\":\"2024-08-29T15:22:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/weakmap-and-weakset-in-javascript\\\/\"},\"wordCount\":493,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/weakmap-and-weakset-in-javascript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/IMG-20240829-WA0011.jpg\",\"keywords\":[\"software development\"],\"articleSection\":[\"javascript\",\"softare development\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/weakmap-and-weakset-in-javascript\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/weakmap-and-weakset-in-javascript\\\/\",\"url\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/weakmap-and-weakset-in-javascript\\\/\",\"name\":\"WeakMap and WeakSet in JavaScript\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/weakmap-and-weakset-in-javascript\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/weakmap-and-weakset-in-javascript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/IMG-20240829-WA0011.jpg\",\"datePublished\":\"2024-08-29T12:53:38+00:00\",\"dateModified\":\"2024-08-29T15:22:08+00:00\",\"description\":\"Explore WeakMap and WeakSet in JavaScript to understand their unique advantages for memory management and object tracking.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/weakmap-and-weakset-in-javascript\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/weakmap-and-weakset-in-javascript\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/weakmap-and-weakset-in-javascript\\\/#primaryimage\",\"url\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/IMG-20240829-WA0011.jpg\",\"contentUrl\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/IMG-20240829-WA0011.jpg\",\"width\":1080,\"height\":607},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/weakmap-and-weakset-in-javascript\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"javascript\",\"item\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/javascript\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Exploring WeakMap and WeakSet in JavaScript\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/\",\"name\":\"\",\"description\":\"Sustainable solutions\",\"publisher\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#organization\",\"name\":\"Codeflare Limited\",\"url\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/codeflare.png\",\"contentUrl\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/codeflare.png\",\"width\":1040,\"height\":263,\"caption\":\"Codeflare Limited\"},\"image\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#\\\/schema\\\/person\\\/c501609bab46c16807eb32106074f206\",\"name\":\"Kene Samuel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3e1716cd715a5b5491e1f2da373b52f2f73aeb37d268baff34719116e386d848?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3e1716cd715a5b5491e1f2da373b52f2f73aeb37d268baff34719116e386d848?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3e1716cd715a5b5491e1f2da373b52f2f73aeb37d268baff34719116e386d848?s=96&d=mm&r=g\",\"caption\":\"Kene Samuel\"},\"url\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/author\\\/kene\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"WeakMap and WeakSet in JavaScript","description":"Explore WeakMap and WeakSet in JavaScript to understand their unique advantages for memory management and object tracking.","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:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/","og_locale":"en_US","og_type":"article","og_title":"WeakMap and WeakSet in JavaScript","og_description":"Explore WeakMap and WeakSet in JavaScript to understand their unique advantages for memory management and object tracking.","og_url":"https:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/","article_published_time":"2024-08-29T12:53:38+00:00","article_modified_time":"2024-08-29T15:22:08+00:00","og_image":[{"width":1080,"height":607,"url":"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2024\/08\/IMG-20240829-WA0011.jpg","type":"image\/jpeg"}],"author":"Kene Samuel","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/#article","isPartOf":{"@id":"https:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/"},"author":{"name":"Kene Samuel","@id":"https:\/\/codeflarelimited.com\/blog\/#\/schema\/person\/c501609bab46c16807eb32106074f206"},"headline":"Exploring WeakMap and WeakSet in JavaScript","datePublished":"2024-08-29T12:53:38+00:00","dateModified":"2024-08-29T15:22:08+00:00","mainEntityOfPage":{"@id":"https:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/"},"wordCount":493,"commentCount":0,"publisher":{"@id":"https:\/\/codeflarelimited.com\/blog\/#organization"},"image":{"@id":"https:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2024\/08\/IMG-20240829-WA0011.jpg","keywords":["software development"],"articleSection":["javascript","softare development"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/","url":"https:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/","name":"WeakMap and WeakSet in JavaScript","isPartOf":{"@id":"https:\/\/codeflarelimited.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/#primaryimage"},"image":{"@id":"https:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2024\/08\/IMG-20240829-WA0011.jpg","datePublished":"2024-08-29T12:53:38+00:00","dateModified":"2024-08-29T15:22:08+00:00","description":"Explore WeakMap and WeakSet in JavaScript to understand their unique advantages for memory management and object tracking.","breadcrumb":{"@id":"https:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/#primaryimage","url":"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2024\/08\/IMG-20240829-WA0011.jpg","contentUrl":"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2024\/08\/IMG-20240829-WA0011.jpg","width":1080,"height":607},{"@type":"BreadcrumbList","@id":"https:\/\/codeflarelimited.com\/blog\/weakmap-and-weakset-in-javascript\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/codeflarelimited.com\/blog\/"},{"@type":"ListItem","position":2,"name":"javascript","item":"https:\/\/codeflarelimited.com\/blog\/javascript\/"},{"@type":"ListItem","position":3,"name":"Exploring WeakMap and WeakSet in JavaScript"}]},{"@type":"WebSite","@id":"https:\/\/codeflarelimited.com\/blog\/#website","url":"https:\/\/codeflarelimited.com\/blog\/","name":"","description":"Sustainable solutions","publisher":{"@id":"https:\/\/codeflarelimited.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/codeflarelimited.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/codeflarelimited.com\/blog\/#organization","name":"Codeflare Limited","url":"https:\/\/codeflarelimited.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codeflarelimited.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2020\/11\/codeflare.png","contentUrl":"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2020\/11\/codeflare.png","width":1040,"height":263,"caption":"Codeflare Limited"},"image":{"@id":"https:\/\/codeflarelimited.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/codeflarelimited.com\/blog\/#\/schema\/person\/c501609bab46c16807eb32106074f206","name":"Kene Samuel","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/3e1716cd715a5b5491e1f2da373b52f2f73aeb37d268baff34719116e386d848?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3e1716cd715a5b5491e1f2da373b52f2f73aeb37d268baff34719116e386d848?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3e1716cd715a5b5491e1f2da373b52f2f73aeb37d268baff34719116e386d848?s=96&d=mm&r=g","caption":"Kene Samuel"},"url":"https:\/\/codeflarelimited.com\/blog\/author\/kene\/"}]}},"jetpack_featured_media_url":"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2024\/08\/IMG-20240829-WA0011.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/posts\/2389","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/comments?post=2389"}],"version-history":[{"count":3,"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/posts\/2389\/revisions"}],"predecessor-version":[{"id":2392,"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/posts\/2389\/revisions\/2392"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/media\/2409"}],"wp:attachment":[{"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/media?parent=2389"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/categories?post=2389"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/tags?post=2389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}