replacer 함수 안에 열거되지 않는 속성을 serialize하려고합니다.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
I 비 열거 특성을 추측은 대체물 함수의 실행 전에 여과되고있다. 확실하지 않다.
을'.stringify' 비 열거 필터링하는 경우 그런 다음 예, 그들은 콜백에서 사용할 수 없습니다 - 그것은 이미 그 필터를 완료했습니다. 문자열 화하기 전에 객체의 모든 키를 반복하여 'for (key in obj)'하고, 내부 논리를 사용하여 열거 형으로 설정하십시오. 그런 다음 단순히 JSON.stringify (obj);를 호출하십시오. – Ian
잘 들어, 루프에 대해 열거 할 수없는 속성은 포함되지 않습니다. –
아, 맞아요. 그렇다면 직렬화에 포함시키려는 '열거 형'으로 설정되지 않은 것은 무엇입니까? – Ian