新操作员在哪里创建新对象?

时间:2016-07-08 08:43:14

标签: javascript

我正在学习构造函数,我遇到了new关键字。

var obj = new myContructor();

我了解到它创建了一个新对象,将其原型设置为constructor.prototype,根据this关键字设置其属性,最后返回该对象。

现在,我很困惑它在哪里创建新对象,如内部内存或易失性的地方。

当它说RETURNS那个对象时,它是什么意思,它在var obj的位置创建一个新对象的副本,或者它将obj引用到创建新对象的任何地方?

2 个答案:

答案 0 :(得分:2)

  

内存或易失性的地方

是的,当然。就像程序中的任何其他数据一样。

  

我们的意思是说它退回那个对象

您正在进行函数调用。函数调用具有返回值。该对象是该函数调用的返回值。

  

它在var obj

的位置创建新对象的副本

它在函数中创建它,然后它返回对它的引用(就像任何其他对象一样),并且该引用存储在变量中,因为你使用了赋值。

答案 1 :(得分:1)

Javascript中幕后有很多内容;事物不断被创建 in memory ,你无权访问。只要您在编写Javascript代码时关注此问题:

  1. new创建对象并完成所有原型设置
  2. 执行
  3. myConstructor(),并将函数内的this设置为该对象
    (换句话说:myContructor以对象作为上下文调用
  4. 完成myConstructor后,对象将被分配给变量obj,这是所有这一切的结果
  5. 关于myConstructor可以返回什么以及它如何影响结果,有一些警告,但为简单起见,我们将忽略它。基本事件链是new创建对象→myConstructor将该对象视为thisobj“接收”此对象作为new的返回值。< / p>

    当然,所有这些对象的创建并将其传递到不同的地方都是由Javascript引擎完成的,并且需要在内存中的某个位置内部存储对象。