2015-06-09 2 views
-1

Я хочу позвонить AddHour (first, second). Я получил вызов Now() метод без параметров. Хотя у AddHour есть 2 параметра, я не могу получить доступ к методу AddHour. Попытка возвращает мне следующую ошибку: «Дополнительная информация: сначала не определено« Как я могу позвонить Addhour() внутри моего объекта json?Как вызвать метод js с параметрами внутри json?


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); 

} 
+3

Там нет JSON, это просто JavaScript. – Quentin

+2

Тот факт, что у вас есть объектный объект JavaScript, не имеет значения. 'first' не определен, потому что вы его не определяете, я не вижу никаких признаков того, что вы даже пытаетесь определить его где угодно. Какую ценность вы ожидаете от этого? – Quentin

ответ

2

Вам не нужно указывать аргументы при использовании объекта AddHour в объекте. Вы могли бы объявить его как это:

ThisYear: ThisYear(), 
AddHour : AddHour, 
DateDiff: function (first, second) { 
    return first+second; 
} 

Вы прошли аргументы метода в коде и Javascript пытались найти эти аргументы, следовательно, ошибка (вы пытались не назначить функцию собственности, а вызов функции с двумя аргументы - (first, second) и присвойте его результат свойству, которое - в вашем случае - неверно).

Дополнительные примечания - здесь нет JSON, как упоминалось в комментариях других. Вы создаете объект Javascript - ваш объект f.

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 для того, чтобы выполнить функцию, но я думаю, что это не то, что вы имели в виду.

Смежные вопросы