<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>
设计模式知识连载(8)---继承_4:洁净的继承者-原型式继承
最新推荐文章于 2020-06-09 20:50:32 发布