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 相关文章推荐
javascript eval和JSON之间的联系
Dec 31 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
Jun 23 Javascript
详细解密jsonp跨域请求
Apr 15 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
Aug 20 Javascript
详解AngularJS 模态对话框
Apr 07 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
Jun 24 Javascript
angularjs实现的前端分页控件示例
Feb 10 Javascript
JS原生轮播图的简单实现(推荐)
Jul 22 Javascript
Vue.js弹出模态框组件开发的示例代码
Jul 26 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
Jan 06 Javascript
vue中axios实现数据交互与跨域问题
May 12 Javascript
原生javascript自定义input[type=radio]效果示例
Aug 27 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
163的邮件用phpmailer发送(实例详解)
2013/06/24 PHP
php模板原理讲解
2013/11/13 PHP
php全角字符转换为半角函数
2014/02/07 PHP
php中strtotime函数用法详解
2014/11/15 PHP
Yii2隐藏frontend/web和backend/web的方法
2015/12/12 PHP
农历与西历对照
2006/09/06 Javascript
jquery multiSelect 多选下拉框
2010/07/09 Javascript
淘宝搜索框效果实现分析
2011/03/05 Javascript
Jquery 点击按钮显示和隐藏层的代码
2011/07/25 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
JQuery获取表格数据示例代码
2014/05/26 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
微信小程序npm引入vant-weapp的踩坑记录
2019/08/01 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
js实现的在本地预览图片功能示例
2019/11/09 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
详解Python编程中基本的数学计算使用
2016/02/04 Python
Java及python正则表达式详解
2017/12/27 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
2020/03/06 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
社区文化建设方案
2014/05/02 职场文书
工程进度款催款函
2015/06/24 职场文书
关于幸福的感言
2015/08/03 职场文书
Python编写车票订购系统 Python实现快递收费系统
2022/08/14 Python