设计模式知识连载(9)---继承_5:如虎添翼-寄生式继承
2017-12-12 18:59
330 查看
<body> <h3>设计模式知识连载(9)---继承_5:如虎添翼-寄生式继承</h3> <p> 这是对原型继承的第二次封装, </p> <script type="text/javascript"> /** * 寄生式继承--案例1: */ // 声明基对象 var book = { name : 'js_book', alikeBooks : ['css_book', 'html_book'] } ; // 封装类式继承 function inheritObject(o) { // 声明一个过度函数对象 function F() {} ; // 过度对象的原型继承父对象 F.prototype = o ; // 返回过度对象的一个实例,该实例的原型继承了父对象 return new F() ; } ; function creatBook(obj) { // 通过原型继承方式创建新对象 var o = new inheritObject(obj) ; // 拓展新对象 o.getName = function() { console.log(name) ; } ; // 返回拓展后的新对象 return o ; } ; var cb1 = new creatBook(book) ; var cb2 = new creatBook(book) ; console.log('修改前的数据:--------------') ; console.log('cb1:', cb1) ; console.log('cb2:', cb2) ; console.log('cb1.name:', cb1.name) ; console.log('cb1.alikeBooks', cb1.alikeBooks) ; console.log('cb2.name:', cb2.name) ; console.log('cb2.alikeBooks', cb2.alikeBooks) ; console.log('修改后的数据:--------------') ; cb1.name = 'java_book' ; cb1.alikeBooks.push('xml_book') ; console.log('cb1:', cb1) ; console.log('cb2:', cb2) ; console.log('cb1.name:', cb1.name) ; console.log('cb1.alikeBooks', cb1.alikeBooks) ; console.log('cb2.name:', cb2.name) ; console.log('cb2.alikeBooks', cb2.alikeBooks) ; </script> </body>
相关文章推荐
- 设计模式知识连载(5)---继承_1:子类的原型对象-类式继承
- 设计模式知识连载(7)---继承_3:优点结合-组合继承
- 设计模式知识连载(6)---继承_2:创建即继承-构造函数继承
- 设计模式知识连载(10)---继承_6:终极继承者-寄生组合式继承
- 设计模式知识连载(11)---继承_7:多继承
- 设计模式知识连载(49)---MVP模式:
- 设计模式知识连载(25)---享元模式:
- 设计模式知识连载(26)---模板方法模式:
- 设计模式知识连载(29)---策略模式:
- 设计模式知识连载(12)---调用方式:多态
- 设计模式知识连载(33)---中介者模式:
- 设计模式知识连载(19)---外观模式:
- 设计模式知识连载(32)---访问者模式:
- 设计模式知识连载(35)---迭代器模式:
- 设计模式知识连载(41)---简单模板模式:
- 设计模式知识连载(3)---封装_2:闭包
- 设计模式知识连载(15)---抽象工厂模式:
- 设计模式知识连载(43)---参与者模式:
- 设计模式知识连载(1)---函数的书写方式
- 设计模式知识连载(44)---等待者模式: