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 }