async function request(...) {
const responce = await fetch(...);
const content = await responce.json();
if (content.status === 'error') {
// обработка ошибок
} else {
if (content.location !== undefined) {
window.location = content.location;
return
}
return content.data;
}
}
Пока не видел такого. Обычно в конструкторе пишут код, который проверяет создан ли уже экземпляр класса (синглтон) и если создан не дают создать новый.Если вы вызвали конструктор, то экземпляр уже создан. Вы не можете вернуть из конструктора другой экземпляр. Поэтому для синглтона методы __construct и __clone объявляют приватными, а экземпляр получают из статического метода.
class Singleton
{
private static Singleton $instance;
private function __construct() {}
private function __clone() {}
public static function instance(): self
{
if (!isset(static::$instance)) {
static::$instance = new static();
}
return static::$instance;
}
}
И неизменная часть кода (например метод, не содержащий переменных) будет хранится в памяти в единственном экземпляреМетод, содержащий переменные, также будет храниться в одном экземпляре. Переменные будут динамически создаваться при вызове метода.
console.log(deepEqual(
{"test":{"name":"Misha","order":{"price":20}}},
{"test":{"order":{"price":20},"name":"Misha"}}
)); // true
console.log(deepEqual(
{"name":"Misha","order":{"price":20}},
{"name":"Misha","order":{"price":1000}}
)); // false
console.log(deepEqual(
{"name":"Misha","order":{"price":20,"count":1,"taxes":{"vat":{"name":"vat","amount":{"uah":10,"usd":0.37}}},"total":{"withoutTaxes":{"uah":20,"usd":0.74},"withTaxes":{"vat":{"uah":30,"usd":1.11}}}}},
{"name":"Misha","order":{"price":20,"count":1,"taxes":{"vat":{"name":"vat","amount":{"uah":10,"usd":0.37}}},"total":{"withoutTaxes":{"uah":20,"usd":575},"withTaxes":{"vat":{"uah":30,"usd":1.11,"eur":null}}}}}
)); // false