js 使用new创建对象发生了什么?

使用new时,改变了构造函数中的this指向,生成的对象中有一个指向构造器原型的属性。
怎么多出来个return 就打破了这点呢?
图片描述

阅读 4.1k
3 个回答

想知道new之后发生了什么么?来来来,看文档:

图片描述

注意我选中的部分,“通常构造器不会指定返回值,但如果你硬要改变默认行为,也是可以显式指定一个Object作为返回值覆盖默认行为的”

在构造函数中,一般不允许返回东西出来。 这好像是一个默认规定。
如果return object、array,function, 那么new表达式返回值即使return值。否则返回的是构造函数的函数体形成的对象。

new对象发生了事情:
创建空对象
把this指向空对象
赋值
方法中的this指代 new 出来的对象。

b之所以会出来11 是因为你的b的返回值是个对象。里面有a属性。但是跟自身的a无关。很简单的道理

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏