/*
* 寄生式继承依托于原型继承,原型继承又与类式继承想象。
* 即: 原型与构造函数的组合继承
* 寄生式继承 继承原型
* 传递参数 childClass 子类
* 传递参数 parentClass 父类
*/ //原型式继承
function inheritObj(obj){
//声明一个过渡函数对象
function F(){}
//过渡对象的原型继承父对象
F.prototype = obj;
//返回过渡对象的一个实例,该实例的原型继承了父对象
return new F();
} function inheritPrototype(childClass,parentClass){
//复制一份父类原型副本保存在变量中
var p = inheritObj(parentClass.prototype);
//修正因为重写子类原型导致子类的constructor属性被修改
p.constructor = childClass;
//设置子类原型
childClass.prototype = p;
} // 定义父类
function ParentClass(name){
this.name = name;
this.books = ['Html'];
}
//定义父类原型方法
ParentClass.prototype.getName = function(){
console.log(this.name);
}
//定义子类
function ChildClass(name,time){
//构造函数是继承
ParentClass.call(this,name);
//子类新增属性
this.time = time;
} // 寄生式继承父类原型
inheritPrototype(ChildClass,ParentClass);
//子类新增方法
ChildClass.prototype.getTime = function(){
console.log(this.time);
}
// test
var child1 = new ChildClass('react',2018);
var child2 = new ChildClass('vue',2017); child1.books.push('css'); console.log(child1.books) // ['Html','css']
console.log(child2.books) // ['html'] child2.getName() // Vue
child2.getTime() //

设计模式中的经典笔录

最新文章

  1. pycharm2016 激活
  2. expdp/impdp
  3. Redis快速入门详解
  4. Chord算法(原理)
  5. Objective-c中的设计模式
  6. jQuery Ajax 的 load()方式
  7. web前端开发框架搜集
  8. Css轮廓
  9. errorPlacement的位置问题
  10. cfa,cpa,
  11. 在阿里云ECS(CentOS6.5)上安装tomcat
  12. http请求HttpClient短信接口
  13. IDEA中运行KafkaWordCount程序
  14. JIRA
  15. 使用python调用其他脚本
  16. QCAD 修改默认的线宽
  17. python3 调用 Linux 脚本
  18. 代理_正向代理_反向代理_nginx_转
  19. Thrift 的五种工作模式
  20. 获取Field成员变量类

热门文章

  1. 新鲜出炉的一套Java面试题
  2. OpenProject 分类专栏说明
  3. 《http权威指南》读书笔记5
  4. cookie和session的个人理解
  5. SpringBoot整合Mybatis完整版
  6. 微信支付提示System:access_denied
  7. Flex(ActionScript)与JavaScript交互的两种方式示例
  8. Python快速学习06:词典
  9. gradle 自定义插件 下载配置文件
  10. Tomcat8源码笔记(九)组件StandardContext启动流程--未完待续