這是使用jQuery的each
http://api.jquery.com/jQuery.each/來做迭代。這裏是你的dump
function
會發生什麼:
function dump(obj) {
// If 'obj' is falsy then make 'obj' a new Object
obj = obj || {};
// Create a new Array
var result = [];
// Loop over each property in 'obj' and add
// "key":"val" String to the 'result' Array,
$.each(obj, function (key, value) { result.push('"' + key + '":"' + value + '"'); });
// Join the Array using "," as the delimiter and wrap
// this with { ... }. Example of arr.join():
// var arr = [1, 2, 3];
// console.log(arr.join(".")); // "1.2.3"
// console.log(arr.join("|")); // "1|2|3"
return '{' + result.join(',') + '}';
}
編輯 如果你需要獲得一個任意Object
的鍵(一個或多個),可以使用:
function getKeys(obj) {
var keys = [],
i;
for (var i in obj) {
if (obj.hasOwnProperty(i)) {
keys.push(i);
}
}
return keys;
}
var keys = getKeys({key: "value"}); // ["key"]
這裏有一個working example。
你也可以看看Underscore.js的_.keys()。
只是FYI,這段代碼幾乎只是重新創建'JSON.stringify'。 – 2012-02-08 17:00:11
您的函數的問題是Number和Boolean值將被包裝在引號中,這些引號將其類型有效地更改爲String。我推薦內置的'JSON.stringify()'函數。 – 2012-02-08 17:04:32