{"id":201,"date":"2020-03-22T22:04:00","date_gmt":"2020-03-22T22:04:00","guid":{"rendered":""},"modified":"2024-09-13T15:04:52","modified_gmt":"2024-09-13T15:04:52","slug":"javascript-tutorial-series-classes","status":"publish","type":"post","link":"https:\/\/zofxare.com\/zofxare\/blog\/2020\/03\/22\/javascript-tutorial-series-classes\/","title":{"rendered":"JavaScript Tutorial Series &#8211; Classes"},"content":{"rendered":"<p>\nSince ES6, JavaScript now supports classes. They are not based on an object-oriented inheritance model. Classes are still functions. They sit on top of JavaScript&#8217;s prototype inheritance. <br \/>\nA class contains a set of properties that define an object.<br \/>\nThe following is an example of a class in JavaScript:<\/p>\n<pre>class Potholder {\n  constructor(numColors) {\n    this.numColors = numColors;\n  }\n\n  get numColors() {\n    return this.numColors;\n  }\n\n  set numColors(numColors) {\n    this.numColors = numColors;\n  }\n\n  printNumColors() {\n    console.log(this.numColors);\n  }\n}\n<\/pre>\n<p>\nThe get and set functions will read and write a class property. Classes contain a constructor method that takes in initialization parameters.<\/p>\n<p>JavaScript classes support inheritance by using the extends keyword as shown below:<\/p>\n<pre>CheckerPotholder extends Potholder {\n  constructor(numColors, pattern) {\n    super(numColors);\n    this.pattern = pattern;\n  }\n\n  printType() {\n    console.log('Checker');\n  }\n}\n<\/pre>\n<p>\nThe super keyword is used to pass initialization parameters to the parent class.<\/p>\n<p>Classes are instantiated with the new keyword:<\/p>\n<pre>const myPotholder = new CheckerPotholder(2, [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]]);\n<\/pre>\n<p>Static methods can also be created. When I create static methods, I usually put them in their own class.<br \/>\nA static method does something independent of a classes instance variables.<br \/>\nThe following is an example:<\/p>\n<pre><code>\nclass SessionStore {\nstatic set(key, value) {\nif (typeof(Storage) !== \"undefined\") {\n\/\/ Store\nlet seen = [];\n\nsessionStorage.setItem(key, JSON.stringify(value, function(key, val) {\nif (val !== null && typeof val === \"object\") {\nif (seen.indexOf(val) >= 0) {\nreturn;\n}\nseen.push(val);\n}\nreturn val;\n}));\n\nreturn true;\n}\n\nreturn false;\n}\n\nstatic get(key) {\nif (typeof(Storage) !== \"undefined\") {\nreturn JSON.parse(sessionStorage.getItem(key));\n}\n\nreturn null;\n}\n\nstatic getAll() {\nif   (typeof(Storage) !== \"undefined\") {\nreturn Object.keys(sessionStorage);\n}\n\nreturn null;\n}\n}\n<\/code><\/pre>\n<p>\nThis class can be used without creating a new instance. A method is called by calling ClassName.staticMethodName(),<\/p>\n<pre><code>SessionStore.set('potholder', 'the name');<\/code><\/pre>\n<p><strong>Implementation:<\/strong><\/br><\/br><\/p>\n<p>Lets move the static temperature conversion functions in Weather.js to their own class. Inside modules, create a file called TemperatureConverter.js and add the following:<\/p>\n<pre><code>\nclass TemperatureConverter {\n\nstatic convertKelvinToCelsius(kelvin) {\nif (typeof kelvin !== 'number') {\nthrow 'Kelvin value is not a number';\n}\nreturn Math.round(kelvin - 273);\n}\n\nstatic convertCelsiusToFahrenheit(celsius) {\nif (typeof celsius !== 'number') {\nthrow 'Celsius value is not a number';\n}\nreturn Math.round((celsius * (9\/5)) + 32);\n};\n\nstatic convertFahrenheitToKelvin(fahrenheit) {\nif (typeof fahrenheit !== 'number') {\nthrow 'Fahrenheit value is not a number';\n}\nreturn Math.round(((5\/9) * (fahrenheit - 32)) + 273);\n};\n}\n\nexport default TemperatureConverter;\n<\/code><\/pre>\n<p>\nAlso remove those functions from Weather.js. Weather.js should contain the following. Note, I also added a function called setWeather, which will be populated in a later post when we get to promises and rest api calls.<\/p>\n<pre><code>\nclass Weather {\n\n\/\/ Constructor\nconstructor() {\n};\n\ngetLocation() {\nlet url = 'https:\/\/ipinfo.io\/json';\nlet options = {\nmode : 'cors'\n};\n};\n\ngetWeather(coordinates) {\n}  \n}\n\nexport default Weather;\n<\/code><\/pre>\n<p>\nFor completeness, also verify javascript_tutorial.js contains the following:<\/p>\n<pre><code>\n\/\/ JavaScript Tutorial\n\n\/*\n* This file will add JavaScript\n* to a website.\n*\/\nimport TemperatureConverter from \".\/modules\/TemperatureConverter.js\";\nimport Weather from \".\/modules\/Weather.js\";\n\n(function() {\nlet doc = document;\nlet defaultLocation = [-86.7816, 36.1627]; \/\/ longitude, latitude\n\nfunction setWeather(data) {\nif (data) {\nlet temp = Math.round(data.main.temp);\ntry {\nlet fahrenheit = TemperatureConverter.convertCelsiusToFahrenheit(temp - 273);\nconsole.log(\"Fahrenheit temperature: \" + fahrenheit);\n} catch (error) {\nconsole.log(\"Error setting weather: \" + error.message);\n}\n}\n}\n\nfunction init() {\nlet locationStr = \"\";\nfor (let i = 0, num = defaultLocation.length; i < num; i++) {\n      locationStr += defaultLocation[i];\n      if (i === 0) {\n        locationStr += \", \";\n      }\n    }\n\n    console.log(\"Setting weather for location: \" + locationStr);\n\n    setWeather({ main: { temp: 30 } });\n  }\n\n  init();\n})();\n<\/code><\/pre>\n<p>\nAlso verify index.html contains the following:<\/p>\n<pre><code>\n&lt;html&gt;\n&lt;head&gt;\n&lt;link rel=\"stylesheet\" href=\"css\/style.css\"\/&gt;\n&lt;\/head&gt;\n\n&lt;body&gt;\n&lt;header&gt;\n&lt;nav&gt;\n\n&lt;\/nav&gt;\n\n&lt;article id=\"toolbar\"&gt;\n&lt;article id=\"currentWeather\" class=\"text-center\"&gt;\n&lt;section id=\"location\"&gt;\n&lt;\/section&gt;\n&lt;section id=\"weatherTemperature\"&gt;\n&lt;span id=\"temperatureValue\"&gt;&lt;\/span&gt;\n&lt;span id=\"degreeSymbol\"&gt;&deg;&lt;\/span&gt;\n&lt;span id=\"temperatureUnits\"&gt;&lt;\/span&gt;\n&lt;\/section&gt;\n&lt;section id=\"weatherDescription\"&gt;\n&lt;\/section&gt;\n&lt;img id=\"weatherIcon\"&gt;                \n&lt;\/img&gt;\n&lt;\/article&gt;          \n&lt;\/article&gt;\n\n&lt;\/header&gt;\n\n&lt;main&gt;&lt;\/main&gt;\n\n&lt;footer&gt;&lt;\/footer&gt;\n\n&lt;script src=\"js\/javascript_tutorial.js\" type=\"module\"&gt&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code>\n<\/pre>\n<p>\nYou should see the following in the browser console when loading the index.html file:<\/p>\n<p>Setting weather for location: -86.7816, 36.1627<br \/>\njavascript_tutorial.js:19 Fahrenheit temperature: -405<\/p>\n<p>Note, the files will need to be loaded onto a web server. If running them locally in Chrome, you may get a CORS error.<\/p>\n<p>\nThe JavaScript tutorial series starts with <a href=\"https:\/\/zofxare.com\/zofxare\/blog\/2019\/12\/javascript-tutorial-series-set-up.html\/\" rel=\"noopener noreferrer\" target=\"_blank\">this post<\/a>.<\/p>\n<p>\n(paid links)<\/br><br \/>\n<a href=\"https:\/\/amzn.to\/39aSKtV\" rel=\"noopener\" target=\"_blank\">More JavaScript<\/a><\/br><\/br><\/p>\n<p><iframe frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\" scrolling=\"no\" src=\"\/\/ws-na.amazon-adsystem.com\/widgets\/q?ServiceVersion=20070822&amp;OneJS=1&amp;Operation=GetAdHtml&amp;MarketPlace=US&amp;source=ss&amp;ref=as_ss_li_til&amp;ad_type=product_link&amp;tracking_id=zofxare-20&amp;language=en_US&amp;marketplace=amazon&amp;region=US&amp;placement=144934013X&amp;asins=144934013X&amp;linkId=1c564951ff9e32885fd78e6d3e51cd88&amp;show_border=true&amp;link_opens_in_new_window=true\" style=\"height: 240px; width: 120px;\"><\/iframe><iframe frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\" scrolling=\"no\" src=\"\/\/ws-na.amazon-adsystem.com\/widgets\/q?ServiceVersion=20070822&amp;OneJS=1&amp;Operation=GetAdHtml&amp;MarketPlace=US&amp;source=ss&amp;ref=as_ss_li_til&amp;ad_type=product_link&amp;tracking_id=zofxare-20&amp;language=en_US&amp;marketplace=amazon&amp;region=US&amp;placement=1119366445&amp;asins=1119366445&amp;linkId=dd23c2d87c50139ea87f57684a12c407&amp;show_border=true&amp;link_opens_in_new_window=true\" style=\"height: 240px; width: 120px;\"><\/iframe><iframe frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\" scrolling=\"no\" src=\"\/\/ws-na.amazon-adsystem.com\/widgets\/q?ServiceVersion=20070822&amp;OneJS=1&amp;Operation=GetAdHtml&amp;MarketPlace=US&amp;source=ss&amp;ref=as_ss_li_til&amp;ad_type=product_link&amp;tracking_id=zofxare-20&amp;language=en_US&amp;marketplace=amazon&amp;region=US&amp;placement=0596517742&amp;asins=0596517742&amp;linkId=6d3fc10c6f7129dfd9a699a17a1caa01&amp;show_border=true&amp;link_opens_in_new_window=true\" style=\"height: 240px; width: 120px;\"><\/iframe><iframe frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\" scrolling=\"no\" src=\"\/\/ws-na.amazon-adsystem.com\/widgets\/q?ServiceVersion=20070822&amp;OneJS=1&amp;Operation=GetAdHtml&amp;MarketPlace=US&amp;source=ss&amp;ref=as_ss_li_til&amp;ad_type=product_link&amp;tracking_id=zofxare-20&amp;language=en_US&amp;marketplace=amazon&amp;region=US&amp;placement=1497408180&amp;asins=1497408180&amp;linkId=13300f4284c721f7e5b0da78795da9eb&amp;show_border=true&amp;link_opens_in_new_window=true\" style=\"height: 240px; width: 120px;\"><\/iframe><\/p>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Since ES6, JavaScript now supports classes. They are not based on an object-oriented inheritance model. Classes are still functions. They sit on top of JavaScript&#8217;s prototype inheritance. A class contains a set of properties that define an object. The following is an example of a class in JavaScript: class Potholder { constructor(numColors) { this.numColors = [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","om_disable_all_campaigns":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[340,339,341],"tags":[],"class_list":["post-201","post","type-post","status-publish","format-standard","hentry","category-javascript","category-javascript-tutorials","category-tutorials"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JavaScript Tutorial Series - Classes - Zofxare Blog Home<\/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:\/\/zofxare.com\/zofxare\/blog\/2020\/03\/22\/javascript-tutorial-series-classes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JavaScript Tutorial Series - Classes - Zofxare Blog Home\" \/>\n<meta property=\"og:description\" content=\"Since ES6, JavaScript now supports classes. They are not based on an object-oriented inheritance model. Classes are still functions. They sit on top of JavaScript&#8217;s prototype inheritance. A class contains a set of properties that define an object. The following is an example of a class in JavaScript: class Potholder { constructor(numColors) { this.numColors = [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zofxare.com\/zofxare\/blog\/2020\/03\/22\/javascript-tutorial-series-classes\/\" \/>\n<meta property=\"og:site_name\" content=\"Zofxare Blog Home\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-22T22:04:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-13T15:04:52+00:00\" \/>\n<meta name=\"author\" content=\"adminuser\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"adminuser\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/2020\\\/03\\\/22\\\/javascript-tutorial-series-classes\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/2020\\\/03\\\/22\\\/javascript-tutorial-series-classes\\\/\"},\"author\":{\"name\":\"adminuser\",\"@id\":\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/#\\\/schema\\\/person\\\/488c98b837076eb349075c14ea0e87d8\"},\"headline\":\"JavaScript Tutorial Series &#8211; Classes\",\"datePublished\":\"2020-03-22T22:04:00+00:00\",\"dateModified\":\"2024-09-13T15:04:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/2020\\\/03\\\/22\\\/javascript-tutorial-series-classes\\\/\"},\"wordCount\":305,\"commentCount\":0,\"articleSection\":[\"javascript\",\"javascript tutorials\",\"tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/2020\\\/03\\\/22\\\/javascript-tutorial-series-classes\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/2020\\\/03\\\/22\\\/javascript-tutorial-series-classes\\\/\",\"url\":\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/2020\\\/03\\\/22\\\/javascript-tutorial-series-classes\\\/\",\"name\":\"JavaScript Tutorial Series - Classes - Zofxare Blog Home\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/#website\"},\"datePublished\":\"2020-03-22T22:04:00+00:00\",\"dateModified\":\"2024-09-13T15:04:52+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/#\\\/schema\\\/person\\\/488c98b837076eb349075c14ea0e87d8\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/2020\\\/03\\\/22\\\/javascript-tutorial-series-classes\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/2020\\\/03\\\/22\\\/javascript-tutorial-series-classes\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/2020\\\/03\\\/22\\\/javascript-tutorial-series-classes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript Tutorial Series &#8211; Classes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/\",\"name\":\"Zofxare Blog Home\",\"description\":\"The Zofxare blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/#\\\/schema\\\/person\\\/488c98b837076eb349075c14ea0e87d8\",\"name\":\"adminuser\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5fe9cf8bb25011247f8063d1c50de6fbdd21be02889559dd151d722f050f037?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5fe9cf8bb25011247f8063d1c50de6fbdd21be02889559dd151d722f050f037?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5fe9cf8bb25011247f8063d1c50de6fbdd21be02889559dd151d722f050f037?s=96&d=retro&r=g\",\"caption\":\"adminuser\"},\"sameAs\":[\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\"],\"url\":\"https:\\\/\\\/zofxare.com\\\/zofxare\\\/blog\\\/author\\\/adminuser\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JavaScript Tutorial Series - Classes - Zofxare Blog Home","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:\/\/zofxare.com\/zofxare\/blog\/2020\/03\/22\/javascript-tutorial-series-classes\/","og_locale":"en_US","og_type":"article","og_title":"JavaScript Tutorial Series - Classes - Zofxare Blog Home","og_description":"Since ES6, JavaScript now supports classes. They are not based on an object-oriented inheritance model. Classes are still functions. They sit on top of JavaScript&#8217;s prototype inheritance. A class contains a set of properties that define an object. The following is an example of a class in JavaScript: class Potholder { constructor(numColors) { this.numColors = [&hellip;]","og_url":"https:\/\/zofxare.com\/zofxare\/blog\/2020\/03\/22\/javascript-tutorial-series-classes\/","og_site_name":"Zofxare Blog Home","article_published_time":"2020-03-22T22:04:00+00:00","article_modified_time":"2024-09-13T15:04:52+00:00","author":"adminuser","twitter_card":"summary_large_image","twitter_misc":{"Written by":"adminuser","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zofxare.com\/zofxare\/blog\/2020\/03\/22\/javascript-tutorial-series-classes\/#article","isPartOf":{"@id":"https:\/\/zofxare.com\/zofxare\/blog\/2020\/03\/22\/javascript-tutorial-series-classes\/"},"author":{"name":"adminuser","@id":"https:\/\/zofxare.com\/zofxare\/blog\/#\/schema\/person\/488c98b837076eb349075c14ea0e87d8"},"headline":"JavaScript Tutorial Series &#8211; Classes","datePublished":"2020-03-22T22:04:00+00:00","dateModified":"2024-09-13T15:04:52+00:00","mainEntityOfPage":{"@id":"https:\/\/zofxare.com\/zofxare\/blog\/2020\/03\/22\/javascript-tutorial-series-classes\/"},"wordCount":305,"commentCount":0,"articleSection":["javascript","javascript tutorials","tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zofxare.com\/zofxare\/blog\/2020\/03\/22\/javascript-tutorial-series-classes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zofxare.com\/zofxare\/blog\/2020\/03\/22\/javascript-tutorial-series-classes\/","url":"https:\/\/zofxare.com\/zofxare\/blog\/2020\/03\/22\/javascript-tutorial-series-classes\/","name":"JavaScript Tutorial Series - Classes - Zofxare Blog Home","isPartOf":{"@id":"https:\/\/zofxare.com\/zofxare\/blog\/#website"},"datePublished":"2020-03-22T22:04:00+00:00","dateModified":"2024-09-13T15:04:52+00:00","author":{"@id":"https:\/\/zofxare.com\/zofxare\/blog\/#\/schema\/person\/488c98b837076eb349075c14ea0e87d8"},"breadcrumb":{"@id":"https:\/\/zofxare.com\/zofxare\/blog\/2020\/03\/22\/javascript-tutorial-series-classes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zofxare.com\/zofxare\/blog\/2020\/03\/22\/javascript-tutorial-series-classes\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zofxare.com\/zofxare\/blog\/2020\/03\/22\/javascript-tutorial-series-classes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zofxare.com\/zofxare\/blog\/"},{"@type":"ListItem","position":2,"name":"JavaScript Tutorial Series &#8211; Classes"}]},{"@type":"WebSite","@id":"https:\/\/zofxare.com\/zofxare\/blog\/#website","url":"https:\/\/zofxare.com\/zofxare\/blog\/","name":"Zofxare Blog Home","description":"The Zofxare blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zofxare.com\/zofxare\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/zofxare.com\/zofxare\/blog\/#\/schema\/person\/488c98b837076eb349075c14ea0e87d8","name":"adminuser","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c5fe9cf8bb25011247f8063d1c50de6fbdd21be02889559dd151d722f050f037?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c5fe9cf8bb25011247f8063d1c50de6fbdd21be02889559dd151d722f050f037?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c5fe9cf8bb25011247f8063d1c50de6fbdd21be02889559dd151d722f050f037?s=96&d=retro&r=g","caption":"adminuser"},"sameAs":["https:\/\/zofxare.com\/zofxare\/blog"],"url":"https:\/\/zofxare.com\/zofxare\/blog\/author\/adminuser\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/zofxare.com\/zofxare\/blog\/wp-json\/wp\/v2\/posts\/201","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zofxare.com\/zofxare\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zofxare.com\/zofxare\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zofxare.com\/zofxare\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zofxare.com\/zofxare\/blog\/wp-json\/wp\/v2\/comments?post=201"}],"version-history":[{"count":2,"href":"https:\/\/zofxare.com\/zofxare\/blog\/wp-json\/wp\/v2\/posts\/201\/revisions"}],"predecessor-version":[{"id":252,"href":"https:\/\/zofxare.com\/zofxare\/blog\/wp-json\/wp\/v2\/posts\/201\/revisions\/252"}],"wp:attachment":[{"href":"https:\/\/zofxare.com\/zofxare\/blog\/wp-json\/wp\/v2\/media?parent=201"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zofxare.com\/zofxare\/blog\/wp-json\/wp\/v2\/categories?post=201"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zofxare.com\/zofxare\/blog\/wp-json\/wp\/v2\/tags?post=201"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}