Почему JSON.stringify не включает массив в выходной объект JSON?
Если я открою это в браузере:
<!DOCTYPE html>
<html>
<head>
<title>Testing stringify</title>
</head>
<body>
<script>
var obj = {};
var arr = [];
arr.push(1,2);
alert(arr); // 1,2
Object.defineProperty(obj, "name", {
value:arr
});
alert(obj.name); // 1,2
alert(JSON.stringify(obj)); // {}
</script>
</body>
</html>
он выведет то, что я написал в комментариях. Я не понимаю почему arr
не включен в выходную JSON-строку. Нужно ли определять некоторые другие свойства объекта дескриптора в defineProperty()
? Что я делаю неправильно?
1 ответ
Решение
Сделанное вами имущество не перечисляемо. Задавать enumerable: true
в дескрипторе, и это будет работать.
var obj = {};
var arr = [];
arr.push(1, 2);
console.log(arr); // 1,2
Object.defineProperty(obj, "name", {
value: arr,
enumerable: true,
});
console.log(obj.name); // 1,2
console.log(JSON.stringify(obj)); // {}