Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用let关键字别名伪命名空间代码?_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 如何使用let关键字别名伪命名空间代码?

Javascript 如何使用let关键字别名伪命名空间代码?,javascript,ecmascript-6,Javascript,Ecmascript 6,作为JS的初学者,我想了解let声明的一种用法,如下所示: 您可以使用let定义在扩展中别名伪命名空间代码。(请参阅扩展中的安全最佳实践。) 让Cc=Components.class,Ci=Components.interfaces 什么是伪命名空间代码 如何使用let关键字别名伪命名空间代码?在Javascript中处理命名空间时,总是指定完整命名空间来访问值或方法可能会很快变得烦人。例如: let myModule = { mySubModule: { mySubSubModul

作为JS的初学者,我想了解
let
声明的一种用法,如下所示:

您可以使用let定义在扩展中别名伪命名空间代码。(请参阅扩展中的安全最佳实践。)

让Cc=Components.class,Ci=Components.interfaces

什么是伪命名空间代码


如何使用
let
关键字别名伪命名空间代码?

在Javascript中处理命名空间时,总是指定完整命名空间来访问值或方法可能会很快变得烦人。例如:

let myModule = {
  mySubModule: {
    mySubSubModule: {
      myMethod: function () {}
    }
  }
};
// to use myMethod, we need to write the full namespace
myModule.mySubModule.mySubSubModule.myMethod();
通过将“路径”存储在变量中,我们可以避免每次需要调用myMethod时都写入完整的命名空间:

let shortcut = myModule.mySubModule.mySubSubModule;
shortcut.myMethod();

我真的不明白为什么会有专门针对Firefox扩展的段落。只要您的浏览器理解Ecmascript 6规范的
let
关键字,您就可以自由地将此技术用于任何您想要的名称空间。它也适用于
var
关键字,尽管您不会从诸如块作用域之类的功能中受益。

MyModule是一个简单的字典。为什么要调用模块?我不能使用var关键字吗?Javascript中没有模块和名称空间之类的东西。为了实现这一点,我们使用文字对象(或地图、字典)。这里有一个指向Javascript中模块设计模式实现的链接:。编辑:是的,您可以使用
var
关键字,除了
let
是块范围的,而不是
var
@Brunt:ES6 FYI中有模块,
let
与名称空间没有任何关系。这只是创建变量的另一种方式。JFTR,我已经从MDN中删除了这一段。