0
我想序列化替換函數內部的非枚舉屬性。無法更改JSON.stringify replacer函數內部的枚舉屬性?
這裏有什麼問題?
請幫忙。
var obj = {x:1,y:2};
Object.defineProperty(obj,"x",{enumerable:false});
var s = JSON.stringify(obj,function(key,value){
if(this.propertyIsEnumerable(key) == false){
Object.defineProperty(this,key,{enumerable:true});
}
return value;});
//"{"y":2}"
// x remains not enumerable
我猜在執行replacecer函數之前會過濾掉非枚舉屬性。不確定。
如果'.stringify'過濾掉不可枚舉屬性,那麼是的,它們在回調中不可用 - 它已經完成了該過濾器。你爲什麼不在字符串化之前循環對象的所有鍵,'for(key in obj)',並且如果內部的邏輯不是已經存在的話,可以使用你的邏輯來設置它爲可枚舉的。然後,只需簡單地調用'JSON.stringify(obj);' – Ian
好,因爲在循環中不包括非枚舉屬性:) –
啊,是的,那麼這將是有道理的!那麼你想在序列化中包含哪些不被設置爲'enumerable'的東西呢? – Ian