Before promises, we handled asynchronous code with callbacks which were hard to handle well. besides being an unreadable code (pyramid of doom), trying to handle multiple callbacks to run after an asynchronous operation ended or handle a completed process later in the code was hard to handle. There was a need for a better coding approach for handling asynchronous events.
Continue reading “Promises Deep Dive”Category: JavaScript
Composition Over Inheritance
Before we start to understand the limitations of inheritance and how you can solve them with composition it will be good to point out that prototypal inheritance is for object-oriented programming paradigms as closures are for functional programming paradigms and that inheritance is when you design your types around what they are while the composition is when you design your types around what they do.
Continue reading “Composition Over Inheritance”JavaScript Factories
Sometimes the creation of an object can be complicated and the factory pattern can be used to simplify that and hide a lot of that from our front end. Basically, the factory pattern can help us simplify object creation and create different objects based on need. in this article, we will see simple examples to understand the factory pattern in JavaScript and the advantages over the others.
Continue reading “JavaScript Factories”JavaScript Errors
In JavaScript, we have a native error constructor function which we can create instances of it by using the “new” keyword”. the instance itself doesn’t do anything but by using the “throw” keyword with the error instance, interesting things can happen.
Continue reading “JavaScript Errors”JavaScript – Object Oriented Programing
Object Oriented Programing means bringing together the data and the behavior in a single location called an object. data and behavior are the 2 main things in programs. data means the things we keep in memory and behavior means functions, the things that programs can do. This paradigm is entirely different than the functional programming paradigm that keeps a separation between the data and behavior.
Continue reading “JavaScript – Object Oriented Programing”JavaScript Super Powers – Prototypal Inheritance
Inheritance is when one object gets access to the properties and methods of another object. the classical inheritance is very verbose but the Prototypal inheritance is simple, flexible, extensible, and easy to understand. both ways are not perfect but prototypal inheritance can be very powerful.
Continue reading “JavaScript Super Powers – Prototypal Inheritance”Asynchronous JavaScript
Javascript is single-threaded, only one statement is executed at a time. If something in our code is a long process it will freeze our application (block the thread) until it finishes. But as I explained in my previous articles, JavaScript does not work alone in the browser, we have the web API which is a set of features that help us run code asynchronously, a code that runs with callbacks in the background and does not freeze our application.
Continue reading “Asynchronous JavaScript”JavaScript Modules
Modules are highly self-contained and they are grouped with their specific functionality. It’s allowing them to be moved around and used by other places and even to be removed without disrupting the system as a whole.
Continue reading “JavaScript Modules”JavaScript – Functional Programing
Functional programming is all about separation of concern which object-oriented programing does as well. but in functional programming, we don’t combine the data and functions in one piece or one object like with object-oriented programming. the functions operate on well-defined data structures like arrays and objects rather than belonging to the data structure like an object.
Continue reading “JavaScript – Functional Programing”JavaScript Super Powers – Closures
When The JavaScript engine makes sure that the function has access to all the variables outside of the function, it’s a closure. closures are a feature in JavaScript also called lexical scoping. it’s a combination of 2 things: functions are first-class citizens and the lexical scope.
Continue reading “JavaScript Super Powers – Closures”