Javascript繼承4:潔淨的繼承者—-原型式繼承

逗伴不是瓣發表於2018-10-02
//原型式繼承
function inheritObj(obj){
    //宣告一個過渡函式物件
    function F(){}
    //過渡物件的原型繼承父物件
    F.prototype = obj;
    //返回過渡物件的一個例項,該例項的原型繼承了父物件
    return new F();
}
/*
* 這種方式是對類式繼承的一個封裝,所以類式繼承中存在的缺點這裡依然存在
*/

var car = {
    id:1,
    color:[`red`]
}

var car1 = inheritObj(car);
car1.id = 2;
car1.color.push(`blue`);

var car2 = inheritObj(car);
car2.id = 3;
car2.color.push(`yellow`);

console.log(car1.id)       // 2
console.log(car1.color)    // [`red`,`blue`]

console.log(car2.id)       // 3
console.log(car2.color)    // [`red`,`blue`,`yellow`]

console.log(car.id)       // 1
console.log(car.color)    // [`red`,`blue`,`yellow`]

 

設計模式中的經典筆錄

相關文章