我知道这pop()
是JavaScript数组中的内置方法。我只是在玩耍,踢了脚步就决定要覆盖内置的原型方法,并遇到这种情况,并且无法解释到底发生了什么。
当在Node REPL或文件中运行以下代码时,它在Windows 10系统中以无限递归方式创建。我正在运行的Node版本是8.9.1。
Array.prototype.pop = function() {
console.log(this);
}
const a = [1, 2, 3];
a.pop();
如果有人可以解释这种现象,那就太好了!
我认为这是节点引擎中的东西。
如果我使用V8引擎,它会按预期工作。
https://tio.run/##y0osSyxOLsosKNEts/j/37GoKLFSr6AovyS/pLIgVa8gv0DBViGtNC@5JDM/T0NToZpLQSE5P684PydVLyc/XaMkI7NY05qrlosLJFqikAhUHQ2ca2
但不是使用节点引擎。
另外:
如果你改变pop
用slice
,它工作得很好,无论发动机。
因此,我们可以推断出这是节点中的错误 Array.prototype.pop
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句