Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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中,在IIFE中包装伪类有什么好处?_Javascript_Iife - Fatal编程技术网

在JavaScript中,在IIFE中包装伪类有什么好处?

在JavaScript中,在IIFE中包装伪类有什么好处?,javascript,iife,Javascript,Iife,下面是IIFE中伪类的一个示例 // cow.js (function(exports) { "use strict"; function Cow(name) { this.name = name || "Anon cow"; } exports.Cow = Cow; Cow.prototype = { greets: function(target) { if (!target) throw new Error("missin

下面是IIFE中伪类的一个示例

// cow.js
(function(exports) {
  "use strict";

  function Cow(name) {
    this.name = name || "Anon cow";
  }
  exports.Cow = Cow;

  Cow.prototype = {
    greets: function(target) {
      if (!target)
        throw new Error("missing target");
      return this.name + " greets " + target;
    }
  };
})(this);
与以下各项相比,这有什么好处:

  "use strict";

  function Cow(name) {
    this.name = name || "Anon cow";
  }
  exports.Cow = Cow;

  Cow.prototype = {
    greets: function(target) {
      if (!target)
        throw new Error("missing target");
      return this.name + " greets " + target;
    }
  };
这两个函数不都会将Cow“构造函数”函数添加到全局范围吗

cow.js文件通过HTML文档包含在脚本标记中。这意味着
的值是窗口。这不是两个示例用于添加函数的相同全局范围吗

有人能提供一个在模块或不同范围内使用此功能的示例吗

这不是重复,因为以下相关问题中的IFFE不采用参数-


代码是从这里复制过来的:

不同之处在于作用域-在第一种情况下,所有内容都定义在匿名函数作用域中,在第二种情况下定义在全局作用域中。IIFE的好处是模块封装,您可以在每个模块中定义一个名称相同的函数/类,而不会影响另一个。

不同之处在于作用域-在第一种情况下,所有内容都在匿名函数作用域中定义,在第二种情况下在全局作用域中定义。IIFE的好处是模块封装,您可以在每个模块中定义一个同名的函数/类,而不影响另一个。

@Tushar您能更详细地解释一下吗?在第二个示例中,Cow变成了一个全局方法(假设它是在窗口范围内定义的,所以它变成了window.Cow),虽然它不在第一个例子中,但我不认为这是重复的。它问的是“this”的用法,而另一个问题没有明确说明。@Tushar你能更详细地解释一下吗?在第二个示例中,Cow变成了一个全局方法(假设它是在窗口范围定义的,所以它变成了window.Cow),而在第一个示例中没有。我不认为这是重复的。它问的是“this”的用法,而另一个问题没有明确说明。我在问题中添加了更多细节,关于这个脚本通过HTML页面包含的事实。这是否意味着这两个版本都在窗口范围中添加了
Cow
?我已经为这个问题添加了更多细节,关于这个脚本是通过HTML页面包含的事实。这是否意味着两个版本都在添加窗口范围?