设计模式知识连载(9)---继承_5:如虎添翼-寄生式继承

来源:互联网 发布:数据分析金融分析就业 编辑:程序博客网 时间:2024/05/16 14:05
<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>
阅读全文
0 0
原创粉丝点击