我在弄乱浏览器控制台以提高我的JavaScript技能。
当我尝试向Object.prototype添加方法时,将其实例返回为json时,发生了一些奇怪的事情:
在方法的最后,它跳回到for-in循环并再次执行。一遍又一遍...
它不返回任何内容,只是继续跳回并重复。
代码:
Object.prototype.toJSON = function() {
var tempObj = {};
for (let key in this) {
if (this.hasOwnProperty(key)) {
let value = this[key];
tempObj[key] = value;
}
}
return JSON.stringify(tempObj);
}
我知道您不应该向Object.prototype添加方法。 (如果我错了,请纠正我)
这仅用于学习目的。
非常感谢您!
答案 0 :(得分:1)
因为JSON.stringify()
会检查对象是否具有方法toJSON
,如果有方法,它将调用toJSON
。
您将源toJSON
替换为您的源,并且在您的toJSON
中将其命名为JSON.stringify()
,因此会创建一个调用循环。