[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"navigation":3,"url-settings":86,"blog-\u002Fblog\u002Funderstanding-this-in-javascript-a-quick-guide-for-devs":663,"blog-author-\u002Fblog\u002Funderstanding-this-in-javascript-a-quick-guide-for-devs":1266,"i-material-symbols:arrow-back-rounded":1281},{"id":4,"extension":5,"footer":6,"header":73,"meta":83,"stem":84,"__hash__":85},"navigation\u002Fdata\u002Fshared\u002Fnavigation.yml","yml",{"brand":7,"columns":13,"legal":63},{"name":8,"tagline":9,"downloadCta":10},"Pieces","The memory layer for modern work.",{"label":11,"href":12},"All downloads","\u002Fdownloads",[14,26,39,51],{"title":15,"links":16},"Product",[17,20,23],{"label":18,"href":19},"Pieces Desktop","\u002F",{"label":21,"href":22},"Pieces Enterprise","\u002Fenterprise",{"label":24,"href":25},"Pieces MCP","\u002Fmcp",{"title":27,"links":28},"Resources",[29,33,36],{"label":30,"href":31,"external":32},"Documentation","url:docs.home",true,{"label":34,"href":35},"Blog","\u002Fblog",{"label":37,"href":38,"external":32},"GitHub","url:github.org",{"title":40,"links":41},"Community",[42,45,48],{"label":43,"href":44,"external":32},"Discord","url:social.discord",{"label":46,"href":47,"external":32},"X \u002F Twitter","url:social.x",{"label":49,"href":50,"external":32},"LinkedIn","url:social.linkedin",{"title":52,"links":53},"Company",[54,57,60],{"label":55,"href":56},"About","\u002Fabout",{"label":58,"href":59},"Updates","\u002Fupdates",{"label":61,"href":62},"Contact","\u002Fcontact",[64,67,70],{"label":65,"href":66},"Privacy Policy","\u002Flegal\u002Fprivacy",{"label":68,"href":69},"Refund Policy","\u002Flegal\u002Frefund",{"label":71,"href":72},"Terms of Service","\u002Flegal\u002Fterms",{"links":74,"signIn":75,"contact":78,"cta":80},[],{"label":76,"href":77},"Sign in","url:portal.home",{"label":79,"href":62},"Get in touch",{"label":81,"href":82},"Download","url:routes.downloads",{},"data\u002Fshared\u002Fnavigation","VdirGIa8cUm6xLprbBeTKcw914JfyJjWfF-9hSVOX5Y",{"id":87,"extension":5,"links":88,"meta":660,"stem":661,"__hash__":662},"urlSettings\u002Fdata\u002Fshared\u002Furls.yml",[89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280,284,288,292,295,299,303,306,310,314,318,322,326,330,334,338,342,346,350,354,358,362,366,370,374,378,382,386,390,394,398,402,406,410,414,418,422,426,430,434,438,442,446,450,453,457,461,465,469,473,477,480,483,486,489,493,497,500,504,508,512,516,520,524,528,532,536,540,544,548,551,555,559,563,567,571,574,577,580,584,587,591,595,599,603,606,610,614,617,620,623,627,631,635,638,641,644,648,652,656],{"key":90,"label":91,"href":92},"downloads.desktop","Desktop download page","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fdownload",{"key":94,"label":95,"href":96},"downloads.macOS.dmgArm64","macOS DMG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fdmg-arm64\u002Fdownload",{"key":98,"label":99,"href":100},"downloads.macOS.dmgIntel","macOS DMG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fdmg\u002Fdownload",{"key":102,"label":103,"href":104},"downloads.macOS.pkg","macOS PKG","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg\u002Fdownload",{"key":106,"label":107,"href":108},"downloads.macOS.universal","Desktop macOS Universal","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fmacos-universal\u002Fdownload",{"key":110,"label":111,"href":112},"downloads.macOS.pkgArm64","Desktop macOS PKG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pfd-arm64\u002Fdownload",{"key":114,"label":115,"href":116},"downloads.macOS.pkgIntel","Desktop macOS PKG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pfd\u002Fdownload",{"key":118,"label":119,"href":120},"downloads.windows.appinstaller","Windows App Installer","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fappinstaller\u002Fpieces_for_x.appinstaller",{"key":122,"label":123,"href":124},"downloads.windows.exe","Windows EXE","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fwindows-exe\u002Fdownload",{"key":126,"label":127,"href":128},"downloads.windows.msix","Windows MSIX","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fwindows-msix\u002Fdownload",{"key":130,"label":131,"href":132},"downloads.windows.suiteManager","Windows Suite Manager","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_suite_windows\u002Fappinstaller\u002Fdownload",{"key":134,"label":135,"href":136},"downloads.linux.flatpakRepo","Linux Flatpak repository","https:\u002F\u002Fbuilds.pieces.app\u002Fpieces-flatpak-repo\u002Fpieces-flatpak.flatpakrepo",{"key":138,"label":139,"href":140},"downloads.linux.snapDesktop","Linux Snap Desktop","https:\u002F\u002Fsnapcraft.io\u002Fpieces-for-developers",{"key":142,"label":143,"href":144},"downloads.linux.snapPiecesOS","Linux Snap PiecesOS","https:\u002F\u002Fsnapcraft.io\u002Fpieces-os",{"key":146,"label":147,"href":148},"downloads.linux.snap","Desktop Linux Snap package","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fsnap\u002Fdownload",{"key":150,"label":151,"href":152},"downloads.piecesOS.macOS.dmgArm64","PiecesOS macOS DMG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fdmg-arm64\u002Fdownload",{"key":154,"label":155,"href":156},"downloads.piecesOS.macOS.dmgIntel","PiecesOS macOS DMG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fdmg\u002Fdownload",{"key":158,"label":159,"href":160},"downloads.piecesOS.macOS.universal","PiecesOS macOS Universal","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fmacos-universal\u002Fdownload",{"key":162,"label":163,"href":164},"downloads.piecesOS.macOS.pkgArm64","PiecesOS macOS PKG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pos-launch-only-arm64\u002Fdownload",{"key":166,"label":167,"href":168},"downloads.piecesOS.macOS.pkgIntel","PiecesOS macOS PKG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pos-launch-only\u002Fdownload",{"key":170,"label":171,"href":172},"downloads.piecesOS.windows.appinstaller","PiecesOS Windows App Installer","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fappinstaller\u002Fos_server.appinstaller",{"key":174,"label":175,"href":176},"downloads.piecesOS.windows.exe","PiecesOS Windows EXE","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fwindows-exe\u002Fdownload",{"key":178,"label":179,"href":180},"downloads.piecesOS.windows.msix","PiecesOS Windows MSIX","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fwindows-msix\u002Fdownload",{"key":182,"label":183,"href":184},"downloads.piecesOS.linux.snap","PiecesOS Linux Snap package","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fsnap\u002Fdownload",{"key":186,"label":187,"href":188},"downloads.combined.macOS.appleSilicon","Combined macOS installer Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-arm64\u002Fdownload",{"key":190,"label":191,"href":104},"downloads.combined.macOS.intel","Combined macOS installer Intel",{"key":193,"label":194,"href":195},"downloads.guides.macOS","macOS installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Fmacos-installation-guide",{"key":197,"label":198,"href":199},"downloads.guides.windows","Windows installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Fwindows-installation-guide",{"key":201,"label":202,"href":203},"downloads.guides.linux","Linux installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Flinux-installation-guide",{"key":205,"label":206,"href":207},"downloads.guides.piecesOS","PiecesOS manual installation","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Fmanual-installation",{"key":209,"label":210,"href":211},"extensions.chrome","Chrome extension","https:\u002F\u002Fchrome.google.com\u002Fwebstore\u002Fdetail\u002Fpieces-save-code-snippets\u002Figbgibhbfonhmjlechmeefimncpekepm",{"key":213,"label":214,"href":215},"extensions.firefox","Firefox add-on","https:\u002F\u002Faddons.mozilla.org\u002Fen-US\u002Ffirefox\u002Faddon\u002Fpieces-save-code-from-the-web\u002F",{"key":217,"label":218,"href":219},"extensions.edge","Edge add-on","https:\u002F\u002Fmicrosoftedge.microsoft.com\u002Faddons\u002Fdetail\u002Fpieces-save-code-snippet\u002Fhglfimcdgonaeeobjckfdabcldfidmim",{"key":221,"label":222,"href":223},"extensions.vscode","VS Code extension","https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=MeshIntelligentTechnologiesInc.pieces-vscode",{"key":225,"label":226,"href":227},"extensions.visualStudio","Visual Studio extension","https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=MeshIntelligentTechnologiesInc.PiecesVisualStudio",{"key":229,"label":230,"href":231},"extensions.jetbrains","JetBrains plugin","https:\u002F\u002Fplugins.jetbrains.com\u002Fplugin\u002F17328-pieces--save-search-share--reuse-code-snippets",{"key":233,"label":234,"href":235},"extensions.obsidian","Obsidian plugin","https:\u002F\u002Fobsidian.md\u002Fplugins?id=pieces-for-developers",{"key":237,"label":238,"href":239},"extensions.sublime","Sublime package","https:\u002F\u002Fpackagecontrol.io\u002Fpackages\u002FPieces",{"key":241,"label":242,"href":243},"extensions.neovim","Neovim plugin","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_neo_vim",{"key":245,"label":246,"href":247},"extensions.jupyterlab","JupyterLab plugin","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fjupyterlab-pieces",{"key":249,"label":250,"href":251},"extensions.cli","Pieces CLI","https:\u002F\u002Fpypi.org\u002Fproject\u002Fpieces-cli\u002F",{"key":253,"label":254,"href":255},"docs.home","Documentation home","https:\u002F\u002Fdocs.pieces.app",{"key":257,"label":258,"href":259},"docs.getStarted","Get started docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces",{"key":261,"label":262,"href":263},"docs.api","API docs","https:\u002F\u002Fdocs.pieces.app\u002Fapi",{"key":265,"label":266,"href":267},"docs.desktop.overview","Desktop overview","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop",{"key":269,"label":270,"href":271},"docs.desktop.onboarding","Desktop onboarding","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fonboarding",{"key":273,"label":274,"href":275},"docs.desktop.timeline","Desktop timeline docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Ftimeline",{"key":277,"label":278,"href":279},"docs.desktop.summaries","Desktop summaries docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fsingle-click-summaries",{"key":281,"label":282,"href":283},"docs.desktop.search","Desktop conversational search docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fconversational-search",{"key":285,"label":286,"href":287},"docs.desktop.drive","Desktop drive docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fdrive",{"key":289,"label":290,"href":291},"docs.desktop.account","Desktop account settings docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fconfiguration\u002Faccount",{"key":293,"label":294,"href":92},"docs.desktop.download","Desktop download docs",{"key":296,"label":297,"href":298},"docs.piecesOS.overview","PiecesOS overview docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies",{"key":300,"label":301,"href":302},"docs.piecesOS.details","PiecesOS details docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os",{"key":304,"label":305,"href":207},"docs.piecesOS.install","PiecesOS install docs",{"key":307,"label":308,"href":309},"docs.piecesOS.quickMenu","PiecesOS quick menu docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Fquick-menu",{"key":311,"label":312,"href":313},"docs.piecesOS.storage","On-device storage docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fon-device-storage",{"key":315,"label":316,"href":317},"docs.piecesOS.troubleshooting","PiecesOS troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Ftroubleshooting",{"key":319,"label":320,"href":321},"docs.mcp.overview","MCP overview docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp",{"key":323,"label":324,"href":325},"docs.mcp.cursor","MCP Cursor docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcursor",{"key":327,"label":328,"href":329},"docs.mcp.vscode","MCP VS Code docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fvs-code",{"key":331,"label":332,"href":333},"docs.mcp.claudeDesktop","MCP Claude Desktop docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-desktop",{"key":335,"label":336,"href":337},"docs.mcp.claudeCode","MCP Claude Code docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-code",{"key":339,"label":340,"href":341},"docs.mcp.claudeCowork","MCP Claude Cowork docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-cowork",{"key":343,"label":344,"href":345},"docs.mcp.githubCopilot","MCP GitHub Copilot docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgithub-copilot",{"key":347,"label":348,"href":349},"docs.mcp.goose","MCP Goose docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgoose",{"key":351,"label":352,"href":353},"docs.mcp.windsurf","MCP Windsurf docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fwindsurf",{"key":355,"label":356,"href":357},"docs.mcp.zed","MCP Zed docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fzed",{"key":359,"label":360,"href":361},"docs.mcp.jetbrains","MCP JetBrains docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fjetbrains-ides",{"key":363,"label":364,"href":365},"docs.mcp.continueDev","MCP Continue docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcontinue-dev",{"key":367,"label":368,"href":369},"docs.mcp.cline","MCP Cline docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcline",{"key":371,"label":372,"href":373},"docs.mcp.raycast","MCP Raycast docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fraycast",{"key":375,"label":376,"href":377},"docs.mcp.rovoDevCli","MCP Rovo Dev CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Frovo-dev-cli",{"key":379,"label":380,"href":381},"docs.mcp.openaiCodexCli","MCP OpenAI Codex CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fopenai-codex-cli",{"key":383,"label":384,"href":385},"docs.mcp.googleGeminiCli","MCP Google Gemini CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgoogle-gemini-cli",{"key":387,"label":388,"href":389},"docs.mcp.amazonQ","MCP Amazon Q docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Famazon-q-developer",{"key":391,"label":392,"href":393},"docs.mcp.chatgptDev","MCP ChatGPT Developer Mode docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fchatgpt-developer-mode",{"key":395,"label":396,"href":397},"docs.mcp.openclaw","MCP OpenClaw docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fopenclaw",{"key":399,"label":400,"href":401},"docs.mcp.mcpRemote","MCP Remote docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fmcp-remote",{"key":403,"label":404,"href":405},"docs.mcp.ngrok","MCP ngrok docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fngrok-setup",{"key":407,"label":408,"href":409},"docs.troubleshooting.macOS","macOS troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Fmacos",{"key":411,"label":412,"href":413},"docs.troubleshooting.windows","Windows troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Fwindows",{"key":415,"label":416,"href":417},"docs.troubleshooting.linux","Linux troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Flinux",{"key":419,"label":420,"href":421},"docs.privacy","Privacy and security docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fprivacy-security-your-data",{"key":423,"label":424,"href":425},"docs.support","Support docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fsupport",{"key":427,"label":428,"href":429},"portal.home","Pieces portal","https:\u002F\u002Fportal.pieces.app",{"key":431,"label":432,"href":433},"site.home","Website home","https:\u002F\u002Fpieces.app",{"key":435,"label":436,"href":437},"site.about","About page","https:\u002F\u002Fpieces.app\u002Fabout",{"key":439,"label":440,"href":441},"site.features","Features page","https:\u002F\u002Fpieces.app\u002Ffeatures",{"key":443,"label":444,"href":445},"site.plugins","Plugins page","https:\u002F\u002Fpieces.app\u002Fplugins",{"key":447,"label":448,"href":449},"site.contact","Contact page","https:\u002F\u002Fpieces.app\u002Fcontact",{"key":451,"label":58,"href":452},"site.updates","https:\u002F\u002Fpieces.app\u002Fupdates",{"key":454,"label":455,"href":456},"site.news","News","https:\u002F\u002Fpieces.app\u002Fnews",{"key":458,"label":459,"href":460},"site.events","Community events","https:\u002F\u002Fpieces.app\u002Fcommunity\u002Fevents",{"key":462,"label":463,"href":464},"site.userStories","User stories","https:\u002F\u002Fpieces.app\u002Fuser-stories",{"key":466,"label":467,"href":468},"site.academy","Academy","https:\u002F\u002Fpieces.app\u002Flearn\u002Facademy",{"key":470,"label":471,"href":472},"site.support","Website support","https:\u002F\u002Fpieces.app\u002Fsupport",{"key":474,"label":475,"href":476},"site.standup","Standup","https:\u002F\u002Fpieces.app\u002Fstandup",{"key":478,"label":34,"href":479},"site.blog","https:\u002F\u002Fcode.pieces.app\u002Fblog",{"key":481,"label":43,"href":482},"social.discord","https:\u002F\u002Fdiscord.gg\u002Fgetpieces",{"key":484,"label":46,"href":485},"social.x","https:\u002F\u002Fx.com\u002Fgetpieces",{"key":487,"label":488,"href":485},"social.twitter","Twitter",{"key":490,"label":491,"href":492},"social.instagram","Instagram","https:\u002F\u002Fwww.instagram.com\u002Fgetpieces\u002F",{"key":494,"label":495,"href":496},"social.tiktok","TikTok","https:\u002F\u002Fwww.tiktok.com\u002F@getpieces",{"key":498,"label":49,"href":499},"social.linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fgetpieces\u002F",{"key":501,"label":502,"href":503},"social.youtube","YouTube","https:\u002F\u002Fyoutube.com\u002F@getpieces",{"key":505,"label":506,"href":507},"github.org","GitHub organization","https:\u002F\u002Fgithub.com\u002Fpieces-app",{"key":509,"label":510,"href":511},"github.support","GitHub support","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport",{"key":513,"label":514,"href":515},"github.issues","GitHub issues","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport\u002Fissues",{"key":517,"label":518,"href":519},"github.discussions","GitHub discussions","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport\u002Fdiscussions",{"key":521,"label":522,"href":523},"github.documentation","GitHub documentation","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fdocumentation",{"key":525,"label":526,"href":527},"github.opensource","GitHub open source","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fopensource",{"key":529,"label":530,"href":531},"github.sdks.python","Python SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-python",{"key":533,"label":534,"href":535},"github.sdks.typescript","TypeScript SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-typescript",{"key":537,"label":538,"href":539},"github.sdks.dart","Dart SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-dart",{"key":541,"label":542,"href":543},"github.sdks.kotlin","Kotlin SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-kotlin",{"key":545,"label":546,"href":547},"github.plugins.obsidian","Obsidian plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fobsidian-pieces",{"key":549,"label":550,"href":247},"github.plugins.jupyterlab","JupyterLab plugin repository",{"key":552,"label":553,"href":554},"github.plugins.sublime","Sublime plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_sublime",{"key":556,"label":557,"href":558},"github.plugins.neovim","Neovim plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_neovim",{"key":560,"label":561,"href":562},"github.cliAgent","CLI agent repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fcli-agent",{"key":564,"label":565,"href":566},"github.mcpDart","MCP Dart repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fmcp_dart",{"key":568,"label":569,"href":570},"github.awesomePieces","Awesome Pieces repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fawesome-pieces",{"key":572,"label":573,"href":66},"legal.privacyPolicy","Privacy policy",{"key":575,"label":576,"href":69},"legal.refundPolicy","Refund policy",{"key":578,"label":579,"href":72},"legal.terms","Terms",{"key":581,"label":582,"href":583},"legal.security","Legal security","https:\u002F\u002Fpieces.app\u002Flegal\u002Fsecurity",{"key":585,"label":586,"href":503},"videos.youtubeChannel","YouTube channel",{"key":588,"label":589,"href":590},"videos.gettingStartedDesktop","Getting started desktop video","https:\u002F\u002Fyoutu.be\u002FdUr1lRM_TYk",{"key":592,"label":593,"href":594},"videos.snippetDiscoveryxR","Snippet discovery video","https:\u002F\u002Fyoutu.be\u002FG6vb1USw-30",{"key":596,"label":597,"href":598},"sales.bookACall","Book a sales call","https:\u002F\u002Fcalendar.app.google\u002FWVUDtUfNy5Vst3sH7",{"key":600,"label":601,"href":602},"sales.enterprise","Enterprise form","https:\u002F\u002Fgetpieces.typeform.com\u002Fto\u002FaVQFTvpE",{"key":604,"label":605,"href":519},"sales.feedback","Feedback discussions",{"key":607,"label":608,"href":609},"sales.earlyAccess","Early access form","https:\u002F\u002Fgetpieces.typeform.com\u002Fearlyaccess",{"key":611,"label":612,"href":613},"sales.supportEmail","Support email","mailto:support@pieces.app",{"key":615,"label":616,"href":19},"routes.home","Home route",{"key":618,"label":619,"href":56},"routes.about","About route",{"key":621,"label":622,"href":12},"routes.downloads","Downloads route",{"key":624,"label":625,"href":626},"routes.thanks","Post-install thanks route","\u002Finstall\u002Fthanks",{"key":628,"label":629,"href":630},"routes.pricing","Pricing route","\u002Fpricing",{"key":632,"label":633,"href":634},"cta.freeTrial","Start free trial CTA (Pieces Pro) — used by \u002Fcampaigns\u002F* landing pages","https:\u002F\u002Fcampaigns.pieces.app\u002F",{"key":636,"label":637,"href":22},"routes.enterprise","Enterprise route",{"key":639,"label":640,"href":62},"routes.contact","Contact route",{"key":642,"label":643,"href":59},"routes.updates","Updates route",{"key":645,"label":646,"href":647},"routes.migrationError","Migration error route","\u002Fmigration\u002Ferror",{"key":649,"label":650,"href":651},"routes.authenticated","Post-login authenticated route","\u002Fauth\u002Fsigned-in",{"key":653,"label":654,"href":655},"routes.signed-out","Signed out route","\u002Fauth\u002Fsigned-out",{"key":657,"label":658,"href":659},"routes.authentication-error","Authentication error route","\u002Fauth\u002Ferror",{},"data\u002Fshared\u002Furls","NLkVE1lIUws518K-1QsSB6T-GvlXYIzcRL1HDhqarGQ",{"id":664,"title":665,"author":666,"authorPhoto":667,"authorPhotoAlt":668,"authorSlug":669,"body":670,"buttonText":1253,"buttonUrl":1253,"category":1254,"date":1255,"description":1256,"draft":1257,"editorsPick":1257,"extension":1258,"featured":1257,"image":1259,"imageAlt":1260,"meta":1261,"navigation":32,"ogImage":1253,"ogImageAlt":1253,"path":1262,"seo":1263,"stem":1264,"tags":1253,"__hash__":1265},"blog\u002Fblog\u002Funderstanding-this-in-javascript-a-quick-guide-for-devs.md","Understanding this in JavaScript: A Quick Guide for Devs","James Amoo","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Ftailwind-theming-create-light-and-dark-modes\u002Fauthor.jpeg","James Amoo.","james-amoo",{"type":671,"value":672,"toc":1236},"minimark",[673,691,699,705,713,731,737,741,747,757,767,780,786,798,808,814,820,824,830,835,847,853,863,867,873,879,901,905,918,936,939,945,989,993,1010,1025,1031,1054,1067,1073,1079,1089,1095,1111,1115,1130,1136,1155,1162,1174,1181,1204,1217,1221],[674,675,676,677,684,685,690],"p",{},"JavaScript, known as the language of the web, is a lightweight, interpreted programming language used to add interactivity to web pages, applications, and servers. As the language of the web, JavaScript is one of the most popular programming languages used in development. It has various ",[678,679,683],"a",{"href":680,"rel":681},"https:\u002F\u002Fpieces.app\u002Fblog\u002Feverything-you-need-to-know-to-choose-a-modern-javascript-framework",[682],"nofollow","web frameworks"," that help ease development and ",[678,686,689],{"href":687,"rel":688},"https:\u002F\u002Fpieces.app\u002Fblog\u002Fhow-to-measure-developer-productivity-a-complete-guide",[682],"enhance productivity",".",[674,692,693,694,698],{},"To make the best use of JavaScript, developers must understand its syntax and semantics, and more importantly, how to properly apply them in development. The ",[695,696,697],"code",{},"this"," keyword in JavaScript has been a source of confusion among developers, especially developers learning JavaScript for the first time.",[674,700,701,702,704],{},"In this blog post, we will learn about ",[695,703,697],{}," in JavaScript, how to properly use it, and where to use it.",[706,707,709,710,712],"h2",{"id":708},"what-is-this-in-javascript","What is ",[695,711,697],{}," in JavaScript?",[674,714,715,716,718,719,721,722,726,727,730],{},"The JavaScript ",[695,717,697],{}," keyword refers to an object where a piece of code is supposed to run. It is mostly used in object methods, where this refers to the object that owns the method at the time it is called. When an object is referenced using ",[695,720,697],{},", the value returned depends on ",[723,724,725],"strong",{},"how"," and ",[723,728,729],{},"where"," the object is being called, not necessarily what has been defined in the object.",[674,732,733,734,736],{},"We can further explain ",[695,735,697],{}," using the ‘this’ pronoun in English. Consider this statement: “There are three balls in the box, but this one is the biggest”. Now, without an action from the speaker, we cannot know which of the balls is the biggest. If the speaker makes the statement, and then points at or picks up a ball, then we can determine which of the balls is being referred to. Similarly, the manner (action) and execution context in which an object is called will determine the value that will be returned.",[706,738,740],{"id":739},"global-execution-context","Global Execution Context",[674,742,743,744,746],{},"We already established that the execution context where ",[695,745,697],{}," is used will determine the value. A global execution context refers to an environment where code is executed that is not confined by any function, method, or block. Variables defined in the global execution context can be accessed from any part of the codebase.",[674,748,749,750,753,754,756],{},"In the browser, the global execution context is defined using the ",[695,751,752],{},"window"," object. All variables and functions defined globally automatically belong to the ",[695,755,752],{}," object. We can then access the variables defined using the object. Let’s consider an example:",[758,759,764],"pre",{"className":760,"code":762,"language":763},[761],"language-text","var bestAITool = \"Pieces for Developers\";  \u002F\u002F defined globally\nconsole.log(window.bestAITool);  \u002F\u002F Output: Pieces for Developers\n","text",[695,765,762],{"__ignoreMap":766},"",[674,768,769,770,773,774,776,777,779],{},"Here, we defined the variable ",[695,771,772],{},"bestAITool"," globally and then referenced it using the JavaScript ",[695,775,752],{}," object. Similarly, any variable declared globally can be accessed using ",[695,778,697],{},". Consider this example:",[758,781,784],{"className":782,"code":783,"language":763},[761],"var bestAITool = \"Pieces for Developers\";  \u002F\u002F defined globally\nconsole.log(this.bestAITool);  \u002F\u002F Output: Pieces for Developers\n",[695,785,783],{"__ignoreMap":766},[674,787,788,789,791,792,794,795,797],{},"In the above code snippet, we can see that the output remains the same when we replace the ",[695,790,752],{}," keyword with ",[695,793,697],{},". This is because variables declared globally are automatically attached to the ",[695,796,752],{}," object. Note that this applies to the browser only.",[674,799,800,801,804,805,807],{},"In the Node environment, the global object is accessed using the ",[695,802,803],{},"global"," keyword, an attempt to access a variable in Node using ",[695,806,697],{}," in JavaScript will output an empty object.  Consider the example below:",[758,809,812],{"className":810,"code":811,"language":763},[761],"global bestAITool = \"Pieces for Developers\"; \nconsole.log(this.bestAITool); Output: undefined\nconsole.log(global.bestAITool); Output: Pieces for Developers\n",[695,813,811],{"__ignoreMap":766},[674,815,816,817,819],{},"Here, we see that when we use ",[695,818,697],{}," to access a global variable in a Node environment, it does not give the expected output.",[706,821,823],{"id":822},"function-execution-context","Function Execution Context",[674,825,826,827,829],{},"The function execution context refers to the environment where a function is called or invoked. There are 4 ways a JavaScript function can be invoked which determines how ",[695,828,697],{}," behaves. Let’s explore these 4 ways.",[831,832,834],"h3",{"id":833},"function-invocation","Function Invocation",[674,836,837,838,840,841,843,844,846],{},"When a function is invoked as a function in non-strict mode, ",[695,839,697],{}," keyword references the ",[695,842,752],{}," object (if it’s in the browser) or the ",[695,845,803],{}," object (in a Node environment). In strict mode, this is set to undefined. Consider the example below:",[758,848,851],{"className":849,"code":850,"language":763},[761],"function testFunction() {\n    console.log(this);  \u002F\u002F \n}\n\ntestFunction();  \u002F\u002F Output: window (in browser)\n",[695,852,850],{"__ignoreMap":766},[674,854,855,856,859,860,862],{},"The ",[695,857,858],{},"testFunction"," function in the code snippet above outputs the ",[695,861,752],{}," object.",[831,864,866],{"id":865},"method-invocation","Method Invocation",[674,868,869,870,872],{},"When a function is invoked as a method, the ",[695,871,697],{}," JavaScript keyword refers to the particular object that owns the method. Consider the example below:",[758,874,877],{"className":875,"code":876,"language":763},[761],"let bestCopilot = {\n    tool: \"Pieces\",\n    action: function() {\n        console.log(this.tool);  \u002F\u002F this refers to the 'tool' object\n    }\n};\n\nbestCopilot.action();  \u002F\u002F Output: \"Pieces\"\n",[695,878,876],{"__ignoreMap":766},[674,880,881,882,885,886,889,890,893,894,896,897,900],{},"In the above code snippet, ",[695,883,884],{},"action"," is the method of the ",[695,887,888],{},"bestCopilot"," object. When the ",[695,891,892],{},"bestCopilot.action"," method is called, this refers to the ",[695,895,888],{}," object (because the method is ",[723,898,899],{},"in"," that object).",[831,902,904],{"id":903},"constructor-invocation","Constructor Invocation",[674,906,907,908,911,912,914,915,917],{},"Constructor invocation entails calling a function by using the ",[695,909,910],{},"new"," keyword. To invoke a function as a constructor, it is preceded with the ",[695,913,910],{}," keyword. The ",[695,916,910],{}," keyword creates an instance of the function. When a function is invoked as a constructor, the following actions take place:",[919,920,921,925,930],"ul",{},[922,923,924],"li",{},"A new empty object is created.",[922,926,927,929],{},[695,928,697],{}," now refers to the newly created object.",[922,931,932,933,935],{},"The value of ",[695,934,910],{}," becomes the newly constructed object.",[674,937,938],{},"Consider the code snippet below:",[758,940,943],{"className":941,"code":942,"language":763},[761],"function Pieces(feature, purpose) {\n    this.feature = \"code management feature\";\n    this.purpose = \"save, search and extract snippets\";\n\n    this.action = function() {\n        console.log(`With the Pieces this.feature, you can this.purpose.`); \n    };\n}\n\n\u002F\u002F new object with `new` keyword\nconst pieces1 = new Pieces(\"Copilot\", \"get a contextual answer based on your codebase\");\npieces1.action();  \u002F\u002F Output: \"With the Pieces Copilot feature, get a contextual answer based on your codebase\"\n",[695,944,942],{"__ignoreMap":766},[674,946,947,948,951,952,954,955,958,959,962,963,966,967,970,971,976,977,982,983,988],{},"In the code snippet above, when ",[695,949,950],{},"new Pieces(\"code management feature\", \"save, search and extract snippets\");"," is invoked, a new object is created. The value of ",[695,953,697],{}," now points to the newly created object. The properties are also assigned to the object. So, ",[695,956,957],{},"this.company"," now refers to the newly created ",[695,960,961],{},"company"," property, and ",[695,964,965],{},"this.tool"," refers to the newly created ",[695,968,969],{},"tool"," property. The output now becomes “With the Pieces Copilot feature, get a contextual answer based on your codebase”, instead of “With the Pieces code management feature, you can ",[678,972,975],{"href":973,"rel":974},"https:\u002F\u002Fpieces.app\u002Ffeatures\u002Fsave",[682],"save",", ",[678,978,981],{"href":979,"rel":980},"https:\u002F\u002Fpieces.app\u002Ffeatures\u002Fsearch",[682],"search",", and ",[678,984,987],{"href":985,"rel":986},"https:\u002F\u002Fpieces.app\u002Ffeatures\u002Fextract",[682],"extract"," snippets”.",[831,990,992],{"id":991},"indirect-invocation","Indirect Invocation",[674,994,995,996,998,999,976,1002,1005,1006,1009],{},"Indirect invocation entails manually setting the values of ",[695,997,697],{}," using the ",[695,1000,1001],{},"call",[695,1003,1004],{},"apply",", or ",[695,1007,1008],{},"bind"," JavaScript methods. These methods allow you to invoke any function as a method of any object. Let’s explore these methods:",[1011,1012,1013],"ol",{},[922,1014,1015,1018,1019,1021,1022,1024],{},[695,1016,1017],{},"call()",": The ",[695,1020,1017],{}," method allows you to explicitly specify the value of ",[695,1023,697],{}," while it invokes the function. It uses a list of arguments as arguments to the function. Consider the example below:",[758,1026,1029],{"className":1027,"code":1028,"language":763},[761],"function announcement(feature) {\n    console.log(`${this.name} is ${feature}`);\n}\n\nconst company = { name: \"Pieces OS\" };\n\nannouncement.call(company, \"open-source\");  \u002F\u002F Output: Pieces OS is open-source\n",[695,1030,1028],{"__ignoreMap":766},[674,1032,1033,1034,998,1036,1038,1039,1041,1042,1044,1045,1047,1048,1053],{},"Here, we explicitly set the value of ",[695,1035,697],{},[695,1037,1017],{}," method. The ",[695,1040,961],{}," object was defined and “open source” was passed as the argument. So ",[695,1043,697],{}," now refers to the values set by the ",[695,1046,1001],{}," method. The output is “",[678,1049,1052],{"href":1050,"rel":1051},"https:\u002F\u002Fdocs.pieces.app\u002Fbuild\u002F",[682],"Pieces OS is open-source","”.",[1011,1055,1056],{},[922,1057,1058,1018,1061,1063,1064,1066],{},[695,1059,1060],{},"apply()",[695,1062,1060],{}," method is similar to the ",[695,1065,1017],{}," method but uses an array of values as arguments. Let’s see how it works:",[758,1068,1071],{"className":1069,"code":1070,"language":763},[761],"function announcement(feature) {\n    console.log(`${this.name} is ${feature}`);\n}\n\nconst company = { name: \"Pieces\" };\n\nannouncement.apply(company, [\"open source\"]);  \u002F\u002F Output: Pieces is open source\n",[695,1072,1070],{"__ignoreMap":766},[674,1074,1075,1076,1078],{},"Here’s our previous code snippet but with some slight changes, the method used here is the ",[695,1077,1004],{}," method so the argument was changed to an array type.",[1011,1080,1081],{},[922,1082,1083,1018,1086,1088],{},[695,1084,1085],{},"bind()",[695,1087,1085],{}," method creates a new function that sets the value of the function to the provided value when it is called. It creates a new bound function. Consider the code below:",[758,1090,1093],{"className":1091,"code":1092,"language":763},[761],"const company = { name: \"Pieces\" };\n\nfunction sayHello() {\n    console.log(`Hello, ${this.name}`);\n}\n\nconst boundHello = sayHello.bind(company);  \u002F\u002F Creates a new function with `this` bound to `company`\n\nboundHello();  \u002F\u002F Output: \"Hello, Pieces\"\n",[695,1094,1092],{"__ignoreMap":766},[674,1096,1097,1098,1101,1102,1104,1105,1107,1108,1110],{},"In the example above, we create a new function ",[695,1099,1100],{},"boundHello"," with the ",[695,1103,1085],{}," method which sets ",[695,1106,697],{}," to the ",[695,1109,961],{}," object (provided value).",[706,1112,1114],{"id":1113},"arrow-functions","Arrow Functions",[674,1116,1117,1118,1120,1121,1123,1124,1126,1127,1129],{},"Arrow functions primarily do not have ",[695,1119,697],{}," in their execution context. It can, however, be set lexically. That is, ",[695,1122,697],{}," in JS uses the value of its surrounding lexical context. The value of ",[695,1125,697],{}," in an arrow function inherits the value of ",[695,1128,697],{}," in the closest non-arrow function. Consider the example below:",[758,1131,1134],{"className":1132,"code":1133,"language":763},[761],"const company = {\n    name: \"Pieces\",\n    sayHello: function() {\n        const arrowHello = () => {\n            console.log(`Hello, ${this.name}`);\n        };\n        arrowHello();\n    }\n};\n\ncompany.sayHello();  \u002F\u002F Outputs: \"Hello, Pieces\"\n",[695,1135,1133],{"__ignoreMap":766},[674,1137,1138,1139,1142,1143,1145,1146,1149,1150,1152,1153,862],{},"Here, we see that the ",[695,1140,1141],{},"arrowHello"," arrow function does not have its own ",[695,1144,697],{}," defined in it but it inherits this from the ",[695,1147,1148],{},"sayHello"," method, where ",[695,1151,697],{}," refers to the ",[695,1154,961],{},[706,1156,1158,1159,1161],{"id":1157},"understanding-the-this-javascript-keyword-with-pieces","Understanding the ",[695,1160,697],{}," JavaScript Keyword with Pieces",[674,1163,1164,1165,1167,1168,1170,1171,1173],{},"Got a solid knowledge of the JS ",[695,1166,697],{}," keyword and can’t wait to explore it in development? The ",[695,1169,697],{}," keyword can be tricky, especially in a large codebase where ",[695,1172,697],{}," is being used in different execution contexts. Let’s see how it works:",[674,1175,1176],{},[1177,1178],"img",{"alt":1179,"src":1180},"Asking Pieces Copilot about the This keyword in JavaScript.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Funderstanding-this-in-javascript-a-quick-guide-for-devs\u002Fimg-001.gif",[674,1182,1183,1184,1186,1187,1189,1190,1195,1196,1198,1199,690],{},"In the demo above, I have a piece of code that uses the ",[695,1185,697],{}," JavaScript keyword. To be extra sure, I asked Pieces Copilot “How is ",[695,1188,697],{}," being used in this context” and it gives a complete breakdown of how it is being used in my codebase. ",[678,1191,1194],{"href":1192,"rel":1193},"https:\u002F\u002Fdocs.pieces.app\u002Ffeatures\u002Fpieces-copilot",[682],"Pieces Copilot"," helps you navigate using ",[695,1197,697],{}," with an extra bit of confidence by providing contextual solutions specifically for your codebase. The good news is that you can also learn and confidently use other JavaScript concepts with Pieces Copilot as your companion. See also how you can ",[678,1200,1203],{"href":1201,"rel":1202},"https:\u002F\u002Fpieces.app\u002Fblog\u002Flearn-c-with-the-help-of-pieces",[682],"learn C# with the help of Pieces",[674,1205,1206,1207,1212,1213,690],{},"Ready to get started? ",[678,1208,1211],{"href":1209,"rel":1210},"https:\u002F\u002Fdocs.pieces.app\u002Finstallation-getting-started\u002Fwhat-am-i-installing",[682],"Download the Pieces Desktop Application"," and then proceed to use the Pieces extensions available ",[678,1214,1216],{"href":445,"rel":1215},[682],"on your favorite IDEs",[706,1218,1220],{"id":1219},"conclusion","Conclusion",[674,1222,1223,1224,1226,1227,1229,1230,1232,1233,1235],{},"In this blog post, you have learned about ",[695,1225,697],{}," in JavaScript, how to use the ",[695,1228,697],{}," keyword, its global and function execution contexts, how different function invocation styles affect the behavior of the ",[695,1231,697],{}," keyword, and how you can confidently use ",[695,1234,697],{}," with the help of Pieces Copilot. Happy coding!",{"title":766,"searchDepth":1237,"depth":1237,"links":1238},2,[1239,1241,1242,1249,1250,1252],{"id":708,"depth":1237,"text":1240},"What is this in JavaScript?",{"id":739,"depth":1237,"text":740},{"id":822,"depth":1237,"text":823,"children":1243},[1244,1246,1247,1248],{"id":833,"depth":1245,"text":834},3,{"id":865,"depth":1245,"text":866},{"id":903,"depth":1245,"text":904},{"id":991,"depth":1245,"text":992},{"id":1113,"depth":1237,"text":1114},{"id":1157,"depth":1237,"text":1251},"Understanding the this JavaScript Keyword with Pieces",{"id":1219,"depth":1237,"text":1220},null,"Software Development","2024-10-07T00:00:00.000Z","Master the JavaScript 'this' keyword with this quick guide. Learn how 'this' in JavaScript behaves in different contexts and how to apply it effectively in your code.",false,"md","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Funderstanding-this-in-javascript-a-quick-guide-for-devs\u002Fhero.png","A close up image of JavaScript code in an IDE.",{},"\u002Fblog\u002Funderstanding-this-in-javascript-a-quick-guide-for-devs",{"title":665,"description":1256},"blog\u002Funderstanding-this-in-javascript-a-quick-guide-for-devs","15T9kNDclw-aWJhV4K_yw9kcGiVQNV45zQHg_hHN8B0",{"id":1267,"title":666,"body":1268,"description":1272,"draft":1257,"extension":1258,"meta":1275,"navigation":32,"path":1276,"photo":1277,"photoAlt":1253,"seo":1278,"stem":1279,"__hash__":1280},"authors\u002Fauthors\u002Fjames-amoo.md",{"type":671,"value":1269,"toc":1273},[1270],[674,1271,1272],{},"James Amoo is a Software Engineer and a Technical Writer. He excels in creating scalable software solutions and crafting clear and concise documentation. Having graduated with a First Class Honours degree in Computer Science, he is fundamentally well-versed in the in-depth concepts of programming.",{"title":766,"searchDepth":1237,"depth":1237,"links":1274},[],{},"\u002Fauthors\u002Fjames-amoo","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fauthors\u002Fjames-amoo.jpeg",{"title":666,"description":1272},"authors\u002Fjames-amoo","cHsg7jg2RaRueV_cvOOD8JHsrLPQxt-lYAgFPEDW_A8",{"left":1282,"top":1282,"width":1283,"height":1283,"rotate":1282,"vFlip":1257,"hFlip":1257,"body":1284},0,24,"\u003Cpath fill=\"currentColor\" d=\"m7.825 13l4.9 4.9q.3.3.288.7t-.313.7q-.3.275-.7.288t-.7-.288l-6.6-6.6q-.15-.15-.213-.325T4.426 12t.063-.375t.212-.325l6.6-6.6q.275-.275.688-.275t.712.275q.3.3.3.713t-.3.712L7.825 11H19q.425 0 .713.288T20 12t-.288.713T19 13z\"\u002F>"]