JSON.stringify() が魔法のように URL によってフェッチされた JSON のみを文字列化し、完全なコレクション オブジェクトの他のバックボーン固有の部分を気にしない方法を誰かが説明できますか?
この非常に印象的な機能を説明する基本的な実装および/または設計パターンに興味があります。stringify 機能を取得するには json2.js を使用する必要があったため、バックボーンが stringify をオーバーライドまたは装飾しているとは思いません。
コレクションを JS OBJECT コードに直接渡すと、コードはコレクション オブジェクトのモデル キーやその他のバックボーン固有の部分を「認識」しますが、その文字列化されたオブジェクトに対して JSON.stringify THEN jquery.parseJSON を実行すると、私のコードはURL によって返された JSON のみを「認識」します。
コード:
enter code here
$(function () {
    var Person = Backbone.Model.extend({
        initialize: function () {
            // alert("Model Init");
        }
    }),
    PersonList = Backbone.Collection.extend({
        model: Person,
        url: '/Tfount_Email/Email/SOAInbox',
        initialize: function () {
            // alert("Collections Init");
        }
    }),
    personlist = new PersonList();
    personlist.fetch({
        error: function () {
            alert("Error fetching data");
        },
        success: function () {
            // alert("no error");
        }
    }).complete(function () {
    // first call to makeTable w collection obj, we see MORE than just the JSON returned by URL
        makeTable(personlist);      
    // stringify then parse, we see only JSON returned by URL
        jsonString = JSON.stringify(personlist);
        var plistJSON = jQuery.parseJSON(jsonString);
        makeTable(plistJSON);
    });
});
function makeTable(obj) {
    var type = typeof obj
    if (type == "object") {
        for (var key in obj) {
            alert("key: " + key)
            makeTable(obj[key])
        }
    } else {
        alert(obj)
    }
}