For the longest time, prototypes in JavaScript felt like one of those topics everyone says is “important”, but it’s not always obvious why. What helped me understand it was thinking about how JavaScript avoids repeating things. Imagine you’re creating multiple user objects in an app. Each user might need the same function, like saying hello. Instead of copying the same function inside every object, JavaScript keeps it in a shared place called the prototype. A small example makes it clearer: function Person(name) { this.name = name; } Person.prototype.sayHello = function () { console.log("Hello " + this.name); }; const user1 = new Person("Prerna"); const user2 = new Person("Alex"); Even though sayHello() isn’t written inside user1 or user2, both of them can still use it. Why? Because when JavaScript can’t find something on the object itself, it starts looking upwards. First it checks the object Then its prototype Then the prototype’s prototype …and this continues until it either finds the method or reaches null. That lookup path is what people call the prototype chain. Once I understood this, a lot of built-in JavaScript behavior started making more sense. Methods like .map(), .filter(), or .toString() aren’t magically appearing, they exist somewhere up that chain. It’s one of those concepts that feels abstract at first, but once it clicks, you start seeing it everywhere in JavaScript. #javascript #webdevelopment #frontenddevelopment #reactjs #fullstackdeveloper #devcommunity #programming
JavaScript Prototypes Simplified: Understanding the Prototype Chain
More Relevant Posts
-
🔍 JavaScript Concept You Might Be Using Daily (Prototypes) Quick question 👇 const arr = [1, 2, 3]; arr.map(x => x * 2); 👉 Did you ever define map inside this array? 👉 Also… arr is an array, not a plain object… So how are we accessing .map like a property? Now another one 👇 const str = "hello"; console.log(str.toUpperCase()); // ? 👉 Did you define toUpperCase on this string? No. Still it works. So what’s going on? This happens because of Prototypes 📌 What is a Prototype? 👉 A prototype is an object that provides shared properties and methods to other objects. Simple way: 👉 Even though arrays and strings look different, they are handled like objects in JavaScript. 📌 What’s actually happening? When you do: 👉 arr.map JS checks: Inside arr → ❌ not found Inside Array.prototype → ✔ found When you do: 👉 str.toUpperCase() JS checks: Inside str → ❌ not found Inside String.prototype → ✔ found 📌 Why do we need it? Instead of adding methods again and again… 👉 JavaScript stores them once in prototypes ✔ Saves memory ✔ Enables reuse ✔ Powers inheritance 📌 Prototype Chain (simple view) arr → Array.prototype → Object.prototype → null str → String.prototype → Object.prototype → null 💡 Takeaway: ✔ Arrays & strings can access methods via prototypes ✔ Prototype = shared methods storage ✔ JS looks up the chain to find properties 👉 You didn’t define these methods… JavaScript already had them ready 💬 Comment “Yes” if you knew this 💬 Comment “No” if this clarified something 🔁 Save this for later ❤️ Like for more JavaScript deep dives #javascript #frontend #codingtips #webdevelopment #js #developer
To view or add a comment, sign in
-
🔍 JavaScript Behavior You Might Have Seen (Array methods: mutate vs not) You write this: const arr = [1, 2, 3]; const newArr = arr.push(4); console.log(arr); // ? console.log(newArr); // ? You expect: 👉 newArr to be a new array But you get: 👉 arr → [1, 2, 3, 4] 👉 newArr → 4 This happens because of mutating array methods 📌 What does “mutate” mean? 👉 It means changing the original array In this case: 👉 push() modifies arr directly 👉 And returns the new length (not a new array) Now look at this 👇 const arr = [1, 2, 3]; const newArr = arr.map(x => x * 2); console.log(arr); // ? console.log(newArr); // ? 👉 arr → [1, 2, 3] 👉 newArr → [2, 4, 6] This is a non-mutating method 👉 It creates a new array 👉 Original array stays unchanged 📌 Common mutating methods: ✔ push ✔ pop ✔ shift ✔ unshift ✔ splice ✔ sort ✔ reverse 📌 Common non-mutating methods: ✔ map ✔ filter ✔ slice ✔ concat ✔ reduce 📌 Real problem: You think you’re creating a new array… 👉 But you accidentally modify the original one 💡 Takeaway: ✔ Mutating methods change original array ✔ Non-mutating methods return a new array ✔ Always be careful when updating state (especially in React) 👉 One wrong method can break your logic silently 🔁 Save this for later 💬 Comment “array” if this made sense ❤️ Like for more JavaScript deep dives #javascript #frontend #codingtips #webdevelopment #js #developer
To view or add a comment, sign in
-
🔍 JavaScript Behavior You Might Have Seen (Prototype Chain) You write this: const arr = [1, 2, 3]; console.log(arr.toString()); // ? 👉 Did you define toString on this array? 👉 Did you even define it anywhere? No. Still it works. Now think step by step 👇 When you do: 👉 arr.toString JavaScript checks: Inside arr → ❌ not found Inside Array.prototype → ❌ not found Inside Object.prototype → ✔ found This step-by-step lookup is called the Prototype Chain 📌 What is Prototype Chain? 👉 It’s the process JavaScript uses to find a property by searching up through prototypes. 📌 How it works? Every object is linked to another object (its prototype) So lookup happens like this: 👉 arr → Array.prototype → Object.prototype → null Same with strings 👇 const str = "hello"; console.log(str.hasOwnProperty("length")); // ? 👉 hasOwnProperty is not in string JS finds it here: 👉 str → String.prototype → Object.prototype 📌 Important point: 👉 JavaScript keeps searching until it finds the property or reaches null 💡 Takeaway: ✔ Prototype Chain = lookup mechanism ✔ JS searches step by step ✔ That’s how all built-in methods work 👉 If you understand this, you’ll understand how JavaScript really works 💬 Comment “chain” if this clicked 🔁 Save this for later ❤️ Like for more JavaScript deep dives #javascript #frontend #codingtips #webdevelopment #js #developer
To view or add a comment, sign in
-
🚀 Understanding the JavaScript Event Loop (In Simple Terms) If you’ve ever wondered how JavaScript handles multiple tasks at once, the answer lies in the Event Loop. 👉 JavaScript is single-threaded, meaning it can execute one task at a time. 👉 But with the help of the Event Loop, it can handle asynchronous operations efficiently. 🔹 How it works: 1. Call Stack – Executes synchronous code (one task at a time) 2. Web APIs – Handles async operations like setTimeout, API calls, DOM events 3. Callback Queue – Stores callbacks from async tasks 4. Event Loop – Moves tasks from the queue to the call stack when it’s empty 🔹 Microtasks vs Macrotasks: - Microtasks (Promises, MutationObserver) → Executed first - Macrotasks (setTimeout, setInterval, I/O) → Executed later 💡 Execution Order Example: console.log("Start"); setTimeout(() => { console.log("Timeout"); }, 0); Promise.resolve().then(() => { console.log("Promise"); }); console.log("End"); 👉 Output: Start End Promise Timeout 🔥 Key Takeaways: ✔ JavaScript doesn’t run tasks in parallel, but it handles async smartly ✔ Microtasks always run before macrotasks ✔ Event Loop ensures non-blocking behavior Understanding this concept is a game-changer for writing efficient and bug-free JavaScript code 💻 #JavaScript #FrontendDevelopment #WebDevelopment #ReactJS #Programming #EventLoop
To view or add a comment, sign in
-
-
#js #11 **What is Event Loop in Javascript, How it Works** Let’s lock this concept in your mind in a clear, step-by-step way 👇 🧠 What is Event Loop? 👉 The Event Loop is: A mechanism that checks when the call stack is empty and then moves async tasks to it 👉 Simple definition: Event Loop = a watcher that keeps checking “Can I run the next task?” 📦 First understand 3 building blocks 1. Call Stack 🥞 Where JavaScript executes code One task at a time (single-threaded) 2. Web APIs 🌐 Provided by browser like Google Chrome Handles: setTimeout API calls DOM events 3. Callback Queue 📥 Stores completed async tasks Waiting for execution 🔄 How Event Loop Works (Step-by-Step) Let’s take a simple example: console.log("Start"); setTimeout(() => { console.log("Async Task"); }, 2000); console.log("End"); 🟢 Step 1: Run "Start" Goes into Call Stack Executes → prints Start Removed 🟡 Step 2: setTimeout Sent to Web APIs Timer starts (2 sec) 👉 JS does NOT wait ❗ 🔵 Step 3: Run "End" Executes immediately Prints End ⏳ Step 4: Timer completes Callback moves to Callback Queue 🔁 Step 5: Event Loop checks 👉 It continuously checks: ✔ “Is Call Stack empty?” If YES → take task from queue Push into Call Stack 🔴 Step 6: Execute callback Prints Async Task ✅ Final Output: Start End Async Task 🎯 Golden Rule (Very Important) 👉Event Loop only pushes tasks to the Call Stack when it is EMPTY 🧑🍳 Real-Life Analogy Chef 👨🍳 example: Cooking = Call Stack Oven = Web APIs Ready dishes = Callback Queue Chef checking → Event Loop 👉 Chef only picks new dish when free ⚡ Why Event Loop is needed? Because JavaScript is: Single-threaded Synchronous by default 👉 Event loop makes it: Non-blocking Efficient 🧾 Final Summary Event Loop manages async execution Works with: Call Stack Web APIs Callback Queue Ensures smooth execution without blocking 💡 One-line takeaway 👉Event Loop allows JavaScript to handle async tasks by running them only when the call stack is free #Javascript #ObjectOrientedProgramming #SoftwareDevelopment
To view or add a comment, sign in
-
🚀 How JavaScript Works Behind the Scenes We use JavaScript every day… But have you ever thought about what actually happens when your code runs? 🤔 Let’s understand it in a simple way 👇 --- 💡 Step 1: JavaScript needs an Engine JavaScript doesn’t run on its own. It runs inside a JavaScript engine like V8 (Chrome / Node.js). 👉 Engine reads → understands → executes your code --- 💡 Step 2: Two Important Things When your code runs, JavaScript uses: 👉 Memory Heap → stores variables & functions 👉 Call Stack → executes code line by line --- 💡 Step 3: What happens internally? let name = "Aman"; function greet() { console.log("Hello " + name); } greet(); Behind the scenes: - "name" stored in Memory Heap - "greet()" stored in Memory Heap - function call goes to Call Stack - executes → removed from stack --- 💡 Step 4: Single Threaded Meaning JavaScript can do only one task at a time 👉 One Call Stack 👉 One execution at a time --- ❓ But then… how does async work? (setTimeout, API calls, promises?) 👉 That’s handled by the runtime (browser / Node.js) More on this in next post 👀 --- 💡 Why this matters? Because this is the base of: - Call Stack - Execution Context - Closures - Async JS --- 👨💻 Starting a series to revisit JavaScript from basics → advanced with focus on real understanding Follow along if you want to master JS 🚀 #JavaScript #JavaScriptFoundation #WebDevelopment #FrontendDevelopment #Coding #SoftwareEngineer #Tech
To view or add a comment, sign in
-
-
🌳 Tree Shaking in JavaScript I’ve been diving deeper into one of the most powerful (yet often overlooked) concepts in modern JavaScript — Tree Shaking. Back in the days, when we heavily relied on CommonJS ("require"), bundlers didn’t have enough static information to eliminate unused code. This meant our applications often carried unnecessary baggage, impacting performance. But with the shift to ES Modules ("import/export"), things changed dramatically. 👉 What is Tree Shaking? Tree shaking is the process of removing unused (dead) code during the build step. It works because ES Modules are statically analyzable, allowing bundlers to determine what’s actually being used. --- 🚀 How it works in real frameworks 🔷 Angular Angular leverages tools like Webpack under the hood. When we use: import { Component } from '@angular/core'; Only the required parts are included in the final bundle. Combined with: - AOT (Ahead-of-Time Compilation) - Build Optimizer Angular ensures unused services, modules, and components are eliminated effectively. --- ⚛️ React React applications (especially with modern setups like Vite or Webpack) fully benefit from tree shaking when using ES Modules: import { debounce } from 'lodash-es'; Instead of importing the entire library, only the required function gets bundled. Key enablers: - ES Module syntax - Production builds ("npm run build") - Minifiers like Terser --- 💡 Why this matters - Smaller bundle size 📦 - Faster load times ⚡ - Better performance & user experience --- 📌 My takeaway Tree shaking isn’t just a “bundler feature” — it’s a mindset shift in how we write imports. Writing clean, modular, and explicit imports directly impacts application performance. Understanding this deeply has changed the way I structure code in both Angular and React projects. --- If you're working on frontend performance, this is one concept you cannot ignore. #JavaScript #Angular #React #WebPerformance #FrontendDevelopment #TreeShaking
To view or add a comment, sign in
-
-
🔍 JavaScript Bug You Might Have Seen (setTimeout vs Promise) You write this code: console.log("Start"); setTimeout(() => { console.log("Timeout"); }, 0); Promise.resolve().then(() => { console.log("Promise"); }); console.log("End"); What do you expect? Start Timeout Promise End But actual output is: Start End Promise Timeout This happens because of the Event Loop 📌 What is the Event Loop? 👉 The event loop is the mechanism that decides which task runs next in JavaScript’s asynchronous execution. 📌 Priority order (very important): 1️⃣ Call Stack (synchronous code) 2️⃣ Microtask Queue 3️⃣ Macrotask Queue 📌 What’s inside each queue? 👉 Microtask Queue (HIGH priority): ✔ Promise.then / catch / finally ✔ queueMicrotask ✔ MutationObserver 👉 Macrotask Queue (LOWER priority): ✔ setTimeout ✔ setInterval ✔ setImmediate ✔ I/O tasks ✔ UI rendering events Execution flow: ✔ Step 1: Run all synchronous code 👉 Start → End ✔ Step 2: Execute ALL microtasks 👉 Promise ✔ Step 3: Execute macrotasks 👉 setTimeout So final order becomes: Start End Promise Timeout 💡 Takeaway: ✔ Microtasks run before macrotasks ✔ Promises > setTimeout ✔ setTimeout(fn, 0) is NOT immediate 👉 Understand queues = master async JS 🔁 Save this for later 💬 Comment “event loop” if this made sense ❤️ Like for more JavaScript deep dives #javascript #frontend #codingtips #webdevelopment #js #developer
To view or add a comment, sign in
-
⚡Async JavaScript Explained — Part 3 (Final Part) is Live! Understanding Async JavaScript is incomplete without knowing what happens behind the scenes. In Part 3, I’ve broken down the core engine that powers it all — the Event Loop. 🔗 Read here: https://lnkd.in/d7aciTBR 📌 What this final part covers: ✨Call Stack ✨Web APIs ✨Callback Queue (Task Queue) ✨Event Loop — how JavaScript actually handles async code ✨Microtask Queue (Promises, async/await) ✨Execution order & priority between tasks This part helped me build a much clearer mental model of why certain outputs happen — not just what happens. With this, the Async JS series comes to an end (Part 1 → Part 3) — covering everything from basics to real-world async behavior 🚀 Would love your feedback and thoughts! #JavaScript #AsyncJS #EventLoop #CallStack #CallbackQueue #MicrotaskQueue #WebAPIs #WebDevelopment #Frontend #LearningJourney #TechBlog #AsyncAwait #Promise #Developers #LearningByDoing #Blogging #TechSkills
To view or add a comment, sign in
-
🧠 Why does some JavaScript run instantly… and some runs later? Because JavaScript can be synchronous and asynchronous. 🔹 Synchronous JavaScript - JavaScript runs one line at a time. - Each task waits for the previous one to finish. Example: console.log("Start"); console.log("Middle"); console.log("End"); Output: Start → Middle → End ✅ Simple ❌ Can block execution 🔹 Asynchronous JavaScript - Some tasks don’t block execution. - They run in the background and return later. Example: console.log("Start"); setTimeout(() => { console.log("Async Task"); }, 2000); console.log("End"); Output: Start → End → Async Task 🔹 Why Async Exists Without async: - APIs would freeze the app - Timers would block everything - UI would become unresponsive 💡 Key Idea JavaScript is single-threaded, but it handles async using Web APIs + Call Stack + Event Loop (We’ll cover this next 👀) 🚀 Takeaway - Sync = step-by-step execution - Async = non-blocking execution Both are essential for real-world apps Next post: Event Loop Explained Simply 🔥 #JavaScript #AsyncJS #Frontend #WebDevelopment #LearnJS #Programming #LearningInPublic
To view or add a comment, sign in
-
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development