[대상을 대상으로 하는 프로그램 설계(6)] 원형적 계승

1515 단어

기본 사상:


원형을 빌려 기존의 대상을 바탕으로 새로운 대상을 만들 수 있으며 사용자 정의 형식을 만들 필요가 없다.
function object(o){
    function F(){}
    F.prototype = o;
    return new F();
}

object () 함수 내부에서 임시적인 구조 함수를 만든 다음에 전송된 대상을 이 구조 함수의 원형으로 하고 마지막으로 이 임시 형식의 새로운 실례를 되돌려줍니다.
var person ={
  name:"Wonder",
  colors:['blue','green','white']
};
var anoherPerson = Object(person);
anoherPerson.name = "Abby";
anoherPerson.colors.push('black');

var yetAnotherPerson = Object(person);
yetAnotherPerson.name = "Greg";
anoherPerson.colors.push('yellow');

alert(person.colors);  //blue,green,white,black,yellow

원형적 계승은 반드시 하나의 대상이 다른 대상의 기초가 될 수 있어야 한다.
ECMAScript 5 새 Object.create () 방법은 원형식 계승을 규범화시켰다.
/* Object.create() (IE9+、Firefox 4+、Safari 5+、Opera 12+ Chrome)
 * param:
 *    param1—— 
 *    param2——( ) 
 *             : 。 
 */
var person ={
  name:"Wonder",
  colors:['blue','green','white']
};
var anoherPerson1 = Object.create(person);
anoherPerson1.name = "Abby";
anoherPerson1.colors.push('black');

var yetAnotherPerson = Object.create(person);
yetAnotherPerson.name = "Greg";
anoherPerson.colors.push('yellow');

alert(person.colors);  //blue,green,white,black,yellow

var anoherPerson2 = Object.create(person,{
    name: {
        value:"Bob"
    }
});
alert(anoherPerson2 .name);  //"Bob"

좋은 웹페이지 즐겨찾기