javascript 具有IIFE的命名空间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 具有IIFE的命名空间相关的知识,希望对你有一定的参考价值。

<script src="tom.js"></script>
<script src="tonny.js"></script>
<script src="scott.js"></script>
<script>
  speak();
 /* This will create a naming conflict as 
    scott, tonny and tom, all use the same function */
</script>

var tom  = {};
(function(namespace) { 
    namespace.speak = function() { 
      console.log("I am Tom !");
    };
})(tom );

var tonny  = {};
(function() {
    this.speak =  function() {  
      console.log("I am Tonny  !") 
    };
}).apply(tonny );

var scott  = {};
(function() {
  var speakSoftly = function() {
      console.log("I am Scott !") 
  };
  this.speak = function() {
     speakSoftly();
  };
}).call(scott );


tom.speak();
tonny.speak();
scott.speak();
scott.speakSoftly; // speakSoftly is local to IIFE block

以上是关于javascript 具有IIFE的命名空间的主要内容,如果未能解决你的问题,请参考以下文章

理解JavaScript的立即调用函数表达式(IIFE)

项目之间的 Javascript IIFE 代码共享

在 Javascript 中定义一个具有命名空间的类

新的JavaScript文件(具有命名空间封闭的模块模式)

IIFE的形式原理和常见写法

与 JavaScript 模块相关的所有知识点