在修改推送方法时,我得到了最大调用堆栈超出错误



我正在尝试使用以下的Array.prototype修改pus方法

Array.prototype.push = function (ele) {
this.length++;
this[this.length - 1] = ele;
console.log(ele);
};
const arr = [1, 2, 3];
arr.push(5);
console.log(arr);

我得到的最大调用堆栈超出错误,但删除console.log(arr(后,它工作正常

在节点中,console在内部使用Array.prototype.push。我相信浏览器可能会有类似的行为。但控制台的行为取决于供应商,所以只将其作为一个例子。

参见:(在节点16下(

(node:76599) RangeError: Maximum call stack size exceeded
at Array.push (REPL5:4:11)
at formatRaw (internal/util/inspect.js:979:12)
at formatValue (internal/util/inspect.js:774:10)
at inspect (internal/util/inspect.js:319:10)
at formatWithOptionsInternal (internal/util/inspect.js:1979:40)
at formatWithOptions (internal/util/inspect.js:1861:10)
at console.value (internal/console/constructor.js:327:14)
at console.log (internal/console/constructor.js:363:61)
at Array.push (REPL5:4:11)
at formatRaw (internal/util/inspect.js:979:12)

最新更新