Я хочу сделать простой синглтон, используя RequireJS.Singleton in RequireJS
Что-то вроде этого:
// js/modules/singleton.js
define([], function() {
var Singleton = function() {
this.value = 10;
}
return new Singleton();
});
В моем главном входе у меня есть следующий код:
// main.js
require.config({
paths: {
singleton: 'js/modules/singleton'
},
shim: {
}
});
var o1 = require(["singleton"]);
var o2 = require(["singleton"]);
console.log(o1 === o2); // true
console.log(o1.value); // undefined (?!)
console.log(o2.value); // undefined (?!)
o1.value = 20;
console.log(o1.value); // 20
console.log(o2.value); // 20
o2.value = 30;
console.log(o1.value); // 30
console.log(o2.value); // 30
переменные O1 и O2 были правильно указывая на то же одноплодной например (o1 === o2), но почему именно o1.value и o2.value undefined ??
Я бы ожидал, что атрибут «значение» будет равным 10 при этом, так как он был так инициализирован.
Я знаю, что могу сделать это таким образом, но в моем случае это неприемлемо. Я планирую загружать модули полностью динамически, «как раз вовремя», на основе их идентификатора (у меня много Singletones, используемых в том же модуле, и только немногие из них нужны). – Aleks
Я не вижу проблемы прямо сейчас. Единственное отличие - это асинхронное кодирование и синхронизация. Для всего остального вы можете динамически создавать список зависимостей и захватывать синглтоны, используя объект 'arguments'. – Sirko
Хорошо, я думаю, что у меня что-то не так ... Но если это правда, то возвращает модуль просто, если он ранее загружался с использованием асинхронной версии require() ", какова цель этого метода? – Aleks