JavaScript中的命名空间

什么是命名空间?

名称间隔是在单个总括术语下包装一组实体,变量,函数,对象的行为。

JavaScript有多种实现方法,查看示例将使该概念更易于理解。

创建名称空间的最简单方法是创建对象文字:

const car = {
  start: () => {
    console.log('start')
  },
  stop: () => {
    console.log('stop')
  }
}

这样,开始和停止在下面命名carcar.start()car.stop()

他们不是污染全局对象

为什么这很重要?一个很好的理由是,没有什么可以干扰他们。

通过在创建对象后将变量分配给对象,该方法也可以工作:

const car = {}

car.start = () => { console.log(‘start’) }

car.stop = () => { console.log(‘stop’) }

但是由于它们的存在,仍然可以从外部访问它们。car对象参考。

完全从外部隐藏代码的最佳方法是将其包装到一个块中,这是包装在大括号中的代码的一部分,例如if或者for块,但也是这样形成的独立块:

{
  const start = () => {
    console.log('start')
  }

const stop = () => { console.log(‘stop’) } }

现在,在块外无法访问这两个功能。

但是您需要始终使用let或者const,它们是块作用域的。

使用var而是会将其“泄漏”到块外。

要解决此问题,可以使用函数,这是“旧的”预let / const方式:

(function() {
  var start = () => {
    console.log('start')
  }

const stop = () => { console.log(‘stop’) } })()

现在startstop都无法从外部访问,即使start分配给定义为var

免费下载我的JavaScript初学者手册


更多js教程: