设计模式知识连载(8)---继承_4:洁净的继承者-原型式继承

<body>

<h3>设计模式知识连载(8)---继承_4:洁净的继承者-原型式继承</h3>
<p>
    对类式继承的一个封装
</p>

<script type="text/javascript">

    /**
    *   原型式继承--案例1:
    */
    //  封装类式继承
    function inheritObject(o) {

        // 声明一个过度函数对象
        function F() {} ;

        // 过度对象的原型继承父对象
        F.prototype = o ;

        // 返回过度对象的一个实例,该实例的原型继承了父对象
        return new F() ;
    } ;

    var book = {
        name : 'js_book',
        alikeBooks : ['css_book', 'html_book'] 
    } ;

    var book1 = new inheritObject(book) ;
    var book2 = new inheritObject(book) ;
    console.log('修改前的数据:--------------') ;
    console.log('book1:', book1) ;
    console.log('book2:', book2) ;
    console.log('book1.name:', book1.name) ;
    console.log('book1.alikeBooks', book1.alikeBooks) ;
    console.log('book2.name:', book2.name) ;
    console.log('book2.alikeBooks', book2.alikeBooks) ;
    console.log('修改后的数据:--------------') ;
    book1.name = 'ajax_book' ;
    book1.alikeBooks.push('xml_book') ;
    console.log('book1:', book1) ;
    console.log('book2:', book2) ;
    console.log('book1.name:', book1.name) ;
    console.log('book1.alikeBooks', book1.alikeBooks) ;
    console.log('book2.name:', book2.name) ;
    console.log('book2.alikeBooks', book2.alikeBooks) ;

    /**
    *   缺陷:
    *   跟类式继承一样,父类对象book中的值类型属性被复制,
    *   引用类型的属性被共用
    */
</script>

</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值