引数が「Object」だった場合、コピーして返す。配列は配列、ObjectはObject、argumentsはargumentsとして返す。
■使用例
var obj = {
music : "弦楽四重奏によるドラゴンクエスト",
author : "すぎやまこういち"
}
// re = { "music":"弦楽四重奏によるドラゴンクエスト","author":"すぎやまこういち" };
var re = _.clone( obj );
var obj = {
music : "金管五重奏によるドラゴンクエスト",
author : "すぎやまこういち"
}
var obj2 = {
music : "弦楽四重奏によるドラゴンクエスト",
author : "すぎやまこういち"
}
var func = function(){
return _.clone( arguments );
}
// re = { "0" : {"music":"金管五重奏によるドラゴンクエスト","author":"すぎやまこういち"}, "1" : {"music":"弦楽四重奏によるドラゴンクエスト","author":"すぎやまこういち"} };
var re = func( obj, obj2 );
■内部構造
_.clone = function(obj) {
// 引数が「Object」じゃなかったら。
if (!_.isObject(obj)) return obj;
// 引数が配列だったら obj.slice、配列以外( arguments含む )だったら空のObjectにコピーする(プロトタイプを含む)。
return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
};