我刚刚创建了一个返回JSON.stringify的函数:
JSON.stringify = function (item, replacer, space) {
return JSON.stringify(item, replacer, space);
}
它会导致angularjs上的所有这些错误: click here
我想覆盖该函数的原因是因为我想在对象中创建一个属性,告诉JSON忽略一个字段,如下所示:
JSON.stringify = function (item, replacer, space) {
if (angular.isObject(item)) {
var newItem = angular.copy(item);
var ignores = item.jsonIgnore || [];
ignores.forEach(prop => {
delete newItem[prop];
});
return JSON.stringify(newItem, replacer, space);
}
return JSON.stringify(item, replacer, space);
}
答案 0 :(得分:0)
这是一个没有任何结束条件的递归函数。您可以通过创建本地函数来解决问题:
var localStringify = function (item, replacer, space) {
...
}
或者考虑this thread中给出的解释,覆盖原始函数。
答案 1 :(得分:0)
谢谢大家,我决定用原始函数
创建一个局部变量var originalStringify = JSON.stringify;
然后调用我的自定义函数
return originalStringify(item, replacer, space);
现在我的完整Json忽略覆盖功能是这样的:
// JSON ignore
var original = JSON.stringify;
JSON.stringify = function (item, replacer, space) {
if (angular.isObject(item)) {
var newItem = angular.copy(item);
var ignores = item.jsonIgnore || [];
ignores.forEach(prop => {
delete newItem[prop];
delete newItem.jsonIgnore;
});
return original(newItem, replacer, space);
}
return original(item, replacer, space);
}