javascript - JavaScript继承中的堆栈溢出

原文 标签 javascript stack-overflow

我有下面的编

Object.prototype.inherit = function(baseConstructor) {
  this.prototype = (baseConstructor.prototype);
  this.prototype.constructor = this;
};
Object.prototype.method = function(name, func) {
  this.prototype[name] = func;
};

function StrangeArray(){}
StrangeArray.inherit(Array);
StrangeArray.method("push", function(value) {
  Array.prototype.push.call(this, value);
});

var strange = new StrangeArray();
strange.push(4);
alert(strange);

当我运行它时,我得到堆栈溢出?为什么?

最佳答案

您正在将StrangeArray.prototype设置为Array.prototype。稍后,您要向push添加StrangeArray.prototype方法(现在与Array.prototype相同)。因此,您实际上是在设置Array.prototype.push。您的push方法调用Array.prototype.push-即本身。因此,它最终只是反复调用自己,而导致堆栈溢出。

关于javascript - JavaScript继承中的堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1251229/

相关文章:

javascript - 如何为图标创建事件监听器?

javascript - 脚本的大小(外部链接)+将它们合并为1

javascript - CSS translateY正在扩展文档长度

c - 无限递归main()中的Segfault之后的不同运行时间

java - 在 Java 中减少运行时的最大堆栈大小

javascript - 使用KnockoutJS逐步增强

javascript - 如何在数组中使用jQuery bind或addEventListener?

java - Objectify-类注册期间的StackOverflowError

c++ - C++无限循环导致堆栈溢出错误?

c - 将C代码转换为MIPS汇编-使用递归的组合功能