<body>
<h3>设计模式知识连载(6)---继承_2:创建即继承-构造函数继承</h3>
<p></p>
<script type="text/javascript">
/**
* 构造函数继承--案例1:
*/
// 声明父类
function SuperClass(id) {
// 引用类型共有属性
this.books = ['JavaScript', 'HTML', 'CSS'] ;
// 值类型共有属性
this.id = id ;
} ;
// 父类声明原型方法
SuperClass.prototype.showBooks = function() {
console.log(this.books) ;
} ;
// 声明子类
function SubClass(id) {
// 继承父类
// 构造函数式继承的精华
SuperClass.call(this, id) ;
} ;
var subinstance1 = new SubClass(10) ;
var subinstance2 = new SubClass(20) ;
console.log('subinstance1.books:', subinstance1.books) ;
console.log('subinstance1.id:', subinstance1.id) ;
console.log('subinstance2.books:', subinstance2.books) ;
console.log('subinstance2.id:', subinstance2.id) ;
// subinstance1.showBooks() ; // 报错:subinstance1.showBooks is not a function
subinstance1.books.push('Java') ;
console.log('subinstance1.books:', subinstance1.books) ;
console.log('subinstance2.books:', subinstance2.books) ;
/**
* 缺陷:
* 这样创建出来的每个实例都会单独拥有一份而不能共用,
* 因此就违背了代码的复用原则
*
*/
</script>
</body>
设计模式知识连载(6)---继承_2:创建即继承-构造函数继承
最新推荐文章于 2022-08-22 15:53:25 发布