var Page = {
data: null,
Load: function () {
this.Populate;
},
Populate: function () {
}
};
$(document).ready(Page.Load);
Page.Load
中引用ready()
作为函数,例如.ready(Page.Load())
this.Populate()
,我只是this.Populate()
不是函数。答案 0 :(得分:4)
为什么我不能将Page.Load引用为ready()中的函数,例如.ready(Page.Load())
坚持()
结束调用一个函数。您想要传递函数本身,而不是它的返回值。 (ready
函数将调用您稍后传递给它的内容。
为什么我不能从Load函数调用this.Populate(),我只是得到这个.Populate()不是函数
有两个原因。
首先,你永远不会实际调用Populate函数。改为:
this.Populate()
第二:因为你从对象中分离了Load函数,所以this
在被调用时不是Page
。
请改为:
$(document).ready(function () { Page.Load() });
答案 1 :(得分:3)
函数调用的格式应为function_name()
(括号!)。函数引用应为function_name
(不带括号)。这段代码可以使用:
var Page = {
data: null,
Load: function () {
Page.Populate(); //PARENTHESES
},
Populate: function () {
}
};
$(document).ready(Page.Load);//NO PARENTHESES
$(document).ready
是一个函数,它希望函数为参数1.如果使用Page.Load()
,则执行函数Page.Load()
并传递返回值(undefined
,在这种情况下)到$(document).ready
。
答案 2 :(得分:3)
您的代码中存在两个问题。
首先,正如Rob所说,你实际上并没有在Populate()
中调用Load()
方法。你需要添加括号来做到这一点。
其次,this
中的Populate()
关键字未引用Page
对象。您可以使用$.proxy()将Page
对象设置为方法调用的上下文:
var Page = {
data: null,
Load: function() {
this.Populate();
},
Populate: function() {
}
};
$(document).ready($.proxy(Page.Load, Page));
答案 3 :(得分:2)
你可以通过将对象包装在这样的函数中来实现它:
var Page = (function () {
var that = {
data: null,
Load: function () {
that.Populate();
},
Populate: function () {
alert("Test");
}
};
return that;
})(); // Execute the function immediately to return 'that'
$(document).ready(Page.Load);
这样你可以在方法之间调用,因为你有对象的引用。
答案 4 :(得分:0)
您正在调用Page.Load函数。但更具体地说,你正在调用Page.Load设置的函数(因为.ready()的参数只是一个简单的值);你不在页面上调用,所以'this'不会重置为指向Page对象。
这会更好用:
$(document).ready(function() {
Page.Load();
});