2015-06-09 87 views
-1

我想調用AddHour (first, second).我實現了不帶參數的調用Now()方法。雖然AddHour有2個參數,但我無法訪問AddHour方法。嘗試給我以下錯誤返回:「其他信息:第一個沒有定義」 我怎麼能在我的json對象內調用Addhour()如何使用json中的參數調用js方法?


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對象文字是不相關的。 '第一個'沒有被定義,因爲你沒有定義它,我看不到任何跡象,甚至試圖在任何地方定義它。你期望它有什麼價值? – 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 

您的代碼失敗,因爲解釋器無法找到變量firstsecond以執行該功能,但我認爲這不是您的意思。

相關問題