前端js如何生成一個對象,並轉化為json字符串


一,直接上代碼

<script src="../../Content/jquery-2.0.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
    function aa() {
        var json = [];
        var j = {};
        for (var i = 1; i < 5; i++) {
            j.name = "name";
            j.cars = "22";
            j.obj = "457";
            json.push(j);
        }
        var a = JSON.stringify(json);
        alert(a);
    }
</script>
<div>
    <input type="button" value="提交" onclick="aa()" />
</div>

 綜上:理解是定一個數組和一個對象,將對象插入到數組,然后裝換成JSON字符串的邏輯

二,以上代碼會出現一個問題:當你插入i的值是發現輸出的一直都是最后一個對象的JSON

 <script type="text/javascript">
        window.onload = function () {
            var json = [];
            var j = {};
            for (var i = 1; i < 5; i++) {
                j.name = "name";
                j.cars = "22";
                j.obj = i;
                json.push(j);
            }
            var a = JSON.stringify(json);
            alert(a);
        }
    </script>

經過JS調試發現,寫成這樣才是我們想要的結果:(將J的定義寫在遍歷里面)

    <script type="text/javascript">
        window.onload = function () {
            var json = [];
            for (var i = 1; i < 5; i++) {
                var j = {};
                j.name = "name";
                j.cars = "22";
                j.obj = i;
                json.push(j);
            }
            var a = JSON.stringify(json);
            alert(a);
        }
    </script>

 原因: 在JS定義出來的變量是Object對象,分配的是一塊內存空間,你將這個對象插入到一個數組中,也是在數組內開辟一個空間指向這塊內存,你在遍歷是數組的容量是一直增大,但是都是指向與同一塊內存對象,所以他們的值是一樣的,而且是這個對象最后修改的那個值,所以最后數組的值一樣,將對象在循環里面定義,則是我們想要的結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM