我有以下Javascript代码
add_num = {
f: function(html, num) {
alert(this.page);
},
page : function() {
return parseInt(this.gup('page'));
},
gup : function(name) {
name = name.replace(/[\[]/,'\\\[').replace(/[\]]/,'\\\]');
var regex = new RegExp('[\\?&]'+name+'=([^&#]*)');
var results = regex.exec(window.location.href);
if(results == null)
return '';
else
return results[1];
}
}
但是当我调用add_num.f()时,我从alert()获得的是实际的页面代码。也就是说,它返回
function() {
return parseInt(this.gup('page'));
}
我期待一个数值,而不是任何代码。
答案 0 :(得分:8)
那是因为你需要调用page
函数:
alert(this.page());
而不是
alert(this.page);
答案 1 :(得分:5)
原因是文字不是函数,因此没有(可见)构造函数,所以'this'将引用调用对象。
当然,如果您使用将此文字指定给函数的原型,则不是这样,但我猜这不是这种情况。
此外,Darin是正确的,你正在返回该函数,而不是执行它。
明确地引用该对象,例如add_num.page()。
add_num = {
f: function(html, num) {
alert(add_num.page());
},
page : function() {
return parseInt(add_num.gup('page'));
},
gup : function(name) {
name = name.replace(/[\[]/,'\\\[').replace(/[\]]/,'\\\]');
var regex = new RegExp('[\\?&]'+name+'=([^&#]*)');
var results = regex.exec(window.location.href);
if(results == null)
return '';
else
return results[1];
}
}
答案 2 :(得分:4)
您正在警告函数本身,而不是执行它的结果。 你应该这样做:
alert(this.page());