1/* 2* 寄生式继承 3* 其实就是对原型继承的第二次封装,在封装过程中对继承的对象进行了扩展。 4* 也存在原型继承的缺点!! 5* 这种思想的作用也是为了寄生组合式继承模式的实现。 6*/ 7//声明基对象 8var book = { 9 name:'js book', 10 alikeBook:['Html','Css'] 11}; 12 13//原型式继承 14function inheritObj(obj){ 15 //声明一个过渡函数对象 16 function F(){} 17 //过渡对象的原型继承父对象 18 F.prototype = obj; 19 //返回过渡对象的一个实例,该实例的原型继承了父对象 20 return new F(); 21} 22 23function createBook(obj){ 24 // 通过原型继承方式创建对象 25 var object = new inheritObj(obj); 26 // 拓展新对象 27 object.getName = function(){ 28 console.log(this.name); 29 }; 30 // 返回扩展后的对象 31 return object; 32} 33 34var book1 = createBook(book); 35book1.name = 'css'; 36book1.alikeBook.push('javascript'); 37console.log(book1.alikeBook); // ['Html','Css','javascript'] 38book1.getName(); // css 39 40var book2 = new createBook(book); 41book2.name = '设计模式'; 42console.log(book2.alikeBook); // ['Html','Css','javascript'] 43book2.getName(); // css
设计模式中的经典笔录