我正在尝试使我的对象的方法起作用,但是缺少一些东西-可能非常明显!
我找到了以下主题:如何在 JavaScript 中为自定义对象创建方法?但无论我尝试什么,我的方法都只是将函数代码作为文字字符串返回。
我还尝试查看对象文字JavaScript - 对象文字的优点,但作为 JS 的新手,我看不到如何将初始参数传递给对象!
所以,语境……
我正在创建一个基于日期、时间和位置进行各种天文计算的网页。我有一组年、月、日、小时、分钟、秒、时区、纬度和经度的输入。我将其用作 JS 的学习经验,以及理解计算!
我正在创建一个全局日期对象来保存日期元素,并且我想创建一个计算儒略日数的方法。
我用代码创建了一个小提琴:http: //jsfiddle.net/AstroDaz/gKQ5f/5/
function DATE_OBJ (iyear,imonth,iday,idirty,ijd) {
this.Year = iyear;
this.Month = imonth;
this.Day = iday;
this.Dirty = idirty;
this.JD = DateJD;
}
function DateJD() {
var Y = objDate.Year;
var M = objDate.Month;
var D = objDate.Day;
if (M < 3) {
--Y;
M +=12;
}
if (objDate.Year > 1582) {
var A = parseInt(Y / 100, 10);
var B = 2 - A + parseInt(A / 4,10);
} else {
if (objDate.Year = 1582 && M > 10) {
var A = parseInt(Y / 100, 10);
var B = 2 - A + parseInt(A / 4,10);
} else {
if (objDate.Year = 1582 && M = 10 && D >=15) {
var A = parseInt(Y / 100, 10);
var B = 2 - A + parseInt(A / 4,10);
} else var B = 0;
}
}
if (Y < 0) var C = parseInt((365.25 * Y) - 0.75,10);
else var C = parseInt(365.25 * Y,10);
var E = parseInt(30.6001 * (M + 1),10);
this.JD = B + C + E + objDate.Day + 1720994.5;
}
var d = new Date();
var objDate = new DATE_OBJ (d.getFullYear(),d.getMonth(),d.getDate(),false,0);
document.write(objDate.JD);
正如您将看到的,结果是对象的 JD 属性被分配为方法代码的文字字符串,而不是计算的结果!
顺便说一句,如果我将 DateJD 创建为直接函数并调用它,它会起作用并返回正确的结果。
谢谢你的帮助!达兹