Edit in JSFiddle

function object(o) { // 객체를 매개변수로 받음
  function F() {} // 임시 생성자 함수 만들고
  F.prototype = o; // 생성자 함수의 프로토타입 객체를 매개변수로 받은 객체로 지정
  return new F(); // 임시 생성자 함수를 기반으로한 새 객체를 반환
}

// 공유객체 정의
var person = {
  name: "sin",
  friends: ["lee", "park"]
};

var person1 = object(person);
person1.name = "choi";
person1.friends.push("yoon");

var person2 = object(person);
person2.name = "kim";
person2.friends.push("hong");

document.write(person.friends); // lee,park,yoon,hong