首页 >web前端 >js教程 >如何在 JavaScript 中正确实现静态类或单例模式?

如何在 JavaScript 中正确实现静态类或单例模式?

Susan Sarandon
Susan Sarandon原创
2024-12-19 18:45:14957浏览

How Can I Properly Implement a Static Class or Singleton Pattern in JavaScript?

理解 Javascript 静态函数表达式:GameData 案例

在 Javascript 中,使用 new 关键字的函数表达式在相同意义上不是静态的作为他们的 C# 对应物。这种方法不是创建真正的静态类,而是泄漏构造函数属性并生成可能不符合预期的原型对象。

深入了解 GameData 示例

提供的示例 gameData 演示了使用带有 new 关键字的函数表达式创建“类”的单个实例。但是,包含构造函数属性允许实例化其他对象,从而使“类”非静态。

替代单例方法

实现真正的Javascript 中的单例模式,请考虑以下方法:

  • Object文字: 创建一个缺少构造函数和原型的简单对象文字。
  • 揭示模块模式: 使用立即调用函数表达式 (IIFE) 来建立闭包范围变量并返回所需的对象。
  • 构造函数(“类”):定义一个构造函数,在调用时始终返回相同的单例对象。

单例模式实现

下面的代码使用构造函数说明了单例模式:

function GameData() {
    if (this.constructor.singleton)
        return this.constructor.singleton;
    else
        this.constructor.singleton = this;

    // Private and public members initialization
}
GameData.prototype.storageAvailable = function () {
    // Availability check logic
};

var gameData = new GameData();
var gameData2 = new GameData();
console.log(gameData === gameData2 === GameData.singleton); // Outputs true

此方法可确保后续实例化尝试始终返回相同的 GameData 实例,从而建立真正的单例行为。

以上是如何在 JavaScript 中正确实现静态类或单例模式?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn