这些是 Nicholas Zakas 书中的摘录,我不清楚,请帮助我理解。
function setName(obj) {
obj.name = “Nicholas”;
obj = new Object();
obj.name = “Greg”;
}
var person = new Object();
setName(person);
alert(person.name); //”Nicholas”
函数退出后,本地对象 obj 在堆中死掉了(返回 obj 时也一样?)
person 和 obj 是作为堆中的单个对象的副本或相互引用吗?
他说“当 obj 在函数内部被覆盖时,它就变成了一个指向本地对象的指针。该本地对象在函数完成执行后立即被销毁”。
然后,在他解释工厂模式如下:
function createPerson(name, age, job){
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function(){
alert(this.name);
};
return o;
因为现在 o 是本地对象,他说“只要函数完成执行,本地对象就会被销毁”。所以当函数返回 o 时,它是一个本地对象,如果 i
var foo = createPerson(bla,18,student);
然后 foo 是对本地对象的引用,该对象必须在 then 之前死掉。请澄清“在函数中返回本地对象”的概念
抱歉,帖子太长了,如果需要,请编辑和压缩。