Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

JavaScript Intermediate Course

JS Intermediate Course Banner

GitHubTwitterDiscordYouTube

A comprehensive collection of JavaScript intermediate-level examples and exercises covering ES6+ features, advanced concepts, and object-oriented programming principles.

📚 Course Overview

This course is designed to bridge the gap between beginner and advanced JavaScript by focusing on modern ES6+ features, proper understanding of this keyword, function methods, and object-oriented programming principles.

🎯 Learning Objectives

  • Master modern JavaScript (ES6+) features and syntax
  • Understand the this keyword and its binding rules
  • Learn advanced function methods (call, apply, bind)
  • Implement object-oriented programming principles
  • Develop clean, maintainable JavaScript code

📋 Course Content

Module 1: ES6+ Features (050-057)

050 - ES6 Overview

  • Introduction to ES6/ES2015 and subsequent versions
  • Key improvements over traditional JavaScript
  • Browser compatibility and transpilation basics
  • Feature detection techniques

051 - Template Literals & Tagged Templates

  • String interpolation with template literals
  • Multi-line strings
  • Tagged templates for advanced string processing
  • Practical examples: HTML generation, URL building, data formatting

052 - Arrow Functions

  • Concise function syntax
  • Lexical this binding
  • When to use (and when not to use) arrow functions

053 - Default Parameters & Rest Parameters

  • Function parameter defaults
  • Rest operator for variable arguments
  • Combining with destructuring

054 - Spread Operator

  • Array and object spreading
  • Function arguments spreading
  • Practical use cases and examples

055 - Array Destructuring

  • Extracting values from arrays
  • Skipping values with comma separators
  • Nested array destructuring

056 - Enhanced Object Literals

  • Shorthand property names
  • Computed property names
  • Method shorthand syntax

057 - For...of Loop

  • Iterating over iterable objects
  • Comparison with for...in loop
  • Working with strings, arrays, and other iterables

Module 2: Advanced JavaScript Concepts (058-064)

058 - For...in vs For...of

  • Key differences and use cases
  • When to use each loop type
  • Common pitfalls and best practices

059 - The this Keyword

  • Four binding rules: Default, Implicit, Explicit, New
  • Context loss in callbacks
  • Debugging this issues
  • Practical solutions and patterns

060 - Call, Apply, Bind Methods

  • Function borrowing techniques
  • Setting explicit context
  • Common use cases and examples
  • Modern alternatives (spread operator)

061 - Arrow Functions and this

  • Lexical this binding behavior
  • Solving context issues with arrow functions
  • When arrow functions are NOT appropriate

062 - IIFE (Immediately Invoked Function Expressions)

  • Creating private scopes
  • Module pattern implementation
  • Common use cases

063 - Function Constructors

  • Creating objects with constructors
  • Prototype chain basics
  • Comparison with ES6 classes

064 - Variable Shadowing

  • Understanding scope and shadowing
  • Common bugs and how to avoid them
  • Best practices for variable naming

Module 3: Object-Oriented Programming (065)

065 - OOP Principles

  • Encapsulation: Data hiding and bundling
  • Inheritance: Code reuse and hierarchical relationships
  • Polymorphism: Multiple forms and dynamic behavior
  • Real-world examples and implementations

🚀 Getting Started

Prerequisites

  • Basic understanding of JavaScript fundamentals
  • Familiarity with variables, functions, and basic control structures
  • A modern web browser or Node.js environment

How to Use This Course

  1. Sequential Learning: Start with file 050-es6-overview.js and progress through each numbered file
  2. Hands-on Practice: Each file contains commented examples - uncomment and modify them to understand concepts
  3. Experiment: Try creating your own examples based on the patterns shown
  4. Build Projects: Apply these concepts in small projects to solidify understanding

Running the Code

# Using Node.js
node 050-es6-overview.js
# Or open files directly in your browser console

📁 File Structure

JS Intermediate Course/
├── 050-es6-overview.js
├── 051-template-literals-tagged.js
├── 052-arrow-functions.js
├── 053-default-parameters-rest.js
├── 054-spread-operator.js
├── 055-destructuring-arrays.js
├── 056-enhanced-object-literals.js
├── 057-for-of-loop.js
├── 058-for-in-vs-for-of.js
├── 059-this-keyword.js
├── 060-call-apply-bind-methods.js
├── 061-arrow-fn-this.js
├── 062-iife.js
├── 063-function-constructor.js
├── 064-variable-shadowing.js
├── 065-oop-principles-encapsulation-inheritance-polymorphism.js
└── README.md

🎯 Key Features of This Course

  • Progressive Learning: Each file builds upon previous concepts
  • Practical Examples: Real-world code examples and use cases
  • Commented Code: Detailed explanations within each file
  • Modern JavaScript: Focus on current best practices and ES6+ features
  • Hands-on Approach: Uncomment and experiment with code directly

🛠️ Tools and Resources

  • MDN Web Docs: Comprehensive JavaScript reference
  • Can I Use: Browser compatibility checker
  • VS Code: Recommended code editor with JavaScript extensions
  • Chrome DevTools: For debugging and experimentation

📈 What You'll Learn

By completing this course, you will:

  • Write modern, clean JavaScript using ES6+ features
  • Understand and manage the this keyword effectively
  • Create reusable and maintainable code
  • Implement object-oriented programming principles
  • Debug common JavaScript issues
  • Prepare for advanced JavaScript frameworks and libraries

🤝 Contributing

This is a learning repository. Feel free to:

  • Report issues or unclear explanations
  • Suggest improvements or additional examples
  • Share your own implementations

📄 License

This educational repository is open for learning purposes. Feel free to use, modify, and distribute for educational purposes.


Happy Coding! 🚀

Remember: The best way to learn is by doing. Experiment with the code, break it, fix it, and understand why it works the way it does.

About

JavaScript Intermediate Course repo that provides hands-on ES6+ examples, advanced JavaScript concepts, and object-oriented programming exercises to help learners move from basic to intermediate JS with clean, modern code.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

JavaScript Intermediate Course

JS Intermediate Course Banner

GitHubTwitterDiscordYouTube

A comprehensive collection of JavaScript intermediate-level examples and exercises covering ES6+ features, advanced concepts, and object-oriented programming principles.

📚 Course Overview

This course is designed to bridge the gap between beginner and advanced JavaScript by focusing on modern ES6+ features, proper understanding of this keyword, function methods, and object-oriented programming principles.

🎯 Learning Objectives

  • Master modern JavaScript (ES6+) features and syntax
  • Understand the this keyword and its binding rules
  • Learn advanced function methods (call, apply, bind)
  • Implement object-oriented programming principles
  • Develop clean, maintainable JavaScript code

📋 Course Content

Module 1: ES6+ Features (050-057)

050 - ES6 Overview

  • Introduction to ES6/ES2015 and subsequent versions
  • Key improvements over traditional JavaScript
  • Browser compatibility and transpilation basics
  • Feature detection techniques

051 - Template Literals & Tagged Templates

  • String interpolation with template literals
  • Multi-line strings
  • Tagged templates for advanced string processing
  • Practical examples: HTML generation, URL building, data formatting

052 - Arrow Functions

  • Concise function syntax
  • Lexical this binding
  • When to use (and when not to use) arrow functions

053 - Default Parameters & Rest Parameters

  • Function parameter defaults
  • Rest operator for variable arguments
  • Combining with destructuring

054 - Spread Operator

  • Array and object spreading
  • Function arguments spreading
  • Practical use cases and examples

055 - Array Destructuring

  • Extracting values from arrays
  • Skipping values with comma separators
  • Nested array destructuring

056 - Enhanced Object Literals

  • Shorthand property names
  • Computed property names
  • Method shorthand syntax

057 - For...of Loop

  • Iterating over iterable objects
  • Comparison with for...in loop
  • Working with strings, arrays, and other iterables

Module 2: Advanced JavaScript Concepts (058-064)

058 - For...in vs For...of

  • Key differences and use cases
  • When to use each loop type
  • Common pitfalls and best practices

059 - The this Keyword

  • Four binding rules: Default, Implicit, Explicit, New
  • Context loss in callbacks
  • Debugging this issues
  • Practical solutions and patterns

060 - Call, Apply, Bind Methods

  • Function borrowing techniques
  • Setting explicit context
  • Common use cases and examples
  • Modern alternatives (spread operator)

061 - Arrow Functions and this

  • Lexical this binding behavior
  • Solving context issues with arrow functions
  • When arrow functions are NOT appropriate

062 - IIFE (Immediately Invoked Function Expressions)

  • Creating private scopes
  • Module pattern implementation
  • Common use cases

063 - Function Constructors

  • Creating objects with constructors
  • Prototype chain basics
  • Comparison with ES6 classes

064 - Variable Shadowing

  • Understanding scope and shadowing
  • Common bugs and how to avoid them
  • Best practices for variable naming

Module 3: Object-Oriented Programming (065)

065 - OOP Principles

  • Encapsulation: Data hiding and bundling
  • Inheritance: Code reuse and hierarchical relationships
  • Polymorphism: Multiple forms and dynamic behavior
  • Real-world examples and implementations

🚀 Getting Started

Prerequisites

  • Basic understanding of JavaScript fundamentals
  • Familiarity with variables, functions, and basic control structures
  • A modern web browser or Node.js environment

How to Use This Course

  1. Sequential Learning: Start with file 050-es6-overview.js and progress through each numbered file
  2. Hands-on Practice: Each file contains commented examples - uncomment and modify them to understand concepts
  3. Experiment: Try creating your own examples based on the patterns shown
  4. Build Projects: Apply these concepts in small projects to solidify understanding

Running the Code

# Using Node.js
node 050-es6-overview.js
# Or open files directly in your browser console

📁 File Structure

JS Intermediate Course/
├── 050-es6-overview.js
├── 051-template-literals-tagged.js
├── 052-arrow-functions.js
├── 053-default-parameters-rest.js
├── 054-spread-operator.js
├── 055-destructuring-arrays.js
├── 056-enhanced-object-literals.js
├── 057-for-of-loop.js
├── 058-for-in-vs-for-of.js
├── 059-this-keyword.js
├── 060-call-apply-bind-methods.js
├── 061-arrow-fn-this.js
├── 062-iife.js
├── 063-function-constructor.js
├── 064-variable-shadowing.js
├── 065-oop-principles-encapsulation-inheritance-polymorphism.js
└── README.md

🎯 Key Features of This Course

  • Progressive Learning: Each file builds upon previous concepts
  • Practical Examples: Real-world code examples and use cases
  • Commented Code: Detailed explanations within each file
  • Modern JavaScript: Focus on current best practices and ES6+ features
  • Hands-on Approach: Uncomment and experiment with code directly

🛠️ Tools and Resources

  • MDN Web Docs: Comprehensive JavaScript reference
  • Can I Use: Browser compatibility checker
  • VS Code: Recommended code editor with JavaScript extensions
  • Chrome DevTools: For debugging and experimentation

📈 What You'll Learn

By completing this course, you will:

  • Write modern, clean JavaScript using ES6+ features
  • Understand and manage the this keyword effectively
  • Create reusable and maintainable code
  • Implement object-oriented programming principles
  • Debug common JavaScript issues
  • Prepare for advanced JavaScript frameworks and libraries

🤝 Contributing

This is a learning repository. Feel free to:

  • Report issues or unclear explanations
  • Suggest improvements or additional examples
  • Share your own implementations

📄 License

This educational repository is open for learning purposes. Feel free to use, modify, and distribute for educational purposes.


Happy Coding! 🚀

Remember: The best way to learn is by doing. Experiment with the code, break it, fix it, and understand why it works the way it does.

About

JavaScript Intermediate Course repo that provides hands-on ES6+ examples, advanced JavaScript concepts, and object-oriented programming exercises to help learners move from basic to intermediate JS with clean, modern code.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

JavaScript Intermediate Course

JS Intermediate Course Banner

GitHubTwitterDiscordYouTube

A comprehensive collection of JavaScript intermediate-level examples and exercises covering ES6+ features, advanced concepts, and object-oriented programming principles.

📚 Course Overview

This course is designed to bridge the gap between beginner and advanced JavaScript by focusing on modern ES6+ features, proper understanding of this keyword, function methods, and object-oriented programming principles.

🎯 Learning Objectives

  • Master modern JavaScript (ES6+) features and syntax
  • Understand the this keyword and its binding rules
  • Learn advanced function methods (call, apply, bind)
  • Implement object-oriented programming principles
  • Develop clean, maintainable JavaScript code

📋 Course Content

Module 1: ES6+ Features (050-057)

050 - ES6 Overview

  • Introduction to ES6/ES2015 and subsequent versions
  • Key improvements over traditional JavaScript
  • Browser compatibility and transpilation basics
  • Feature detection techniques

051 - Template Literals & Tagged Templates

  • String interpolation with template literals
  • Multi-line strings
  • Tagged templates for advanced string processing
  • Practical examples: HTML generation, URL building, data formatting

052 - Arrow Functions

  • Concise function syntax
  • Lexical this binding
  • When to use (and when not to use) arrow functions

053 - Default Parameters & Rest Parameters

  • Function parameter defaults
  • Rest operator for variable arguments
  • Combining with destructuring

054 - Spread Operator

  • Array and object spreading
  • Function arguments spreading
  • Practical use cases and examples

055 - Array Destructuring

  • Extracting values from arrays
  • Skipping values with comma separators
  • Nested array destructuring

056 - Enhanced Object Literals

  • Shorthand property names
  • Computed property names
  • Method shorthand syntax

057 - For...of Loop

  • Iterating over iterable objects
  • Comparison with for...in loop
  • Working with strings, arrays, and other iterables

Module 2: Advanced JavaScript Concepts (058-064)

058 - For...in vs For...of

  • Key differences and use cases
  • When to use each loop type
  • Common pitfalls and best practices

059 - The this Keyword

  • Four binding rules: Default, Implicit, Explicit, New
  • Context loss in callbacks
  • Debugging this issues
  • Practical solutions and patterns

060 - Call, Apply, Bind Methods

  • Function borrowing techniques
  • Setting explicit context
  • Common use cases and examples
  • Modern alternatives (spread operator)

061 - Arrow Functions and this

  • Lexical this binding behavior
  • Solving context issues with arrow functions
  • When arrow functions are NOT appropriate

062 - IIFE (Immediately Invoked Function Expressions)

  • Creating private scopes
  • Module pattern implementation
  • Common use cases

063 - Function Constructors

  • Creating objects with constructors
  • Prototype chain basics
  • Comparison with ES6 classes

064 - Variable Shadowing

  • Understanding scope and shadowing
  • Common bugs and how to avoid them
  • Best practices for variable naming

Module 3: Object-Oriented Programming (065)

065 - OOP Principles

  • Encapsulation: Data hiding and bundling
  • Inheritance: Code reuse and hierarchical relationships
  • Polymorphism: Multiple forms and dynamic behavior
  • Real-world examples and implementations

🚀 Getting Started

Prerequisites

  • Basic understanding of JavaScript fundamentals
  • Familiarity with variables, functions, and basic control structures
  • A modern web browser or Node.js environment

How to Use This Course

  1. Sequential Learning: Start with file 050-es6-overview.js and progress through each numbered file
  2. Hands-on Practice: Each file contains commented examples - uncomment and modify them to understand concepts
  3. Experiment: Try creating your own examples based on the patterns shown
  4. Build Projects: Apply these concepts in small projects to solidify understanding

Running the Code

# Using Node.js
node 050-es6-overview.js
# Or open files directly in your browser console

📁 File Structure

JS Intermediate Course/
├── 050-es6-overview.js
├── 051-template-literals-tagged.js
├── 052-arrow-functions.js
├── 053-default-parameters-rest.js
├── 054-spread-operator.js
├── 055-destructuring-arrays.js
├── 056-enhanced-object-literals.js
├── 057-for-of-loop.js
├── 058-for-in-vs-for-of.js
├── 059-this-keyword.js
├── 060-call-apply-bind-methods.js
├── 061-arrow-fn-this.js
├── 062-iife.js
├── 063-function-constructor.js
├── 064-variable-shadowing.js
├── 065-oop-principles-encapsulation-inheritance-polymorphism.js
└── README.md

🎯 Key Features of This Course

  • Progressive Learning: Each file builds upon previous concepts
  • Practical Examples: Real-world code examples and use cases
  • Commented Code: Detailed explanations within each file
  • Modern JavaScript: Focus on current best practices and ES6+ features
  • Hands-on Approach: Uncomment and experiment with code directly

🛠️ Tools and Resources

  • MDN Web Docs: Comprehensive JavaScript reference
  • Can I Use: Browser compatibility checker
  • VS Code: Recommended code editor with JavaScript extensions
  • Chrome DevTools: For debugging and experimentation

📈 What You'll Learn

By completing this course, you will:

  • Write modern, clean JavaScript using ES6+ features
  • Understand and manage the this keyword effectively
  • Create reusable and maintainable code
  • Implement object-oriented programming principles
  • Debug common JavaScript issues
  • Prepare for advanced JavaScript frameworks and libraries

🤝 Contributing

This is a learning repository. Feel free to:

  • Report issues or unclear explanations
  • Suggest improvements or additional examples
  • Share your own implementations

📄 License

This educational repository is open for learning purposes. Feel free to use, modify, and distribute for educational purposes.


Happy Coding! 🚀

Remember: The best way to learn is by doing. Experiment with the code, break it, fix it, and understand why it works the way it does.

About

JavaScript Intermediate Course repo that provides hands-on ES6+ examples, advanced JavaScript concepts, and object-oriented programming exercises to help learners move from basic to intermediate JS with clean, modern code.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

JavaScript Intermediate Course

JS Intermediate Course Banner

GitHubTwitterDiscordYouTube

A comprehensive collection of JavaScript intermediate-level examples and exercises covering ES6+ features, advanced concepts, and object-oriented programming principles.

📚 Course Overview

This course is designed to bridge the gap between beginner and advanced JavaScript by focusing on modern ES6+ features, proper understanding of this keyword, function methods, and object-oriented programming principles.

🎯 Learning Objectives

  • Master modern JavaScript (ES6+) features and syntax
  • Understand the this keyword and its binding rules
  • Learn advanced function methods (call, apply, bind)
  • Implement object-oriented programming principles
  • Develop clean, maintainable JavaScript code

📋 Course Content

Module 1: ES6+ Features (050-057)

050 - ES6 Overview

  • Introduction to ES6/ES2015 and subsequent versions
  • Key improvements over traditional JavaScript
  • Browser compatibility and transpilation basics
  • Feature detection techniques

051 - Template Literals & Tagged Templates

  • String interpolation with template literals
  • Multi-line strings
  • Tagged templates for advanced string processing
  • Practical examples: HTML generation, URL building, data formatting

052 - Arrow Functions

  • Concise function syntax
  • Lexical this binding
  • When to use (and when not to use) arrow functions

053 - Default Parameters & Rest Parameters

  • Function parameter defaults
  • Rest operator for variable arguments
  • Combining with destructuring

054 - Spread Operator

  • Array and object spreading
  • Function arguments spreading
  • Practical use cases and examples

055 - Array Destructuring

  • Extracting values from arrays
  • Skipping values with comma separators
  • Nested array destructuring

056 - Enhanced Object Literals

  • Shorthand property names
  • Computed property names
  • Method shorthand syntax

057 - For...of Loop

  • Iterating over iterable objects
  • Comparison with for...in loop
  • Working with strings, arrays, and other iterables

Module 2: Advanced JavaScript Concepts (058-064)

058 - For...in vs For...of

  • Key differences and use cases
  • When to use each loop type
  • Common pitfalls and best practices

059 - The this Keyword

  • Four binding rules: Default, Implicit, Explicit, New
  • Context loss in callbacks
  • Debugging this issues
  • Practical solutions and patterns

060 - Call, Apply, Bind Methods

  • Function borrowing techniques
  • Setting explicit context
  • Common use cases and examples
  • Modern alternatives (spread operator)

061 - Arrow Functions and this

  • Lexical this binding behavior
  • Solving context issues with arrow functions
  • When arrow functions are NOT appropriate

062 - IIFE (Immediately Invoked Function Expressions)

  • Creating private scopes
  • Module pattern implementation
  • Common use cases

063 - Function Constructors

  • Creating objects with constructors
  • Prototype chain basics
  • Comparison with ES6 classes

064 - Variable Shadowing

  • Understanding scope and shadowing
  • Common bugs and how to avoid them
  • Best practices for variable naming

Module 3: Object-Oriented Programming (065)

065 - OOP Principles

  • Encapsulation: Data hiding and bundling
  • Inheritance: Code reuse and hierarchical relationships
  • Polymorphism: Multiple forms and dynamic behavior
  • Real-world examples and implementations

🚀 Getting Started

Prerequisites

  • Basic understanding of JavaScript fundamentals
  • Familiarity with variables, functions, and basic control structures
  • A modern web browser or Node.js environment

How to Use This Course

  1. Sequential Learning: Start with file 050-es6-overview.js and progress through each numbered file
  2. Hands-on Practice: Each file contains commented examples - uncomment and modify them to understand concepts
  3. Experiment: Try creating your own examples based on the patterns shown
  4. Build Projects: Apply these concepts in small projects to solidify understanding

Running the Code

# Using Node.js
node 050-es6-overview.js
# Or open files directly in your browser console

📁 File Structure

JS Intermediate Course/
├── 050-es6-overview.js
├── 051-template-literals-tagged.js
├── 052-arrow-functions.js
├── 053-default-parameters-rest.js
├── 054-spread-operator.js
├── 055-destructuring-arrays.js
├── 056-enhanced-object-literals.js
├── 057-for-of-loop.js
├── 058-for-in-vs-for-of.js
├── 059-this-keyword.js
├── 060-call-apply-bind-methods.js
├── 061-arrow-fn-this.js
├── 062-iife.js
├── 063-function-constructor.js
├── 064-variable-shadowing.js
├── 065-oop-principles-encapsulation-inheritance-polymorphism.js
└── README.md

🎯 Key Features of This Course

  • Progressive Learning: Each file builds upon previous concepts
  • Practical Examples: Real-world code examples and use cases
  • Commented Code: Detailed explanations within each file
  • Modern JavaScript: Focus on current best practices and ES6+ features
  • Hands-on Approach: Uncomment and experiment with code directly

🛠️ Tools and Resources

  • MDN Web Docs: Comprehensive JavaScript reference
  • Can I Use: Browser compatibility checker
  • VS Code: Recommended code editor with JavaScript extensions
  • Chrome DevTools: For debugging and experimentation

📈 What You'll Learn

By completing this course, you will:

  • Write modern, clean JavaScript using ES6+ features
  • Understand and manage the this keyword effectively
  • Create reusable and maintainable code
  • Implement object-oriented programming principles
  • Debug common JavaScript issues
  • Prepare for advanced JavaScript frameworks and libraries

🤝 Contributing

This is a learning repository. Feel free to:

  • Report issues or unclear explanations
  • Suggest improvements or additional examples
  • Share your own implementations

📄 License

This educational repository is open for learning purposes. Feel free to use, modify, and distribute for educational purposes.


Happy Coding! 🚀

Remember: The best way to learn is by doing. Experiment with the code, break it, fix it, and understand why it works the way it does.

About

JavaScript Intermediate Course repo that provides hands-on ES6+ examples, advanced JavaScript concepts, and object-oriented programming exercises to help learners move from basic to intermediate JS with clean, modern code.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

JavaScript Intermediate Course

JS Intermediate Course Banner

GitHubTwitterDiscordYouTube

A comprehensive collection of JavaScript intermediate-level examples and exercises covering ES6+ features, advanced concepts, and object-oriented programming principles.

📚 Course Overview

This course is designed to bridge the gap between beginner and advanced JavaScript by focusing on modern ES6+ features, proper understanding of this keyword, function methods, and object-oriented programming principles.

🎯 Learning Objectives

  • Master modern JavaScript (ES6+) features and syntax
  • Understand the this keyword and its binding rules
  • Learn advanced function methods (call, apply, bind)
  • Implement object-oriented programming principles
  • Develop clean, maintainable JavaScript code

📋 Course Content

Module 1: ES6+ Features (050-057)

050 - ES6 Overview

  • Introduction to ES6/ES2015 and subsequent versions
  • Key improvements over traditional JavaScript
  • Browser compatibility and transpilation basics
  • Feature detection techniques

051 - Template Literals & Tagged Templates

  • String interpolation with template literals
  • Multi-line strings
  • Tagged templates for advanced string processing
  • Practical examples: HTML generation, URL building, data formatting

052 - Arrow Functions

  • Concise function syntax
  • Lexical this binding
  • When to use (and when not to use) arrow functions

053 - Default Parameters & Rest Parameters

  • Function parameter defaults
  • Rest operator for variable arguments
  • Combining with destructuring

054 - Spread Operator

  • Array and object spreading
  • Function arguments spreading
  • Practical use cases and examples

055 - Array Destructuring

  • Extracting values from arrays
  • Skipping values with comma separators
  • Nested array destructuring

056 - Enhanced Object Literals

  • Shorthand property names
  • Computed property names
  • Method shorthand syntax

057 - For...of Loop

  • Iterating over iterable objects
  • Comparison with for...in loop
  • Working with strings, arrays, and other iterables

Module 2: Advanced JavaScript Concepts (058-064)

058 - For...in vs For...of

  • Key differences and use cases
  • When to use each loop type
  • Common pitfalls and best practices

059 - The this Keyword

  • Four binding rules: Default, Implicit, Explicit, New
  • Context loss in callbacks
  • Debugging this issues
  • Practical solutions and patterns

060 - Call, Apply, Bind Methods

  • Function borrowing techniques
  • Setting explicit context
  • Common use cases and examples
  • Modern alternatives (spread operator)

061 - Arrow Functions and this

  • Lexical this binding behavior
  • Solving context issues with arrow functions
  • When arrow functions are NOT appropriate

062 - IIFE (Immediately Invoked Function Expressions)

  • Creating private scopes
  • Module pattern implementation
  • Common use cases

063 - Function Constructors

  • Creating objects with constructors
  • Prototype chain basics
  • Comparison with ES6 classes

064 - Variable Shadowing

  • Understanding scope and shadowing
  • Common bugs and how to avoid them
  • Best practices for variable naming

Module 3: Object-Oriented Programming (065)

065 - OOP Principles

  • Encapsulation: Data hiding and bundling
  • Inheritance: Code reuse and hierarchical relationships
  • Polymorphism: Multiple forms and dynamic behavior
  • Real-world examples and implementations

🚀 Getting Started

Prerequisites

  • Basic understanding of JavaScript fundamentals
  • Familiarity with variables, functions, and basic control structures
  • A modern web browser or Node.js environment

How to Use This Course

  1. Sequential Learning: Start with file 050-es6-overview.js and progress through each numbered file
  2. Hands-on Practice: Each file contains commented examples - uncomment and modify them to understand concepts
  3. Experiment: Try creating your own examples based on the patterns shown
  4. Build Projects: Apply these concepts in small projects to solidify understanding

Running the Code

# Using Node.js
node 050-es6-overview.js
# Or open files directly in your browser console

📁 File Structure

JS Intermediate Course/
├── 050-es6-overview.js
├── 051-template-literals-tagged.js
├── 052-arrow-functions.js
├── 053-default-parameters-rest.js
├── 054-spread-operator.js
├── 055-destructuring-arrays.js
├── 056-enhanced-object-literals.js
├── 057-for-of-loop.js
├── 058-for-in-vs-for-of.js
├── 059-this-keyword.js
├── 060-call-apply-bind-methods.js
├── 061-arrow-fn-this.js
├── 062-iife.js
├── 063-function-constructor.js
├── 064-variable-shadowing.js
├── 065-oop-principles-encapsulation-inheritance-polymorphism.js
└── README.md

🎯 Key Features of This Course

  • Progressive Learning: Each file builds upon previous concepts
  • Practical Examples: Real-world code examples and use cases
  • Commented Code: Detailed explanations within each file
  • Modern JavaScript: Focus on current best practices and ES6+ features
  • Hands-on Approach: Uncomment and experiment with code directly

🛠️ Tools and Resources

  • MDN Web Docs: Comprehensive JavaScript reference
  • Can I Use: Browser compatibility checker
  • VS Code: Recommended code editor with JavaScript extensions
  • Chrome DevTools: For debugging and experimentation

📈 What You'll Learn

By completing this course, you will:

  • Write modern, clean JavaScript using ES6+ features
  • Understand and manage the this keyword effectively
  • Create reusable and maintainable code
  • Implement object-oriented programming principles
  • Debug common JavaScript issues
  • Prepare for advanced JavaScript frameworks and libraries

🤝 Contributing

This is a learning repository. Feel free to:

  • Report issues or unclear explanations
  • Suggest improvements or additional examples
  • Share your own implementations

📄 License

This educational repository is open for learning purposes. Feel free to use, modify, and distribute for educational purposes.


Happy Coding! 🚀

Remember: The best way to learn is by doing. Experiment with the code, break it, fix it, and understand why it works the way it does.

About

JavaScript Intermediate Course repo that provides hands-on ES6+ examples, advanced JavaScript concepts, and object-oriented programming exercises to help learners move from basic to intermediate JS with clean, modern code.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

JavaScript Intermediate Course

JS Intermediate Course Banner

GitHubTwitterDiscordYouTube

A comprehensive collection of JavaScript intermediate-level examples and exercises covering ES6+ features, advanced concepts, and object-oriented programming principles.

📚 Course Overview

This course is designed to bridge the gap between beginner and advanced JavaScript by focusing on modern ES6+ features, proper understanding of this keyword, function methods, and object-oriented programming principles.

🎯 Learning Objectives

  • Master modern JavaScript (ES6+) features and syntax
  • Understand the this keyword and its binding rules
  • Learn advanced function methods (call, apply, bind)
  • Implement object-oriented programming principles
  • Develop clean, maintainable JavaScript code

📋 Course Content

Module 1: ES6+ Features (050-057)

050 - ES6 Overview

  • Introduction to ES6/ES2015 and subsequent versions
  • Key improvements over traditional JavaScript
  • Browser compatibility and transpilation basics
  • Feature detection techniques

051 - Template Literals & Tagged Templates

  • String interpolation with template literals
  • Multi-line strings
  • Tagged templates for advanced string processing
  • Practical examples: HTML generation, URL building, data formatting

052 - Arrow Functions

  • Concise function syntax
  • Lexical this binding
  • When to use (and when not to use) arrow functions

053 - Default Parameters & Rest Parameters

  • Function parameter defaults
  • Rest operator for variable arguments
  • Combining with destructuring

054 - Spread Operator

  • Array and object spreading
  • Function arguments spreading
  • Practical use cases and examples

055 - Array Destructuring

  • Extracting values from arrays
  • Skipping values with comma separators
  • Nested array destructuring

056 - Enhanced Object Literals

  • Shorthand property names
  • Computed property names
  • Method shorthand syntax

057 - For...of Loop

  • Iterating over iterable objects
  • Comparison with for...in loop
  • Working with strings, arrays, and other iterables

Module 2: Advanced JavaScript Concepts (058-064)

058 - For...in vs For...of

  • Key differences and use cases
  • When to use each loop type
  • Common pitfalls and best practices

059 - The this Keyword

  • Four binding rules: Default, Implicit, Explicit, New
  • Context loss in callbacks
  • Debugging this issues
  • Practical solutions and patterns

060 - Call, Apply, Bind Methods

  • Function borrowing techniques
  • Setting explicit context
  • Common use cases and examples
  • Modern alternatives (spread operator)

061 - Arrow Functions and this

  • Lexical this binding behavior
  • Solving context issues with arrow functions
  • When arrow functions are NOT appropriate

062 - IIFE (Immediately Invoked Function Expressions)

  • Creating private scopes
  • Module pattern implementation
  • Common use cases

063 - Function Constructors

  • Creating objects with constructors
  • Prototype chain basics
  • Comparison with ES6 classes

064 - Variable Shadowing

  • Understanding scope and shadowing
  • Common bugs and how to avoid them
  • Best practices for variable naming

Module 3: Object-Oriented Programming (065)

065 - OOP Principles

  • Encapsulation: Data hiding and bundling
  • Inheritance: Code reuse and hierarchical relationships
  • Polymorphism: Multiple forms and dynamic behavior
  • Real-world examples and implementations

🚀 Getting Started

Prerequisites

  • Basic understanding of JavaScript fundamentals
  • Familiarity with variables, functions, and basic control structures
  • A modern web browser or Node.js environment

How to Use This Course

  1. Sequential Learning: Start with file 050-es6-overview.js and progress through each numbered file
  2. Hands-on Practice: Each file contains commented examples - uncomment and modify them to understand concepts
  3. Experiment: Try creating your own examples based on the patterns shown
  4. Build Projects: Apply these concepts in small projects to solidify understanding

Running the Code

# Using Node.js
node 050-es6-overview.js
# Or open files directly in your browser console

📁 File Structure

JS Intermediate Course/
├── 050-es6-overview.js
├── 051-template-literals-tagged.js
├── 052-arrow-functions.js
├── 053-default-parameters-rest.js
├── 054-spread-operator.js
├── 055-destructuring-arrays.js
├── 056-enhanced-object-literals.js
├── 057-for-of-loop.js
├── 058-for-in-vs-for-of.js
├── 059-this-keyword.js
├── 060-call-apply-bind-methods.js
├── 061-arrow-fn-this.js
├── 062-iife.js
├── 063-function-constructor.js
├── 064-variable-shadowing.js
├── 065-oop-principles-encapsulation-inheritance-polymorphism.js
└── README.md

🎯 Key Features of This Course

  • Progressive Learning: Each file builds upon previous concepts
  • Practical Examples: Real-world code examples and use cases
  • Commented Code: Detailed explanations within each file
  • Modern JavaScript: Focus on current best practices and ES6+ features
  • Hands-on Approach: Uncomment and experiment with code directly

🛠️ Tools and Resources

  • MDN Web Docs: Comprehensive JavaScript reference
  • Can I Use: Browser compatibility checker
  • VS Code: Recommended code editor with JavaScript extensions
  • Chrome DevTools: For debugging and experimentation

📈 What You'll Learn

By completing this course, you will:

  • Write modern, clean JavaScript using ES6+ features
  • Understand and manage the this keyword effectively
  • Create reusable and maintainable code
  • Implement object-oriented programming principles
  • Debug common JavaScript issues
  • Prepare for advanced JavaScript frameworks and libraries

🤝 Contributing

This is a learning repository. Feel free to:

  • Report issues or unclear explanations
  • Suggest improvements or additional examples
  • Share your own implementations

📄 License

This educational repository is open for learning purposes. Feel free to use, modify, and distribute for educational purposes.


Happy Coding! 🚀

Remember: The best way to learn is by doing. Experiment with the code, break it, fix it, and understand why it works the way it does.

About

JavaScript Intermediate Course repo that provides hands-on ES6+ examples, advanced JavaScript concepts, and object-oriented programming exercises to help learners move from basic to intermediate JS with clean, modern code.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

JavaScript Intermediate Course

JS Intermediate Course Banner

GitHubTwitterDiscordYouTube

A comprehensive collection of JavaScript intermediate-level examples and exercises covering ES6+ features, advanced concepts, and object-oriented programming principles.

📚 Course Overview

This course is designed to bridge the gap between beginner and advanced JavaScript by focusing on modern ES6+ features, proper understanding of this keyword, function methods, and object-oriented programming principles.

🎯 Learning Objectives

  • Master modern JavaScript (ES6+) features and syntax
  • Understand the this keyword and its binding rules
  • Learn advanced function methods (call, apply, bind)
  • Implement object-oriented programming principles
  • Develop clean, maintainable JavaScript code

📋 Course Content

Module 1: ES6+ Features (050-057)

050 - ES6 Overview

  • Introduction to ES6/ES2015 and subsequent versions
  • Key improvements over traditional JavaScript
  • Browser compatibility and transpilation basics
  • Feature detection techniques

051 - Template Literals & Tagged Templates

  • String interpolation with template literals
  • Multi-line strings
  • Tagged templates for advanced string processing
  • Practical examples: HTML generation, URL building, data formatting

052 - Arrow Functions

  • Concise function syntax
  • Lexical this binding
  • When to use (and when not to use) arrow functions

053 - Default Parameters & Rest Parameters

  • Function parameter defaults
  • Rest operator for variable arguments
  • Combining with destructuring

054 - Spread Operator

  • Array and object spreading
  • Function arguments spreading
  • Practical use cases and examples

055 - Array Destructuring

  • Extracting values from arrays
  • Skipping values with comma separators
  • Nested array destructuring

056 - Enhanced Object Literals

  • Shorthand property names
  • Computed property names
  • Method shorthand syntax

057 - For...of Loop

  • Iterating over iterable objects
  • Comparison with for...in loop
  • Working with strings, arrays, and other iterables

Module 2: Advanced JavaScript Concepts (058-064)

058 - For...in vs For...of

  • Key differences and use cases
  • When to use each loop type
  • Common pitfalls and best practices

059 - The this Keyword

  • Four binding rules: Default, Implicit, Explicit, New
  • Context loss in callbacks
  • Debugging this issues
  • Practical solutions and patterns

060 - Call, Apply, Bind Methods

  • Function borrowing techniques
  • Setting explicit context
  • Common use cases and examples
  • Modern alternatives (spread operator)

061 - Arrow Functions and this

  • Lexical this binding behavior
  • Solving context issues with arrow functions
  • When arrow functions are NOT appropriate

062 - IIFE (Immediately Invoked Function Expressions)

  • Creating private scopes
  • Module pattern implementation
  • Common use cases

063 - Function Constructors

  • Creating objects with constructors
  • Prototype chain basics
  • Comparison with ES6 classes

064 - Variable Shadowing

  • Understanding scope and shadowing
  • Common bugs and how to avoid them
  • Best practices for variable naming

Module 3: Object-Oriented Programming (065)

065 - OOP Principles

  • Encapsulation: Data hiding and bundling
  • Inheritance: Code reuse and hierarchical relationships
  • Polymorphism: Multiple forms and dynamic behavior
  • Real-world examples and implementations

🚀 Getting Started

Prerequisites

  • Basic understanding of JavaScript fundamentals
  • Familiarity with variables, functions, and basic control structures
  • A modern web browser or Node.js environment

How to Use This Course

  1. Sequential Learning: Start with file 050-es6-overview.js and progress through each numbered file
  2. Hands-on Practice: Each file contains commented examples - uncomment and modify them to understand concepts
  3. Experiment: Try creating your own examples based on the patterns shown
  4. Build Projects: Apply these concepts in small projects to solidify understanding

Running the Code

# Using Node.js
node 050-es6-overview.js
# Or open files directly in your browser console

📁 File Structure

JS Intermediate Course/
├── 050-es6-overview.js
├── 051-template-literals-tagged.js
├── 052-arrow-functions.js
├── 053-default-parameters-rest.js
├── 054-spread-operator.js
├── 055-destructuring-arrays.js
├── 056-enhanced-object-literals.js
├── 057-for-of-loop.js
├── 058-for-in-vs-for-of.js
├── 059-this-keyword.js
├── 060-call-apply-bind-methods.js
├── 061-arrow-fn-this.js
├── 062-iife.js
├── 063-function-constructor.js
├── 064-variable-shadowing.js
├── 065-oop-principles-encapsulation-inheritance-polymorphism.js
└── README.md

🎯 Key Features of This Course

  • Progressive Learning: Each file builds upon previous concepts
  • Practical Examples: Real-world code examples and use cases
  • Commented Code: Detailed explanations within each file
  • Modern JavaScript: Focus on current best practices and ES6+ features
  • Hands-on Approach: Uncomment and experiment with code directly

🛠️ Tools and Resources

  • MDN Web Docs: Comprehensive JavaScript reference
  • Can I Use: Browser compatibility checker
  • VS Code: Recommended code editor with JavaScript extensions
  • Chrome DevTools: For debugging and experimentation

📈 What You'll Learn

By completing this course, you will:

  • Write modern, clean JavaScript using ES6+ features
  • Understand and manage the this keyword effectively
  • Create reusable and maintainable code
  • Implement object-oriented programming principles
  • Debug common JavaScript issues
  • Prepare for advanced JavaScript frameworks and libraries

🤝 Contributing

This is a learning repository. Feel free to:

  • Report issues or unclear explanations
  • Suggest improvements or additional examples
  • Share your own implementations

📄 License

This educational repository is open for learning purposes. Feel free to use, modify, and distribute for educational purposes.


Happy Coding! 🚀

Remember: The best way to learn is by doing. Experiment with the code, break it, fix it, and understand why it works the way it does.

About

JavaScript Intermediate Course repo that provides hands-on ES6+ examples, advanced JavaScript concepts, and object-oriented programming exercises to help learners move from basic to intermediate JS with clean, modern code.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

JavaScript Intermediate Course

JS Intermediate Course Banner

GitHubTwitterDiscordYouTube

A comprehensive collection of JavaScript intermediate-level examples and exercises covering ES6+ features, advanced concepts, and object-oriented programming principles.

📚 Course Overview

This course is designed to bridge the gap between beginner and advanced JavaScript by focusing on modern ES6+ features, proper understanding of this keyword, function methods, and object-oriented programming principles.

🎯 Learning Objectives

  • Master modern JavaScript (ES6+) features and syntax
  • Understand the this keyword and its binding rules
  • Learn advanced function methods (call, apply, bind)
  • Implement object-oriented programming principles
  • Develop clean, maintainable JavaScript code

📋 Course Content

Module 1: ES6+ Features (050-057)

050 - ES6 Overview

  • Introduction to ES6/ES2015 and subsequent versions
  • Key improvements over traditional JavaScript
  • Browser compatibility and transpilation basics
  • Feature detection techniques

051 - Template Literals & Tagged Templates

  • String interpolation with template literals
  • Multi-line strings
  • Tagged templates for advanced string processing
  • Practical examples: HTML generation, URL building, data formatting

052 - Arrow Functions

  • Concise function syntax
  • Lexical this binding
  • When to use (and when not to use) arrow functions

053 - Default Parameters & Rest Parameters

  • Function parameter defaults
  • Rest operator for variable arguments
  • Combining with destructuring

054 - Spread Operator

  • Array and object spreading
  • Function arguments spreading
  • Practical use cases and examples

055 - Array Destructuring

  • Extracting values from arrays
  • Skipping values with comma separators
  • Nested array destructuring

056 - Enhanced Object Literals

  • Shorthand property names
  • Computed property names
  • Method shorthand syntax

057 - For...of Loop

  • Iterating over iterable objects
  • Comparison with for...in loop
  • Working with strings, arrays, and other iterables

Module 2: Advanced JavaScript Concepts (058-064)

058 - For...in vs For...of

  • Key differences and use cases
  • When to use each loop type
  • Common pitfalls and best practices

059 - The this Keyword

  • Four binding rules: Default, Implicit, Explicit, New
  • Context loss in callbacks
  • Debugging this issues
  • Practical solutions and patterns

060 - Call, Apply, Bind Methods

  • Function borrowing techniques
  • Setting explicit context
  • Common use cases and examples
  • Modern alternatives (spread operator)

061 - Arrow Functions and this

  • Lexical this binding behavior
  • Solving context issues with arrow functions
  • When arrow functions are NOT appropriate

062 - IIFE (Immediately Invoked Function Expressions)

  • Creating private scopes
  • Module pattern implementation
  • Common use cases

063 - Function Constructors

  • Creating objects with constructors
  • Prototype chain basics
  • Comparison with ES6 classes

064 - Variable Shadowing

  • Understanding scope and shadowing
  • Common bugs and how to avoid them
  • Best practices for variable naming

Module 3: Object-Oriented Programming (065)

065 - OOP Principles

  • Encapsulation: Data hiding and bundling
  • Inheritance: Code reuse and hierarchical relationships
  • Polymorphism: Multiple forms and dynamic behavior
  • Real-world examples and implementations

🚀 Getting Started

Prerequisites

  • Basic understanding of JavaScript fundamentals
  • Familiarity with variables, functions, and basic control structures
  • A modern web browser or Node.js environment

How to Use This Course

  1. Sequential Learning: Start with file 050-es6-overview.js and progress through each numbered file
  2. Hands-on Practice: Each file contains commented examples - uncomment and modify them to understand concepts
  3. Experiment: Try creating your own examples based on the patterns shown
  4. Build Projects: Apply these concepts in small projects to solidify understanding

Running the Code

# Using Node.js
node 050-es6-overview.js
# Or open files directly in your browser console

📁 File Structure

JS Intermediate Course/
├── 050-es6-overview.js
├── 051-template-literals-tagged.js
├── 052-arrow-functions.js
├── 053-default-parameters-rest.js
├── 054-spread-operator.js
├── 055-destructuring-arrays.js
├── 056-enhanced-object-literals.js
├── 057-for-of-loop.js
├── 058-for-in-vs-for-of.js
├── 059-this-keyword.js
├── 060-call-apply-bind-methods.js
├── 061-arrow-fn-this.js
├── 062-iife.js
├── 063-function-constructor.js
├── 064-variable-shadowing.js
├── 065-oop-principles-encapsulation-inheritance-polymorphism.js
└── README.md

🎯 Key Features of This Course

  • Progressive Learning: Each file builds upon previous concepts
  • Practical Examples: Real-world code examples and use cases
  • Commented Code: Detailed explanations within each file
  • Modern JavaScript: Focus on current best practices and ES6+ features
  • Hands-on Approach: Uncomment and experiment with code directly

🛠️ Tools and Resources

  • MDN Web Docs: Comprehensive JavaScript reference
  • Can I Use: Browser compatibility checker
  • VS Code: Recommended code editor with JavaScript extensions
  • Chrome DevTools: For debugging and experimentation

📈 What You'll Learn

By completing this course, you will:

  • Write modern, clean JavaScript using ES6+ features
  • Understand and manage the this keyword effectively
  • Create reusable and maintainable code
  • Implement object-oriented programming principles
  • Debug common JavaScript issues
  • Prepare for advanced JavaScript frameworks and libraries

🤝 Contributing

This is a learning repository. Feel free to:

  • Report issues or unclear explanations
  • Suggest improvements or additional examples
  • Share your own implementations

📄 License

This educational repository is open for learning purposes. Feel free to use, modify, and distribute for educational purposes.


Happy Coding! 🚀

Remember: The best way to learn is by doing. Experiment with the code, break it, fix it, and understand why it works the way it does.

About

JavaScript Intermediate Course repo that provides hands-on ES6+ examples, advanced JavaScript concepts, and object-oriented programming exercises to help learners move from basic to intermediate JS with clean, modern code.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages