新操作符在哪里创建新对象?
我正在学习构造函数,并且遇到了关键字new
。新操作符在哪里创建新对象?
var obj = new myContructor();
我才知道,它创造了一个新的对象,设置它的原型constructor.prototype
,设置其属性与this
根据关键字,最后返回该对象。
现在,我很困惑它在哪里创建新的对象,因为内部存储器或其中的易失性的地方。
当我们说它返回那个对象时,它在var obj的位置创建一个新对象的副本,还是它将obj引用到创建新对象的任何位置?
Javascript中幕后有很多事情要做,在你无法访问的内存中不断创建内存。至于你所关心的这一点的同时编写JavaScript代码:
-
new
创建对象并做了所有原型的东西被执行 -
myConstructor()
,并this
内部功能设置为对象
(换句话说:myContructor
以对象作为上下文被调用) -
myConstructor
完成后,对象被分配给变量obj
作为所有这些的结果
关于什么myConstructor
可以返回以及如何影响结果有一系列注意事项,但为简单起见,我们将忽略它。基本事件链是new
创建对象→myConstructor
将该对象视为this
→obj
“接收”此对象作为返回值new
。
当然,所有这些创建对象并将它传递到不同的地方都是由JavaScript引擎完成的,并且需要内存中某个对象的内部存储。
内部存储器或地方在那里它是挥发性
是的,当然。就像程序中的其他任何数据一样。
做我们的意思是说,它返回一个对象
你正在一个函数调用时。函数调用具有返回值。该对象是该函数调用的返回值。
它在VAR OBJ
它创建它在函数的位置创建新对象的副本,则它返回到它的基准(就像任何其他对象),并该引用存储在变量中,因为您使用了赋值。
嘟nit nitpick:该对象不是直接函数调用的返回值(除非它是,当然)。这真的是'new'运算符的结果......:o) – deceze
你是什么意思'创建对象内部功能'? –
ThisBinding是JavaScript解释器在评估JavaScript代码时所维护的东西,就像一个特殊的CPU寄存器,它持有对对象的引用。每当仅在三种不同的情况中的一种情况下建立执行上下文时,解释器就更新ThisBinding。 检查[此](http://*.com/questions/3127429/how-does-the-this-keyword-work)链接。 – Shubham
我关闭这个太宽泛,虽然这可能是一些职位的重复。在MDN中,您可以找到它的解释 – Jai
该对象在由JavaScript运行时管理的堆上创建。与堆中的内存位置相对应的数字被返回(引用),因为对象通过“引用值”传递。这个数字(又名“参考”)被复制。复制整个对象的代价过高,而且不是你通常想要的。 – Ben