您的位置:首页 > 其它

设计模式知识连载(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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式 继承