У меня есть следующий (упрощенный) код:
var Foo = (function () {
var data = {},
settings = {
// default settings here
};
function bar(callback) { // bar is an asynchronous function
var result = null;
// fiddle around until you get a result
if (callback) {
callback(result);
}
}
return {
init: function (options, callback) {
var kallback = callback;
$.extend(settings, options);
bar(function () {
if (kallback) {
kallback(WHAT_GOES_HERE);
}
});
},
debug: function () {
return {
settings: settings,
data: data
};
},
set: function (k, v) {
settings[k] = v;
},
get: function (k) {
return settings[k];
}
};
}());
Код выше находится в файле js, затем в нижнем колонтитуле рассматриваемой страницы:
<script type="text/javascript">
Foo.init({ option1: "value", option2: "value" }, function (obj) {
console.log("The object was ", obj);
});
</script>
В основномвот что я хочу сделать:
- Создать объект (с набором необязательных параметров, но не важно для этого вопроса)
- На этапе созданияобъект, пусть он вызывает асинхронную функцию
- Когда асинхронная функция выполнена, я должен иметь возможность вызвать обратный вызов, а аргументом для обратного вызова должен быть инициализированный объект
Я думал, что this
будет работать для WHAT_GOES_HERE
и выше, но, по крайней мере, когда я его протестировал, выясняется, что this
- это объект DOM Window.
Прежде всего, яправильно построить этот объект?Или есть лучший способ создать его?
Во-вторых, если я все делаю правильно, что должно идти в WHAT_GOES_HERE
, чтобы при запуске console.log("The object was ", foo);
значение для obj
было созданоFoo
объект?