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

//原型式繼承
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']

 

設計模式中的經典筆錄設計模式

相關文章
相關標籤/搜索