有人能解释一下 JSON.stringify() 如何神奇地只将 JSON 字符串化为通过 URL 获取的,并且不打扰完整集合对象的其他特定于主干的部分吗?
我对解释这种令人印象深刻的功能的底层实现和/或设计模式感到好奇。我不得不使用 json2.js 来获得 stringify 功能,所以我认为骨干网不会覆盖或装饰 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)
}
}