Javascript 使用单例模式在整个应用程序中维护阵列状态

Javascript 使用单例模式在整个应用程序中维护阵列状态,javascript,Javascript,我的要求是在每次加载窗口时将对象推送到数组中,但当我打开下一个窗口时,数组的状态不可见 function MySingletonClass(arg) { this.arr = []; if ( arguments.callee._singletonInstance ) return arguments.callee._singletonInstance; arguments.callee._singletonInstance = this; this.Fo

我的要求是在每次加载窗口时将对象推送到数组中,但当我打开下一个窗口时,数组的状态不可见

function MySingletonClass(arg) {
  this.arr = [];    
  if ( arguments.callee._singletonInstance )
    return arguments.callee._singletonInstance;
  arguments.callee._singletonInstance = this;    
  this.Foo = function() {
      this.arr.push(arg);
    // ...
  }
}

var a = new MySingletonClass()
var b = MySingletonClass()
Print( a === b ); // prints: true
//它被推了


当我打开新窗口时,数组的长度再次变为零

要在应用程序中持久保存数据,必须有一个数据库。Javascript无法做到这一点,因为它只是客户端,主要用于呈现用户界面。

要在应用程序中持久保存数据,必须有一个数据库。Javascript无法做到这一点,因为它只是客户端,主要用于呈现用户界面。

单独使用Javascript无法做到这一点。JavaScript只是一种语言。它没有任何与应用程序、页面甚至浏览器的直接链接。JavaScript可以在许多其他情况下使用(也可以使用),例如在服务器端应用程序中以及作为桌面应用程序的插件语言

当然,当浏览器中使用JavaScript时,确实需要一种与页面内容“交流”的方式。为此,您可以使用(DOM)API,该API由每个支持JavaScript的浏览器实现。要与浏览器本身通信,可以使用和其他全局对象。它们有时被称为浏览器对象模型(尽管它不是官方API)

现在我们知道了;是否有API允许我们维护页面之间的状态?是的,有。事实上,有几种:

  • HTML5的
以本例为例,使用
localStorage

//第1页:
setItem(“message”,“helloworld!”);
//第2页:
var message=localStorage.getItem(“消息”);
如果(消息!==null){
警报(信息);
}
简单,对吗?不幸的是,localStorage只接受键/值对。要保存数组,首先需要将其转换为字符串。您可以这样做,例如,使用JSON:

//在两个页面上:
var arr=localStorage.getItem(“arr”);
如果(arr==null){
arr=[];
}否则{
arr=JSON.parse(arr);
}
函数saveArr(){
setItem(“arr”,JSON.stringify(arr));
}
//第1页:
console.log(arr);//[]
arr.push(“你好”);
arr.push(“世界!”);
saveArr();
//第2页:
console.log(arr);//[“你好”,“世界!”]

但是请记住,
localStorage
JSON
都是相当新的,所以只有现代浏览器支持它们。请看一看。

单靠JavaScript是无法做到这一点的。JavaScript只是一种语言。它没有任何与应用程序、页面甚至浏览器的直接链接。JavaScript可以在许多其他情况下使用(也可以使用),例如在服务器端应用程序中以及作为桌面应用程序的插件语言

当然,当浏览器中使用JavaScript时,确实需要一种与页面内容“交流”的方式。为此,您可以使用(DOM)API,该API由每个支持JavaScript的浏览器实现。要与浏览器本身通信,可以使用和其他全局对象。它们有时被称为浏览器对象模型(尽管它不是官方API)

现在我们知道了;是否有API允许我们维护页面之间的状态?是的,有。事实上,有几种:

  • HTML5的
以本例为例,使用
localStorage

//第1页:
setItem(“message”,“helloworld!”);
//第2页:
var message=localStorage.getItem(“消息”);
如果(消息!==null){
警报(信息);
}
简单,对吗?不幸的是,localStorage只接受键/值对。要保存数组,首先需要将其转换为字符串。您可以这样做,例如,使用JSON:

//在两个页面上:
var arr=localStorage.getItem(“arr”);
如果(arr==null){
arr=[];
}否则{
arr=JSON.parse(arr);
}
函数saveArr(){
setItem(“arr”,JSON.stringify(arr));
}
//第1页:
console.log(arr);//[]
arr.push(“你好”);
arr.push(“世界!”);
saveArr();
//第2页:
console.log(arr);//[“你好”,“世界!”]
但是请记住,
localStorage
JSON
都是相当新的,所以只有现代浏览器支持它们。看看,看看

var arr = [];
arr.push("something");