我想调用AddHour (first, second).
我实现了没有参数的调用Now()
方法。虽然AddHour有2个参数,但我无法访问AddHour方法。试试给我以下错误:“附加信息:首先未定义”
如何在json对象中调用Addhour()
?
var f = {
Now: Now(),
Today: Today(),
Yesterday: Yesterday(),
Tomorrow: Tomorrow(),
ThisMonth: ThisMonth(),
ThisYear: ThisYear(),
AddHour : AddHour(first,second),
DateDiff: function (first, second) {
return first+second;
}
}
function AddHour (first, second) {
return first+second;
}
function Now() {
var date = new XDate();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
return ConvertToLONG(year, month, day, hour, minute, second);
}
答案 0 :(得分:2)
在对象中使用AddHour时,不需要指定参数。您可以这样声明:
ThisYear: ThisYear(),
AddHour : AddHour,
DateDiff: function (first, second) {
return first+second;
}
你在代码中传递了方法的参数,Javascript试图找到这些参数,因此错误(你试图不将函数赋值给属性,而是用两个参数赋予CALL函数 - (first, second)
并分配其结果财产,在你的情况下 - 是不正确的。)
附加说明 - 这里没有JSON,如其他人的评论中所述。您正在创建Javascript对象 - 您的f
就是这个对象。
答案 1 :(得分:0)
你有两个问题:
首先,您对JSON感到困惑:Javascript对象不是JSON,JSON是一种以类似JS的格式存储信息的方法。所以你拥有的只是一个JS对象。
第二个问题:如果要将函数指定为属性,则正确的方法如下:
function myFn(first,second) {
return first+second;
}
var objecWithFunction= {
myAttr: myFn
}
因为如果你输入参数,你将获得执行该函数的结果:
var objectWithResult = {
myAttr: myFn(1,2); //myAttr will store the number 3, not the function
}
console.log(objecWithFunction.myAttr(1,2)); //it will print 3
console.log(objectWithResult.myAttr ); //it will print 3
您的代码失败,因为解释器无法找到变量first
和second
以执行该功能,但我认为这不是您的意思。