javascript纯面向对象开发需要使用到的一个模式,来对对象之间原型继承做中间层代理避免重复继承与代码杂乱

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
//父类
function Teacher(){}
Teacher.prototype.name = "teacher";
//子类
function Student(){}
Student.prototype.age = 18;
//原型继承调用
inherit(Student,Teacher); let s = new Student();
let t = new Teacher(); /*
*
圣杯模式原型继承封装
@param Target 需要继承的子类
@param Origin 被继承的父类
*/
function inherit(Target,Origin){
//创建中间层构造函数
function Buffer(){}
//把被继承父类的原型付给中间层构造函数
Buffer.prototype = Origin.prototype;
//把实例化的中间层构造函数生成的对象付给需要继承的目标类
Target.prototype = new Buffer();
//目标类构造函数指向欢原
Target.prototype.constructor = Target;
//定义目标类从哪继承
Target.prototype.super_class = Origin;
}
console.log(s,t); </script>
</body>
</html>

最新文章

  1. JavaScript检测文件上传的类型与大小
  2. 《BI那点儿事》数据挖掘各类算法——准确性验证
  3. ae_feature的插入、复制和删除
  4. 网络开始---多线程---GCD-01-基本使用(掌握)(六)
  5. 夺命雷公狗---Thinkphp----5之数据库的链接
  6. IO多路复用的几种实现机制的分析
  7. Python切割nginx日志_小组_ThinkSAAS
  8. 设计模式(三): FACTORY工厂模式 -- 创建型模式
  9. CCNA+NP学习笔记—序章
  10. rsync+innotify做到同步式更新
  11. 我为什么放弃MySQL?最终选择了MongoDB
  12. bootstrap AdminLTE模版的使用
  13. nativefier(一行代码将任意网页转化为桌面应用)
  14. Python常用模块--string
  15. Android---Hellow World
  16. leecode第八十八题(合并两个有序数组)
  17. Git仓库初始化与推送到远端仓库
  18. Python读文本文件
  19. 《转载》IntelliJ 2016.2 IDEA 中进行 Java Web 项目开发配置
  20. 学习python绘图

热门文章

  1. hyperledger fabric 1.0.5 分布式部署 (九)
  2. Python简易购物车程序
  3. v$sql、v$sqlarea、v$sqltext、v$sql_plan
  4. [BeiJing wc2012]连连看
  5. spring 公用异常处理
  6. MySQL的slave_exec_mode参数作用
  7. 爬虫(BeautifulSoup4)——安装
  8. 054 Spiral Matrix 旋转打印矩阵
  9. FloatHelper
  10. 笔试题五道spring