如何使用json中的参数调用js方法?

时间:2015-06-09 08:49:41

标签: javascript json

我想调用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);

}

2 个答案:

答案 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

您的代码失败,因为解释器无法找到变量firstsecond以执行该功能,但我认为这不是您的意思。