【问题标题】:java script singleton behavior from session to session从会话到会话的 javascript 单例行为
【发布时间】:2018-01-15 22:45:28
【问题描述】:

我想在我的脚本中实现 java 脚本 Singleton。 Singleton 的一些变量对所有用户都有相同的值,但其他变量在用户之间会非常不同。

我想更好地理解——Singleton 是为所有正在运行的会话创建一个实例,还是每个会话都将管理她自己的对象。 变量之一将是记录器/计数器 - 所有用户/会话是否共享其值?

我的对象看起来像这样:

var VideoLog = (function () {
	
	/** logger vars **/
	this.logger = 0; 
	this.somevar = null;
  this.somefunction = function () {
    	come code..
    }
       
    })();

【问题讨论】:

  • 仅使用 Javascript,您无法在用户之间共享任何内容。您所描述的是客户端变量(Javascript 变量,在相关的情况下实现为单例)和应用程序变量(在服务器上实现并在所有客户端之间共享)。
  • “所有用户”只能共享来自服务器的值,除非您实施一些点对点网络 - 您可能仍然需要服务器
  • Javascript 在您的 PC 上的浏览​​器中运行。它甚至不与提供网站的服务器本机共享任何内容。我认为您已经决定了一个问题的解决方案,现在您想知道如何使该解决方案发挥作用,但这听起来像是错误的解决方案。如果您想要在所有用户之间共享的东西,那么它必须存在于网络服务器上 - 为您的网站提供服务的应用程序。所以你在看 PHP、ASP、ASP.Net 等。
  • 好的,那么只需在您的脚本中使用 var,它们就不会在其他任何地方共享。

标签: javascript session object singleton


【解决方案1】:

单例模式专门设计用于将对象的实例数限制为一个。这种模式适用于系统范围的脚本。

我建议使用构造函数模式。通过这种方式,您可以创建一个父对象,该对象定义跨对象的共享字段。然后,从可以拥有自己独特字段的父对象创建其他对象。

function Cat( breed, age ) {

  this.breed = breed;
  this.age = age;
}

var tabby = new Cat( "tibs", 3 );
var blue = new Cat( "Thomas", 6 );

tabby.color = 'orange';
blue.color = 'grey';

【讨论】:

    猜你喜欢
    • 2010-11-29
    • 2015-07-23
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 2017-07-08
    相关资源
    最近更新 更多