tabliu

大踏步走

JavaScript学习笔记(15)- 命名空间

JavaScript学习笔记。本笔记是基于在腾讯课堂《Web前端开发之JavaScript精英课堂【渡一教育】》课程学习过程中记录的一些提纲和关键点。
强烈推荐想要进行js入门学习来听听,尤其是前面姬成讲的基础知识点。

命名空间的作用

管理变量,防止污染全局,适用于模块化开发。

命名空间的方法

传统方法:在变量前面加前缀

var = jcName;

这种方法存在很多局限性,现在已基本抛弃使用。

通过对象属性来产生命名空间

var org = {
  department1 : {
    zhangsan : {
      name : 'abc',
      age : 123
    },
    lisi : {

    }
  },
  department2 : {
    zhaowu : {

    },
    wangmazi : {

    }
  }
}

var zhangsan = org.department1.zhangsan;
zhangsan.name = 'bcd';

这种方法比较麻烦,不是最优的命名空间解决方法。

通过闭包来实现变量私有化

用闭包来解决,返回方法的调用。

init是入口函数,初始化,用来调用不同函数的执行。

var init = (function(){
  var name = '123';

  function callName() {
    console.log(name);
  }

  return function() {
    callName();
  }
}())

init();

这样通过立即执行函数形成一个闭包,init用来执行return出来的方法,避免了变量冲突。

var init = (function(){
  var name = 'aaa';

  function callName() {
    console.log(name);
  }

  return function() {
    callName();
  }
}())

var initDeng = (function(){
  var name = 'bbb';

  function callName() {
    console.log(name);
  }

  return function() {
    callName();
  }
}())

var name = 'ccc';

init(); //aaa
initDeng(); //bbb
console.log(name); //ccc

即使有全局变量或者其他函数的定义,也不会相互影响,很好的解决了变量污染的问题。

延伸阅读:在JavaScript中创建命名空间的几种写法

本节完。