RangeError:在debugging/logging/检查Node.js中的对象时超出最大调用堆栈大小
给定一个类定义如下,我得到RangeError: Maximum call stack size exceeded
当尝试查看Object的哪些属性时, RangeError: Maximum call stack size exceeded
。
var Person = (function () { function Person(name, age) { this.name = name; this.age = age; } Person.prototype.inspect = function () { console.log(this); }; return Person; })(); var radek = new Person("Radek", 28); radek.inspect();
在浏览器(Chrome)中,我们会得到以下内容:
Person {name: "Radek", age: 28, inspect: function}
有趣的你应该问。 默认情况下,当我们试图检查它们时,将会调用在被检查的对象上定义的自定义的inspect()
函数。 这导致在我们的情况下没有结束的recursion。
为了在保留名称的同时缓解问题,使用util
模块将一个额外的选项customInspect
传递给inspect()
:
var util = require("util"); var Person = (function () { function Person(name, age) { this.name = name; this.age = age; } Person.prototype.inspect = function () { console.log(util.inspect(this, { 'customInspect': false })); }; return Person; })(); var radek = new Person("Radek", 28); radek.inspect();
这将给我们以下几点:
{ name: 'Radek', age: 28 }