Wednesday, July 3, 2024
HomeLanguagesJavascriptNamespacing in JavaScript

Namespacing in JavaScript

JavaScript by default lacks namespaces however, we can use objects to create namespaces. A nested namespace is a namespace inside another namespace. In JavaScript, we can define a nested namespace by creating an object inside another object.

JavaScript Namespaces: Namespace refers to the programming paradigm of providing scope to the identifiers (names of types, functions, variables, etc) to prevent collisions between them. For instance, the same variable name might be required in a program in different contexts.

Example: An HTML file, in which we are calling two JavaScript files, namespace1.js, and namespace2.js where.

  • namespace1.js Handling an event of changing the background color to ‘yellow’ and text color to ‘grey’ on pointing the mouse pointer to the <div> element.

  • namespace2.js Handling an event of changing the background color to ‘pink’ and text color to ‘charcoal’ on moving the mouse pointer away from the <div> element.

HTML




<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8" />
  <title>Namespacing in JavaScript</title>
 </head>
 <body>
    <div id="output">This is the div</div>
  
    <script src="./namespace1.js"></script>
    <script src="./namespace2.js"></script>
 </body>
</html>


namespace1.js




let MAC = {
    colorDiv: function(ev){
        let target = ev.currentTarget;
        target.style.backgroundColor = 'yellow';
        target.style.color = '#808080';
    }, 
    init: function(){
        let divA = document.getElementById('output');
        divA.addEventListener('mouseover',
        MAC.colorDiv);
    }
}
  
MAC.init();


namespace2.js




let WIN = {
    colorDiv: function(ev){
        let target = ev.currentTarget;
        target.style.backgroundColor = 'pink';
        target.style.color = '#36454F';
    }, 
    init: function(){
        let divB = document.getElementById('output');
        divB.addEventListener('mouseout',
        this.colorDiv);
    }
}
  
WIN.init();


Output:

  • On pointing the mouse pointer to the <div> element.

  • On moving the mouse pointer away from the <div> element.

If namespaces are not used then there occurs an error of using the same function in two or more JavaScript files because functions in JavaScript are declared globally. In our case, ‘colorDiv’ function is used both in namespace1.js and namespace2.js. If namespaces are not used in the above example then it will throw an error: “Uncaught SyntaxError: Identifier ‘colorDiv’ has already been declared at namespace2.js”.

Whether you’re preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, neveropen Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we’ve already empowered, and we’re here to do the same for you. Don’t miss out – check it out now!

Calisto Chipfumbu
Calisto Chipfumbuhttp://cchipfumbu@gmail.com
I have 5 years' worth of experience in the IT industry, primarily focused on Linux and Database administration. In those years, apart from learning significant technical knowledge, I also became comfortable working in a professional team and adapting to my environment, as I switched through 3 roles in that time.
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments