1 回答

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
var book = {
title: "Professional Javascript",
authors: [
"Nicholas C. zakas",
"Mike"
],
edition: 3,
year: 2011,
};
var jsonText = JSON.stringify(book, function(key , value){
console.log(key+ ' :' + value)
return value
});
console.log(jsonText);
你會(huì)發(fā)現(xiàn),得到的結(jié)果是
:[object Object]
title :Professional Javascript
authors :Nicholas C. zakas,Mike
0 :Nicholas C. zakas
1 :Mike
edition :3
year :2011
{"title":"Professional Javascript","authors":["Nicholas C. zakas","Mike"],"edition":3,"year":2011}
而第一個(gè)key為空的那個(gè)value,是個(gè)object,打印出來(lái),發(fā)現(xiàn)他正好就是book本身,由于你的filter函數(shù)直接return 222
會(huì)導(dǎo)致直接將book的值設(shè)置為222,導(dǎo)致switch全部失效。
var book = {
title: "Professional Javascript",
authors: [
"Nicholas C. zakas",
"Mike"
],
edition: 3,
year: 2011,
};
var jsonText = JSON.stringify(book, function(key , value){
if(key=' ')
console.log(value)
return value
});
console.log(jsonText);
得到的結(jié)果是
{ title: 'Professional Javascript',
authors: [ 'Nicholas C. zakas', 'Mike' ],
edition: 3,
year: 2011 }
Professional Javascript
[ 'Nicholas C. zakas', 'Mike' ]
Nicholas C. zakas
Mike
3
2011
{"title":"Professional Javascript","authors":["Nicholas C. zakas","Mike"],"edition":3,"year":2011}
不難發(fā)現(xiàn), json.stringfy的第二個(gè)類(lèi)型為函數(shù)的參數(shù),會(huì)把傳進(jìn)來(lái)的參數(shù)本身,構(gòu)造成key: ' ', value: value 形式進(jìn)行過(guò)濾,然后再過(guò)濾屬性,遞歸下去。
添加回答
舉報(bào)