/* * 寄生式繼承 * 其實就是對原型繼承的第二次封裝,在封裝過程當中對繼承的對象進行了擴展。 * 也存在原型繼承的缺點!! * 這種思想的做用也是爲了寄生組合式繼承模式的實現。 */ //聲明基對象 var book = { name:'js book', alikeBook:['Html','Css'] }; //原型式繼承 function inheritObj(obj){ //聲明一個過渡函數對象 function F(){} //過渡對象的原型繼承父對象 F.prototype = obj; //返回過渡對象的一個實例,該實例的原型繼承了父對象 return new F(); } function createBook(obj){ // 經過原型繼承方式建立對象 var object = new inheritObj(obj); // 拓展新對象 object.getName = function(){ console.log(this.name); }; // 返回擴展後的對象 return object; } var book1 = createBook(book); book1.name = 'css'; book1.alikeBook.push('javascript'); console.log(book1.alikeBook); // ['Html','Css','javascript'] book1.getName(); // css var book2 = new createBook(book); book2.name = '設計模式'; console.log(book2.alikeBook); // ['Html','Css','javascript'] book2.getName(); // css
設計模式中的經典筆錄javascript