javascript - 添加到 Object.prototype 的方法无限重复
问题描述
我正在使用浏览器控制台来提高我的 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()
中,因此创建了一个呼叫循环。
推荐阅读
- laravel - 如何加载与 { json:api } 客户端的关系?
- .net - WireMock 中 STARTED 的 .NET 等价物是什么?
- python - Plotly:如何使用 updatemenus 更新一个特定的跟踪?
- c# - Xamarin.Forms StackLayout 分为 3 列
- c - 调试器在哪里保存指向代码段中下一个命令的指针?
- json - OpenApi 是否有通用文件规范?
- java - 如果后端是 URL,则从客户端到后端的 API 流
- javascript - 使用 openfire 运行 converse 问题
- c++ - 访问所有点的最短时间:了解
- delphi - 如何使用 Delphi 在 Windows 10 上连接到 WiFi?