たとえばこんな感じか。 function defined(v) { return (v !== undefined && v !== null) } // ** objからキー _init に格納されるオブジェクトを引き抜き、 // ** objの残りメンバで破壊的に拡張して返す。 // ** objにキー _init が無い場合は空オブジェクトを新規作成して拡張 function build(obj) { var base; var key; if(defined(obj._init)) { base = obj._init; delete obj._init; }else { base = {}; } for(key in obj) { if(!obj.hasOwnProperty(key)) continue; base[key] = obj[key]; } return base;