什么是命名间距?
命名间距是将一组实体、变量、函数、对象包裹在一个总称下的行为。
JavaScript有各种方法来做到这一点,看到这些例子会使这个概念更容易理解。
创建命名空间的最简单方法是创建一个对象字面。
const car = {
start: () => {
console.log('start')
},
stop: () => {
console.log('stop')
}
}
通过这种方式,start和stop被命名为car :car.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')
}
})()
现在,start 和stop 都不能从外部访问,即使start 被分配给一个用var 定义的变量。