<body>
<h3>设计模式知识连载(5)---继承_1:子类的原型对象-类式继承</h3>
<p></p>
<script type="text/javascript">
/**
* 类式继承--案例1:
*/
// // 声明父类
// function SuperClass() {
// this.superValue = true ;
// } ;
// // 为父类添加共有方法
// SuperClass.prototype.getSuperValue = function() {
// return this.superValue ;
// } ;
// // 声明子类
// function SubClass() {
// this.subValue = false ;
// }
// // 继承父类
// // 把父类的实例赋予给子类的原型prototype,这样就实现了继承
// SubClass.prototype = new SuperClass() ;
// // 为子类添加共有方法
// SubClass.prototype.getSubValue = function() {
// return this.subValue ;
// }
// var subinstance1 = new SubClass() ;
// var supervalue = subinstance1.getSuperValue() ;
// var subvalue = subinstance1.getSubValue() ;
// console.log('supervalue:', supervalue) ;
// console.log('subvalue:', subvalue) ;
// console.log('--------------------') ;
// // 通过“instance”关键字来查看该对象是否是某个类的实例
// console.log('subinstance1 instanceof(SuperClass):', subinstance1 instanceof(SuperClass)) ;
// console.log('subinstance1 instanceof(SubClass):', subinstance1 instanceof(SubClass)) ;
// console.log('SubClass instanceof(SuperClass):', SubClass instanceof(SuperClass)) ;
// console.log('SubClass.prototype instanceof(SuperClass):', SubClass.prototype instanceof(SuperClass)) ;
// console.log('subinstance1 instanceof(Object):', subinstance1 instanceof(Object)) ;
/**
* 类式继承--案例2:
*/
// 声明父类
function SuperClass() {
this.books = ['JavaScript', 'HTML', 'CSS'] ;
} ;
// 声明子类
function SubClass() {} ;
// 继承父类
SubClass.prototype = new SuperClass() ;
var subinstance1 = new SubClass() ;
var subinstance2 = new SubClass() ;
console.log('subinstance2.books:', subinstance2.books) ;
subinstance1.books.push('Java') ;
console.log('subinstance2.books:', subinstance2.books) ;
/**
* 缺陷:
* 1、修改其中一个实例,会影响另一个实例,
* 2、无法向父类传递参数
*/
</script>
</body>
设计模式知识连载(5)---继承_1:子类的原型对象-类式继承
最新推荐文章于 2020-06-09 20:50:32 发布