function cloneObject(obj){
var o = obj.constructor === Array ? [] : {};
for(var i in obj){
if(obj.hasOwnProperty(i )){
o[i] = typeof obj[i] === "オブジェクト" ? cloneObject(obj[i]) : obj[i];
}
}
return o;
}
上記のコードはオブジェクトのディープクローンを実装するもので、オブジェクトの属性値がオブジェクトの場合、関数は再帰的に実行されます。つまり、o[i] = typeof obj[i]のみです。 === " object" ? cloneObject(obj[i]) : obj[i]; typeof obj[i] === "object" が成立すると cloneObject(obj[i]) が実行されます。 cloneObject(obj[i]) を実行すると、cloneObject 関数が再度入力されてコードが実行されますが、for in ループはまだ終了していないことを理解しています。最初に cloneObject を実行してこれを終了し、次に次の処理に進むべきでしょうか。 for ループのステップ?
迷茫2017-06-28 09:29:39
再帰は for ループ内にあります。したがって、for ループに入ると。最初に再帰が実行され、再帰が結果を返すまで、for ループに戻って実行を継続します。