新的与否的Javascript

前端之家收集整理的这篇文章主要介绍了新的与否的Javascript前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下功能
var myInstance =  (function() {
  var privateVar = 'Test';

  function privateMethod () {
    // ...
  }

  return { // public interface
    publicMethod1: function () {
      // all private members are accesible here
        alert(privateVar);
    },publicMethod2: function () {
    }
  };
})();

如果我在函数添加内容,会有什么不同.从萤火虫看来,似乎两个物体是相同的.据我了解,两者都应该强制执行单身模式.

var myInstance =  new (function() {
  var privateVar = 'Test';

  function privateMethod () {
    // ...
  }

  return { // public interface
    publicMethod1: function () {
      // all private members are accesible here
        alert(privateVar);
    },publicMethod2: function () {
    }
  };
})();

解决方法

虽然最终结果看起来是相同的,但它如何到达以及它执行的内容是不同的.

第一个版本执行匿名函数,该函数位于window对象的上下文中.第二个版本执行匿名函数,但这是在一个新的空对象的上下文中.

最后,他们都返回另一个对象(你的单身人士).这只是执行环境的一个细微差别.

为了测试这个,但是警告(这个);就在声明privateVar变量之前.

@Tom Squires:这不一定是真的,并且很难不宣布你的变量.一个带有“use strict”的脚本;指令确实导致JS引擎抱怨(假设引擎支持“use strict”;

猜你在找的JavaScript相关文章