我有以下(尽管)小的'揭示模块模式'实现代码:
(function (CkSpace, $, undefined) {
CkSpace.GetLoanValues = function () {
var url = "/Home/UpdateAPR";
$.get(url, { Amount: $("#slider").slider("value"), Length: $("#slider2").slider("value") }, function (data) {
$("#LoanAmount").html("£"+data.LoanAdvance);
$("#TotalToRepay").html("£" + data.LoanGrossRepayable);
$("#Representative").html(data.LoanAPR);
$("#MonthlyRepayTerm").html(data.LoanTerm);
$("#MonthlyFee").html("£" + data.LoanInstalment);
});
}
} (window.CkSpace = window.CkSpace || {}, jQuery));
我的印象是,通过使用window.CkSpace
,我可以全局访问CkSpace作为其任何公共成员的根命名空间。但是,当我将此与$(document).ready()
结合使用时,除非我在CkSpace
内声明,否则我无法访问$(document).ready()
命名空间。
有人可以向我解释这里的范围界定问题,是否有任何方法可以避免在我的$(document).ready()
函数中声明它?
编辑:我看起来有点健忘,在$(document).ready()
答案 0 :(得分:4)
钟,
如果我理解了您的疑虑,此代码段可能会对您有所帮助。
window.CkSpace = {};
(function (CkSpace) {
CkSpace.getLoanValues = function () {
alert('I provide loans');
}
} (window.CkSpace || {}, jQuery));
window.CkSpace.getLoanValues();
小提琴:http://jsfiddle.net/GDcVt/
如果不能,请将其缩小至最小,因为内部代码与范围无关。在将它传递给函数之前,我不确定objcet是否确实存在于窗口范围内。