我正在摆弄浏览器控制台来提高我的 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 添加方法。 (如有错误请指正)
这仅用于学习目的。
你能向我解释一下为什么这个方法会这样吗?
我不想知道它是如何工作的,而是为什么它不起作用。 :)
非常感谢!
最佳答案
因为 JSON.stringify()
会检查对象是否有方法 toJSON
,如果有的话就会调用 toJSON
。
您将源 toJSON
替换为您的,并在您的 toJSON
中调用 JSON.stringify()
,因此创建了一个调用循环。
关于javascript - 添加到 Object.prototype 的方法重复无限次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55057689/