构造函数内部返回自己的实例出现错误

发布于 2022-09-07 03:54:46 字数 514 浏览 28 评论 0

本人javascript新手, 最近遇到了一个问题一直无法理解, 如下:

var A = function() {
    return new B()
}
var B = function() {
    this.name = 'B'
}

var a = A()
console.log(Object.getPrototypeOf(a) == B.prototype) // true


var C = function() {
    return new C()
}
var c = C() // 报错

个人疑惑的地方在于, 为什么在一个构造函数里面返回自己的实例就会显示栈溢出, 但是返回别的构造函数的实例却没有问题.

另外我的理解, 构造函数返回自己的实例是不是有点类似于递归所以就报错了, 但是返回的是一个实例对象按理说应该是不会继续进行自己的调用, 所以该如何理解? 一直想不明白.

希望有前辈能够指点一下, 谢谢了!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

离笑几人歌 2022-09-14 03:54:46

答案你已经知道了,你不妨试试这个

let C = function(n) {
  console.log(n);
  return new C(n + 1);
}

let c = new C(0);

我觉得没有什么奇怪的,当然你也可以特别规定:如果一个类的构造函数试图使用new关键字实例化自己,那么就以空构造函数实例化它。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文