当前位置: 首页 > 面试题库 >

在JavaScript中实现单例的最简单/最简洁的方法?

苏宏峻
2023-03-14
问题内容

在JavaScript中实现单例模式的最简单/最干净的方法是什么?


问题答案:

我认为最简单的方法是声明一个简单的对象文字:

var myInstance = {
  method1: function () {
    // ...
  },
  method2: function () {
    // ...
  }
};

如果您希望单例实例上有私人成员,则可以执行以下操作:

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

  function privateMethod () {
    // ...
  }

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

这就是所谓的模块模式,它基本上可以让你来封装对象私有成员,通过采取利用的优势关闭。

更新: 我想补充一点,如果要防止修改单例对象,可以使用ES5 方法冻结它Object.freeze

这将使对象不可变,从而防止对其结构和值进行任何修改。

另外,我想提到的是,如果您使用的是ES6,则可以很容易地使用ES模块表示一个单例,甚至可以通过在 模块作用域中声明变量来保持私有状态:

// my-singleton.js
const somePrivateState = []

function privateFn () {
  // ...
}

export default {
  method1() {
    // ...
  },
  method2() {
    // ...
  }
}

然后,您可以简单地导入单例对象以使用它:

import myInstance from './my-singleton.js'
// ...


 类似资料:
  • 问题内容: 使用Javascript最简单的SOAP示例是什么? 为了尽可能有用,答案应该是: 具有功能性(换句话说,实际上有效) 发送至少一个可以在代码中其他位置设置的参数 处理至少一个可以在代码的其他位置读取的结果值 使用大多数现代浏览器版本 在不使用外部库的情况下尽可能清晰明了 问题答案: 这是我可以创建的最简单的JavaScript SOAP客户端。

  • 问题内容: 例如,我目前正在这样做: 你能打败这个吗? 问题答案:

  • 问题内容: 我有一个使用javascript进行游戏的想法(我将使用EaselJS进行开发),我将不得不检测按键。在互联网上四处浏览后,我看到了很多建议(使用window.onkeypress,使用jQuery等),但是几乎每个选项都有一个反对意见。你们有什么建议?使用jQuery听起来很容易,但实际上我没有使用该库的经验(而且我也不是JavaScript的资深人士),所以我宁愿避免使用它。如果j

  • 本文向大家介绍javascript实现继承的简单实例,包括了javascript实现继承的简单实例的使用技巧和注意事项,需要的朋友参考一下 作为一门面向对象的语言,那么继承自然就是一大特征,下面是一段非常简单代码实例,它演示了实现继承的基本原理,有兴趣的或者恰好要学习此方面的朋友可以参阅一下,希望能够给大家来帮组。 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 本文向大家介绍javascript实现的闭包简单实例,包括了javascript实现的闭包简单实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript实现的闭包。分享给大家供大家参考。具体如下: 希望本文所述对大家的javascript程序设计有所帮助。

  • 问题内容: 在Python中做等效的最简单方法是什么? 问题答案: