0
對象
我有以下的(簡化的)代碼:init函數和在Javascript
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>
基本上,這裏是我希望能夠做到:
- 創建一個對象(與一組可選則params的,但這個問題並不重要)
- 在對象的創建階段,有它調用異步函數
- 當異步函數完成後,我應該能夠觸發回調,而回調的參數應該是intialized對象
我認爲this
將工作於上述WHAT_GOES_HERE
,但事實證明,至少當我測試它時,this
是DOM窗口對象。
首先,我正確構造這個對象?或者有更好的方法來創建它?
其次,假設我這樣做的權利,我們應該在WHAT_GOES_HERE
去,這樣,當console.log("The object was ", foo);
運行,爲obj
值是創建Foo
對象?
函數是匿名函數並不重要,只能通過函數的定義來說明這個函數永遠不會被認爲是某種東西。它僅在通話期間解決,僅適用於該通話。 – Esailija
這就是爲什麼我說這樣稱呼_ – Daff
對不起,我錯過了; o只是閱讀「在一個匿名函數」。祝你有個好的一天。 – Esailija