- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
function MyClass() {
this.foo = "foo";
this.bar = "bar";
}
MyClass.prototype.toJSON = function(space) {
if (typeof space === 'undefined') space = 4;
return JSON.stringify(this, null, space);
};
var m = new MyClass();
console.log(m.toJSON());
我在 node.js 中运行它,得到:
MyClass.prototype.toJSON = function(space) {
^
RangeError: Maximum call stack size exceeded
我不知道为什么。这让我很困惑。你能告诉我导致这个错误的原因吗?以及如何解决?
最佳答案
我通过将 .toJSON
函数重命名为 .save
解决了这个问题。
我在这里找到了原因:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify ,它说:
If an object being stringified has a property named toJSON whose value is a function, then the toJSON method customizes JSON stringification behavior: instead of the object being serialized, the value returned by the toJSON method when called will be serialized.
因此原始代码会导致无限递归。
感谢@cookie monster 和@PHPglue。
工作代码:
function MyClass() {
this.foo = "foo";
this.bar = "bar";
}
MyClass.prototype.save = function(space) {
var s = typeof space === 'undefined' ? 0 : 4;
return JSON.stringify(this, null, s);
};
var m = new MyClass();
console.log(m.save());
关于javascript - 学习OOP时失败 `JSON.stringify(this)`(得到RangeError : Maximum call stack size exceeded),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25337162/
我已经读了差不多有关此错误的文章,但是常见的答案是“使用FutureBuilder”或“使用isEmpty?”。我已经尝试了两种解决方案,但是仍然出现错误。提前致谢。 import 'package:
我想这意味着有一个循环引用,但是对于我的一生,我无法猜测如何解决它。 谁有想法? http://plnkr.co/edit/aNcBcU?p=preview 检查Chrome中的调试控制台(例如),您
我的 JS 代码运行得很好,直到我添加了以下函数: $(".meassure-combo").change(function() { switch ($(this).attr("name"))
我有 HTML: Upload 还有 jQuery/JavaScript: $('.js-uploader').click(function(){ $(this).fi
我正在尝试下载大型 json 数据。但它会导致Uncaught RangeError: Invalid string length。 请帮忙解决这个问题,先谢谢了。 这是 Jsfiddle:http:
smallestInteger = (stack,numbers,k) => { if (stack.length == 0){ stack.push(numbers[k]);
我在nodejs中使用sequelize和mysql。我正在尝试运行命令 npx sequelize db:create 但它给了我这个错误。不知道在这里做什么。任何帮助表示赞赏。谢谢你。 Seque
我收到以下错误 W20141210-18:14:54.394(5.5)? (STDERR) W20141210-18:14:54.395(5.5)? (STDERR) /Users/removed/.
我是 Meteor 的新手。我正在做简单的应用程序。这是我遇到的问题: Template.newFeedForm.events({ 'submit #new-feed-form'(event)
我是 Meteor 的新手。我正在做简单的应用程序。这是我遇到的问题: Template.newFeedForm.events({ 'submit #new-feed-form'(event)
我有一个更改事件,当选择框更改时会触发该事件。然而,选择框位于被替换的 div 内,因此会重新生成选择框。由于此错误可能是由于无限循环造成的,因此我猜测创建选择框时也必须触发我的触发事件。我尝试了很多
我有一个表格,我必须从中获取我的数据。我正在使用 ejs 模板。我的“/”路由呈现“主” View ,我有一个中间件来处理来自表单的数据,但它返回错误“RangeError:超出最大调用堆栈大小” 我
当运行以下代码时: (function recur() { recur() })() 出现以下错误 - Uncaught RangeError: Maximum call stack size
我有一个正在实现一些自定义验证的表单。这是在提交表单之前处理最终检查的 JavaScript block : $('.enquiry-form-container form').submit(func
为什么我收到RangeError:超出最大调用堆栈错误?我正在尝试解析文本以找到数学并解决它。它一直有效,直到我开始实现括号'。我试图找出错误,但就是无法弄清楚。 我的代码: var alg = {
我收到以下错误: RangeError: Maximum call stack size exceeded. 在这一行: requestAnimFrame(Game.loop()); 在这段代码中:
我在显示来自本地 json 的数据时收到 RangeError (index): Invalid value: Valid value range is empty: 0。我正在尝试使用 simple
我在构建 ListView 时遇到错误。在这个 flutter 应用程序中,我尝试在单击按钮时为每一列计算一些点。但我总是遇到同样的错误。 ══╡ EXCEPTION CAUGHT BY GESTUR
大家好!初学者在这里! 我用Socket.IO制作了一个小Node.JS应用程序,该应用程序运行良好,直到我决定将套接字代码放入对象中以允许 namespace 管理为止。我现在对此方法有疑问(我相信
未为用户设置图像时,出现以下错误: “未处理的异常:RangeError:值不在范围内:22” 摆好照片后,一切就正确了 我的代码: Future getData() async { fina
我是一名优秀的程序员,十分优秀!