gpt4 book ai didi

javascript - 添加到 Object.prototype 的方法重复无限次

转载 作者:行者123 更新时间:2023-11-29 20:43:00 25 4
gpt4 key购买 nike

我正在使用浏览器控制台来提高我的 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(),因此创建了一个调用循环。

检查这个: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#Description

关于javascript - 添加到 Object.prototype 的方法重复无限次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55057689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com