Skip to content

Dive into my ES6+ JavaScript mastery with this OOP showcase! Explore encapsulation, inheritance, polymorphism, and abstraction through practical challenges in the `js-journey` folder—uncomment scripts in `index.html` to run. A portfolio gem highlighting my edge in building scalable, elegant code. 🚀

Notifications You must be signed in to change notification settings

sheharyarr-ahmed/object-oriented

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Object-Oriented JavaScript Journey

Project Screenshot

Overview

This repository serves as a comprehensive showcase of my expertise in Object-Oriented Programming (OOP) in JavaScript, leveraging modern ES6+ features to demonstrate best practices in building scalable, maintainable, and efficient code. As a developer passionate about OOP principles, this project highlights my ability to stand out by applying concepts like encapsulation, inheritance, polymorphism, and abstraction in real-world JavaScript scenarios. Unlike traditional procedural approaches, this codebase emphasizes prototypal inheritance and class-based structures, making it a prime example of how I elevate my projects with object-oriented design.

Whether you're reviewing my portfolio or exploring OOP in JS, this repo provides hands-on examples that illustrate my mastery of these topics. Each file is self-contained, with console-based outputs for easy testing and learning.

Key Features and Skills Demonstrated

  • ES6+ Modern JavaScript: Utilization of classes, arrow functions, destructuring, template literals, and more to write clean, concise code.
  • Core OOP Concepts:
    • Constructors and Prototypes: Building objects with constructor functions and exploring prototypal chains.
    • Inheritance: Implementing prototypal inheritance using Object.create(), constructor functions, and ES6 classes.
    • Encapsulation: Protecting data with closures and private properties (using symbols or WeakMaps where applicable).
    • Getters and Setters: Controlling access to object properties for better data integrity.
    • Static Methods: Defining utility methods on constructors without instantiation.
    • Public Interfaces: Exposing clean APIs while hiding implementation details.
  • Challenges and Practical Examples: A series of coding challenges that apply OOP to solve problems, simulating real-world applications like modeling entities, hierarchies, and behaviors.
  • Modular Structure: All scripts are organized in the js-journey folder for easy navigation and extension.

This project not only reinforces my object-oriented skills but also showcases how I integrate them with ES6 features to create code that's readable, reusable, and performant—setting me apart from developers who rely on outdated or non-OOP patterns.

Project Structure

The codebase is organized as follows:

  • js-journey/: Contains all the core JavaScript files demonstrating OOP concepts.
    • challenge-1.js: Basic object creation and manipulation challenges.
    • challenge-2.js: Intermediate inheritance exercises.
    • challenge-3.js: Advanced polymorphism scenarios.
    • challenge-4.js: Real-world application challenges combining multiple OOP principles.
    • constructor-function.js: Introduction to constructor functions.
    • constructor-prototypal-inheritance.js: Deep dive into prototypal inheritance via constructors.
    • encapsulation.js: Techniques for data hiding and encapsulation.
    • es6-classes-prototypal-inheritance.js: ES6 classes with inheritance.
    • es6-classes.js: Fundamentals of ES6 classes.
    • getters-setters.js: Using getters and setters for property control.
    • object-create-prototypal-inheritance.js: Inheritance using Object.create().
    • object-create.js: Manual object creation with prototypes.
    • prototype.js: Exploring the prototype chain.
    • public-interface.js: Designing public APIs for objects.
    • static-methods.js: Implementing static methods on classes/constructors.
  • index.html: A simple HTML file to run scripts in the browser (uncomment script tags as needed).
  • script.js: Optional main script for custom executions.
  • .prettierrc: Configuration for code formatting to ensure consistency.
  • README.md: This file—your guide to the project.

How to Run the Project

  1. Clone the Repository:

  2. Open in Your Editor:

    • Use VS Code or any editor (as shown in the screenshot for reference).
  3. Run Individual Scripts:

    • For browser execution:
      • Open index.html in your browser.
      • Uncomment the relevant <script> tag in index.html for the file you want to test (e.g., <script src="js-journey/challenge-1.js"></script>).
      • Open the browser console (F12) to view outputs.
    • For Node.js execution:
      • Navigate to the file: node js-journey/challenge-1.js.
      • Most files use console.log() for output.
  4. Dependencies:

    • No external dependencies required—just vanilla JavaScript!
    • Ensure your environment supports ES6 (modern browsers or Node.js v6+).

Why This Project Stands Out

In a sea of JavaScript developers, my focus on object-oriented practices allows me to architect code that's not just functional but also elegant and extensible. This repo is a testament to that, covering everything from basic prototypes to advanced ES6 class inheritance. It's designed to be a learning resource as well as a portfolio highlight, proving my ability to tackle complex problems with structured, OOP-driven solutions.

If you're hiring or collaborating, this codebase exemplifies how I bring precision and innovation to every project.


About

Dive into my ES6+ JavaScript mastery with this OOP showcase! Explore encapsulation, inheritance, polymorphism, and abstraction through practical challenges in the `js-journey` folder—uncomment scripts in `index.html` to run. A portfolio gem highlighting my edge in building scalable, elegant code. 🚀

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published