PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

JavaScript创建命名空间的多种玩法

autoload
autoload 原创
2021-04-02 09:45:46 1912浏览

2021040209194670972.jpg

    在javascript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,所以为了避免全局变量名冲突,创建命名空间成为最优解。

1.通过闭包(Closure)和Object实现

    在闭包中声明好所有变量和方法,并通过一个JSON Object返回公有接口:

var NameSpace = NameSpace || {};
 NameSpace.Hello = (function() {   
 //待返回的公有对象  
  var self = {};   
  //私有变量或方法   
  var name = 'world';  
   //公有方法或变量   
   self.sayHello = function(_name) {    
    return 'Hello ' + (_name || name);  
     } ;   
     //返回的公有对象   
     return self; 
}());

2.通过JSON对象创建Object,代码如下:

var NameSpace = NameSpace || {}; 
NameSpace.Hello = {     name: 'world'   , sayHello: function(_name) {   
  return 'Hello ' + (_name || this.name);  
   }
 };

3.通过函数(function)创建:(较为复杂)

    这是一种比较常见的写法,通过声明一个function实现,函数里设置初始变量,公共方法写入prototype,如:

var NameSpace = NameSpace || {}; 
/* Function */ 
NameSpace.Hello = function() {   
    this.name = 'world'; 
}; 
NameSpace.Hello.prototype.sayHello = function(_name) {   
    return 'Hello ' + (_name || this.name); 
}; 
var hello = new NameSpace.Hello(); 
hello.sayHello();

4.通过函数(function)创建:(较为简洁)

var NameSpace = NameSpace || {}; 
NameSpace.Hello = new function() {   
    var self = this;   
    var name = 'world';   
    self.sayHello = function(_name) {    
     return 'Hello ' + (_name || name);  
      }; 
 };

推荐:《2021年js面试题及答案(大汇总)

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。