//原型式繼承 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`]
設計模式中的經典筆錄