我知道pop()
是JavaScript数组中的内置方法。我只是在玩耍,踢了脚步就决定要覆盖内置的原型方法,并遇到这种情况,并且无法解释到底发生了什么。
在Node REPL或文件中运行以下代码时,它会在Windows 10系统中无限递归创建。我正在运行的Node的版本为8.9.1。
Array.prototype.pop = function() {
console.log(this);
}
const a = [1, 2, 3];
a.pop();
如果有人可以解释这种现象,那就太神奇了!
答案 0 :(得分:0)
我认为这是节点引擎中的东西。
如果我使用V8引擎,它会按预期运行。
https://tio.run/##y0osSyxOLsosKNEts/j/37GoKLFSr6AovyS/pLIgVa8gv0DBViGtNC@5JDM/T0NToZpLQSE5P684PydVLyc/XaMkI7NY05qrlosLJFqikAhUHm2oo2Cko2Aca82VCDJBQ/P/fwA
但不适用于节点引擎。
加号:
如果将pop
更改为slice
,则不管引擎如何,它都可以正常工作。
所以我们可能只是推断出它是Array.prototype.pop
节点内的错误