Большинству популярных платформ JavaScript включали функции утилиты JSON. Например, jQuery имеет функцию, которая непосредственно называет URL и загружает результат JSON как объект: http://docs.jquery.com/Getjson
Однако можно получить синтаксический анализатор JSON с открытым исходным кодом и stringifier от json веб-сайт :
https://github.com/douglascrockford/JSON-js
Затем просто включайте код и используйте JSON.stringify () метод на Вашем массиве.
Возможно, лучший способ - использовать перечисление с одним экземпляром. Это имеет дополнительное преимущество в виде сериализации и гарантии одноэлементности против сериализации и отражения, чего не делает никакая «простая» реализация Singleton (частный? У меня есть размышления, я насмехаюсь над вашими модификаторами доступа!). Это также очень просто реализовать:
public enum Singleton {
INSTANCE;
// fields and methods go here
}
The best way to make a singleton? Use an enum.
public enum Singleton {
INSTANCE;
public void foo(){ ... }
}
// Usage:
Singleton.INSTANCE.foo();
You get lots of help from the VM not only to avoid double instantiation, but it also helps you avoid deserialization corruption.
public class Singleton {
public static final Singleton INSTANCE = new Singleton();
private Singleton() { ... }
}
Использование статической переменной экземпляра предпочтительнее внутреннего класса «Держатель». Если хотите, вы также можете сделать статический член закрытым и предоставить метод для доступа к нему, но все, что для этого нужно, - это добавить еще один вызов метода в стек.
What about lazy instanciation: getInstance() returns the singleton or create it if it is the first call.
public class MySingleton
{
private static MySingleton instance;
private MySingleton()
{
// construct object . . .
}
// For lazy initialization
public static synchronized MySingleton getInstance()
{
if (instance==null)
{
instance = new MySingleton();
}
return instance;
}
// Remainder of class definition . . .
}
Singletons are not threadsafe per default. The common way to create a singleton is to have a factory method that handles creation of the one instance. That way you can control instance creation.
If you care about concurrency, you won't be using shared global state.