Javascript方法以字符串形式返回方法代码
Javascript method returns the method code as a string
我正在尝试让我的对象的方法工作,但缺少了一些东西——可能非常明显!!
我发现了以下主题:如何在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创建为一个直接的函数并调用它,它就会工作并返回正确的结果。
谢谢你的帮助!Daz
使用this.JD = DateJD
,您不是在分配返回值,而是在分配一个可调用的函数。因此,您的计算永远不会执行,而只是分配给成员变量。
如果从更改DateJD
的最后一行
this.JD = B + C + E + objDate.Day + 1720994.5;
至
return B + C + E + objDate.Day + 1720994.5;
然后通过呼叫
document.write(objDate.JD());
它将返回一个数字:http://jsfiddle.net/gKQ5f/6/
如果你在你的"构造函数"中执行你的函数,那么就没有现有的objDate
对象可以使用,你会得到类似的东西
未捕获的类型错误:无法读取未定义的属性"Year"
顺便说一句,你可能想改变这些条件:
if (objDate.Year = 1582 && M > 10) {
这将分配objDate。到1582年,而不是检查它是否相等
以objDate.Year == 1582
为例。
- 从Javascript方法返回全局变量
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 修复AngularJS错误:提供程序必须从$get工厂方法返回值
- 从 javascript 中的对象方法返回一个对象
- 为什么我的Mongoose findAll方法返回500错误.
- 角度方法返回未绘制的代码
- 解析查询查找方法返回对象而不是数组
- Jquery Ajax调用没有't点击操作方法/返回整个HTML页面
- ajax方法返回错误时如何打印输出
- Meteor 方法返回客户端和服务器上的不同对象
- 如何将异步方法返回的值发送到javascript中的另一个异步方法
- Javascript getDay方法返回错误的数字
- Coffeescription类中的方法返回函数而不是字符串
- 当使用Q/promises/异步函数时,如何将一个值从一个类方法返回到另一个类
- find()方法返回具有不需要的属性的对象
- 如何在JSF中将toDataURL方法返回的画布内容作为图像存储在磁盘上
- 从请求.js请求方法返回结果
- jQuery的.children()方法返回'undefined'
- Angularjs 控制器在服务方法返回之前从服务中分配变量