为什么JSON.stringify包含输出JSON对象中的数组?

时间:2017-11-21 14:34:57

标签: javascript json stringify

如果我在浏览器中打开它:

<!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 个答案:

答案 0 :(得分:3)

您所制作的财产不可枚举。在描述符中设置enumerable: true,它就可以工作。

&#13;
&#13;
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)); // {}
&#13;
&#13;
&#13;