惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
月光博客
月光博客
AI
AI
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
CXSECURITY Database RSS Feed - CXSecurity.com
WordPress大学
WordPress大学
GbyAI
GbyAI
L
Lohrmann on Cybersecurity
O
OpenAI News
Schneier on Security
Schneier on Security
P
Palo Alto Networks Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Troy Hunt's Blog
V2EX - 技术
V2EX - 技术
W
WeLiveSecurity
L
LINUX DO - 最新话题
人人都是产品经理
人人都是产品经理
S
Security Affairs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
Arctic Wolf
Recorded Future
Recorded Future
Microsoft Security Blog
Microsoft Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
G
GRAHAM CLULEY
N
Netflix TechBlog - Medium
TaoSecurity Blog
TaoSecurity Blog
C
Check Point Blog
Scott Helme
Scott Helme
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Apple Machine Learning Research
Apple Machine Learning Research
PCI Perspectives
PCI Perspectives
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Vercel News
Vercel News
The Hacker News
The Hacker News
Y
Y Combinator Blog
Latest news
Latest news
SecWiki News
SecWiki News
Hugging Face - Blog
Hugging Face - Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Google Online Security Blog
Google Online Security Blog
Webroot Blog
Webroot Blog
Google DeepMind News
Google DeepMind News
Recent Commits to openclaw:main
Recent Commits to openclaw:main
C
Cisco Blogs
博客园_首页
H
Hackread – Cybersecurity News, Data Breaches, AI and More
宝玉的分享
宝玉的分享
L
LINUX DO - 热门话题

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
Understanding Objects in JavaScript
Pratham · 2026-05-10 · via DEV Community

The data structure that mirrors the real world — and the backbone of nearly everything in JS.


In my last article, we talked about arrays — ordered lists of values accessed by index. Arrays are great when you have a collection of similar things: a list of fruits, a bunch of scores, a set of tasks. But what happens when you need to describe a single thing with multiple properties?

Let's say I want to represent myself in code. I have a name, an age, a city, an email, and a skill set. Do I create five separate variables? Do I shove them all into an array?

// Option 1: Separate variables — messy, no connection between them
let name = "Pratham";
let age = 22;
let city = "Delhi";

// Option 2: An array — but what does index 0 mean? What's index 2?
let person = ["Pratham", 22, "Delhi"];
// person[0]? Is that the name? The age? No way to tell without checking.

Enter fullscreen mode Exit fullscreen mode

Neither option is great. What you actually want is a way to label each piece of data. And that's exactly what objects give you.


What Is an Object?

An object is a collection of key-value pairs. Each key is a label (also called a property name), and each value is the data associated with that label.

Think of it like an ID card. Your ID card doesn't just dump random values — it organizes them:

┌──────────────────────────────┐
│         ID CARD              │
├──────────────┬───────────────┤
│  Name        │  Pratham      │
│  Age         │  22           │
│  City        │  Delhi        │
│  IsStudent   │  true         │
│  Email       │  pratham@...  │
└──────────────┴───────────────┘
   (keys)          (values)

Enter fullscreen mode Exit fullscreen mode

Every piece of information has a name (key) and a value. You don't need to remember positions — you just ask for the property by name. "What's the person's city?" → person.city. Clear, readable, intuitive.


Why Do We Need Objects?

Let me make the case with a direct comparison.

Without Objects — Disconnected Variables

let studentName = "Pratham";
let studentAge = 22;
let studentCourse = "Web Dev Cohort 2026";
let studentIsActive = true;

Enter fullscreen mode Exit fullscreen mode

These variables happen to be about the same student, but JavaScript doesn't know that. They're four completely unrelated values floating around in your code.

With an Object — Everything Together

let student = {
  name: "Pratham",
  age: 22,
  course: "Web Dev Cohort 2026",
  isActive: true
};

Enter fullscreen mode Exit fullscreen mode

Now all the data about this student is bundled into one variable. You can pass student to a function, log it, send it to an API — it travels as one cohesive unit. That's the power of objects.


Creating Objects

The most common way to create an object is with object literal syntax — curly braces {} with key-value pairs inside.

Syntax

let objectName = {
  key1: value1,
  key2: value2,
  key3: value3
};

Enter fullscreen mode Exit fullscreen mode

Rules for Keys and Values

  • Keys are always strings (or Symbols, but ignore that for now). If the key is a simple word, you don't need quotes.
  • Values can be anything — strings, numbers, booleans, arrays, even other objects.

Examples

// A person object
let person = {
  name: "Pratham",
  age: 22,
  city: "Delhi",
  isStudent: true
};

// An object with an array as a value
let developer = {
  name: "Pratham",
  skills: ["JavaScript", "React", "Node.js"],
  yearsOfExperience: 1
};

// An empty object (you'll add properties later)
let config = {};

Enter fullscreen mode Exit fullscreen mode

Key-Value Structure — Visual

let person = {
    name: "Pratham",        key: "name"       value: "Pratham"
    age: 22,                key: "age"        value: 22
    city: "Delhi",          key: "city"       value: "Delhi"
    isStudent: true         key: "isStudent"  value: true
};

Enter fullscreen mode Exit fullscreen mode

Each line inside the object is a property. A property = a key + a value. That's the whole structure.


Accessing Properties

You have two ways to access the value of a property: dot notation and bracket notation.

Dot Notation — The Clean Way

let person = {
  name: "Pratham",
  age: 22,
  city: "Delhi"
};

console.log(person.name); // "Pratham"
console.log(person.age);  // 22
console.log(person.city); // "Delhi"

Enter fullscreen mode Exit fullscreen mode

Dot notation is what you'll use 90% of the time. It's clean, readable, and easy to type.

Bracket Notation — The Flexible Way

console.log(person["name"]); // "Pratham"
console.log(person["age"]);  // 22
console.log(person["city"]); // "Delhi"

Enter fullscreen mode Exit fullscreen mode

Bracket notation uses a string inside square brackets. It looks a bit like array indexing, but instead of a number, you use the property name as a string.

When Do You Actually Need Bracket Notation?

Dot notation has a limitation: the key must be a valid JavaScript identifier (no spaces, no starting with numbers, no special characters). Bracket notation handles all of these:

let product = {
  "product-name": "Laptop",       // Has a hyphen — dot won't work
  "price in INR": 75000,          // Has spaces — dot won't work
  2024: "Current year"            // Starts with a number — dot won't work
};

// console.log(product.product-name);   // ❌ SyntaxError
console.log(product["product-name"]);   // ✅ "Laptop"
console.log(product["price in INR"]);   // ✅ 75000
console.log(product[2024]);             // ✅ "Current year"

Enter fullscreen mode Exit fullscreen mode

And here's the other big use case — dynamic property access using a variable:

let person = {
  name: "Pratham",
  age: 22,
  city: "Delhi"
};

let key = "name";
console.log(person[key]);   // "Pratham" ✅
// console.log(person.key); // undefined ❌ — looks for a property literally named "key"

Enter fullscreen mode Exit fullscreen mode

This is hugely important when you don't know the property name ahead of time — like when you're looping through keys or reading user input.

Quick Comparison

Feature Dot Notation Bracket Notation
Syntax obj.key obj["key"]
Readability ✅ Cleaner Slightly verbose
Dynamic keys (variables) ❌ No ✅ Yes
Keys with spaces/hyphens ❌ No ✅ Yes
When to use Most of the time Dynamic or unusual keys

Updating Object Properties

Changing a property value is straightforward — just assign a new value to the key.

let person = {
  name: "Pratham",
  age: 22,
  city: "Delhi"
};

// Updating the city
person.city = "Gurugram";
console.log(person.city); // "Gurugram"

// Updating the age
person.age = 23;
console.log(person.age); // 23

console.log(person);
// { name: "Pratham", age: 23, city: "Gurugram" }

Enter fullscreen mode Exit fullscreen mode

Works with bracket notation too:

person["city"] = "Mumbai";
console.log(person.city); // "Mumbai"

Enter fullscreen mode Exit fullscreen mode

The original object is modified directly. Objects in JavaScript are mutable — you change them in place.


Adding and Deleting Properties

Objects in JavaScript aren't fixed. You can add new properties and remove existing ones at any time.

Adding a New Property

Just assign a value to a key that doesn't exist yet. JavaScript will create it for you.

let person = {
  name: "Pratham",
  age: 22
};

// Adding new properties
person.city = "Delhi";
person.isStudent = true;
person.skills = ["JavaScript", "React"];

console.log(person);
// {
//   name: "Pratham",
//   age: 22,
//   city: "Delhi",
//   isStudent: true,
//   skills: ["JavaScript", "React"]
// }

Enter fullscreen mode Exit fullscreen mode

Deleting a Property

Use the delete keyword:

let person = {
  name: "Pratham",
  age: 22,
  city: "Delhi",
  tempNote: "Remove this later"
};

delete person.tempNote;

console.log(person);
// { name: "Pratham", age: 22, city: "Delhi" }
// tempNote is completely gone

Enter fullscreen mode Exit fullscreen mode

delete removes the property entirely — not just the value, but the key too. After deletion, person.tempNote would return undefined, and the key won't show up if you loop through the object.

Visual: Before and After

BEFORE delete:                      AFTER delete person.tempNote:
┌──────────┬───────────────────┐    ┌──────────┬───────────────────┐
│ name     │ "Pratham"         │    │ name     │ "Pratham"         │
│ age      │ 22                │    │ age      │ 22                │
│ city     │ "Delhi"           │    │ city     │ "Delhi"           │
│ tempNote │ "Remove this..."  │    └──────────┴───────────────────┘
└──────────┴───────────────────┘     (tempNote is gone — not just empty, GONE)

Enter fullscreen mode Exit fullscreen mode


Looping Through Object Keys

Unlike arrays, you can't use a regular for loop with an index to iterate over objects. Objects don't have numeric indexes. Instead, you use for...in or Object.keys().

Method 1: for...in Loop

let student = {
  name: "Pratham",
  age: 22,
  course: "Web Dev Cohort 2026",
  isActive: true
};

for (let key in student) {
  console.log(key + ": " + student[key]);
}
// name: Pratham
// age: 22
// course: Web Dev Cohort 2026
// isActive: true

Enter fullscreen mode Exit fullscreen mode

Notice that inside the loop, key is a string (the property name), so you must use bracket notation student[key] to access the value. student.key would look for a literal property named "key" and return undefined.

Method 2: Object.keys() + for...of

Object.keys() returns an array of the object's keys, which you can then loop through:

let student = {
  name: "Pratham",
  age: 22,
  course: "Web Dev Cohort 2026"
};

let keys = Object.keys(student);
console.log(keys); // ["name", "age", "course"]

for (let key of keys) {
  console.log(key + "" + student[key]);
}
// name → Pratham
// age → 22
// course → Web Dev Cohort 2026

Enter fullscreen mode Exit fullscreen mode

Method 3: Object.values() — Just the Values

If you only care about the values and not the keys:

let student = {
  name: "Pratham",
  age: 22,
  course: "Web Dev Cohort 2026"
};

let values = Object.values(student);
console.log(values); // ["Pratham", 22, "Web Dev Cohort 2026"]

Enter fullscreen mode Exit fullscreen mode

Method 4: Object.entries() — Both Keys and Values

This gives you an array of [key, value] pairs:

let student = {
  name: "Pratham",
  age: 22,
  course: "Web Dev Cohort 2026"
};

for (let [key, value] of Object.entries(student)) {
  console.log(key + " = " + value);
}
// name = Pratham
// age = 22
// course = Web Dev Cohort 2026

Enter fullscreen mode Exit fullscreen mode

This is my personal favorite — clean, gives you both key and value, and doesn't require bracket notation inside the loop.


Array vs Object — When to Use Which

This was a question I had early on: "Both can store multiple values. When do I use an array and when do I use an object?"

Here's the simple answer:

Feature Array Object
Structure Ordered list of values Unordered key-value pairs
Access by Numeric index (arr[0]) Named key (obj.name)
Best for Lists of similar items Describing a single entity
Order matters? ✅ Yes — order is preserved ⚠️ Not guaranteed (usually is in modern JS)
Example List of students, list of scores One student's details

Visual Comparison

ARRAY — A list of students (multiple items, same structure):
┌─────────┬─────────┬─────────┬─────────┐
│  [0]    │  [1]    │  [2]    │  [3]    │
│ "Arjun" │ "Priya" │ "Rahul" │ "Neha"  │
└─────────┴─────────┴─────────┴─────────┘
 → "Who is at position 2?"  →  "Rahul"


OBJECT — One student's details (one item, multiple properties):
┌──────────┬───────────────────┐
│ name     │ "Pratham"         │
│ age      │ 22                │
│ course   │ "Web Dev 2026"    │
│ isActive │ true              │
└──────────┴───────────────────┘
 → "What is the student's course?"  →  "Web Dev 2026"

Enter fullscreen mode Exit fullscreen mode

Use arrays when you have a list of things. Use objects when you need to describe one thing with named properties.

And in real projects? You'll combine them. An array of objects is one of the most common patterns in JavaScript:

let students = [
  { name: "Pratham", age: 22, course: "Web Dev" },
  { name: "Arjun", age: 21, course: "Data Science" },
  { name: "Priya", age: 23, course: "Web Dev" }
];

console.log(students[1].name); // "Arjun" — index 1, then key "name"

Enter fullscreen mode Exit fullscreen mode


Let's Practice: Hands-On Assignment

Part 1: Create a Student Object

let student = {
  name: "Pratham Bhardwaj",
  age: 22,
  course: "Web Dev Cohort 2026",
  isActive: true,
  city: "Delhi"
};

console.log(student);
// { name: "Pratham Bhardwaj", age: 22, course: "Web Dev Cohort 2026", isActive: true, city: "Delhi" }

Enter fullscreen mode Exit fullscreen mode

Part 2: Access Some Properties

console.log("Name:", student.name);        // Name: Pratham Bhardwaj
console.log("Course:", student.course);    // Course: Web Dev Cohort 2026
console.log("City:", student["city"]);     // City: Delhi

Enter fullscreen mode Exit fullscreen mode

Part 3: Update a Property

// Moved from Delhi to Gurugram
student.city = "Gurugram";
console.log("Updated city:", student.city); // Updated city: Gurugram

Enter fullscreen mode Exit fullscreen mode

Part 4: Add and Delete Properties

// Adding a new property
student.email = "pratham@prathamdev.in";
console.log("Email added:", student.email); // Email added: pratham@prathamdev.in

// Deleting a property
delete student.isActive;
console.log(student);
// { name: "Pratham Bhardwaj", age: 22, course: "Web Dev Cohort 2026", city: "Gurugram", email: "pratham@prathamdev.in" }

Enter fullscreen mode Exit fullscreen mode

Part 5: Loop Through All Keys and Values

console.log("--- Student Details ---");

for (let [key, value] of Object.entries(student)) {
  console.log(key + ": " + value);
}
// name: Pratham Bhardwaj
// age: 22
// course: Web Dev Cohort 2026
// city: Gurugram
// email: pratham@prathamdev.in

Enter fullscreen mode Exit fullscreen mode


Key Takeaways

  1. Objects are collections of key-value pairs. They let you group related data under one variable with meaningful labels.
  2. Use dot notation (obj.key) for clean, everyday access. Use bracket notation (obj["key"]) for dynamic keys, keys with spaces, or keys stored in variables.
  3. Objects are mutable — you can update, add, and delete properties at any time.
  4. Loop through objects using for...in, Object.keys(), Object.values(), or Object.entries().
  5. Arrays are for ordered lists of similar items. Objects are for describing a single entity with named properties. In real code, you'll often use arrays of objects.

Wrapping Up

Objects are everywhere in JavaScript. When you fetch data from an API, it comes back as objects. When you work with the DOM, elements are objects. When you build React components, props and state are objects. Understanding how to create, read, update, and delete object properties isn't just a beginner topic — it's a skill you'll use in literally every project you ever build.

I'm learning all of this through the ChaiCode Web Dev Cohort 2026 under Hitesh Chaudhary and Piyush Garg, and objects were the moment JavaScript started feeling like a real-world tool rather than an academic exercise. Once you see how data is structured in APIs and databases, you'll realize that objects are the language's way of modeling reality.

Connect with me on LinkedIn or visit PrathamDEV.in if you want to follow along with my learning journey. More articles coming soon — next stop: array methods and DOM manipulation.

Happy coding! 🚀


Written by Pratham Bhardwaj | Web Dev Cohort 2026, ChaiCode