有人可以解释JSON.stringify()如何神奇地将JSON字符串化为URL提取并且不打扰完整集合对象的其他骨干特定部分吗?
我很好奇底层实现和/或设计模式可以解释这个非常令人印象深刻的功能.我不得不使用json2.js来获得stringify功能,所以我认为骨干不会覆盖或装饰stringify.
我发现如果我将一个集合直接传递给JS OBJECT代码,代码"看到"模型键和集合对象的其他主干特定部分,而如果我对该字符串化对象执行JSON.stringify那么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)
}
}
Run Code Online (Sandbox Code Playgroud)
Der*_*ley 11
这是...的预期和设计行为JSON.Stringify
.来自Douglas Crockford的JSON2.js文件:
找到对象值时,如果对象包含toJSON方法,则将调用其toJSON方法并将结果进行字符串化.
https://github.com/douglascrockford/JSON-js/blob/master/json2.js#L38-39
当您在Backbone.Collection上调用JSON.stringify时,它会调用该集合的toJSON
方法,如此注释所述.
归档时间: |
|
查看次数: |
5794 次 |
最近记录: |