JavaScript实现多态和继承的封装操作示例


Posted in Javascript onAugust 20, 2018

本文实例讲述了JavaScript实现多态和继承的封装操作。分享给大家供大家参考,具体如下:

封装Encapsulation

如下代码,这就算是封装了

(function (windows, undefined) {
  var i = 0;//相对外部环境来说,这里的i就算是封装了
})(window, undefined);

继承Inheritance

(function (windows, undefined) {
  //父类
  function Person() { }
  Person.prototype.name = "name in Person";
  //子类
  function Student() { }
  Student.prototype = new Person();      //修复原型
  Student.prototype.constructor = Student;  //构造函数
  Student.prototype.supr = Person.prototype; //父类
  //创建子类实例
  var stu = new Student();
  Student.prototype.age = 28;
  Student.prototype.name = "name in Student instance";
  //打印子类成员及父类成员
  console.log(stu.name); //name in Student instance
  console.log(stu.supr.name); //name in Person
  console.log(stu.age); //28
})(window, undefined);

使用在线HTML/CSS/JavaScript代码运行工具 http://tools.3water.com/code/HtmlJsRun,运行结果如下:

JavaScript实现多态和继承的封装操作示例

多态Polymorphism

有了继承,多态就好办了

//这就是继承了
(function (windows, undefined) {
  //父类
  function Person() { }
  Person.prototype.name = "name in Person";
  Person.prototype.learning = function () {
    console.log("learning in Person")
  }
  //子类
  function Student() { }
  Student.prototype = new Person();      //修复原型
  Student.prototype.constructor = Student;  //构造函数
  Student.prototype.supr = Person.prototype; //父类
  Student.prototype.learning = function () {
    console.log("learning in Student");
  }
  //工人
  function Worker() { }
  Worker.prototype = new Person();      //修复原型
  Worker.prototype.constructor = Worker;  //构造函数
  Worker.prototype.supr = Person.prototype; //父类
  Worker.prototype.learning = function () {
    console.log("learning in Worker");
  }
  //工厂
  var personFactory = function (type) {
    switch (type) {
      case "Worker":
        return new Worker();
        break;
      case "Student":
        return new Student();
        break;
    }
    return new Person();
  }
  //客户端
  var person = personFactory("Student");
  person.learning(); //learning in Student
  person = personFactory("Worker");
  person.learning(); //learning in Worker
})(window, undefined);

使用在线HTML/CSS/JavaScript代码运行工具 http://tools.3water.com/code/HtmlJsRun,运行结果如下:

JavaScript实现多态和继承的封装操作示例

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
将CKfinder整合进CKEditor3.0的新方法
Jan 10 Javascript
javascript下4个跨浏览器必备的函数
Mar 07 Javascript
javascript 上下banner替换具体实现
Nov 14 Javascript
Jquery遍历节点的方法小集
Jan 22 Javascript
jquery中each方法示例和常用选择器
Jul 08 Javascript
html的DOM中document对象anchors集合用法实例
Jan 21 Javascript
javascript实现根据时间段显示问候语的方法
Jun 18 Javascript
javascript实现连续赋值
Aug 10 Javascript
JavaScript中的Function函数
Aug 27 Javascript
解决js图片加载时出现404的问题
Nov 30 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
Jun 29 Javascript
JS自动生成动态HTML验证码页面
Jun 14 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
Aug 20 #Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
Aug 20 #Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
Aug 20 #Javascript
获取layer.open弹出层的返回值方法
Aug 20 #Javascript
react.js组件实现拖拽复制和可排序的示例代码
Aug 20 #Javascript
layui弹出层按钮提交iframe表单的方法
Aug 20 #Javascript
详解如何在Vue里建立长按指令
Aug 20 #Javascript
You might like
php5.3 废弃函数小结
2010/05/16 PHP
PHP 异步执行方法,模拟多线程的应用分析
2013/06/03 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
extjs form textfield的隐藏方法
2008/12/29 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
关于Javascript 对象(object)的prototype
2014/05/09 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
2014/05/19 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
JavaScript使用concat连接数组的方法
2015/04/06 Javascript
jQuery插件slides实现无缝轮播图特效
2015/04/17 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
2015/12/13 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
js new Date()实例测试
2019/10/31 Javascript
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
Python文件操作类操作实例详解
2014/07/11 Python
Python利用Beautiful Soup模块创建对象详解
2017/03/27 Python
python处理数据,存进hive表的方法
2018/07/04 Python
TensorFlow利用saver保存和提取参数的实例
2018/07/26 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
Python3搭建http服务器的实现代码
2020/02/11 Python
HTML5自定义视频播放器源码
2020/01/06 HTML / CSS
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
学习计划书怎么写
2014/09/15 职场文书
2016银行求职自荐信
2016/01/28 职场文书
创业计划书之寿司
2019/07/19 职场文书
win11电脑关机鼠标灯还亮怎么解决? win11关机后鼠标灯还亮解决方法
2023/01/09 数码科技