我认为最简单的方法是声明一个简单的对象文字:
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.jsconst somePrivateState = []function privateFn () { // ...}export default { method1() { // ... }, method2() { // ... }}然后,您可以简单地导入单例对象以使用它:
import myInstance from './my-singleton.js'// ...



