これらはニコラス・ザカスの本からの抜粋ですが、はっきりしていません。理解するのを手伝ってください。
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はローカルオブジェクトへの参照であり、それまでに停止している必要があります。「関数でローカルオブジェクトを返す」の概念を明確にしてください
長い投稿で申し訳ありませんが、modは必要に応じて編集して要約してください。