为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

莫回无 2019-03-10 12:14:56
本人javascript新手, 最近遇到了一个问题一直无法理解, 如下:var A = function() {    return new B()}var B = function() {    this.name = 'B'}var a = A()console.log(Object.getPrototypeOf(a) == B.prototype) // truevar C = function() {    return new C()}var c = C() // 报错个人疑惑的地方在于, 为什么在一个构造函数里面返回自己的实例就会显示栈溢出, 但是返回别的构造函数的实例却没有问题.另外我的理解, 构造函数返回自己的实例是不是有点类似于递归所以就报错了, 但是返回的是一个实例对象按理说应该是不会继续进行自己的调用, 所以该如何理解? 一直想不明白.希望有前辈能够指点一下, 谢谢了!
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

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


let C = function(n) {

  console.log(n);

  return new C(n + 1);

}


let c = new C(0);

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


查看完整回答
反对 回复 2019-03-29
  • 1 回答
  • 0 关注
  • 305 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信