javascript - IIFE方法泄漏?

标签 javascript iife

可能是一个简单的问题,甚至希望不会重复类似like this one的问题,但是是否有任何规则如何为任何浏览器,node.js等正确编写IIFE?
IIFE示例-第二个是我自己在IE中的实验过程中创建的,观看了所有相关的Pluralsight视频之后。
是否有任何规则,最佳实践或规范说明如何在IIFE中正确编写方法?
在第一个(非常常见)的示例中,除了构造函数外,其他所有内容都泄漏了
在第二个中,但不确定为什么或在何处找到此行为的规范。
经典函数与其匿名版本(事件处理程序等)之间也可能存在差异。
狗(https://coderwall.com/p/ta4caw/using-iife-to-create-private-members-in-javascript
true-构造函数
错误-吸气剂
false-设置器在每个实例中都唯一

图表
true-构造函数
true-方法在所有对象中具有单个实例



var Dog = (function() {
  var name = "defaut name";
  var DogInner = function() {
    this.getName = function() {
      return name;
    };
    this.setName = function(value) {
      name = value;
    };
  };
  return DogInner;
})(); // this does the trick
var results = ["Dog"]
var dog = new Dog();
var dog1 = new Dog();
results.push(dog.Dog === dog1.Dog); // true
results.push(dog.setName === dog1.setName); // false
results.push(dog.setName === dog1.setName); // false

// IIFE object picked from my code
var Chart = (function() {

  function Chart() {}

  Chart.prototype.drawChart = function(data) {}

  return Chart;
})();
results.push(' ');

results.push("Chart");
var chart1 = new Chart();
var chart2 = new Chart();
results.push(chart1.Chart === chart2.Chart); // true
results.push(chart1.drawChart === chart2.drawChart); // true

console.log(results.join('\n'));

最佳答案

如果您在IIFE中使用this.variable名称,它将创建实例公共变量,但是只能使用私有静态或公共实例变量。

关于javascript - IIFE方法泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56235273/

相关文章:

javascript - onmouseover 请求时 ID 未定义

javascript - 将变量从一个 IIFE 传递到另一个

javascript - JavaScript 中的 (function() { } )() 结构是什么?

javascript - 第一个分号是什么意思? ";( function( ) { } ) ( ); "

javascript - 解释以下 JS 代码的行为(闭包)

javascript - jquery setInterval 与 fadeOut/In

javascript - 在 Highcharts 中使用按钮/复选框显示/隐藏数据的示例?

javascript - 立即调用页面默认值的函数表达式

javascript - setTimeout() 重复操作的问题

javascript - 将 Xml 文件链接到 HTML