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 相关文章推荐
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
Jun 02 Javascript
dess中一个简单的多路委托的实现
Jul 20 Javascript
jquery.jstree 增加节点的双击事件代码
Jul 27 Javascript
JQuery实现动态适时改变字体颜色的方法
Mar 10 Javascript
jQuery验证元素是否为空的两种常用方法
Mar 17 Javascript
浅谈Jquery为元素绑定事件
Apr 27 Javascript
JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
Apr 18 Javascript
bootstrap模态框垂直居中效果
Dec 03 Javascript
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
Oct 16 Javascript
vue.js简单配置axios的方法详解
Dec 13 Javascript
详解vue.js移动端配置flexible.js及注意事项
Apr 10 Javascript
JS中实现一个下载进度条及播放进度条的代码
Jun 10 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
php join函数应用
2011/05/04 PHP
php实现按照权重随机排序数据的方法
2015/01/09 PHP
PHP数组操作――获取数组最后一个值的方法
2015/04/14 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
PHP 网站修改默认访问文件的nginx配置
2017/05/27 PHP
PHP实现微信退款功能
2018/10/02 PHP
PHPUnit + Laravel单元测试常用技能
2019/11/06 PHP
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
2012/10/12 Javascript
自己编写的类似JS的trim方法
2013/10/09 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
jquery+ajax实现省市区三级联动效果简单示例
2017/01/04 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
jquery.validate.js 多个相同name的处理方式
2017/07/10 jQuery
微信小程序 共用变量值的实现
2017/07/12 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python StringIO模块实现在内存缓冲区中读写数据
2015/04/08 Python
Python中用于检查英文字母大写的isupper()方法
2015/05/19 Python
python中模块的__all__属性详解
2017/10/26 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
党员教师个人对照检查材料(群众路线)
2014/09/26 职场文书
劳动争议和解协议书范本
2014/11/20 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
导游词之太湖
2019/10/08 职场文书