Professional Documents
Culture Documents
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS Objects</title>
<link rel="stylesheet" href="https://stackedit.io/style.css" />
</head>
<body class="stackedit">
<div class="stackedit__html"><h2 id="objects---essence-of-js">Objects - Essence
of JS</h2>
<p><em><strong>What is an Object ?</strong></em><br>
Simply put, an Object is valid JSON code. It is a collection of key-value pairs,
Consider the analogy of a dictionary. If you know a word, you can lookup its
meaning. Similarly, if you know a key of an Object you can get the corresponding
value. <em>But what does an object look like ? Here’s an example:</em></p>
<pre class=" language-js"><code class="prism language-js"><span class="token
keyword">const</span> object <span class="token operator">=</span> <span
class="token punctuation">{</span><span class="token string">"a"</span><span
class="token punctuation">:</span> <span class="token number">1</span><span
class="token punctuation">,</span> <span class="token string">"b"</span><span
class="token punctuation">:</span> <span class="token string">"2"</span><span
class="token punctuation">,</span> <span class="token string">"c"</span><span
class="token punctuation">:</span> <span class="token punctuation">[</span><span
class="token number">1</span><span class="token punctuation">,</span><span
class="token number">2</span><span class="token punctuation">]</span><span
class="token punctuation">,</span> <span class="token number">6</span> <span
class="token punctuation">:</span> <span class="token punctuation">{</span><span
class="token string">"a"</span><span class="token punctuation">:</span> <span
class="token number">1</span><span class="token punctuation">}</span><span
class="token punctuation">}</span>
</code></pre>
<p>Notice how the keys can be strings as well as integers. Also, each key can have
a value of a type different from others and that objects can be nested within other
objects. The <code>""</code> surrounding the keys are redundant and unnecessary.
The above can also be expressed in a more readable manner as:</p>
<pre class=" language-js"><code class="prism language-js"><span class="token
keyword">const</span> object <span class="token operator">=</span> <span
class="token punctuation">{</span>
a<span class="token punctuation">:</span> <span class="token
number">1</span><span class="token punctuation">,</span>
b<span class="token punctuation">:</span> <span class="token
string">"2"</span><span class="token punctuation">,</span>
c<span class="token punctuation">:</span> <span class="token
punctuation">[</span><span class="token number">1</span><span class="token
punctuation">,</span> <span class="token number">2</span><span class="token
punctuation">]</span><span class="token punctuation">,</span>
<span class="token number">6</span><span class="token punctuation">:</span>
<span class="token punctuation">{</span><span class="token string">"a"</span><span
class="token punctuation">:</span> <span class="token number">1</span><span
class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<p><em><strong>How to manipulate and access Objects ?</strong></em></p>
<p>To <em>access</em> a value we use two syntaxes:</p>
<pre class=" language-js"><code class="prism language-js"><span class="token
keyword">const</span> obj <span class="token operator">=</span> <span class="token
punctuation">{</span>
<span class="token string">"a"</span><span class="token punctuation">:</span>
<span class="token number">1</span><span class="token punctuation">,</span>
<span class="token string">"b"</span><span class="token punctuation">:</span>
<span class="token punctuation">[</span><span class="token number">1</span><span
class="token punctuation">,</span> <span class="token number">2</span><span
class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token string">"c"</span> <span class="token
punctuation">:</span> <span class="token string">"qwerty"</span>
<span class="token punctuation">}</span>
<span class="token comment">//First Way</span>
console<span class="token punctuation">.</span><span class="token
function">log</span><span class="token punctuation">(</span>obj<span class="token
punctuation">.</span>a<span class="token punctuation">)</span> <span class="token
comment">// 1</span>
console<span class="token punctuation">.</span><span class="token
function">log</span><span class="token punctuation">(</span>obj<span class="token
punctuation">.</span>b<span class="token punctuation">)</span> <span class="token
comment">// [1, 2]</span>
console<span class="token punctuation">.</span><span class="token
function">log</span><span class="token punctuation">(</span>obj<span class="token
punctuation">.</span>b<span class="token punctuation">[</span><span class="token
number">1</span><span class="token punctuation">]</span><span class="token
punctuation">)</span> <span class="token comment">// 2</span>
console<span class="token punctuation">.</span><span class="token
function">log</span><span class="token punctuation">(</span>obj<span class="token
punctuation">.</span>c<span class="token punctuation">)</span> <span class="token
comment">// "qwerty"</span>
</code></pre>
<p>The first way is just a shorthand of the second way. Basically when you do
<code>obj.a</code>, JS evaluates that as: <code>obj["a"]</code> . So anything you
put after (<code>.</code>) is considered a string and evaluated as such. But how do
we access keys that are numbers then? and what if we need to use a variable as a
key? That’s where the second method comes in. The second syntax is
<em>generally</em> used only when variables within the code are to be used as keys
or the keys are numbers. e.g.</p>
<pre class=" language-js"><code class="prism language-js"><span class="token
keyword">const</span> obj <span class="token operator">=</span> <span class="token
punctuation">{</span>
<span class="token string">"a"</span><span class="token punctuation">:</span>
<span class="token number">9</span><span class="token punctuation">,</span>
<span class="token string">"b"</span><span class="token punctuation">:</span>
<span class="token punctuation">[</span><span class="token number">1</span><span
class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token number">8</span> <span class="token punctuation">:</span>
<span class="token string">"abcd"</span>
<span class="token punctuation">}</span>
<span class="token keyword">let</span> variable1 <span class="token
operator">=</span> <span class="token string">"a"</span>
<span class="token keyword">let</span> variable2 <span class="token
operator">=</span> <span class="token number">8</span>
</html>