Javascript继承5:如虎添翼----寄生式继承
程序员文章站
2022-06-18 21:08:40
设计模式中的经典笔录 ......
/* * 寄生式继承 * 其实就是对原型继承的第二次封装,在封装过程中对继承的对象进行了扩展。 * 也存在原型继承的缺点!! * 这种思想的作用也是为了寄生组合式继承模式的实现。 */ //声明基对象 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
设计模式中的经典笔录