我有返回对象的函数:
function makeObject() {
return {
property: "value"
};
}
我可以像这样从中创建新的对象:
var newObject = makeObject();
我对此有一些疑问:
newObject
是否引用了函数返回的原始对象,还是具有自己属性的全新对象?
如果它是一个全新的对象,那么在某种意义上,它是否是函数返回的对象的深层复制?
函数中的原始对象发生了什么变化?如果无法引用它,它是否在JavaScript运行时保持活动状态?
答案 0 :(得分:4)
关于garbage collection的MDN文档是有用的相关阅读。
答案 1 :(得分:1)
这是一个等效函数:
function makeObj() {
var o = new Object();
o.property = 'value';
return o;
}
对象文字语法实际上是上述的简写。
所以是的,它是一个全新的对象,不,它不是一个深层拷贝,因为没有什么可以复制的。每次调用函数时,它都会生成一个新对象。